elementui样式规则-CSS中样式覆盖规则详细介绍

2023-08-24 0 9,605 百度已收录

大家都知道CSS的全称叫做“Cascading Style Sheets”,但是恐怕很多人不知道“Cascading”这个词的含义。 其实,“层叠”指的是样式的覆盖。 当一个元素使用多种样式并且出现同名的样式属性时,浏览器必须从中选择一个属性值。 这个过程称为“级联”。 样式覆盖(这种别名比较流行)遵循一定的规则。 之前我对这个规则还隐隐约约的了解,直到这几天读了《CSS:缺失的手册》,才恍然大悟。 下面是我的一些学习笔记。

首先需要明确的是,很多情况会导致一个元素使用多种样式,样式覆盖的规则也需要根据不同的情况来确定。 具体规则如下。

规则1:当由于继承而发生样式冲突时,最近的祖先会失败。

CSS 的继承机制使元素能够从其包含的祖先元素继承样式。 考虑以下情况:

<pre class="brush:css;toolbar:false">

rule<br /> 1

body
{color:black;}
p
{color:blue;}

welcome
to gaodayue的网络日志

Strong分别继承了body和p的颜色属性,但由于p在继承树中更接近strongelementui样式规则,所以strong中的文本最终继承了p的红色。

规则2:当继承的样式与直接指定的样式冲突时,直接指定的样式失败。

在前面的反例中,如果还指定了强元素的样式,如:

strong
 {color:red;}

然后根据第二条规则,strong中的文字最终显示为白色。

规则3:当直接指定的样式发生冲突时,样式残差最高的为输。

样式的残差取决于样式的选择器,权重定义如下表。

CSS 选择器残差

标签选择器

类选择器

10

ID选择器

100

内联样式

1000

伪元素(:第一个子元素等)

伪类(:链接等)

10

可以看到,内联样式>>ID选择器>>类选择器>>标签选择器的残差,另外,后代选择器的残差是各个残差之和,比如“#nav .current a ”有残差为 100 + 10 + 1 = 111。

规则4:当风格残差相同时,后者获胜。

考虑以下情况

Written
 by Jean
 Graine de Pomme

.byline
 a {color:red;}
p
 .email {color:blue;}

“.byline a”和“p .email”都直接指定了前面的a元素,残差都是11。根据规则4,最终显示为红色。

由于样式表可以是外部样式表,也可以是内部样式表,因此规则4提醒我们要注意外部样式表导入的顺序(以及元素的顺序),以及外部样式表和内部样式表的出现位置。 一般来说,内部样式表出现在所有外部样式表导入之后并且通常之前。

规则 5:!important 的样式属性不会被覆盖。

!important 可以算是万不得已时打破上述四个规则的“金手指”。 如果必须使用某种样式属性并且不让它被覆盖elementui样式规则,可以在属性值后添加!important,以规则4的计数器示例为例,“.byline a {color:red !important;}”即可强制链接显示为蓝色。 大多数情况下,样式覆盖可以通过其他方法来控制,并且 !important 不能被滥用。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 elementui elementui样式规则-CSS中样式覆盖规则详细介绍 https://www.wkzy.net/game/149624.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务