如何使用CSS绘制一个响应式的矩形
背景:
最近因为需要用到绘制类似九宫格的需求,所以研究了一下响应式矩形的实现方案。
有如下几种方案:
- 使用js来设置元素的高度
- 使用vw单位
div {width: 50vw; height: 50vw;} - 使用伪元素设置padding的方式来实现正方形(也就是本次使用的方式)
实现一个正方形
1 | .square { |
1 | <div class="square"></div> |
我们的做法就是使用伪元素的padding-top: 100%来撑开元素本身。
因为pading-top与padding-bottom的百分比取值来自于元素的宽度,所以,设置值为100%就实现了我们想要的功能。
实现更多的功能
想要实现更多比例的形状,其实就是修改::before中的pading-top或者padding-bottom的值即可。
1 | // 16: 9 |
当然,上边的实现都只是一个简单的矩形,如果你的矩形里边还要有一些内容的话,需要给元素添加以下几个属性:
1 | .content { |
1 | <div class="square"> |
要注意的有以下几点:
- IE7-不支持
- 元素不要设置
height以及overflow: hidden