2017-03-05 133 views
9

我想創建這樣一個多列列表: https://jsfiddle.net/37dfwf4u/如何從單個無序列表創建多列?

沒問題,使用不同的列表中爲每個列時:

<ul> 
    <li>item1</li> 
    <li>item2</li> 
    <li>item3</li> 
    <li>item4</li> 
</ul> 
<ul> 
    <li>item5</li> 
    <li>item6</li> 
    <li>item7</li> 
    <li>item8</li> 
</ul> 
ul { 
    display:inline-block; 
} 

然而,這可以通過完成連續列表和純CSS,以便CSS自動排列列? 例如通過使用我還不熟悉的flex佈局?

回答

8

是的,你可以創建描述的多列列表,如果你讓ul Flex容器,限制其高度,改變方向柱,讓它包裝:

ul { 
 
    height: 100px; 
 
    display: flex; 
 
    flex-direction: column; 
 
    flex-wrap: wrap; 
 
}
<ul> 
 
    <li>item1</li> 
 
    <li>item2</li> 
 
    <li>item3</li> 
 
    <li>item4</li> 
 
    <li>item5</li> 
 
    <li>item6</li> 
 
    <li>item7</li> 
 
    <li>item8</li> 
 
    <li>item1</li> 
 
    <li>item2</li> 
 
    <li>item3</li> 
 
    <li>item4</li> 
 
    <li>item5</li> 
 
    <li>item6</li> 
 
    <li>item7</li> 
 
    <li>item8</li> 
 
    <li>item4</li> 
 
    <li>item5</li> 
 
    <li>item6</li> 
 
    <li>item7</li> 
 
    <li>item8</li> 
 
</ul> 
 
<style></style>

+0

這似乎是一個精解。完全自我調整,不需要定義列的數量,不需要額外的元素,只需一個連續列表。 – Sempervivum

+0

BTW:我怎樣才能做這樣的內聯演示(「運行代碼片段」)? – Sempervivum

+0

@Sempervivum問題和答案框中有不同的符號。如果你徘徊他們,你會看到他們的意義。其中之一是製作摘錄。 – Johannes

6

考慮使用CSS3多欄佈局爲:

CSS3 Multiple Columns

只需使用一個列表就可以做到這一點,並用CSS定義列數。如果您檢查CSS3多列布局瀏覽器支持here,您可以看到大多數瀏覽器的部分支持,因爲它們不支持折前,折後和折入內部屬性。但是他們確實支持用前綴創建多列列表所需的屬性。

.container { 
 
    -webkit-column-count: 2; /* Chrome, Safari, Opera */ 
 
    -moz-column-count: 2; /* Firefox */ 
 
    column-count: 2; 
 
} 
 

 
ul { 
 
    margin: 0; 
 
}
<div class="container"> 
 
    <ul> 
 
    <li>item1</li> 
 
    <li>item2</li> 
 
    <li>item3</li> 
 
    <li>item4</li> 
 
    <li>item5</li> 
 
    <li>item6</li> 
 
    <li>item7</li> 
 
    <li>item8</li> 
 
    </ul> 
 
</div>

+1

也是一個很好的解決方案。由於色調的數量必須調整,因此不能完全自我調整。 – Sempervivum

+1

實際上,對於需要添加或刪除列表項的列表來說,這是一個更好的解決方案。您可以在響應中斷點處設置列數並將其忘記。使用第一種(接受的解決方案),每次添加或刪除列表項時,都必須手動調整高度;對於給定數量的項目,什麼樣的高度效果最好並不明顯:大量的試驗和錯誤。 – Ray

+0

使用'column-width'而不是'column-count'會根據容器的寬度自動調整列數 – jnnnnn