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

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

4年前 (2022-12-30)建站教程810
大家好,我是翼同学。今天笔记的内容是:
  • 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中理解层叠性及权重如何分配” 的相关文章

zblog如何设置随机阅读+真实阅读数(随机叠加真实)

1. 前言 随机阅读和真实阅读数是博客网站中常用的功能,可以有效提高文章的曝光度和阅读数量。Zblog作为一款优秀的开源博客程序,也支持这两个功能。然而默认情况下,Zblog不支持同时使用随机阅读和真实阅读数,因此需要进行一些设置才能同时使用这两个功能。下面就来介绍如何在Zblog中设置随机阅读+...

PHP轻松抓取网页文字,教你实现!

随着互联网的快速发展,人们获取信息的方式也越来越多元化。在这个信息爆炸的时代,各种网站和应用程序都在为用户提供更加便捷和高效的服务。而其中,抓取网页中的文字是一项非常重要的技术。本文将详细介绍如何使用PHP语言来抓取网页中的文字。 一、什么是PHP抓取网页中的文字? 在介绍具体方法之前,...

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...

html+css+js实现网页中广告块代码

html+css+js实现网页中广告块代码

html+css+js实现网页中广告块代码 工具/原料 adobe dreamweaver 方法/步骤 新建html文档。 书写hmtl代码。...

发表评论

访客

看不清,换一张

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