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日

相关文章

  • c#中dllimport用法

    C#中DllImport用法 在C#中,DllImport(Dynamic Link Library Import)是用来访问动态链接库(DLL)中导出函数的方法。DllImport通常用于调用在DLL中实现的非托管函数,它可以将C#中的方法定义和DLL中的函数定义连接起来。使用DllImport,我们可以方便地在C#中调用C或C++实现的代码。 声明Dll…

    其他 2023年3月29日
    00
  • C语言详细讲解常用字符串处理函数

    C语言详细讲解常用字符串处理函数 在 C 语言中,字符串是以字符数组的形式存在的。对于字符串的处理,需要使用一些常用的字符串处理函数,在本篇文章中,我们将详细讲解这些函数的用法。 strlen 函数 strlen 函数用于计算字符串的长度,即字符数组中的字符数,其函数原型为: size_t strlen(const char *s); 其中,s 是指向字符数…

    other 2023年6月20日
    00
  • Win10怎么解决提示由于启动计算机时出现页面文件配置问题?

    以下是解决提示由于启动计算机时出现页面文件配置问题的完整攻略: 问题描述 当启动 Win10 计算机时,经常会遇到提示页面文件配置错误的问题。具体来说,启动时可能会出现以下类似的提示: “Windows 没有正确启动。可能原因:与安装的硬件或软件有关,或者硬磁盘已损坏。文件 \WINDOWS\SYSTEM32\CONFIG\SYSTEM 需要修复。” 通常情…

    other 2023年6月25日
    00
  • C++实现两个有序数组的合并

    C++实现两个有序数组的合并,一般可以采用双指针的方式来实现。具体实现方法及步骤如下: 步骤一:定义两个有序数组 首先我们需要定义两个有序数组,这里以数组A和数组B为例: int a[] = {1, 3, 6, 9, 12}; int b[] = {2, 4, 5, 8, 10}; 步骤二:计算两个数组的长度 接下来需要计算数组A和数组B的长度,以便后面使用…

    other 2023年6月27日
    00
  • windows下jar包开机自动重启的步骤

    下面是详细讲解“windows下jar包开机自动重启的步骤”的完整攻略。 1. 创建bat批处理文件 首先,我们需要创建一个bat批处理文件,用于在开机时启动jar包。新建一个txt文件,将以下代码粘贴进去: @echo off :start java -jar xxx.jar goto start 其中,xxx.jar是你要启动的jar包的名称,需要将该名…

    other 2023年6月26日
    00
  • adobephotoshopcc2019formac(介绍及下载)

    Adobe Photoshop CC 2019 for Mac (介绍及下载) Adobe Photoshop CC 2019 for Mac是一款被广泛应用于美工设计和数字艺术领域的图像处理软件。该软件的核心功能是图像处理和编辑,支持大量的滤镜和特效。Adobe Photoshop CC 2019 for Mac整合了多种图像处理工具和功能,并且使用方便,…

    其他 2023年3月28日
    00
  • swift中正确安全声明一个单例的方法实例

    当在Swift中声明一个单例时,我们需要确保它是线程安全的,以避免多个线程同时访问和修改单例实例。下面是一种正确安全声明一个单例的方法: 使用静态常量和dispatch_once函数(Objective-C风格): class MySingleton { static let sharedInstance = MySingleton() private in…

    other 2023年7月29日
    00
  • Java中抽象类与方法的重写方式

    Java中的抽象类和方法是一个重要的概念。抽象类是不能被实例化的类,它主要被用来定义抽象方法和常量。抽象方法是没有方法体的方法,它的实现由派生类来完成。在Java中,子类可以继承抽象类,并实现其中的抽象方法。接下来我们详细讲解Java中抽象类与方法的重写方式。 抽象类的定义 抽象类是用关键字“abstract”定义的类,它包含抽象方法的定义。抽象类无法被实例…

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