CSS 属性值计算过程

例子

我们来举例说明<h1> 标签最终的样式:

<div>
  <h1 class="red">标题一</h1>
</div>

样式表1——自定义样式

.red {
  color: salmon;
  font-size: 40px;
}

h1 {
  font-size: 30px;
}

div h1.red {
  font-size: 20px;
  font-size: 3em;
}

div {
  background-color: rgba(0, 0, 0, 0.3);
  text-align: center;
}

样式表2——浏览器默认样式

在这里插入图片描述


一个 css 属性计算出的最终属性值,会经过下面4个步骤。

在这里插入图片描述

1,确定声明值

在所有样式表中,没有冲突的 css 样式就是最终样式

可以看到,没有冲突的 css 样式有 color display margin-block-start… 等等。

所以这一步得到确定的最终样式:

h1 {
  color: salmon;
  display: block;
  margin-block-start: 0.67em;
  margin-block-end: 0.67em;
  margin-inline-start: 0px;
  margin-inline-end: 0px;
  font-weight: bold;
  /* 其他 css 声明... */
}

2,层叠冲突

对样式表中,有冲突的声明使用层叠规则

2.1,比较源重要性

重要性:自定义样式 > 浏览器默认样式。

所以font-size 的最终值会在自定义样式中确定:

.red {
  font-size: 40px;
}

h1 {
  font-size: 30px;
}

div h1.red {
  font-size: 20px;
  font-size: 3em;
}

这一步能够解释:为什么选择器权重低的自定义样式 * { margin: 0 },会覆盖浏览器默认的样式 body { margin: 8px }

在这里插入图片描述

2.2,比较优先级

也就是选择器的权重。很明显这个选择器的权重最高:

div h1.red {
  font-size: 20px;
  font-size: 3em;
}

2.3,比较源次序

相同 css 样式,代码靠后的覆盖代码靠前的。

在这里插入图片描述

此时得到的最终样式:

h1 {
  font-size: 3em;
  color: salmon;
  display: block;
  margin-block-start: 0.67em;
  margin-block-end: 0.67em;
  margin-inline-start: 0px;
  margin-inline-end: 0px;
  font-weight: bold;
  /* 其他 css 声明... */
}

3,使用继承

对仍然没有值的样式,若可以继承,则继承父元素的样式

可以看到自定义样式还有一条 css 声明

div {
  background-color: rgba(0, 0, 0, 0.3);
  text-align: center;
}

其中 background-color 不能继承,text-align 可以继承。所以得到继承样式:

在这里插入图片描述

h1 {
  text-align: center;
  font-size: 3em;
  color: salmon;
  display: block;
  margin-block-start: 0.67em;
  margin-block-end: 0.67em;
  margin-inline-start: 0px;
  margin-inline-end: 0px;
  font-weight: bold;
  /* 其他 css 声明... */
}

4,使用默认值

对仍然没有值的样式,使用默认值(预设值)

比如 <h1>background-color 默认值是 transparent

h1 {
  background-color: transparent;
  text-align: center;
  font-size: 3em;
  color: salmon;
  display: block;
  margin-block-start: 0.67em;
  margin-block-end: 0.67em;
  margin-inline-start: 0px;
  margin-inline-end: 0px;
  font-weight: bold;
  /* 其他 css 声明... */
}

此时已经确定了最终的样式,还需要通过最后一步单位转换,让浏览器能够识别。

尺寸相关的样式,会将相对单位转换为绝对单位,比如 em rem % auto 都转为 px
颜色都会转换 rgb()。red 转为 rgb(255, 255, 255)transparent 转为 rgba(0, 0, 0, 0)

在这里插入图片描述


其他

有了上面的规则,再看一个例子:

<div class="box">
  <a href="">超链接</a>
</div>
.box {
  color: red !important;
}

效果:

在这里插入图片描述
解释:

在第一步确定声明值中,<a> 的浏览器默认样式中是有 color 样式的。而且也没有对 <a> 设置自定义样式。所以直接就能确定 <a>color 样式值。

在这里插入图片描述

所以,一般在项目中会对 <a> 设置如下自定义样式,来继承父级的 color,方便后续的操作。

a {
  text-decoration: none;
  color: inherit; /* 表示继承 */
}

以上。


参考:渡一教育。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: CSS中的计算属性calc()可以实现根据宽度来计算高度。calc()函数可以用于设置元素的宽度、高度、内边距、外边距等属性。 calc()函数可以使用加法(+)、减法(-)、乘法(*)和除法(/)进行运算。也可以和px、百分比(%)等单位进行运算。 例如,要设置一个元素的高度等于宽度减去100像素,可以使用如下代码: ```css .element { width: 300px; height: calc(100% - 100px); } ``` 在上述代码中,height属性使用了calc()函数来计算高度。计算过程是100%(父元素高度)减去100px,结果即为元素的实际高度。 通过使用calc()函数,可以根据宽度来动态计算元素的高度,使得页面在不同尺寸的屏幕上都能够适配和展示良好的布局。 ### 回答2: CSS的calc()函数是一种用于计算CSS属性的方法。在使用calc()函数时,我们可以使用数学表达式来进行计算,以便根据具体的条件来确定属性。在这个问题中,您希望根据给定的宽度计算高度。 要使用calc()函数来计算高度,您可以将calc()函数应用于CSS的height属性。具体步骤如下: 1. 首先,确定给定元素的宽度。例如,假设宽度为200px。 2. 在计算高度之前,确保已经确定了该元素的所有其他相关属性,例如padding、border等。因为这些属性会影响到最终的计算结果。 3. 使用calc()函数来计算高度。假设我们想要将高度设置为给定宽度的两倍。那么可以使用如下的CSS代码: ``` height: calc(2 * 200px); ``` 这样,就可以根据给定的宽度计算出高度,即400px。 需要注意的是,calc()函数中的数学表达式可以包含不同的单位(如px、em等),也可以进行加减乘除等操作。这样,您可以根据具体的需求来进行计算,并动态地设置属性。 另外,还需要考虑浏览器的兼容性。calc()函数在大多数现代浏览器中都得到了支持,但对于较旧的浏览器版本可能存在兼容性问题。因此,在使用calc()函数时,最好进行兼容性测试,并根据实际需求来选择合适的解决方案。 ### 回答3: CSS中的calc()函数可以根据一个元素的width属性计算height属性。这个函数可以用于动态地设置一个元素的高度,而不需要事先固定一个具体的数。 使用calc()函数的格式为:calc(计算表达式),其中计算表达式可以包含各种数、操作符和单位。 举个例子,如果我们想设置一个元素的高度为其宽度的一半,可以使用如下的CSS代码: ```css .element { width: 200px; /* 假设宽度为200px */ height: calc(50% * var(--width)); /* 通过计算表达式设置高度 */ } ``` 在这个例子中,calc()函数的计算表达式为"50% * var(--width)",其中"50%"表示宽度的50%(即一半),而"var(--width)"表示一个自定义的变量,它的为元素的宽度,使用var()函数可以引用该变量。因此,最终的高度会根据宽度的大小动态计算出来。 需要注意的是,使用calc()函数设置高度时,要确保计算表达式的数和单位是相匹配的,否则会导致计算结果错误。另外,calc()函数只能用于CSS中数属性计算,无法用于其他属性计算。 总结来说,CSS中的calc()函数可以根据width属性来动态计算height属性,通过定义一个计算表达式来实现高度的自适应调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

下雪天的夏风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值