效果图:
<!doctype html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
#body {
width: 100%;
border: 1px solid #000;
}
.square {
position: relative;
box-sizing: border-box;
float: left;
width: 20%;
border: 1px solid #000;
}
.square::before {
content: "";
display: block;
padding-top: 100%;
}
.square>.square-inner {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<div id="body">
<div class="square">
<div class="square-inner"></div>
</div>
<div class="square">
<div class="square-inner"></div>
</div>
<div class="square">
<div class="square-inner"></div>
</div>
<div class="square">
<div class="square-inner"></div>
</div>
<div class="square">
<div class="square-inner"></div>
</div>
</div>
<div style="clear"></div>
<!--.square 内部一个块级元素 padding-top: 100%;
(::before
这个元素就正好是一个正方形
然后实际内容根据 .square 绝对定位
这算是一个比较常用的技巧
利用了一个特性
子元素的垂直百分比 margin padding 是基于父元素宽度计算的
利用这个可以实现宽高任意比例
就这样( -->
</body>
</html>