HTML中CSS样式的优先级

  css样式的优先级基于它的继承性。在此篇没有提及标签选择器和通配符选择器,但它们的优先级很低,仅高于body!

  并且所介绍的都是单个选择器的优先级,因为组合型的选择器就是单个选择器优先级的累加。

css样式的优先级在本篇中按从低到高的顺序排列,就是目录的顺序


CSS中body的样式

我们知道每一个 HTML 页面都有一个 body 元素。

想要证明body元素的存在,将其 background-color 设置为红色。

把以下代码添加到我们的style标签中:

body {
  background-color: red;
}

即使在网页中除style外并没有任何标签,仍然变成了红色,现在我们已经证明,每个HTML页面都有一个body元素,并且它的body元素同样能够应用样式。

记住,你可以像任何其他HTML元素一样对你的body元素应用样式,并且所有其他元素都将继承你的body元素的样式。

body样式的覆盖(class会覆盖body中的样式)

body作为一个顶级父类,一般情况任意的样式都将覆盖它

创建一个h1标签

在body的样式表中加入一个 color:green, 此时h1中的文本变成了绿色

有时你的 HTML 元素会得到多个相互冲突的样式。

例如,你的 h1 元素不能同时为绿色和粉色。

给你的h1添加一个class,pink-text

在style中加入,并设置颜色为粉色

你会发现,h1的颜色变为了粉色

使用class 会覆盖 body 元素的 CSS,这点可以理解为继承中的重写

多个class处理样式覆盖

创建一个名为 blue-text 的 CSS class,其颜色设置为蓝色,确保它在 pink-text class 声明之下。

除了 pink-text class 之外,你还可以将 blue-text class 应用到你的 h1 元素,让我们看看哪一个会被应用。

如下例子所示,通过用空格分隔多个 class 属性,可让 HTML 元素应用多个 class 属性:

class="class1 class2"

注意:在 HTML元素中列出这些 class 的顺序并不重要。但是,< style\> 部分中的 class 声明的顺序是重要的,第二个声明将始终优先于第一个声明。因为优先级相同时,则采用就近原则,选择最后出现的样式, .blue-text 是第二个声明,它会覆盖 .pink-text 的属性。


通过ID的样式属性覆盖class类的声明

我们刚刚证明了,浏览器是从上到下读取CSS。这意味着,如果发生冲突,浏览器将使用最后的任何CSS声明。

我们还有其他覆盖 CSS 的方法。你还记得 id 属性吗?

我们来覆盖你的 pink-text 和 blue-text class,并使你的 h1 元素变成橙色,给 h1元素一个id,然后对该id进行样式化。

给你的 h1 元素添加名为 orange-text 的 id 属性。记住,id 样式如下所示:

在你的 h1 元素中保留 blue-text 和 pink-text class。

为你的 style 元素中的 orange-text id 创建一个 CSS 声明。如下例子所示:

#brown-text {    
  color: brown;    
}

注意:你是否将这个css声明在pink-text class之上或之下无关紧要,因为id属性始终是具有更高的优先级。

通过内联样式覆盖class类的声明

我们已经证明了,id 声明都会覆盖 class 声明,不管它在你的 style 元素 CSS 的哪个位置进行声明。

内联样式可以覆盖其他CSS。

使用 in-line style(内联样式)来尝试使我们的 h1 元素变为白色。就是标签内的style属性,
内联样式如下所示:

<h1 style="color: white;">

在你的 h1 元素上保留 blue-text 和 pink-text class。

通过使用Important覆盖所有其他样式

我们刚证明了内联样式将覆盖style 中定义的所有 CSS声明。
可是,有最后一个终极方法来覆盖CSS。但在我们这样做之前,让我们来谈谈你为什么要覆盖CSS。

在许多情况下,将使用CSS库。这些可能会意外覆盖自己的CSS。所以当你绝对需要确定一个元素具有特定的CSS时,可以使用 !important。

让我们回到之前的 pink-text class 声明。请记住,我们的 pink-text class 被后续的 class 声明、id 声明和内联样式覆盖了。

我们来给 pink-text 元素的 color 声明加上关键字 !important,以使 100% 确保你的 h1 元素是粉色的。

举例如下:

color: pink !important;
  • 颜色除了使用单词还可以用 hex code(‘#000000’这样的形式),是16进制符号,(提到16进制,我们会发现刚好是作为rgb值的范围(0-255),每两个字符对应rgb中的一个值)
  • 或者rgb()函数,rgba()函数
    rgb指红绿蓝,范围在0到255
    a是透明度,范围在0到1
HTMLCSS样式优先级是指当多个CSS规则同时应用到同一个元素上时,决定哪个规则的样式优先显示的规则。CSS样式优先级由高到低的顺序如下: 1. 内联样式(Inline Style):直接写在HTML元素的style属性中的样式具有最高的优先级。例如: ```html <p style="color: red;">这是红色文字</p> ``` 2. 内部样式表(Internal Style Sheet):在HTML文档头部的`<style>`标签中定义的样式表具有次高的优先级。例如: ```html <head> <style> p { color: blue; } </style> </head> <body> <p>这是蓝色文字</p> </body> ``` 3. 外部样式表(External Style Sheet):通过`<link>`标签引入的外部CSS文件具有比内部样式表低的优先级。例如: ```html <head> <link rel="stylesheet" href="styles.css"> </head> <body> <p>这是从外部样式表定义的样式</p> </body> ``` 4. 浏览器默认样式(Browser Default Styles):浏览器默认给定的样式是最低优先级的。如果没有定义任何样式,元素将应用浏览器默认样式。 5. 选择器特殊性(Selector Specificity):如果多个规则都是通过相同的选择器选中同一个元素,那么会根据选择器的特殊性来决定优先级。特殊性的计算规则是:ID选择器的特殊性最高,类选择器和属性选择器次之,标签选择器和伪类选择器再次之,通用选择器和伪元素选择器最低。例如: ```html <style> p { color: red; } .my-class { color: blue; } </style> <p class="my-class">这个段落的颜色将是蓝色,因为类选择器的特殊性比标签选择器高</p> ``` 需要注意的是,当样式优先级相同时,后定义的样式会覆盖前面定义的样式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值