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

news2025/9/15 3:53:36

目录

前言:

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

选择器的权重:

总结:


前言:

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

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

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.coloradmin.cn/o/755630.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

graylog源码搭建

这里主要讲如何源码安装graylog 下载地址&#xff1a; https://www.graylog.org/downloads/ 下载带有JVM的源码文件源码安装 下载graylog-5.1.3-linux-x64.tgz&#xff0c;并上传到Centos中&#xff0c;执行以下操作 tar -zxvf graylog-5.1.3-linux-x64.tgzcd /etcmkdir -p …

Python GUI编程利器:Tkinker中的颜色选择对话框(15)

小朋友们好&#xff0c;大朋友们好&#xff01; 我是猫妹&#xff0c;一名爱上Python编程的小学生。 和猫妹学Python&#xff0c;一起趣味学编程。 今日目标 学习Tkinter中的颜色对话框的使用&#xff0c;实现如下效果&#xff1a; 颜色选择对话框 颜色选择对话框可以提供一…

JavaWeb 笔记——6

JavaWeb 笔记——6 一、Vue1.1、Vue-概述1.2、Vue快速入门1.3、Vue常用指令1.3、Vue生命周期1.4、查询所有-案例1.5、新增品牌-案例 二、Element2.1、Element概述2.2、快速入门2.3、Element布局2.4、常用组件 三、综合案例3.1、换件搭建3.2、查询所有3.3、新增品牌3.4、Servlet…

集群基础2——LVS负载均衡apache(nat模式)

文章目录 一、环境说明一、配置调度器网卡二、配置后端服务器三、配置调度器四、验证五、设置https负载均衡 一、环境说明 使用lvs中的nat模型&#xff0c;对apache负载均衡集群。 主机IP角色安装服务真实IP&#xff1a;192.168.161.129VIP&#xff1a;192.168.161.130调度服务…

证照之星软件怎么样?证照之星怎么换背景色

随着科技的快速发展&#xff0c;越来越多的软件应用于各个方面&#xff0c;为人们的生活和工作带来便利。今天&#xff0c;我们要介绍的就是一款证件照制作方面的软件——证照之星。那么&#xff0c;证照之星到底是什么软件&#xff1f;它好用吗&#xff1f;这篇文章将为大家详…

【PHP面试题45】cgi与fast_cgi关系是怎么样的

文章目录 一、CGI与FastCGI简介二、CGI与FastCGI的关系三、CGI与FastCGI的应用场景四、总结 一、CGI与FastCGI简介 本文已收录于PHP全栈系列专栏&#xff1a;PHP面试专区。 计划将全覆盖PHP开发领域所有的面试题&#xff0c;对标资深工程师/架构师序列&#xff0c;欢迎大家提前…

解析!1V1直播源码开发搭建技术实时语音识别翻译功能的应用

语言是我们人类交流的工具&#xff0c;它的种类繁多&#xff0c;比如世界语言&#xff0c;像是中国的汉语、英国的英语、法国的法语等&#xff1b;又或是我们中国的方言&#xff0c;像是山东话、北京话、上海话等。可谓是五花八门&#xff0c;争奇斗艳&#xff0c;每一种世界语…

MySQL的安装与卸载

1. MySQL安装 连接MySQL cmd或自带工具或Navicat 2. MSQL卸载

怎么管理酒店后勤维修工作?如何提高客户满意度?

酒店维修不及时会对客户满意度产生负面影响。当客人入住酒店时&#xff0c;如果发现设施设备出现故障或损坏&#xff0c;会直接影响客人的入住体验和满意度。如果这些故障或损坏得不到及时维修和解决&#xff0c;客人会对酒店的服务质量和信誉产生怀疑&#xff0c;可能会对酒店…

3.2.17 什么是数组及应用

