我最初在SVG文件中使用CSS時注意到了這個問題,並認爲它是渲染錯誤,但在HTML中嘗試它之後,發生了相同的情況。CSS屬性選擇器優先於普通的CSS類選擇器
採取以下代碼:
.example {color:green}
.example {color:blue}
在這種情況下,作爲使用正常類選擇預期的color
的值最初,雖然後來在該文件中被重新定義爲blue
,從而所產生的顏色在課堂上的元素是藍色的。
現在藉此例如:
div[class='example'] {color:green}
.example {color:blue}
在這種情況下,現在開始使用的屬性選擇限定example
爲div的顏色值,當該值是使用正常CSS類選擇重新定義的,從綠色變化到藍色在div中被忽略,並且由屬性選擇器設置的值優先,儘管整個類的藍色值在稍後在文件中重新聲明。
根據Mozilla有關CSS class selectors的文檔,它說正常的選擇器和屬性選擇器是「等效的」,儘管在這種情況下似乎不是這種情況。這是什麼原因?
你的第一個CSS規則是尋找*兩個*條件(一個div **和**一個特定的屬性),而你的第二個只尋找*一個*條件(類)。雖然它自己的屬性選擇器*可能是等價的,但第一個示例包含兩個條件 - 因爲它更具體,它會優先。 – Santi
同意。 @Santi是正確的。要有一個簡單的屬性選擇器,您需要將樣式規則更改爲'[class ='example']'放棄'div'部分。 –