【从零开始学习CSS | 第三篇】选择器优先级

news/2024/11/18 0:36:40/

目录

前言:

常见选择器的优先级(从高到低)

选择器的权重:

总结:


前言:

        在前几篇文章中我们介绍了大量的选择器,那么大量的选择器在使用的时候,一定是有一个优先级顺序的,因此我们在本篇文章中,就详细的给大家介绍一下各个选择器之间的优先级高低关系。

常见选择器的优先级(从高到低)

1. 内联样式(Inline styles):
  - 优先级最高的选择器。
  - 通过在HTML元素的style属性中直接定义样式。
   -示例代码:

<div style="color: red;">This is a div with inline style.</div>

2. ID选择器(ID selectors):
   - 通过给元素添加id属性,并使用#符号进行选择。
   - 示例代码:

#myDiv
{
color: blue;
}<div id="myDiv">This is a div with ID selector.</div>

3. 类选择器(Class selectors):
   - 通过给元素添加class属性,并使用.符号进行选择。
   - 示例代码:

    .myClass {color: green;}<div class="myClass">This is a div with class selector.</div>

4. 属性选择器(Attribute selectors):
   - 通过元素的属性进行选择。
   - 示例代码:

 input[type="text"]{border: 1px solid gray;}<input type="text" />

5. 伪类选择器(Pseudo-class selectors):
   - 通过元素的特殊状态选择。
   - 示例代码:

<a href="#">This is a link.</a>a:hover 
{text-decoration: underline;}

6. 标签选择器(Element selectors):
   - 通过元素的标签名进行选择。
   - 示例代码:

<h1>This is a heading.</h1>h1 
{
font-size: 24px;
}

在样式表中,如果多个选择器应用到同一个元素上,优先级较高的选择器的样式将会覆盖优先级较低的选择器的样式。通过合理的选择器使用,可以确保样式的正确应用。

选择器的权重:

CSS选择器的权重是一个用来确定选择器优先级的值,它决定了当多个选择器应用于同一个元素时,哪个选择器的样式规则被应用。

CSS选择器权重可以按照以下规则进行计算:

1. 内联样式的权重为 1000。内联样式是直接在元素的`style`属性中定义的样式规则。

2. ID选择器的权重为 100。ID选择器使用`#`表示,例如`#myElement`。

3. 类选择器、属性选择器和伪类选择器的权重为 10。类选择器使用`.`表示,属性选择器使用`[]`表示,伪类选择器使用`:`表示。

4. 标签选择器和伪元素选择器的权重为 1。标签选择器是直接使用HTML标签名称表示的选择器,例如 `div`、`p`、`a`。伪元素选择器使用`::`表示,例如::before、::after。

当多个选择器应用于同一个元素时,CSS引擎会将选择器的权重进行比较,优先应用权重较高的样式规则。具有相同权重的选择器,后定义的样式规则将覆盖先定义的样式规则。

需要注意的是,权重的计算是独立的,不受选择器的具体位置或者样式声明的顺序影响。也就是说,无论选择器在哪个样式表中、或者样式规则的顺序如何,权重计算都是根据选择器本身进行的。

如果在权重计算中使用了重要性声明`!important`,则该样式规则将具有最高的优先级,无视其他选择器的权重。

总之,选择器权重提供了一种机制,可以管理和控制不同选择器应用于元素时的样式优先级。合理使用选择器权重可以确保样式规则的正确应用和覆盖。

计算案例:

        在CSS中,可以使用逗号将多个选择器组合在一起,形成一个复合选择器。当使用复合选择器时,每个选择器都会单独计算其权重,并且最终的权重是所有选择器权重的累加。

对于复合选择器 (a, b, c),每个选择器的权重将被单独计算,然后相加得到最终的权重。

例如,对于选择器 `div.container, .myClass, #myId`,我们将按照以下步骤计算权重:

  • 对于选择器 `div.container`,它由一个标签选择器和一个类选择器组成。标签选择器的权重为    1,而类选择器的权重为 10。因此,`div.container` 的权重为 1 + 10 = 11。
  • 对于选择器 `.myClass`,它只有一个类选择器,其权重为 10。
  • 对于选择器 `#myId`,它只有一个ID选择器,其权重为 100。
  • 最后,将三个选择器的权重相加:11 + 10 + 100 = 121。

因此,选择器组合 `(div.container, .myClass, #myId)` 的权重为 121。

