CSS2中从优先权重的计算方式来辨别下CSS

CSS2 中,样式的优先权重是由选择器的特殊性(specificity)和源代码顺序(order)两者共同决定的。通过这个规则,我们可以区分不同优先级的 CSS 规则,并决定哪个样式优先应用。

选择器特殊性

每个选择器都有它自己的特殊性值,表示它的权重。特殊性值靠谱如下:

  • 选择器中每个 ID 值为一个数,即 0, 1, 0, 0
  • 选择器中每个 class 值或者属性选择器、伪类选择器都为十进制计数器加 1,即 0, 0, 2, 1
  • 选择器中每个元素和伪元素都为十进制计数器加 1,即 0, 0, 1, 0

越具体的选择器,它的特殊性就越高。例如,一个 ID 选择器的特殊性值要比一个类选择器的特殊性值高,因为 ID 选择器更加具体。

源代码顺序

如果两个样式规则具有相同的特殊性值,则先出现在 CSS 源代码中的样式表的规则优先。

例如,如果你在同一个 CSS 文件中写了以下 CSS 规则:

body {
  background-color: blue;
}

body {
  background-color: red;
}

则最终的背景颜色将是红色,因为红色的 background-color 规则出现在了后面。

优先级的计算方式

知道了选择器特殊性和源代码顺序的规则,我们就可以计算出样式的优先级了。假设我们需要决定以下三个样式的优先级:

body {
  background-color: yellow;
}

#container {
  background-color: green;
}

#container .inner {
  background-color: blue;
}

首先计算选择器的特殊性值。根据上面的规则,body 选择器的特殊性是 0, 0, 0, 1,#container 选择器的特殊性是 0, 1, 0, 0,#container .inner 选择器的特殊性是 0, 1, 0, 1。由此,我们可以得出以下优先级:

  • container .inner:0, 1, 0, 1

  • container:0, 1, 0, 0

  • body:0, 0, 0, 1

接下来,我们来比较源代码顺序。由于样式规则都在同一个文件中,因此我们只需要看样式规则的出现顺序。根据我们的例子,body 规则最先出现,因此它的优先级最低。而 #container 和 #container .inner 规则都在后面出现,因此它们的优先级要高于 body。最终的优先级如下:

  1. container .inner:0, 1, 0, 1

  2. container:0, 1, 0, 0

  3. body:0, 0, 0, 1

因此,在这个例子中,最终应用的背景色是蓝色,因为 #container .inner 的规则具有最高的优先级。

下面是另一个例子:

#container .red {
  color: red;
}

.blue {
  color: blue;
}

首先计算特殊性:

  • container .red:0, 1, 0, 1

  • .blue:0, 0, 1, 0

然后比较源代码顺序,因此 .blue 规则优先于 #container .red 规则,最终应用的文字颜色是蓝色。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:CSS2中从优先权重的计算方式来辨别下CSS - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • pythonpower函数

    以下是“Python power函数的完整攻略”的详细说明,包括过程中的两个示例说明。 Python power函数的完整攻略 在Python中,power函数用于计算一个的幂。以下是一份关于Python power函数的详细教程。 1 使用**运算符计算幂 在Python中,可以使用运算符计算幂。以下是一个示例: x = 2 y = 3 result = …

    other 2023年5月10日
    00
  • 尼尔机械纪元加载时间长怎么解决 游戏loading时间太长解决方法

    尼尔机械纪元加载时间长解决方法 问题分析 尼尔机械纪元是一款高度画质的游戏,加载时间长是较为普遍的问题。为解决此问题,我们需要从以下几个方面入手。 游戏所处设备的硬件配置。 游戏安装路径的选择。 优化游戏本身的设置。 解决方案 方案一:升级硬件 游戏需要配置高端显卡、大容量内存等硬件,所以升级硬件是解决加载时间长问题的很有效的方法。以下是升级硬件的推荐方案:…

    other 2023年6月25日
    00
  • git查看某个文件的修改历史及具体修改内容

    Git查看某个文件的修改历史及具体修改内容 Git作为目前最流行的版本控制系统之一,不仅可以方便地管理代码版本,还可以查看某个文件的修改历史和每个版本的变化。这篇文章将介绍如何通过Git查看某个文件的修改历史及具体修改内容。 1. 查看文件修改历史 要查看某个文件的修改历史,可以使用Git的命令行工具,打开终端,进入目标Git仓库所在的目录。使用下面的命令可…

    其他 2023年3月28日
    00
  • python类中super() 的使用解析

    下面我来详细讲解一下python类中super()的使用解析。 什么是super()函数 在python中,使用 super() 函数可以让我们在子类中调用父类的方法和属性,实现多重继承时也可以保证实例化调用的先后顺序。 简单来说,super() 函数是用来调用父类中定义的方法的工具,它可以帮助我们避免硬编码(Hard Coding),同时提高代码的重用性。…

    other 2023年6月27日
    00
  • Android中点击事件的四种写法详解

    Android中点击事件的四种写法详解 在Android开发中,处理点击事件是非常常见的需求。Android提供了多种方式来实现点击事件的处理,下面将详细介绍四种常用的写法。 1. 在XML布局文件中设置点击事件 在XML布局文件中,可以直接为控件设置点击事件。首先,在需要设置点击事件的控件上添加android:onClick属性,并指定一个方法名作为点击事…

    other 2023年9月6日
    00
  • python单链表实现代码实例

    下面是python单链表实现代码实例的完整攻略: 什么是单链表 单链表是数据结构中最简单的一种形式,每个节点包含两个信息:当前节点的值(value)和指向下一个节点的引用(next)。单链表的第一个节点被称为头节点,而最后一个节点被称为尾节点。 单链表的实现 在Python中,可以通过定义一个链表类来实现单链表。该类至少应该具有以下方法: __init__(…

    other 2023年6月27日
    00
  • AMD Ryzen入门四核处理器禁用多线程

    AMD Ryzen入门四核处理器禁用多线程攻略 AMD Ryzen入门四核处理器基于Zen架构,支持SMT技术(即Simultaneous Multi-Threading)。SMT技术可以让处理器同时处理多个线程,并且提升系统整体的性能。但是,当你使用一些特定的应用程序,如游戏时,多线程反而会降低性能。那么,如何禁用多线程呢? 步骤一:进入系统配置 首先,右…

    other 2023年6月27日
    00
  • IOS开发中NSURL的基本操作及用法详解

    iOS开发中NSURL的基本操作及用法详解 NSURL是iOS开发中用于处理URL的类,它提供了一些方法和属性,用于创建、解析和操作URL。在本攻略中,我们将详细介绍NSURL的基本操作及用法。 创建NSURL对象 要创建NSURL对象,可以使用以下两种方法: 使用字符串创建NSURL对象: let urlString = \"https://ww…

    other 2023年8月5日
    00
合作推广
合作推广
分享本页
返回顶部