赞
踩
实现代码
<!DOCTYPE html> <html lang="en"> <head> <style> .box { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); /*自动填充,最小宽度300px*/ justify-content: space-between; gap: 10px; } .item { background: pink; height: 100px; } </style> </head> <body> <div class="box"> <div class="item">1</div> <div class="item">2</div> <div class="item">3</div> <div class="item">4</div> <div class="item">5</div> <div class="item">6</div> <div class="item">7</div> <div class="item">8</div> </div> </body> </html>
效果图:


实现代码
<!DOCTYPE html> <html lang="en"> <head> <style> .box { display: flex; flex-wrap: wrap; } .item { flex: 1 0 300px; /*1 表示每个 div 元素会按比例占满可用空间,0 表示不允许缩小,300px 表示设置最小宽度为 300 像素 */ min-width: 300px; background: pink; height: 100px; margin-right: 10px; margin-bottom: 10px; } </style> </head> <body> <div class="box"> <div class="item">1</div> <div class="item">2</div> <div class="item">3</div> <div class="item">4</div> <div class="item">5</div> <div class="item">6</div> <div class="item">7</div> <div class="item">8</div> </div> </body> </html>
效果图:

问题: flex布局对于最后一行的的子元素个数不足上一行的子元素个数时,它的子元素也会占满本行,导致最后一行的子元素宽度变大。
改进一下下: 添加空白元素,使得最后一行的元素与前面的元素同宽。
修改后的代码
<!DOCTYPE html> <html lang="en"> <head> <style> .box { display: flex; flex-wrap: wrap; } .item { flex: 1 0 300px; /*1 表示每个 div 元素会按比例占满可用空间,0 表示不允许缩小,300px 表示设置最小宽度为 300 像素 */ min-width: 300px; background: pink; height: 100px; margin-right: 10px; margin-bottom: 10px; } .h0{ height: 0; } </style> </head> <body> <div class="box"> <div class="item">1</div> <div class="item">2</div> <div class="item">3</div> <div class="item">4</div> <div class="item">5</div> <div class="item">6</div> <div class="item">7</div> <div class="item">8</div> <!-- 空元素 (vue里面直接写 v-for="item in 4")--> <div class="item h0" ></div> <div class="item h0"></div> </div> </body> </html>
效果图:

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。