css 权重

server/2024/12/16 18:43:00/

发现宝藏

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝藏入口】。

CSS 权重(或称为 CSS 优先级)决定了当多个 CSS 规则作用于同一元素时,哪一条规则会被应用。CSS 权重是由选择器的不同组成部分决定的。它通常是由数字形式表示的,数字越大,优先级越高。

1. CSS 权重的计算规则

CSS 权重是由四个组成部分计算得出的:

  1. 内联样式(Inline styles):

    • 内联样式的权重最高,因为它直接在 HTML 元素上设置了样式。
    • 权重计算:a = 1,其他三个位置为 0
    • 例如:<div style="color: red;">
  2. ID 选择器(ID selectors):

    • ID 选择器的权重较高。
    • 权重计算:b = 1,其他两个位置为 0
    • 例如:#header
  3. 类选择器、属性选择器和伪类选择器(Class selectors, Attribute selectors, Pseudo-classes):

    • 类选择器、属性选择器和伪类选择器的权重次之。
    • 权重计算:c = 1,其他位置为 0
    • 例如:.nav, [type="text"], :hover
  4. 元素选择器和伪元素选择器(Element selectors and pseudo-elements):

    • 元素选择器和伪元素选择器的权重最低。
    • 权重计算:d = 1,其他位置为 0
    • 例如:div, p, ::before

2. 权重的计算示例

CSS 权重是根据选择器的组成部分来计算的。计算的方式如下:
将每种选择器类型的数量作为数字,组成一个四元组 (a, b, c, d)。每一位代表不同类型选择器的数量,权重越高,优先级越大。

示例 1:

css">/* 选择器:div */
div {color: red;
}
  • 权重:(0, 0, 0, 1)

示例 2:

css">/* 选择器:.class */
.class {color: green;
}
  • 权重:(0, 0, 1, 0)

示例 3:

css">/* 选择器:#id */
#id {color: blue;
}
  • 权重:(0, 1, 0, 0)
示例 4:
css">/* 选择器:div.class */
div.class {color: yellow;
}
  • 权重:(0, 0, 1, 1)

示例 5:

css">/* 选择器:#id .class */
#id .class {color: purple;
}
  • 权重:(0, 1, 1, 0)

3. 权重比较规则

当多个 CSS 规则同时作用于同一元素时,浏览器会选择权重较高的规则应用。如果权重相同,则后面的规则会覆盖前面的规则。

示例:
css">/* 权重为 (0, 0, 1, 0) */
.class {color: red;
}/* 权重为 (0, 1, 0, 0) */
#id {color: blue;
}/* 权重为 (0, 0, 0, 1) */
div {color: green;
}

对于同一元素,#id 会应用 color: blue,因为它的权重 (0, 1, 0, 0) 高于 .class (0, 0, 1, 0)div (0, 0, 0, 1)

4. 使用 !important 声明

!important 可以强制某条规则的应用,绕过正常的权重计算规则。具有 !important 的规则将优先应用,但它的优先级仍然遵循上述权重计算规则。如果多个规则都包含 !important,则按正常的权重规则比较。

示例:

css">/* 权重为 (0, 1, 0, 0) */
#id {color: blue !important;
}/* 权重为 (0, 0, 1, 0) */
.class {color: red !important;
}

在这种情况下,#id { color: blue !important; } 会应用,因为 !important 使其具有最高的优先级。

5. 总结

  • 内联样式 > ID 选择器 > 类选择器、属性选择器、伪类 > 元素选择器、伪元素选择器
  • 计算权重时,按照选择器的种类和数量来给出优先级。
  • 使用 !important 可以强制应用某条规则,但仍然受权重规则的限制。

掌握 CSS 权重规则可以帮助你更好地管理样式的应用顺序,避免样式冲突。


http://www.ppmy.cn/server/150695.html

相关文章

Web前端技术宝典:期末冲刺指南

本文将为大家整理一份 Web 前端期末复习资料&#xff0c;内容涵盖 HTML、CSS、JavaScript 和常用的前端框架等方面的知识&#xff0c;帮助大家高效复习。 Web前端技术宝典&#xff1a;期末冲刺指南 1. HTML基础2. CSS基础3. JavaScript基础4. 前端框架5. 常见考试题型结语 1. …

Java中的Stream

1. 什么是 Stream&#xff1f; Stream 是 Java 8 引入的一种新方式&#xff0c;目的是帮助我们更简洁、更高效地处理集合&#xff08;如 List、Set、Map 等&#xff09;。你可以把 Stream 想象成一条“流水线”&#xff0c;数据就像是流水线上的原材料&#xff0c;经过流水线的…

第六章 状态模式优化代码

目录 一、场景概述 二、状态模式优化代码 一、场景概述 我们在日常开发过程中一定会遇到下述场景&#xff1a;业务中有类似订单这样需要修改状态的功能模块&#xff0c;订单状态的修改变化为 未支付 -> 已支付 -> 已完成 因此我们每次在修改状态之前&#xff0c;都得先…

React基础学习

React基础 &#x1f4e3; &#x1f4e3; &#x1f4e3; &#x1f4e2;&#x1f4e2;&#x1f4e2; ☀️☀️点开就是缘分认识一下&#xff0c;我是小冷。是一个兴趣驱动自学练习两年半的的Java工程师。 &#x1f4d2; 一位十分喜欢将知识分享出来的Java博主⭐️⭐️⭐️&#x…

OpenCV中的图片矫正

一、实验原理 基于计算机视觉中的透视变换&#xff08;Perspective Transformation&#xff09;&#xff0c;也称为单应性&#xff08;Homography&#xff09;。透视变换是一种几何变换&#xff0c;用于将图像从一个平面映射到另一个平面&#xff0c;同时保持直线的直线性。这种…

【机器学习算法】——决策树之集成学习:Bagging、Adaboost、Xgboost、RandomForest、XGBoost

集成学习 **集成学习(Ensemble learning)**是机器学习中近年来的一大热门领域。其中的集成方法是用多种学习方法的组合来获取比原方法更优的结果。 使用于组合的算法是弱学习算法&#xff0c;即分类正确率仅比随机猜测略高的学习算法&#xff0c;但是组合之后的效果仍可能高于…

uniapp h5 js设置监听:超时未操作返回首页(全局只监听一次,可设置监听事件+检查时间+超时时长)

功能实现: 可自定义超时时长,检查时间超时后跳转首页(/pages/home/index/index); 如果在首页,则不进行跳转监控状态下, 用户有任意操作(包括但不限于点击,滑动,跳转页面等),则重置监听,重新开始算时间超时方法及逻辑封装到单独的js文件中 全局只需在app.vue创建监听,其他页面无…

leetcode 面试经典 150 题:移除元素

链接移除元素题序号27类型数组解题方法双指针难度简单 题目 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。 假设 nums 中不等于 val 的元素数量为 k&#xff0c;要…