2017-07-28 135 views
1

我想爲我用來過濾列表的組件定義樣式。我做了一個類來選擇它們,然後我想重寫一些選定的類。 一些代碼是勝過千言萬語:覆蓋SASS類

div[class*="filter-"] { 
     (some property) 
} 

.filter-specific { 
    (do something more specific) 
} 

但由於某種原因,這是行不通的。我認爲定義的順序很重要,但似乎並非如此。我不能把!important無處不在。那麼我做錯了什麼?

回答

1

這是因爲CSS的特殊性。

div[class*="filter-"]具有更好的特異性(div + [class*="filter-"])然後.filter-specific

你可以用這個CSS Specificity calculator來測試它。

如果.filter-specific將永遠是一個div,那麼你可以使用它像:

div[class*="filter-"] { 
 
    color: red; 
 
} 
 

 
div.filter-specific { 
 
    color: blue; 
 
}
<div class="filter-foo">bar</div> 
 
<div class="filter-specific">spec</div>

參考:MDN CSS Specificity

+0

你可以從兩個選擇刪除'div'也是如此,是? –

+0

@NathanArthur當然,班級有更好的特異性,所以結果將是一樣的。 – Vucko

+0

非常完美,謝謝!我不知道css有這樣的機制來排序優先。 – Zibron