css中选择器的优先级

CSS 的优先级是由选择器的特指度(Specificity)重要性(Importance)决定的,以下是优先级规则:

特指度

  • ID 选择器 (#id): 每个ID选择器计为100。

  • 类选择器 (.class)、属性选择器 ([attr]) 和伪类选择器 (:hover, :focus 等): 每个此类选择器计为10。

  • 元素选择器 (p, div, span 等) 和伪元素选择器 (::before, ::after 等): 每个元素或伪元素选择器计为1。

优先级计算是将所有类型的选择器的分数相加。例如,#header .nav-link 的特指度就是 100 + 10 = 110。

样式来源顺序

  • 行内样式(内联样式):通过HTML元素的 style 属性直接定义的样式具有最高的特指度,除非遇到 !important 规则。

  • 内部样式表(在 <style> 标签中定义的样式)。

  • 外部样式表(通过 <link> 标签引入的样式表)。

  • 浏览器默认样式。

当两个规则特指度相同时,最后定义的规则会覆盖之前的规则(就近原则)。

重要性

  • !important 规则:当一个声明后面跟有 !important,它会覆盖任何其他相同属性且没有 !important 的声明,无论其特指度如何。

总结来说,按照优先级从高到低排序如下:

  • 行内样式(style=""),带有 !important 或不带

  • ID 选择器 (#id) 带有或不带 !important

  • 类选择器、属性选择器、伪类选择器等带有或不带 !important

  • 元素选择器、伪元素选择器带有或不带 !important

  • 最后定义的同优先级规则(对于非 !important 规则)

在实际应用中,尽量避免滥用 !important,因为它会降低代码可维护性和可预测性。

通常情况下,合理使用选择器以及遵循良好的层叠规则即可解决大部分样式冲突问题。

详细的示例说明

CSS样式优先级是由选择器的类型和特指度决定的,以下是一个详细的示例说明:

内联样式(行内样式)

<p style="color: red;">这是一个红色段落</p>

在这个例子中,<p>元素的颜色被设置为红色,由于样式直接写在了元素的style属性中,所以其优先级最高。

ID 选择器

#myPara {color: blue;
}
<p id="myPara">如果这个段落有id='myPara',则应该是蓝色</p>

ID选择器(如#myPara)具有较高的优先级。在上述代码中,如果有其他不那么具体的样式试图改变段落颜色,但该段落有ID且通过ID选择器设置了颜色,则最终颜色将是蓝色。

类选择器、属性选择器和伪类选择器

.important {color: green;
}
<p class="important">这是一个绿色段落,因为它应用了重要类</p>

类选择器(.important)的优先级高于标签选择器。因此,即使其他地方定义了对所有<p>元素的文本颜色,带有class="important"的段落将显示为绿色。

标签选择器和伪元素选择器

p {color: black;
}

这里所有的<p>元素默认颜色是黑色。但是,如果前面的例子中的任一更高优先级的选择器也作用于<p>元素,它们会覆盖这个标签选择器的效果。

!important 规则

p {color: yellow !important;
}

当 !important 修饰符用于某个声明时,它会提升该声明的优先级,使其高于其他任何非!important声明,即使是更具体的选择器。所以在上面的例子中,尽管之前可能有其他优先级更高的选择器设置了颜色,但加上!important后,<p>元素将以黄色显示。

总结来说,按照优先级从高到低排序如下:

  • 行内样式(style=""

  • ID选择器 (#id)

  • 类选择器、属性选择器、伪类选择器 (.[class][attr]:hover, 等)

  • 标签选择器、伪元素选择器 (pdiv:before, 等)

  • !important声明可以应用于以上任意选择器,并强制提升其优先级

当多个规则同时应用于一个元素时,优先级高的规则生效。

如果两个选择器具有相同特指度(例如两个类选择器),则根据CSS文件或样式表加载顺序来确定(后来加载的样式通常会覆盖先前加载的同优先级样式)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/695107.shtml

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

相关文章

Sora 远比你想象的可怕,它颠覆的不是一个行业而是整个时代!

​&#x1f680; Sora&#xff1a;不仅仅是视频生成 &#x1f680; 在AI技术的新纪元&#xff0c;OpenAI带来了Sora——一个超越传统视频生成器的世界模拟器。这项技术的出现&#xff0c;不仅令人震惊&#xff0c;更是对未来的一次大胆预言。Sora所生成的影片&#xff0c;逼真到…

【Quasar】quasar轮播图进度条

效果 开始效果 即将结束 结束 码 <template><q-carouselv-model"slide"transition-prev"scale"transition-next"scale"swipeableanimatedinfiniteautoplaynavigationpaddingarrowsheight"300px"class"bg-primary text…

【广度优先搜索】【网格】【割点】【 推荐】1263. 推箱子

作者推荐 视频算法专题 涉及知识点 广度优先搜索 网格 割点 并集查找 LeetCode:1263. 推箱子 「推箱子」是一款风靡全球的益智小游戏&#xff0c;玩家需要将箱子推到仓库中的目标位置。 游戏地图用大小为 m x n 的网格 grid 表示&#xff0c;其中每个元素可以是墙、地板或…

S281 LoRa网关助力智慧城市建设的智能交通管理

S281 LoRa网关作为智慧城市建设中的重要组成部分&#xff0c;发挥着关键的作用&#xff0c;特别是在智能交通管理方面。通过连接各类传感器设备和物联网终端&#xff0c;S281 LoRa网关实现了对城市交通系统的远程监控、智能调度和信息化管理&#xff0c;为城市交通管理部门提供…

Python hasattr函数

在Python编程中&#xff0c;hasattr()函数是一个非常有用的内置函数之一&#xff0c;用于检查对象是否具有指定的属性或方法。这个函数能够帮助我们在运行时动态地检查对象的属性和方法&#xff0c;从而避免由于缺少属性或方法而导致的异常。本文将深入探讨Python中的hasattr()…

C++入门学习(三十二)二维数组定义方式

一维数组类似于一条“线”&#xff0c;而二维数组类似于一个“面”&#xff0c;二维数组也更像一个表格&#xff0c;由我们在“表格”中查询数据。 1、先定义数组&#xff0c;后赋值 int arr[2][3]; #include <iostream> using namespace std;int main() { int arr…

线性代数:线性方程组解的结构

目录 齐次/非齐次方程组的解 Ax 0 的解的性质 定理 Ax b 的解的性质 相关证明 例1 例2 例3 齐次/非齐次方程组的解 Ax 0 的解的性质 定理 Ax b 的解的性质 相关证明 例1 例2 例3

渗透测试—信息收集

渗透测试—信息收集 1. 收集域名信息1.1. 域名注册信息1.2. SEO信息收集1.3. 子域名收集1.3.1. 在线子域名收集1.3.2. 子域名收集工具 1.4. 域名备案信息1.5. ICP备案号查询1.6. SSL证书查询 2. 收集真实IP2.1. 超级ping2.2. Ping2.3. CDN绕过 3. 收集旁站或C段IP3.1. 旁站或C段…

Nginx-----------高性能的 Web服务端 location 优先级(二)

一、event事件 events {worker_connections 65536; #设置单个工作进程的最大并发连接数use epoll;#使用epoll事件驱动&#xff0c;Nginx支持众多的事件驱动&#xff0c;比如:select、poll、epoll&#xff0c;只能设置在events模块中设置。accept_mutex on; #on为同一时刻一个…

学习笔记-Git

Git 问题一描述解决方法注意事项 问题一 描述 在commit和push的时候因为网络太慢了中途强行关闭了进程&#xff0c;而push的内容因为文件过大导致无法正常push 按照原本的流程在push的时候会提示失败&#xff0c;并且需要在解决了大文件之后重新push 而因为中途中断了&#x…

异常统一处理:BusinessException(自定义业务异常)

一、引言 本篇内容是“异常统一处理”系列文章的重要组成部分&#xff0c;主要聚焦于对 BusinessException 的原理解析与异常处理机制&#xff0c;并给出测试案例。 关于 全局异常统一处理 的原理和完整实现逻辑&#xff0c;请参考文章&#xff1a; 《SpringBoot 全局异常统一…

云性能测试方法:优化应用性能的关键步骤

随着云计算的普及和应用程序的不断发展&#xff0c;对于云平台上应用程序性能的测试变得愈发重要。云性能测试方法是评估应用程序在云环境中的性能表现并识别改进机会的关键步骤之一。在本文中&#xff0c;我们将探讨云性能测试的方法和步骤&#xff0c;以帮助开发人员和测试人…

挑战杯 基于人工智能的图像分类算法研究与实现 - 深度学习卷积神经网络图像分类

文章目录 0 简介1 常用的分类网络介绍1.1 CNN1.2 VGG1.3 GoogleNet 2 图像分类部分代码实现2.1 环境依赖2.2 需要导入的包2.3 参数设置(路径&#xff0c;图像尺寸&#xff0c;数据集分割比例)2.4 从preprocessedFolder读取图片并返回numpy格式(便于在神经网络中训练)2.5 数据预…

使用Templ进行Go模板化

使用Templ在Go项目中高效生成动态内容的指南 动态内容生成是Web开发的一个基本方面。无论您是在构建网站、Web应用程序还是API&#xff0c;根据数据和模板生成动态内容的能力都至关重要。在Go编程世界中&#xff0c;一个名为“Templ”的强大工具简化了这一过程。在这份全面的指…

Query Rewrite —— 基于大模型的query扩展改写,PRF(论文)

本文介绍了一篇典型的 PRF &#xff08;Pseudo-relevance feedback &#xff09;思路的论文&#xff0c;用于利用LLM来做query改写&#xff0c;提升召回率&#xff0c;召回效果。 论文地址&#xff1a;Large Language Models are Strong Zero-Shot Retriever 一、PRF的流程 如…

DPDK应该如何入门学习?

01 写在前面 我的读者当中应该有一部分人是做 DPDK 相关的&#xff0c;我自己虽然现在已经不做 DPDK 了&#xff0c;但对这块仍然有兴趣&#xff0c;今天这篇文章就来总结下 DPDK 的技术栈。注意&#xff1a;这篇文章是小白文&#xff0c;不适合大神哦。 文章从 DPDK 的产生背…

Qt应用软件【协议篇】MQTT官方源码编译安装

文章目录 QT官方代码选择对应的版本Qt Creator编译代码代码下载与编译安装mqtt命令行方式编译与安装代码示例QT官方代码 https://github.com/qt/qtmqtt/tree/5.15.2 选择对应的版本 我们可以在github上切换分支,切换到我们需要的版本上 Qt Creator编译代码 代码下载与编译…

【Godot4自学手册】第十五节碰撞层Layer和Mas的使用

上一节中我学习了敌人的攻击&#xff0c;这一节将学习一些碰撞的有关知识。开始今天的学习。 一、碰撞层基本使用知识 在Godot4中的Collsion属性中有Layer和Mask两个属性&#xff0c;用于定义碰撞过滤的重要参数&#xff0c;它们可以允许控制哪些物体可以与该节点进行碰撞检测…

亚信安慧AntDB数据库为实时流数据构筑坚实防线

在数字化浪潮中&#xff0c;企业对实时流数据处理的依赖日益增强。在此背景下&#xff0c;AntDB数据库应运而生&#xff0c;提供一种创新性解决方案&#xff0c;专注于解决实时流数据处理中的数据容灾和一致性问题。AntDB的设计理念是确保在处理高吞吐量的流数据时&#xff0c;…

SICTF Round#3 の WP

Misc 签到 SICTF{1f4ce05a-0fed-42dc-9510-6e76dff8ff53} Crypto [签到]Vigenere 附件内容&#xff1a; Gn taj xirly gf Fxgjuakd, oe igywnd mt tegbs mnrxxlrivywd sngearbsw wakksre. Bs kpimj gf tank, it bx gur bslenmngn th jfdetagur mt ceei yze Ugnled Lystel t…