前言
我们在上传图片时,由于图片尺寸与我们所设置的尺寸比例不一致,会出现图片被挤压变形的现象。在此介绍一下CSS属性object-fit和object-position,以此完美解决此问题的发生。
object-fit
属性说明
object-fit 属性指定元素的内容应该如何去适应指定容器的高度与宽度。
一般用于 img 和 video 标签,一般可以对这些元素进行保留原始比例的剪切、缩放或者直接进行拉伸等。
语法
object-fit: fill|contain|cover|scale-down|none|initial|inherit;
属性值
值 | 描述 | |
---|---|---|
fill | 默认,不保证保持原有的比例,内容拉伸填充整个内容容器。 | |
contain | 保持原有尺寸比例。内容被缩放。 | |
cover | 保持原有尺寸比例。但部分内容可能被剪切。 | |
none | 保留原有元素内容的长度和宽度,也就是说内容不会被重置。 | |
scale-down | 保持原有尺寸比例。内容的尺寸与 none 或 contain 中的一个相同,取决于它们两个之间谁得到的对象尺寸会更小一些。 | |
initial | 设置为默认值。 | |
inherit | 从该元素的父元素继承属性。 |
示例
对图片进行剪切,保留原始比例:
img{
width: 200px;
height: 200px;
object-fit: cover;
}
注:如果您还想切换被替换元素的内容对象在元素框内的对齐方式。可以通过使用 object-position 属性。
object-position
属性说明
object-position 属性一般与 object-fit 一起使用,用来设置元素的位置。
一般用于 img 和 video 标签。
语法
object-position: position|initial|inherit;
属性值
值 | 描述 | ||
---|---|---|---|
position | 指定 image 或 video 在容器中的位置。第一个值为 x 坐标位置的值,第二个值为 y 坐标位置的值。表示的方式有: object-position: 50% 50%; object-position: right top; object-position: left bottom; object-position: 250px 125px; | ||
initial | 设置为默认值。 | ||
inherit | 从该元素的父元素继承属性。 |
示例
根据容器大小重置图片的大小,并设置图片的位置:
img{
width: 200px;
height: 200px;
object-fit: none;
object-position: 5px 10%;
}