css3 flex佈局 justify-content:space-between 最後一行左對齊

在使用justify-content:space-between佈局時,針對最後一行元素使用 justify-self: start;沒有效果,查了下css3 flexbox 還未支持。css

那麼如何實現最後一行左對齊呢?

現有的幾個方案css3

  • 使用標籤元素補全缺的item
  • 使用grid
  • 使用僞類

僞類的狀況,若是最後一個元素是滿的,會有佔位,grid會有兼容問題,又不想新增標籤。ide

每一行固定列數的狀況實現左對齊方案

因爲每一列的數目都是固定的,所以,咱們能夠計算出最後一個元素的margin-right值保證徹底左對齊。佈局

假設每一行只有3列元素,那麼當最後一個元素是第二列(即li:last-child:nth-child(3n + 2))的狀況,才須要進行 margin-right處理,距離是一個元素的寬度+空隙寬度。flex

假設元素寬度是$width,上述狀況所須要的距離:(100% - 3 * $width) / 2 + $width => (100% - $width) / 2flexbox

.list1  li:last-child:nth-child(3n + 2) {
  margin-right: calc((100% - $width) / 2);
}

image.png

同理,一行4列的狀況,須要處理兩種狀況,最後一個元素在第二列 和 最後一個元素在第三列的狀況。spa

.list2  li:last-child:nth-child(4n + 2) {
  margin-right: calc((100% - $width) / 3 * 2);
}
.list2  li:last-child:nth-child(4n + 3) {
  margin-right: calc((100% - $width) / 3 * 1);
}

Kapture 2019-12-25 at 16.33.11.gif

點擊這裏查看demo 展現代碼code

每一行不固定列數的狀況實現左對齊方案

這個我以爲最好的方案仍是使用grid了,網上一堆,就不作討論啦。blog

相關文章
相關標籤/搜索