css解决图片变形问题

需求:不同尺寸图片在固定宽高容器中显示,显示不能变形,无法全部显示的情况下,允许裁切图片只显示中间部分


"object-fit" 这个css属性可以很好解决这个问题
object-fit有以下几个属性值
  • fill: 中文释义“填充”。默认值。替换内容拉伸填满整个content box, 不保证保持原有的比例`。

  • contain: 中文释义“包含”。保持原有尺寸比例。保证替换内容尺寸一定可以在容器里面放得下。因此,此参数可能会在容器内留下空白。

  • cover: 中文释义“覆盖”。保持原有尺寸比例。保证替换内容尺寸一定大于容器尺寸,宽度和高度至少有一个和容器一致。因此,此参数可能会让替换内容(如图片)部分区域不可见。

  • 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之后
最后那种效果更好,上面两张图一看就明了了!

推荐阅读更多精彩内容