2014-05-10 25 views
0

我正在爲默認的Spree模板製作一個SCSS覆蓋文件。在產品目錄顯示頁面上,每個產品圖像周圍都有一個邊框。如果我更改product-image類的基本狀態的邊框屬性,則不會改變。但是,如果我爲product-image:hover添加更改,則不存在問題。爲什麼重寫Spree默認樣式不一致?

我可以使用!important來解決問題,但我很想知道爲什麼沒有這個變化,儘管懸停狀態發生了變化。

+1

你的風格可能不會生效由於一些具有更高優先級的CSS指定不同的風格。 – gmacdougall

回答

0

選擇器有不同的特異性價值。它影響越權優先權:

從規格:

如下一個選擇的特異性被計算:

計數在選擇器ID選擇器的數目(= A)計數 數類選擇的,屬性選擇器,和僞類在 選擇器(= b)的計數忽略通用選擇否定僞類內 選擇器的類型選擇的數量和在選擇 僞元素(= C)進行計數等任何其他, ,但否定本身不算作僞類。

串接三個數字的A-B-C(在一些系統具有大 基)給出的特異性。

例子:

*    /* a=0 b=0 c=0 -> specificity = 0 */ 
LI    /* a=0 b=0 c=1 -> specificity = 1 */ 
UL LI   /* a=0 b=0 c=2 -> specificity = 2 */ 
UL OL+LI  /* a=0 b=0 c=3 -> specificity = 3 */ 
H1 + *[REL=up] /* a=0 b=1 c=1 -> specificity = 11 */ 
UL OL LI.red /* a=0 b=1 c=3 -> specificity = 13 */ 
LI.red.level /* a=0 b=2 c=1 -> specificity = 21 */ 
#x34y   /* a=1 b=0 c=0 -> specificity = 100 */ 
#s12:not(FOO) /* a=1 b=0 c=1 -> specificity = 101 */ 

可以計算選擇特異性與this tool

+0

這似乎已經撞上了頭部,非常感謝你。不知道元素的數量會對優先級產生影響。 – TheMinimalCriminal

+0

@TheMinimalCriminal這是有道理的,因爲你可以爲某個組中的所有元素指定的行爲,並參考最具體的人將其覆蓋。例如:「所有的貓(物種)都有毛皮,斯芬克斯(品種)沒有。」 – JAre