网络

教育改变生活

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 78|回复: 0
打印 上一主题 下一主题

CSS中级 18- 特异性

[复制链接]

354

主题

355

帖子

1464

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1464
跳转到指定楼层
楼主
发表于 2024-3-29 16:51:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
CSS 特异性什么是特异性?
如果有两条或两条以上指向同一元素的冲突 CSS 规则,则浏览器将遵循一些原则来确定哪一条是最具体的,并因此胜出。
将特异性(specificity)视为得分/等级,能够确定最终将哪些样式声明应用于元素。
通用选择器(*)具有较低的特异性,而 ID 选择器具有较高的特异性!
注意:这种特异性是 CSS 规则不适用于某些元素的常见原因,尽管您可能会认为应该适用。
特异性层次
每个选择器在特异性层次结构中都有其位置。以下四种类别定义了选择器的特异性级别:
行内样式 - 行内(内联)样式直接附加到要设置样式的元素。实例:<h1 style="color: #ffffff;">。
ID - ID 是页面元素的唯一标识符,例如 #navbar。
类、属性和伪类 - 此类别包括 .classes、[attributes] 和伪类,例如::hover、:focus 等。
元素和伪元素 - 此类别包括元素名称和伪元素,比如 h1、div、:before 和 :after。
如何计算特异性?
请您牢记计算特异性的方法!
0 开始,为 style 属性添加 1000,为每个 ID 添加 100,为每个属性、类或伪类添加 10,为每个元素名称或伪元素添加 1。
请思考以下三个代码片段:
实例
A: h1
B: #content h1
C: <div id="content"><h1 style="color: #ffffff">Heading</h1></div>
· A 的特异性为 1(一个元素)
· B 的特异性为 101(一个 ID 引用以及一个元素)
· C 的特异性为 1000(行内样式)
由于 1 < 101 < 1000,因此第三条规则(C)具有更高的特异性,所以将被应用。
特异性规则 1:
在特异性相同的情况下:最新的规则很重要 - 如果将同一规则两次写入外部样式表,那么样式表中后面的规将更靠近要设置样式的元素,因此会被应用:
实例
h1 {background-color: yellow;}h1 {background-color: red;}
后一条规则始终适用。
特异性规则 2:
ID 选择器比属性选择器拥有更高的特异性 - 请看以下三行代码:
实例
div#a {background-color: green;}#a {background-color: yellow;}div[id=a] {background-color: blue;}
第一条规则比其他两条更具体,因此将被应用。
特异性规则 3:
上下文选择器比单一元素选择器更具体 - 嵌入式样式表更靠近要设置样式的元素。所以在以下情况下:
实例
来自外部 CSS 文件:
#content h1 {background-color: red;}
HTML 文件中:
<style>#content h1 {
  background-color: yellow;}</style>
将适用后一条规则。
特异性规则 4:
类选择器会击败任意数量的元素选择器 - 类选择器(诸如 .intro 会击败 h1、p、div 等):
实例
.intro {background-color: yellow;}h1 {background-color: red;}
此外,通用选择器以及被继承的值拥有 0 - * 的特异性,body * 及类似拥有 0 的特异性。被继承的值的特异性也为 0。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

WEB前端

QQ|手机版|小黑屋|金桨网|助学堂  咨询请联系站长。

GMT+8, 2024-5-4 21:16 , Processed in 0.050440 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表