【分享成果&#xff0c;随喜正能量】人这一生&#xff0c;好不好都得自己走&#xff0c;累不累都得自己承受。每个人都有难言之苦&#xff0c;每个人都有无声的泪&#xff0c;岁月可曾放过谁&#xff1f;再风光的人&#xff0c;背后都有寒凉凄楚&#xff0c;再幸福的人&#xf…

【UE4 塔防游戏系列】04-敌人沿着指定路线移动

目录 效果 步骤 一、绘制道路 二、创建出生点和路径点 三、生成敌人 四、敌人沿着路径点移动 效果 步骤 一、绘制道路 首先绘制一条道路&#xff0c;后面希望敌人会沿着这条绘制道路行走。 二、创建出生点和路径点 2.1 新建父类为Actor的蓝图&#xff0c;作为敌人出…

Docker——认识Docker 常用命令 Linux中安装docker 常见问题及其解决

目录 引出Docker是啥&#xff1f;Docker是啥&#xff1f;Docker VS 虚拟机1.特性优势2.资源优势 Docker的架构Docker常用命令&#xff08;1&#xff09;docker ps&#xff08;2&#xff09;docker stop 容器名称&#xff08;3&#xff09;docker ps -a&#xff08;4&#xff0…

css基础知识二十:说说对Css预编语言的理解?有哪些区别?

一、是什么 Css 作为一门标记性语言&#xff0c;语法相对简单&#xff0c;对使用者的要求较低&#xff0c;但同时也带来一些问题 需要书写大量看似没有逻辑的代码&#xff0c;不方便维护及扩展&#xff0c;不利于复用&#xff0c;尤其对于非前端开发工程师来讲&#xff0c;往…

[java安全]CommonsCollections3.1

文章目录 【java安全】CommonsCollections3.1InvokerTransformerConstantTransformerChainedTransformerTransformedMap如何触发checkSetValue()方法&#xff1f;AnnotationInvocationHandlerpoc利用链 【java安全】CommonsCollections3.1 java开发过程中经常会用到一些库。Ap…

【Python 基础篇】Python环境搭建

文章目录 一、Python环境的下载二、Python环境变量的安装及配置三、Python编译器的选择一、Python环境的下载 Python官方网站:www.python.org 这个是Python的官方网站,Python下载以及相关文档都能在里面找到 如果下载慢的话,可以在各大电脑应用市场下载(自己是在联想应用商…

【分布式任务调度】XXL-JOB调度中心集群部署配置(一)

文章目录 1.概述2.代码编译2.1.代码下载2.2.初始化与编译 3.集群部署3.1.服务启动3.2.反向代理 4.结语 1.概述 XXL-JOB是一款轻量级的分布式任务调度中间件&#xff0c;默认支持6000个定时任务&#xff0c;如果生产环境的任务数量在这个范围内&#xff0c;可以选择使用 XXL-JO…

【手撕C语言基础】联合体与枚举

(꒪ꇴ꒪ ),hello我是祐言博客主页&#xff1a;C语言基础,Linux基础,软件配置领域博主&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff01;送给读者的一句鸡汤&#x1f914;&#xff1a;集中起来的意志可以击穿顽石!作者水平很有限&#xff0c;如果发现错误&#x…

九五从零开始的运维之路(其二十)

[TOC](文章目录) 文章目录 前言一、LAMP是什么二、配置环境及安装1.配置yum源2.关闭防火墙、网络图形化工具及SElinux3.安装软件包 三、配置apache服务器内容四、启动服务五、访问验证总结 前言 本篇将简述的内容&#xff1a;Linux系统下的LAMP平台部署 基于discuz框架的论坛搭…

StartAllBack| Win11 更新系统后闪屏

解决方法&#xff1a;安装最新版 StartAllBack 中文官网&#xff1a;http://www.startallback.cn 激活方式&#xff1a; ① 点击下载好的 .exe 文件安装 StartAllBack ② 打开 StartAllBack 的安装目录 为我安装的路径&#xff1a;C:\Users\你的用户名\AppData\Local\Start…