【发布时间】:2016-10-10 20:28:49
【问题描述】:
我目前正在使用background-image: url() 和background-size: contain,以便让图像填充它的容器。这适用于大图像,因为它们会自动缩小以填充空间,而无需剪切或拉伸图像,而与图像和容器的相对纵横比无关。
但是如果图片在高度和宽度上都小于容器,图片会被放大,这往往会使图片显得模糊或像素化。 在 CSS 中是否有可能以原始尺寸显示较小的图像,同时为较大的图像保留上述行为?
我希望我可以用 Javascript 编写代码来比较图像和容器大小,并应用不同的样式,但我想知道是否有纯 css 解决方案?
这是用于公共网站上的照片库类型的应用程序,因此需要支持所有当前常用的浏览器。
【问题讨论】:
-
不适用于
background-size: contain。 CSS 无法检测背景图片的大小,也不是有条件的。 -
如果背景图形的大小已知,并且容器的宽度,比如说,只依赖于窗口宽度,你可以使用一个简单的媒体查询...
-
不一定要有背景图片。我只用背景图像从
更改为
以获得“包含”功能。只是想知道是否有更好的方法?通过,你可以设置宽度和高度为自动,最大宽度为100%。这将限制水平尺寸。或者,设置最大高度,这将限制垂直大小。
这是一个照片库,因此将是从数据库提供的各种尺寸的图像。可能可以从 php 获取图像大小,但这可能比 javascript 解决方案更复杂。我曾考虑过使用媒体查询,但我需要同时查看我认为的宽度和高度。还有一些其他的响应式元素,我希望大图显示得尽可能大,所以容器的大小不是可以轻易硬编码的东西。