Skip to content

0x028-使用Css实现比例布局

Padding/Margin实现

原理是padding百分比,是基于父元素的。

示例:JSFiddle - Code Playground

因为padding-left: 20% = padding-left: 20px都是一样的,因此展示的效果相同。

为了避免过多的嵌套,可以结合伪类使用,例如 JSFiddle - Code Playground

css
<div id="container" class="placeholder">  
</div>

#container {
  width: 50%;
  position: relative;
  background-color: red;
  /* max-height: 200px; */
  /* overflow: hidden; */  /*如果使用margin。需要此触发BFC消除margin折叠的问题*/
}
/* 使用了伪类,这里的padding按.placeholder元素的宽度计算比例值*/ 
.placeholder::after {
  content: '';
  display: block;  
  padding-top: 50%; 
}
<div id="container" class="placeholder">  
</div>

#container {
  width: 50%;
  position: relative;
  background-color: red;
  /* max-height: 200px; */
  /* overflow: hidden; */  /*如果使用margin。需要此触发BFC消除margin折叠的问题*/
}
/* 使用了伪类,这里的padding按.placeholder元素的宽度计算比例值*/ 
.placeholder::after {
  content: '';
  display: block;  
  padding-top: 50%; 
}

aspect-ratio

vw 或者 cqw

区别是基于窗口或者父容器的宽度。

参考