这似乎微不足道,但毕竟研究和编码我无法让它工作 . 条件是:
-
浏览器窗口大小未知 . 所以请不要提出涉及绝对像素大小的解决方案 .
-
图像的原始尺寸未知,可能已经或可能不适合浏览器窗口 .
-
图像垂直和水平居中 .
-
必须保留图像比例 .
-
图像必须完整显示在窗口中(无裁剪 . )
-
我不希望出现滚动条(如果图像适合,它们不应该出现 . )
-
当窗口尺寸发生变化时,图像会自动调整大小,以占用所有可用空间而不会大于其原始大小 .
基本上我想要的是这个:
.fit {
max-width: 99%;
max-height: 99%;
}
<img class="fit" src="pic.png">
上面代码的问题在于它不起作用:pic通过添加垂直滚动条来获取所需的所有垂直空间 .
我自己可以使用PHP,Javascript,JQuery,但是我只能使用纯CSS解决方案 . 我不在乎它是否在IE中不起作用 .
11 回答
Update 2018-04-11
这是一个没有Javascript的CSS解决方案 . 图像将动态居中并调整大小以适合窗口 .
使用JQuery的[other,old]解决方案设置图像容器的高度(在下面的示例中为
body
),以便图像上的max-height
属性按预期工作 . 调整客户端窗口大小时,图像也会自动调整大小 .注意:用户gutierrezalex在此页面上打包了一个与JQuery插件非常相似的解决方案 .
这是一个简单的CSS解决方案(JSFiddle),适用于所有地方,移动和IE包括:
CSS 2.0:
HTML:
CSS3引入了相对于视口测量的新单位,在这种情况下是视窗 . 它们分别是
vh
和vw
,分别测量视口高度和宽度 . 这是一个简单的CSS解决方案:对此的一个警告是,只有在页面上没有其他元素贡献高度时它才有效 .
如果您愿意在图像周围放置容器元素,那么纯CSS解决方案很简单 . 你看,当父元素垂直延伸以包含它的子元素时,99%的高度没有意义 . 父级需要具有固定高度,例如......视口的高度 .
HTML
CSS
玩the fiddle .
我的一般懒惰的CSS规则:
这可能会放大您的图像,如果它是低分辨率开始(这与您的图像质量和尺寸大小有关 . 为了使图像居中,您也可以尝试(在CSS中)
使图像居中
在您的HTML中:
调整图像大小以适应最长边的屏幕,保持其纵横比
width: 100vw
- 图像宽度将是视口的100%height: auto
- 图像高度将按比例缩放max-height: 100vw
- 如果图像高度变得超过视口,它将减小以适应屏幕,因此图像宽度将因以下属性而减小object-fit: contain
- 缩放替换的内容以保持其宽高比,同时适合元素的内容框注意:自IE 16.0起,完全支持
object-fit
我相信应该这样做 .
或者可以看一下:http://css-tricks.com/how-to-resizeable-background-image/
我有类似的要求,不得不做基本的CSS和JavaScript . 没有JQuery可用 .
这就是我的工作 .
注意:我没有使用100%的图像宽度,因为总有一些填充要考虑 .
在@ Rohit的答案的基础上,这可以解决Chrome标记的问题,可靠地调整图像大小,还适用于垂直堆叠的多个图像,例如:
<img src="foo.jpg"><br><img src="bar.jpg"><br><img src="baz.jpg">
这可能是一种更优雅的方式 .简单一点 . 谢谢