在做网页开发的时候经常遇到这样一个问题:显示图片的块的尺寸(或者尺寸比例)固定,而可能被显示到该模块的图片(用户上传的图片)尺寸和比例是不确定的,那在实际应用上就会出现图片被压缩、拉升、变形甚至图框大量空白的情况,如下图(图片截取自西南地区某县政府网站)。
这种情况还大量出现在屏幕缩放的时候。处理方法就是在图片css中object-fit属性。
示例:
html代码:
<div class="swiper-slide"><img src="images/[email protected]" alt="" /></div> <div class="swiper-slide"><img src="images/IMG_3393.JPG" alt="" /></div> <div class="swiper-slide"><img src="images/99.jpg" alt="" /></div>
CSS代码
.swiper-slide { width: 100%; height: 500px; } .swiper-slide img{ width: 100%; height: 100%; object-fit:cover; }
object-fit属性详解
object-fit CSS 属性指定可替换元素(例如:<img> 或 <video>)的内容应该如何适应到其使用高度和宽度确定的框。可以通过使用 object-position 属性来切换被替换元素的内容对象在元素框内的对齐方式。
属性取值
contain:被替换的内容将被缩放,以在填充元素的内容框时保持其宽高比。 整个对象在填充盒子的同时保留其长宽比,因此如果宽高比与框的宽高比不匹配,该对象将被添加‘黑边’
cover:被替换的内容在保持其宽高比的同时填充元素的整个内容框。如果对象的宽高比与内容框不相匹配,该对象将被剪裁以适应内容框。
fill:被替换的内容正好填充元素的内容框。整个对象将完全填充此框。如果对象的宽高比与内容框不相匹配,那么该对象将被拉伸以适应内容框。
none:被替换的内容将保持其原有的尺寸。
scale-down:内容的尺寸与 none 或 contain 中的一个相同,取决于它们两个之间谁得到的对象尺寸会更小一些。