CSS 属性的计算过程

本文介绍了CSS属性值的四种计算方式:确定声明值(优先级作者样式),层叠冲突处理,属性继承,以及最后使用默认值。通过实例详细阐述了这些过程。
摘要由CSDN通过智能技术生成

引子

一段很简单的代码,就一个段落,然后设置了一个颜色属性为红色。:

<p>this is a test</p>
p{
  color : red;
}

那么,这个段落真的就只有一个属性值 color 么?

当然不是,真实的情况是这个元素所有的属性都拥有,只不过有一组默认的属性值。例如:

在这里插入图片描述

当我们打开浏览器控制台,来到 Elements > Computed 面板,我们就会发现就算这么一个小小的 p,虽然我们只设置了一个 color 属性,但是其实它一个属性都没落下,每个属性都是有默认值。

总的来讲,属性值的计算方法有下面 4 种,这也是属性值的计算顺序:

  • 确定声明值:参考样式表中没有冲突的声明,作为 CSS 属性值
  • 层叠冲突:对样式表有冲突的声明使用层叠规则,确定 CSS 属性值
  • 使用继承:对仍然没有值的属性,若可以继承则继承父元素的值
  • 使用默认值:对仍然没有值得属性,全部使用默认属性值

确定声明值

当我们在样式表中对某一个元素书写样式声明时,这个声明就会被当作 CSS 的属性值。

举个例子:

<h1>test</h1>

在上面的代码中,我们没有书写任何的 CSS 样式,所以这个时候就采用浏览器的默认样式

font-size: 32px;
font-weight: 700

假设现在我们为这个 h1 设置一个样式:

font-size: 20px

这就是我们的作者样式,当作者样式和浏览器默认样式中的声明值有冲突时,会优先把作者样式中的声明值当作 CSS 的属性值。

font-weight 并没有和作者样式冲突,所以不受影响。

层叠冲突

当样式表声明值有冲突时,就会使用层叠规则来确定 CSS 的属性值。

例如:

<div class="test">
  <h1>test</h1>
</div>
.test h1{
  font-size: 50px;
}

h1 {
  font-size: 20px;
}

在上面的代码中,两个选择器都选中了 h1,并且都设置了 font-size 属性值,同属于作者样式,这显然就属于层叠冲突了。

当发送层叠冲突时,这时就要根据选择器的权重值来计算究竟运用哪一条作者样式。

落败的作者样式在 Elements>Styles 中会被划掉。

在这里插入图片描述

使用继承

如果该条属性作者并没有设置,那么还不会着急去使用默认值,而是会去看一下能否继承到该属性值。例如:

<div class="test">
  <p>this is a test</p>
</div>
.test{
  color:red
}

在上面的代码中,我们虽然没有在 p 段落上书写 color 属性,但是该属性能够从 div 上面继承而来,所以最终计算出来的值就是 red

使用默认值

最终,如果没有作者样式,该属性值也无法继承而来,则会使用浏览器的默认样式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值