CSS中如何保持容器宽高比不变的原理

padding-toppadding-bottom属性

padding-toppadding-bottom属性分别表示容器的上内边距与下内边距。
虽然设置的是垂直方向的高度,有意思的是当该值为一个百分比的时候表示的是和本身包含的元素的宽度有关。
换句话就是说,padding-toppadding-bottom的值为百分比时,其实表示的是其元素宽度的百分比。

因此,在容器宽度不确定的情况下(如: 80%, flex: 1等),保持容器宽高比不变,可以通过设置元素的padding-toppadding-bottom值。

例如,保持宽高比为16:9:

.box {
   padding-top: 56.25%;
}

使用场景

这个在保持图片的宽高比时非常有用。

  • img元素保持固定比例不变:
// mixins.less
.ibox(@width, @height) {
  .ibox-@{width}-@{height} {
    position: relative;
    padding-top: percentage(@height / @width);

    & > img {
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
    }
  }
}

// 宽高比为:16:9
.ibox(16, 9)

// 宽高比为:4:3
.ibox(4:3)
  • 背景图片保持固定比例:
// mixins.less
.ibox(@width, @height) {
  .ibox-@{width}-@{height} {
    position: relative;
    background-image: url('xxx.png');
    background-repeat: no-repeat;
    background-size: cover;
    padding-top: percentage(@height / @width);
  }
}

// 宽高比为:16:9
.ibox(16, 9)

// 宽高比为:4:3
.ibox(4:3)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容