有的(a,b,c)也会直接记录当前选择器的个数,例如:

 这种在比较的时候直接比较每一位的个数就好了,但实际上和我们介绍的还是一个东西,而我们写好一个选择器之后,编译器也会把当前选择器的权重告知我们的。

在应用样式规则时,具有最高权重的选择器的样式规则将适用于元素。如果多个选择器具有相同的最高权重,则最后定义的样式规则将优先应用。

需要注意的是,权重计算遵循选择器优先级的规则,其中 ID 选择器的权重最高,其次是类选择器和属性选择器,最后是标签选择器。因此,当计算复合选择器的权重时,应根据单个选择器的权重进行计算,并将它们相加。

总结:

本文我们详细的介绍了选择器的优先级以及计算方式,在以后我们写大型前端项目的时候,就会频繁的调整选择器的优先级以此来达到我们需要的样式,因此我们一定要掌握好本章节。

如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!

 


http://www.ppmy.cn/news/879118.html

相关文章

vue npm install报错如何处理

npm ERR! code ERESOLVE npm ERR! ERESOLVE could not resolve npm ERR! npm ERR! While resolving: eslint-plugin-vue5.2.3 npm ERR! Found: eslint6.8.0 npm ERR! node_modules/eslint npm ERR! peer eslint"> 1.6.0" from vue/cli-plugin-eslint4.4.4 这个错误…

明日之后 服务器维护,明日之后更新维护公告

斗玩网(d.chinaz.com)报道&#xff1a;明日之后12月27日更新了什么?更新了那些内容?更新几点结束?一起来看看明日之后12月27日更新维护公告吧。亲爱的幸存者&#xff1a;欢迎收听 101 广播电台&#xff0c;我是播音员西奥德罗。为了更好的明天&#xff0c;接下来我将为您播报…

5月18日德玛西亚服务器怎么维护,LOL5.18测试服更新内容是什么_LOL5月18日测试服更新内容介绍_游戏堡...

LOL5.18测试服更新内容是什么&#xff1f;测试服每天都有不同的内容在进行测试&#xff0c;下面是游戏堡小编为大家整理的LOL5月18日测试服更新内容介绍&#xff0c;一起来看看吧&#xff01; 原画更新 都铎王朝 图奇 英雄改动 疾风剑豪 亚索 斩钢闪(Q) 旋风烈斩的持续时间由10…

不义联盟2服务器维护,不义联盟2停止工作怎么解决_不义联盟2闪退怎么办

不义联盟2停止工作怎么办&#xff1f;很多玩家们在进入游戏的途中会出停止工作这样弹窗&#xff0c;导致无法运行游戏&#xff0c;下面我们就来分享一下不义联盟2停止工作解决方法&#xff0c;希望对各位有所参考。 不义联盟2停止工作解决方法 1.系统如果是ghost安装方式&#…

今天英雄联盟服务器维护要到好久,lol今天维护时间是多久 lol维护公告2020最新...

英雄联盟今天维护到几点?今日维护时间是多久?lol维护公告2020最新消息来啦!英雄联盟在4月16日凌晨1点进行了游戏的停机更新。下面&#xff0c;就和小编一起来了解一下最新的维护内容吧! lol10.8版本维护到几点 LOL将在4月16日凌晨1点关闭排位赛入口(不影响已经在进行中的对局…

队列--C语言实现数据结构

本期带大家一起用C语言实现队列&#x1f308;&#x1f308;&#x1f308; 文章目录 1、队列的概念2、队列的操作流程3 、队列的结构4、队列的实现4.1 队列的结构设计4.2 队列的初始化4.3 入队4.4 判断队列是否为空4.5 出队4.6 获取队头数据4.7 获取队尾数据4.8 获取队列当中数据…

大自然Windows XP日文版镜像

日文原版Windows XP镜像下载。 https://pan.baidu.com/s/111tNJFcd9uqbs82eQpUuag 提取码&#xff1a;g2f8 感谢作者的分享&#xff01;

hpy计算机维护系统 iso,hpy计算机维护系统.doc

文档介绍&#xff1a; 本贴导读为方便阅读,本帖汇编了本人历次发表的HPY系列五个板块八款启动U盘,包括UI写入GRUB型,UI写入SYSLINUX型,HP格式化grldr型,Fbinst全外置型,Fbinst全内置型,isolinux量产型以及 计算机维护系统ISO版和计算机维护系统GHO版。对每款启动盘的主要功能、…