css 权重值(层叠性)实例详解

当一个 HTML 元素有多条 CSS 规则可用时,就需要计算 CSS 属性的优先级。CSS 属性的优先级(也称为权重值或层叠性)由选择器的特定性和源排序决定。

我们可以通过以下公式计算 CSS 属性的优先级:

  • 内联样式(通过 style 属性定义的样式)——权重值为 1000。
  • ID 选择器——权重值为 100。
  • 类选择器、属性选择器和伪类选择器——权重值为 10。
  • 元素选择器和伪元素选择器——权重值为 1。
  • 通用选择器(*)、子选择器(>)、相邻选择器(+)以及同层选择器(,)——权重值为 0。

在计算选择器特定性时,我们可以使用以下算法:

  • 对于选择器中包含的 ID 属性值,在特定性值中增加 100。
  • 对于选择器中包含的类属性值、属性选择器和伪类选择器,在特定性值中增加 10。
  • 对于选择器中包含的元素标签名和伪元素选择器,在特定性值中增加 1。

例如,body h1 选择器中包含一个元素标签名和一个元素标签名,因此特定性值为 2。而 #content p 选择器中包含一个 ID 属性值和一个元素标签名,因此特定性值为 101。

用于定义样式的多个样式表中,后定义的样式表将覆盖先定义的样式表。同一样式表中,后定义的规则将覆盖先定义的规则。

以下是两个示例:

示例1

HTML 代码:

<!DOCTYPE html>
<html>
<head>
    <title>CSS 权重值实例1</title>
    <style>
        #content p {
            color: red;
        }

        p {
            color: blue;
        }
    </style>
</head>
<body>
    <div id="content">
        <p>这是一个段落。</p>
    </div>
</body>
</html>

在这个示例中,#content p 权重值为 101(1 个 ID 属性值和 1 个元素标签名),而 p 权重值为 1(1 个元素标签名)。因此,#content p 的样式规则将覆盖 p 的样式规则,这意味着段落文字将显示为红色。

示例2

HTML 代码:

<!DOCTYPE html>
<html>
<head>
    <title>CSS 权重值实例2</title>
    <style>
        p:last-child {
            color: red;
        }

        p:first-child {
            color: blue;
        }
    </style>
</head>
<body>
    <div>
        <p>这是第一个段落。</p>
        <p>这是第二个段落。</p>
        <p>这是第三个段落。</p>
    </div>
</body>
</html>

在这个示例中,p:last-childp:first-child 都有相同的特定性值(1 个元素标签名),因此权重值相等。这时我们需要看到对应的 CSS 规则的源顺序。在这里,p:last-child 的样式规则在 p:first-child 的样式规则之后定义,因此 p:last-child 的样式规则将覆盖 p:first-child 的样式规则,这意味着最后一个段落文字将显示为红色。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:css 权重值(层叠性)实例详解 - Python技术站

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

相关文章

  • vue中element-ui组件默认css样式修改的四种方式

    当使用 Element-UI 这个基于 Vue.js 开发的 UI 组件库时,我们可能需要修改一些组件的默认样式以满足项目需求。下面将介绍四种不同的方式来实现这个目标。 1. 在全局 CSS 中修改默认样式 我们可以在项目的全局 CSS 文件中修改组件的默认样式。具体步骤如下: 在你的项目全局 CSS 文件中调用 Element-UI 的默认样式表,该文件通…

    css 2023年6月9日
    00
  • 纯CSS无hacks的跨游览器自适应高度多列布局 推荐

    以下是详细的“纯CSS无hacks的跨游览器自适应高度多列布局”的攻略: 概览 在前端开发中,我们常常需要实现类似Pinterest等网站的多列布局,这时候自适应高度就显得尤为重要。 本篇攻略将介绍如何通过纯CSS代码实现无hack、跨游览器的自适应高度多列布局。 原理 使用CSS3中的Flexible Box模型来实现布局。 具体来说,我们将父容器(con…

    css 2023年6月9日
    00
  • 详解webpack和webpack-simple中如何引入css文件

    webpack是一个常用的现代化JavaScript应用程序打包工具,而webpack-simple是webpack的官方脚手架。下面我们将详细讲解在webpack和webpack-simple中如何引入css文件。 在webpack中引入css文件 安装依赖 首先需要安装用于处理css的依赖包css-loader和style-loader。可以使用以下命令…

    css 2023年6月10日
    00
  • CSS3对背景图片的裁剪及尺寸和位置的设定方法

    CSS 3 增加了对背景图片的裁剪、尺寸和位置的控制,使得在网页设计中可以更加方便地使用背景图片。下面,我们将详细讲解“CSS3对背景图片的裁剪及尺寸和位置的设定方法”的完整攻略。 控制背景尺寸 在 CSS3 中,可以使用 background-size 属性来控制背景图像的尺寸。该属性可以使用以下值: auto:默认值,表示不改变背景图片的原始尺寸。 &l…

    css 2023年6月9日
    00
  • 谈谈CSS隐藏元素(display,visibility)的区别

    下面我将详细讲解“谈谈CSS隐藏元素(display,visibility)的区别”。 1. display与visibility的区别 1.1 display属性 display属性用于设置元素在页面中的显示方式。通过设置display属性,我们可以让元素被隐藏或显示。常见的display取值包括:none、block、inline、inline-bloc…

    css 2023年6月10日
    00
  • 限制div高度当内容多了溢出时显示滚动条

    当div容器内的内容过多时,我们通常希望其不会影响到其他元素的布局并且滚动后依然可以完整的显示所有内容。下面是一个简单的使用CSS实现div内部内容溢出时显示滚动条的方法。 方法一:通过设置 height 和 overflow 属性 我们可以通过设置height属性以及overflow属性实现div内部内容溢出时显示滚动条。具体的操作是: 将div容器添加一…

    css 2023年6月10日
    00
  • Java/Js下使用正则表达式匹配嵌套Html标签

    下面是详细的攻略步骤和示例说明: 步骤一:编写正则表达式 编写能够匹配嵌套HTML标签的正则表达式是困难的。由于HTML标签可以嵌套并且可以有多个属性,因此将HTML标记转换为字符串,然后使用正则表达式匹配它们是不可取的。 幸运的是,Java/Js都内置了类库来解析HTML标记,可以使用这些类库来解决问题。在Java中可以使用JSoup,在Js中可以使用ch…

    css 2023年6月9日
    00
  • Photoshop CC给前端开发者怎样的体验?新特性介绍

    Photoshop CC给前端开发者的体验 作为前端开发者,不能没有强大的图像处理工具。Photoshop CC是业内广泛使用的图像处理软件之一。它为前端开发人员提供了许多便利的功能,使得图像处理和设计变得更加容易和高效。 下面是一些新特性–Photoshop CC给前端开发人员带来的优越体验和操作示例. 1. 设计网格工具 Photoshop CC提供了…

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