效果圖: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>