2016-08-30 39 views
1

所以我有這個列表,我試圖安排。將無序列表項中的前兩個元素內聯對齊,其餘每行對齊

我想顯示前兩個<li>元素在一行(行內)和其他元素在單獨的行。

我曾嘗試添加顯示錶>表格單元格的CSS屬性到前兩個元素,但它只是將其他<li>元素縮進第二行。

有沒有更乾淨的方法呢?

<ul> 
    <li> Check All </li> 
    <li> Uncheck All </li> 
    <li> Option A </li> 
    <li> Option B </li> 
    <li> Option C </li> 
    <li> Option D </li> 
    <li> Option E </li> 
    <li> Option F </li> 
    <li> Option G </li> 
</ul> 
+0

你真的應該使用類,而不是做這些類型的CSS選擇,因爲它不是語義,試戴分離成不同的包裝或類。只是一個建議。 –

回答

4

套用display: inline-block前兩個列表項,例如

li:nth-child(-n + 2) { 
    display: inline-block; 
} 

作爲一個通用的解決方案:如果你需要匹配第一k列表項,選擇具有在li:nth-child(-n + k)

Codepen example


的形式被寫入

作爲一個方面說明,如果使用負指數對您而言並不直觀,您還可以恢復邏輯並將該屬性應用於el對此語句是:nth-child(n + k + 1),像這樣

li:not(:nth-child(n + 3)) { 
    display: inline-block; 
} 

但在我看來是不易閱讀和邏輯是相當令人費解。

+0

哦,聰明,不知道 - 訣竅! – henry

+0

是的,這樣可以節省您將每個列表項目定位到「k」。你也可以使用負值並鏈接另一個':nth-​​child'僞類來匹配元素的內部範圍(例如從列表項3到5) – fcalderan

1

就使前兩個li inline-block的...

ul { 
 
    list-style-type: none; 
 
} 
 
li:first-child, 
 
li:nth-child(2) { 
 
    display: inline-block; 
 
}
<ul> 
 
    <li>Check All</li> 
 
    <li>Uncheck All</li> 
 
    <li>Option A</li> 
 
    <li>Option B</li> 
 
    <li>Option C</li> 
 
    <li>Option D</li> 
 
    <li>Option E</li> 
 
    <li>Option F</li> 
 
    <li>Option G</li> 
 
</ul>

1

在某些情況下,瞭解有關:first-child:nth-child(2)選擇器可能會對您有所幫助。不過,以你的例子來說,我假定你根本沒有以一種語義的方式安排HTML。 「檢查」和「取消」是行動...不列出項目。請參閱下面的代碼片段以獲取更多語義版本的示例。

.list { 
 
    display: block; 
 
    width: 400px; 
 
    margin: 0px auto; 
 
} 
 

 
.list-header { 
 
    text-align: center; 
 
    clear: both; 
 
    line-height: 50px; 
 
    background: grey; 
 
    padding: 0px 15px; 
 
} 
 

 
.list-buttons { 
 
    vertical-align: middle; 
 
} 
 

 
.list-ul { 
 
    display: block; 
 
    margin: 0px; 
 
    padding: 0px; 
 
    background: lightgrey; 
 
} 
 

 
.list-ul-item { 
 
    display: block; 
 
    padding: 15px; 
 
    text-align: center; 
 
}
<section class="list"> 
 
    <header class="list-header"> 
 
    <div class="list-buttons"> 
 
     <button>Check All</button> 
 
     <button>Uncheck All</button> 
 
    </div> 
 
    </header> 
 
    <ul class="list-ul"> 
 
    <li class="list-ul-item"> Option A </li> 
 
    <li class="list-ul-item"> Option B </li> 
 
    <li class="list-ul-item"> Option C </li> 
 
    <li class="list-ul-item"> Option D </li> 
 
    <li class="list-ul-item"> Option E </li> 
 
    <li class="list-ul-item"> Option F </li> 
 
    <li class="list-ul-item"> Option G </li> 
 
    </ul> 
 
</section>

+0

感謝BDawg,這是很好的建議。將保留以供將來參考,但是我自己並沒有像這樣寫這個列表,但是我試圖安排我正在使用的第三方庫(angularjs-dropdown-multiselect)的check/uncheck按鈕。 –

+0

哦不!當它是第三方時,你無法對語義進行太多處理。那麼其他人的答案肯定更適用於你的特殊情況。祝你好運! – BDawg