img元素根据已知比例自适应高度,padding-top 方案edit icon

作者:
lynn-ssk
Fork(复制)
下载
嵌入
设置
BUG反馈
index.html
现在支持上传本地图片了!
            
            <!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <style>
    * {
      box-sizing: border-box;
    }
    /* 
      CSS 中的百分比 padding 规则(例如 padding-top: 50%)
        在 CSS 中,padding 的百分比值(包括 padding-top、padding-bottom、padding-left、padding-right)始终是相对于父元素的宽度(width)计算的,
        而不是父元素的高度。这是一个 CSS 规范的定义,即使是垂直方向的 padding-top 或 padding-bottom,也遵循这个规则。

        规范依据:
          根据 CSS 2.1 及后续规范(例如 CSS Box Model),padding 的百分比值是基于包含块(containing block)的宽度计算的。
          通常,包含块的宽度就是父元素的宽度。
    
        为什么这样设计:
          这种设计让布局更可预测,尤其在响应式设计中,宽度通常是已知的,而高度可能是动态变化的。 
    */
    /*
      此时,这里的 width 就是宽度,padding-top 就是高度。
    */
    .img-wrapper {
      position: relative;
      width: 100%;
      /* 用高度÷宽度×100% 计算,例如 400px ÷ 800px × 100% = 50% */
      padding-top: 50%;
    }

    .img-wrapper img {
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      object-fit: cover; /* 可选 */
      border: 1px solid red;
    }
  </style>
</head>

<body>
  <div class="img-wrapper">
    <img />
  </div>
</body>

</html>
        
预览
控制台
清空