CSS 中 a 標籤為什麼不能繼承父類的顏色?
01-14
嗯,我知道在這麼好的環境下,問這麼Low的問題太der,但是不弄明白心裡痒痒,只能出此下策。
問題是這樣的:HTML:
&
&文字&
&鏈接&
&
CSS:
div{
color:red;
}
1、結論:由於CSS的層疊(cascading),a元素繼承自div的樣式(color:red)被瀏覽器的a元素的默認樣式給覆蓋了。
2、理由:
看圖:圖一:3、涉及到的知識點:
瀉藥
上頭都答的差不多了啦。如 @李力 所說其實就是 A 的瀏覽器默認樣式里有帶有偽類。
其特異性值是 [0,0,1,1] (按CSS2的……3(廣義的3……)又有不同)(用戶)直接設置 div 的是 [0,0,0,1] (其子A再繼承),(導致A特異性值)比上面(瀏覽器默認樣式直接設置)低,無法覆蓋。
因為瀏覽器默認給 a 設置了顏色,而 span 沒有。
火狐開發者工具,在設置面板選中「查看器」下的「顯示瀏覽器樣式」,然後查看元素看看。Useragent Stylesheetwebkit: html.css in trunk/Source/WebCore/cssIE: Internet Explorer UA Style SheetsFirefox: http://mxr.mozilla.org/mozilla-central/source/layout/style/html.css
瀏覽器本身對 a 標籤有默認樣式,是直接對 a 標籤指定的例如在我這 Google Chrome 瀏覽器里:
原因就是樓上幾位說的,不過為這點問題再給a單獨設置顏色明顯不科學。
可以讓a的顏色默認繼承父級,這樣
a { color: inherit;}一句話你就明了:繼承的特殊性是無,連0都不是。所以被用戶代理覆蓋了。
此問題在 stackoverflow 上有討論:css - when will "a" tag not inherit color attribute of parent tag?
推薦閱讀:
※css偽元素:after和 :before 存在的意義?
※除了聖杯布局和雙飛翼布局還有其他哪些比較有特點的布局方法?
※CSS 屬性 display 取值 box 和 flexbox 以及 flex 有什麼不同,分別表示什麼?