css 权重

embedded/2024/12/29 14:31:11/

发现宝藏

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

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/embedded/145566.html

相关文章

Java中的Stream

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

MQTT协议扩展:解锁物联网通信的无限可能与技术细节

物联网&#xff08;IoT&#xff09;的快速发展推动了设备间通信协议的不断创新与扩展。其中&#xff0c;MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;协议凭借其轻量级、发布/订阅模式及高可靠性&#xff0c;成为了物联网领域的主流通信协议。然而&#x…

虚拟机中的应用(如 Java 程序或其他应用)无法访问本地 MySQL 数据库,错误提示为 MySQL 服务器拒绝了连接。

目录 问题&#xff1a; 问题原因&#xff1a; 解决方式&#xff1a; 验证远程连接 问题&#xff1a; 虚拟机中的应用&#xff08; Java 程序&#xff09;无法访问本地 MySQL 数据库&#xff0c;错误提示为 MySQL 服务器拒绝了连接。 问题原因&#xff1a; mysql服务器出于安…

【Linux网络编程】传输协议UDP

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站 &#x1f308;个人主页&#xff1a; 南桥几晴秋 &#x1f308;C专栏&#xff1a; 南桥谈C &#x1f308;C语言专栏&#xff1a; C语言学习系…

【笔记】分布式任务调度平台XXL-JOB

这篇笔记主要记录以下内容&#xff1a; &#xff08;1&#xff09;第一次启动xxl-job的过程 &#xff08;2&#xff09;模块、文件、数据库&#xff08;表和字段&#xff09;的作用 &#xff08;3&#xff09;极少的源码解读&#xff08;XxlJobConfig&#xff09; 有点像实…

CentOS7环境安装php

直接安装 yum -y install php CentOS7默认安装是php5&#xff0c;现在php已有8.3版本 先查看php -v 版本 如果是低版本&#xff0c;可以删除 yum remove php yum remove php-fpm yum remove php-common 一、添加REMI存储库 yum install epel-release yum install -y …

游戏引擎学习第43天

仓库 https://gitee.com/mrxiao_com/2d_game 介绍运动方程 今天我们将更进一步&#xff0c;探索运动方程&#xff0c;了解真实世界中的物理&#xff0c;并调整它们&#xff0c;以创建一种让玩家感觉愉悦的控制体验。这并不是在做一个完美的物理模拟&#xff0c;而是找到最有趣…

0002.基于springboot +layui二手物品交易平台

适合初学同学练手项目&#xff0c;部署简单&#xff0c;代码简洁清晰&#xff1b; 注:当前项目架构使用前后端未分离哦&#xff01; 一、系统架构 前端&#xff1a;layui| html 后端&#xff1a;springboot | mybatis-plus 环境&#xff1a;jdk1.8 | mysql | maven 二、代…