CSS3 object-fit 属性浅析示例

现代web环境,响应式布局都比较常见。
如果一张图片使用固定尺寸,在处理这些有着固定尺寸的图片的时候,就会遇到障碍。
例如,一个2:1的图片,永远要等比例充满容器。但是,随着浏览器宽度不一样,容器的长宽比有也肯定不一样。
我们更早的时候使用JS去把控,或者使用background-size处理类似效果。
如今,正是为了应对类似这样的响应式需求,object-fit和object-position才应运而生。 下面我们只讲object-fit属性。 object-position主要就是控制位置,这个大家可以网搜。 object-fit和object-position之间的关系有点类似于background-size和background-position。 无论是,关系还是属性值,都有相似之处。
因此,我们在理解object-fit和object-position的时候,可以或多或少映射background-size和background-position。

下面的一系列示例就是向大家演示,object-fit取不同值时,图片的变化。
我们给图片套一个figure标签,即figure是img的父级容器。

正常图片

jason.way
说明:这个是图片的原尺寸。是700*478的图片。

默认

figure {//figure是父容器。
	width: 200px;
	height: 200px;
	background-color: #333333;
	position: relative;
	overflow: hidden;
}
img{
	width: 100%;
	height: 100%;
}	
jason.way
尺寸继承父级尺寸,由于父级容器比例与图片比例不一致,所以图片有变形。

cover

img{
	object-fit:cover;
	width: 100%;
	height: 100%;
}		
jason.way
说明:图片刚刚好填充了容器。 图片也不变形。只是边缘多出去的内容被裁掉了。

fill

img{
	object-fit:fill;
	width: 100%;
	height: 100%;
}		
jason.way
说明:这个图片跟默认提供的样式差不多。填充整个父容器。

contain

img{
	object-fit:contain;
	width: 100%;
	height: 100%;
}		
jason.way
说明:图片比例不变的情况下,内容全部显示出来。

none

img{
	object-fit:none;
	width: 100%;
	height: 100%;
}		
jason.way
说明:没有object-fit声明。图片多大就显示多大。

针对IE实现cover效果

img{		
	max-width: 1000%;
	max-height: 100%;
	min-width: 100%;
	min-height: 100%;
	width: auto;
	height: auto;
	left: 50%;
	top: 50%;
	-ms-transform: translate(-50%, -50%);
	transform: translate(-50%, -50%);
	position: absolute;
}		
jason.way
IE是不支持object-fit属性的。那怎么办?就用上面的方法,让图片有object-fit:cover的效果。