做项目经常会遇到图片列表展示,图片一般是用户从后台上传的,上传的图片尺寸千差万别。如果前端不控制图片大小,整个排版就会很乱,如果给定长宽,图片又会变形,用背景图片来处理有特别麻烦。这个问题一直苦恼了我好久,最近终于找到解决办法了。
css有一个object-fit属性,用来指定替换元素的内容应该如何适应到其使用的高度和宽度确定的框,效果类似于微信小程序里image标签的mode属性。
1.首先是一个html结构,然后给定图片高宽然后使用object-fit:cover即可实现图片不变形而且整体排版也不受影响
<img class="example" src="example.png">
.example{ width:160px; height:90px; object-fit:cover; }
object-fit关键属性:
object-fit:fill
被替换的内容大小可以填充元素的内容框。 整个对象将完全填充此框。 如果对象的高宽比不匹配其框的宽高比,那么该对象将被拉伸以适应。
object-fit:contain
被替换的内容将被缩放,以在填充元素的内容框时保持其宽高比。 整个对象在填充盒子的同时保留其长宽比,因此如果宽高比与框的宽高比不匹配,该对象将被添加“黑边”。
object-fit:cover
被替换的内容大小保持其宽高比,同时填充元素的整个内容框。 如果对象的宽高比与盒子的宽高比不匹配,该对象将被剪裁以适应。
object-fit:none
被替换的内容尺寸不会被改变。
object-fit:scale-down
内容的尺寸就像是指定了none或contain,取决于哪一个将导致更小的对象尺寸。