需求:不同尺寸图片在固定宽高容器中显示,显示不能变形,无法全部显示的情况下,允许裁切图片只显示中间部分
"object-fit" 这个css属性可以很好解决这个问题
object-fit
有以下几个属性值
fill
: 中文释义“填充”。默认值。替换内容拉伸填满整个content box, 不保证保持原有的比例`。contain
: 中文释义“包含”。保持原有尺寸比例。保证替换内容尺寸一定可以在容器里面放得下。因此,此参数可能会在容器内留下空白。cove
r: 中文释义“覆盖”。保持原有尺寸比例。保证替换内容尺寸一定大于容器尺寸,宽度和高度至少有一个和容器一致。因此,此参数可能会让替换内容(如图片)部分区域不可见。none
: 中文释义“无”。保持原有尺寸比例。同时保持替换内容原始尺寸大小。scale-down
: 中文释义“降低”。就好像依次设置了none或contain, 最终呈现的是尺寸比较小的那个。
废话不多少,直接上代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.wrap{
width:400px;
height:200px;
background: #f5f5f5;
margin:0 auto;
}
.wrap img{
width:100%;
height:100%;
max-height: 100%;
max-width: 100%;
object-fit: cover; /*加上这个就可以实现需求效果*/
}
</style>
</head>
<body>
<div class="wrap">
<img src="avatar2.jpeg" alt="">
</div>
</body>
</html>
下面看看对比效果
原图
添加object-fit:cover之前
添加object-fit:cover之后