当前位置:首页 > 建站教程 > CSS中理解层叠性及权重如何分配

CSS中理解层叠性及权重如何分配

4年前 (2022-12-30)建站教程1490
大家好,我是翼同学。今天笔记的内容是:
  • CSS的三大特性,分别是层叠性、优先性和继承性

三大特性

层叠性

什么是层叠性? 在CSS中,样式的设置顺序很重要。当相同选择器设置同一样式时,往往最后设置的样式才是实际应用的样式,这就是CSS的层叠性。 为了更好的理解这个概念,先来看这样一个问题:
1
2
3
4
5
6
h3{
color:red;
}
h3{
color:blue;
}
上述代码运行后,color属性应呈现哪个值? 很显然,答案是蓝色。 总的来说,相同级别的选择器选择设置同一样式时,会发生样式冲突,此时只有一个规则起作用,也就是最后一条样式生效。这就是CSS层叠性 但有时我们发现,实际情况并不是这样。看下面代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE html>
<html>
<head>
    <style>
        .nav {
            color: red;
        }
        h3 {
            color: blue;
        }
    </style>
</head>
<body>
    <h3class="nav">
        Hello world!
    </h3>
</body>
</html>
为什么上述代码运行后,标题呈现为红色?明明<h3>标签是在后面定义的,按照层叠性来讲,标题应该呈现出蓝色才是? 其实,这些都引出了CSS的另一大特性:优先性。

优先性

选择器具有权重的概念,不同权重的选择器优先级不同。当发生样式冲突时(同一元素的属性被多次设置),浏览器会根据不同选择器的权重来判断哪些样式设定有效,这就是CSS的优先性。 就前面的例子而言,标签选择器h3 { }会选择页面中所有的<h3>标签,这并不是很具体。但是类选择器会选择页面中具有特定class属性的标签,这就稍微具体了些。所以,类选择器的权重会比标签选择器大一些,导致即使标签选择器在最后定义也无法实现特定效果。 总结: 当同一个元素被多个不同的选择器指定时,就会有优先级存在。根据选择器的权重来决定执行哪个样式。(关于权重,后面小节单独讲)

继承性

继承性也是CSS中的一大特性。如何理解继承? 举个例子,将一个元素的color值设置为红色,如果该元素的子元素没有设置color值,那么子元素会自动继承父元素的设定值,也就是红色。
  • 总的来说,继承就是一些在父元素上的样式设置,可以被子元素继承。
注意,只是一部分属性可以被继承,例如:颜色color属性。也有无法被继承的属性,比如width。 小结:
  • 常见的可继承的属性:color属性、font属性、text属性
  • 常见的不可继承的属性:width、height、border、margin、padding

权重

当不同选择器定义同一属性时,浏览器该选择执行哪一个?前文讲过,这种情况叫做样式冲突,当发生样式冲突时,会有优先级的指向。由于不同选择器的权重不同,使得样式冲突的解决成为可能。那么到底选择器的权重有哪些呢? 具体优先级看下表:
等级 定义 权重
一 !important 最大
二 行内样式 1, 0, 0, 0
三 ID选择器 0, 1, 0, 0
四 类、伪类选择器、属性选择器 0, 0, 1, 0
五 标签选择器 0, 0, 0, 1
六 通配符选择器* 0, 0, 0, 0
七 继承 没有权重
注意事项:
  • !important是用于指定样式规则的最大优先权
  • 但注意,虽然!important权重最大,但是并不经常使用。
  • 等级一到等级六,权重依次递减,并且注意到,继承是没有权重的。
  • 不同选择器间设置同一属性,浏览器会根据选择器的权重大小来决定执行哪个样式
  • 需要注意的是,复合选择器的使用会产生权重的叠加问题
权重叠加时,如何计算叠加权重? 具体来说,就是相同位上的值互相叠加,但不会产生进位。 举个例子:
1
2
3
4
5
6
h2p {
    color:red;
}
.nav p {
    color:green;
}
运行后,段落的颜色显示为绿色。 在上面这个例子中:
  • 后代选择器 h2 p { } 权重为0,0,0,1 + 0,0,0,1 = 0,0,0,2
  • 后代选择器.nav p { }权重为0,0,1,1 + 0,0,0,1 = 0,0,1,1
  • 可以看到,权重相加后是不会出现进位的
最后,总结如下: 权重值一共有四位数值,判断权重大小的方法是从左往右,判断位上数值的大小,如果某一位的数值相同,则判断下一位数值。

扫描二维码推送至手机访问。

欢迎转载或分享本篇文章。

本文链接:https://www.jcba123.com/article/79

分享给朋友:

“CSS中理解层叠性及权重如何分配” 的相关文章

如何优化 WordPress SEO——详细的分步指南

如何优化 WordPress SEO——详细的分步指南

WordPress SEO,是容易还是难?对很多人来说,登上 Google 的首页可能听起来像是一厢情愿,有些人甚至会告诉你这是不可能的。 我们在这里告诉你不同的。您可以在搜索引擎结果页面 (SERP) 中脱颖而出,我们在这里告诉您如何做。 在这篇文章中,我们将解释什么是搜索引擎优化 (...

为你的opencart网站添加Buy on Amazon按钮 | 多站点跳转购买按钮 |Opencart教程

为你的opencart网站添加Buy on Amazon按钮 | 多站点跳转购买按钮 |Opencart教程

在在opencart搭建独立站跳转到亚马逊购买按钮流程开始: 1.打开opencart后台–规划设计–模板编辑器–product   2.输入以下代码   <style type=”text/css”>...

教你如何做英文博客提交网站外链

教你如何做英文博客提交网站外链

英文博客提交网站外链在所有外链类型中一直算是质量比较高的外链了,尤其是对于很多需要养的英文博客来说,这些外链更是必不可少,多多益善,但是相对来说,这类网站还是比较珍稀的,所以,今天环新给出的这十个依旧非常活跃的博客提交站资源可以说是非常有价值的,希望大家能够好好利用。 资源如下:...

WordPress 如何批量修改文章信息?

你是否遇到过如下几种状况: 博客更换域名,博客文章的内容也要跟着换 使用的图片地址更换了 写了很多文章,回过头来想切换作者 想删除某个可恶留言者的所有留言 想更改某个留言者所有留言的网站URL 想要禁用所有文章的pingback 想要禁用所有文章的评...

介绍使用WordPress时10个常用的MySQL查询

多数使用 WordPress 搭建的网站,其后台都是 MySQL 数据库,经常我们需要定制 WordPress 的功能,这里我们列表 10 个最有用的 WordPress 的数据库查询,你需要一个数据库的管理工具,例如 phpMyAdmin 或者 Navicat 等来执行这些 SQL 语句。...

8个好用的WordPress RSS Feed插件

8个好用的WordPress RSS Feed插件

什么是RSS Feed? RSS代表“Really Simple Syndication”,但它也可能意味着“丰富站点摘要”或“实时简单联合组织”。这是一种基于XML的内容格式,可向用户更新所有他们喜欢的网站上的最新新闻,文章,标题和内容。 由于已经存在了很长一段时间,因此许多人都认为RSS...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。