flex space-between最后一行對齊問題的解決方案


背景

常見的一個圖文列表設計,通常是這樣的,兩端頂着容器,中間的間距平均分,如下圖的某東商品列表的設計:

列表是這樣自適應的,當視窗足夠放多少個商品就放多少個,然后各個商品項目之間的間距平均分。由於每個人的視窗都可能不同,因此所看到的間距或者每一行的個數都會不同。

方案

想到這種設計,我們學過flex就知道,非常像flex的justify-content: space-between的效果,因此我們自然這樣實現:

.flex {
  list-style: none;
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
}
.demo1 > .flex__item {
  flex-basis: 200px;
  margin-top: 1rem;
  text-align: center;
  box-sizing: border-box;
}

.demo1 > .flex__item img {
  width: 100%;
}  

 

<ul class="flex demo1">
  <li class="flex__item">
    <img src="http://via.placeholder.com/100" />
    <p>
      圖片
    </p>
  </li>
  <li class="flex__item">
    <img src="http://via.placeholder.com/100" />
    <p>
      圖片
    </p>
  </li>
  <li class="flex__item">
    <img src="http://via.placeholder.com/100" />
    <p>
      圖片
    </p>
  </li>
  <li class="flex__item">
    <img src="http://via.placeholder.com/100" />
    <p>
      圖片
    </p>
  </li>
  <li class="flex__item">
    <img src="http://via.placeholder.com/100" />
    <p>
      圖片
    </p>
  </li>
</ul>

demo: https://jsbin.com/yulevutodo/edit?html,css,output

問題

我們看到效果,最后一行不正確,應該向左對齊才對。

大家有什么好的解決方案(為了保證兼容性,所以不希望用grid等)嗎?

我有一個方案,但是總感覺不是最佳的,希望大家先自己想想,然后再看我的方案,免得被我帶偏了,若有不錯的方案,希望告知,多謝!

我的方案放在這邊了:https://javascript.shop/2020/01/flex-space-between-last-row-alignment

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM