2017-05-27 78 views
0

是否可以設置CSS選擇器的特異性,而不是僅由構成它的選擇器的計數來確定?即,如果我有兩個選擇器,像這樣(示出所計算出的特異性):以編程方式設置CSS選擇器特性

UL OL LI  /* a=0 b=0 c=3 -> specificity = 3 */ 
UL OL LI.red /* a=0 b=1 c=3 -> specificity = 13 */ 

(從https://www.w3.org/TR/selectors/#specificity例子)

是否有任何方式改變第一實施例此,以均衡的特異性兩個選擇的和不添加的任意類選擇這樣做:

UL OL LI  /* a=0 b=1 c=3 -> specificity = 13 */ 

- 或 -

UL OL LI.red /* a=0 b=0 c=3 -> specificity = 3 */ 

回答

2

選擇器的特殊性僅由其組件簡單選擇器(以及僞元素,如果有的話)確定。您不能在不改變選擇器本身的情況下更改選擇器的特異性。

如果你擔心改變選擇器(以及它的一系列潛在匹配)的意義,有一定的假簡單的選擇,你可以同時保持語義完整的補充。在你的榜樣,你可以增加UL OL LI特異性匹配UL OL LI.red不通過實際採取的依賴上的任意類的名稱或者添加不合格:root到選擇的開始(以後代組合子)或添加:nth-child(n)任何一個三種類型的選擇器 - 都是保證匹配的,而僞類與類選擇器同樣具體。

也看到我的回答下面的問題更多的選擇:

有沒有類似的方法來下降選擇特異性,然而,無論是編程,也不通過改變選擇器(當然除去上述不合格的冗餘選擇器:root,:nth-child(n),或重複的類型/類選擇器)。

相關問題