CSS 中 a 标签为什么不能继承父类的颜色?
关注者
32
被浏览
8,853
8 个回答
默认排序
1、结论:由于CSS的层叠(cascading),a元素继承自div的样式(color:red)被浏览器的a元素的默认样式给覆盖了。
2、理由:
看图:
图一:
图二:
由以上两个图可以知道:
1、浏览器本身对 a元素有默认样式(user agent stylesheet)(图二),对 span元素没有默认样式(图一)
2、由于CSS的层叠,a元素red颜色继承自div(Inherited from div)被划掉了(图二)。
由此可以得到我上面书写的结论。
3、涉及到的知识点:
Cascade - CSS
《CSS权威指南》第三章
23
4 条评论
收藏
感谢
收起
分享
泻药
上头都答的差不多了啦。
如 @李力 所说
其实就是 A 的浏览器默认样式里有带有伪类。
其特异性值是 [0,0,1,1] (按CSS2的……3(广义的3……)又有不同)
2
3 条评论
收藏
感谢
分享
因为浏览器默认给 a 设置了颜色,而 span 没有。
火狐开发者工具,在设置面板选中「查看器」下的「显示浏览器样式」,然后查看元素看看。
1
添加评论
收藏
感谢
分享
Useragent Stylesheet
webkit: html.css in trunk/Source/WebCore/css
IE: Internet Explorer UA Style Sheets
Firefox: http://mxr.mozilla.org/mozilla-central/source/layout/style/html.css
webkit: html.css in trunk/Source/WebCore/css
IE: Internet Explorer UA Style Sheets
Firefox: http://mxr.mozilla.org/mozilla-central/source/layout/style/html.css
0
添加评论
收藏
感谢
分享
浏览器本身对 a 标签有默认样式,是直接对 a 标签指定的
例如在我这 Google Chrome 浏览器里:
所以你没写任何样式,但是看到 a 标签应该是带下划线的,还可能是蓝的,链接访问过后可能是红的 ( :visited ) 。
从父级 div 继承下来的优先级没有选择器高,覆盖不到。
例如在我这 Google Chrome 浏览器里:
所以你没写任何样式,但是看到 a 标签应该是带下划线的,还可能是蓝的,链接访问过后可能是红的 ( :visited ) 。
从父级 div 继承下来的优先级没有选择器高,覆盖不到。
3
添加评论
收藏
感谢
分享
原因就是楼上几位说的,不过为这点问题再给a单独设置颜色明显不科学。
可以让a的颜色默认继承父级,这样
a {color: inherit;
}
6
4 条评论
收藏
感谢
分享
此问题在 stackoverflow 上有讨论:css - when will "a" tag not inherit color attribute of parent tag?
0
2 条评论
收藏
感谢
分享
写回答