为何CSS设置<li>的font-size生效,color却仅在<a>标签生效?
问题原因解析
这是浏览器默认样式与CSS继承规则共同作用的结果,核心原因如下:
<a>标签自带浏览器默认颜色样式:浏览器的用户代理样式表会给未自定义样式的<a>标签预设color属性(比如默认是蓝色),这个样式直接作用在<a>元素本身,优先级高于从父元素<li>继承来的color值。所以你给<li>设置的color会被<a>自身的默认颜色覆盖,看起来像是没生效。font-size无默认冲突:font-size属于CSS可继承属性,而浏览器默认样式中并没有给<a>标签设置font-size,因此<a>会自动继承父元素<li>的font-size值,所以这个样式能正常生效。
你可以通过浏览器开发者工具验证:选中<a>元素,查看样式面板,会看到color属性来自「user agent stylesheet」(用户代理样式表),而font-size则显示为「inherited from li」。
如果想让<li>的颜色作用到内部的<a>上,有两种常用方式:
- 给
<a>设置color: inherit,强制它继承父元素的颜色 - 使用后代选择器直接给
<a>设置样式:li a { color: 你的颜色值; }
内容的提问来源于stack exchange,提问作者Polycarp Angololo
相关产品推荐
相关产品推荐

