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

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

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

分享Javascript入门教程:小白必须了解的技术基础

分享Javascript入门教程:小白必须了解的技术基础

  早安,今天来分享Javascript入门教程:小白必须了解的技术基础,我们一起往下看吧。 什么是javascript JavaScript 是网景(Netscape)公司开发的一种基于客户端浏览器、面向(基于)对象、事件驱动式的网页脚本语言。 为什么要使用javascrip...

WordPress如何添加视频_WordPress文章添加视频教程

WordPress如何添加视频_WordPress文章添加视频教程

WordPress默认支持视频发布功能,在实际使用中新手会有一些不懂得地方,老魏也经常见到网友对 wordpress如何添加视频有各种疑问,今天详细介绍 wordpress编辑文章时如何添加视频。 经典编辑器插入视频方法 经典编辑器是很多人在用的,插入视频有下面多种方法。 1、本地视频一般...

Markdown 基础教程 (最全)

Markdown 基础教程 (最全)

Markdown 基础教程 (最全) Markdown 是一种轻量级标记语言,易读易写,被广泛使用于撰写帮助文档 基础语法 标题 使用 # 号可表示 1~6 级标题 # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 ##### 五级标题 #####...

使用 WP Downgrade 在线降级 WordPress 到旧版本!

我们都知道,每当WordPress有新本的时候,我们都可以在后台一键更新。但是有些时候,我们的主题或插件可能不兼容新版本的WP,这时候我们如果要降级为之前的旧版本,该怎么操作呢?下面一起来看看。 重要提示:不管是升级还是降级,操作前,请务必备份你的网站数据,尤其是网站的数据库,以防万一!...

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

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

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

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

发表评论

访客

看不清,换一张

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