CSS继承机制下各类链接颜色的表现原理咨询
CSS继承属性对链接颜色的影响解析
示例代码
CSS
body { color: green; } .my-class-1 a { color: inherit; } .my-class-2 a { color: initial; } .my-class-3 a { color: unset; }
HTML
<ul> <li>Default <a href="#">link</a> color</li> <li class="my-class-1">Inherit the <a href="#">link</a> color</li> <li class="my-class-2">Reset the <a href="#">link</a> color</li> <li class="my-class-3">Unset the <a href="#">link</a> color</li> </ul>
运行结果

逐个拆解行为
默认链接颜色
浏览器自带的UA样式表给<a>标签设置了默认蓝色(带下划线),且<a>的color属性默认不继承父元素样式。所以即便body设置了绿色,这个链接仍保持浏览器默认的蓝色。inherit(继承)
给.my-class-1 a设置color: inherit,强制<a>继承父元素(此处为<li>,而<li>继承了body的绿色)的颜色值,因此这个链接显示为绿色。initial(初始值)
initial表示使用CSS规范定义的属性初始值,color的初始值为黑色。该值会完全忽略继承和自定义样式,所以这个链接变为黑色,和浏览器对<a>的默认样式无关。unset(取消设置)
unset是“智能”属性值:如果目标属性是可继承属性(比如color),它的效果等同于inherit;如果是不可继承属性,则等同于initial。由于color属于可继承属性,.my-class-3 a的color: unset和inherit效果一致,链接显示为绿色。
三个关键字核心定义
inherit:强制元素继承父元素的对应属性值initial:将属性重置为CSS标准定义的初始值,与浏览器默认样式无关unset:可继承属性走继承逻辑,不可继承属性走初始值逻辑
内容的提问来源于stack exchange,提问作者rocketdeveloper
相关产品推荐
相关产品推荐

