a标签的字体颜色继承问题

问题

首先我们一起来看一个知乎上的问题吧。

HTML:

<div>
  <span>文字</span>
  <a href="#">链接</a>
</div>

CSS:

div{ 
  color:red; 
}

问题:

为什么span标签继承了父类的颜色,唯独链接不能,直到直接设置a的颜色就行。

探究

这个问题曾经也困恼着我,后来大概猜到是继承的特指度没有a标签浏览器默认设置的高。
根据这个思路我们继续探讨,既然继承的没有浏览器默认的特指度高,那浏览器默认设置的是什么呢?我们以chrome浏览器为例进行查看,如下图:

这里写图片描述

我们看到,当我们把css样式设置里的color取消的时候,默认的设置就生效了,所以我们需要做的事情是覆盖掉默认样式里的颜色设置。

解决

我们可以直接设置想上图一样设置a标签的颜色,也可以设置成如下,这样a标签就会继承父元素的颜色设置了。

a {
  color: inherit;
}

扩展

1、不知道特指度的同学可以阅读一下我的这篇文章CSS选择器优先级

2、我查了一下webkit内核浏览器默认样式,a标签的默认设置如下:

a:any-link {
    color: -webkit-link;
    text-decoration: underline;
    cursor: auto;
}

a:any-link:active {
    color: -webkit-activelink;
}

同时我找了一下,发现所有标签中,只有a元素有设置字体颜色,input、textarea有设置背景颜色,其他的都没有设置。
查阅地址:https://trac.webkit.org/browser/trunk/Source/WebCore/css/html.css

如果你对样式的5种来源不是很清楚的话,可以阅读
CSS样式的五种来源及浏览器默认样式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值