前言
有一天看某个开源项目的时候,有一个疑惑就是怎么实现一个响应式的正方形,即将宽度设为百分比,然后高度与宽度始终保持相同,上网查到了相应的方法。
解决
原理:padding
和 margin
都是相对于父元素的宽度来计算的
因此就有了下面的代码:
1 | <div class="scale"></div> |
1 | .scale { |
关键点就是height: 0;
和padding-bottom: 50%;
有子元素的情况
如果元素中包含子元素的话,那么仅仅是上面的CSS部分是不够的,因为 height
是 0,子元素设置的高度会撑开父元素的高度,就像下面的代码这样,scale
会变成一个宽高比1比2的盒子。
1 | <div class="scale"> |
1 | .scale { |
因此css需要改成下面这样,加上position。
1 | .scale { |
应用
在html-tags项目中有相应的应用