效果图:html
<!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>