css 权重

news/2024/12/12 20:53:49/

发现宝藏

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

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/news/1554588.html

相关文章

输入url到显示主页的详细过程

从浏览器地址输入url到显示主页的过程&#xff1f; 主要分为&#xff1a;DNS解析&#xff0c;TCP连接&#xff0c;发送HTTP请求&#xff0c;服务器处理请求&#xff0c;浏览器接收HTTP响应&#xff0c;断开连接 DNS解析&#xff1a; 浏览器发起一个DNS请求到DNS服务器&#…

fastadmin框架同时使用 阿里云oss和阿里云点播

背景 项目的实际需求中既要用到阿里云oss产品又用到阿里云点播系统&#xff0c;实现完美的统一。设置两个地址downUrl&#xff0c;thirdCode。分别代表阿里云oss上传路径和阿里云点播系统vId。 实现 默认框架你已经集成好阿里云oss集成工作&#xff0c;前端html页面实现 <…

MySQL Binlog 日志监听与 Spring 集成实战

MySQL Binlog 日志监听与 Spring 集成实战 binlog的三种模式 MySQL 的二进制日志&#xff08;binlog&#xff09;有三种常见的格式&#xff1a;Statement 模式、Row 模式和Mixed 模式。每种模式的设计目标不同&#xff0c;适用于不同的场景&#xff0c;以下是它们的详细对比和…

【通俗理解RNN】

1.从单层网络到经典的RNN结构 首先要了解一下最基本的单层网络&#xff0c;它的结构如下图所示&#xff1a; 输入是x&#xff0c;经过变换Wxb和激活函数f&#xff0c;得到输出y。 在实际应用中&#xff0c;我们还会遇到很多序列形的数据&#xff1a; 如&#xff1a; 自然语…

前端如何实现签名功能

1.JS实现 前端实现签名功能&#xff0c;通常是通过在页面上创建一个可绘制的区域&#xff0c;用户可以用鼠标或触摸设备进行签名。这个区域通常是一个<canvas>元素&#xff0c;结合JavaScript来处理绘制和保存签名。下面是一个简单的实现步骤&#xff1a; 1.1. 创建HTM…

【SH】微信小程序调用EasyDL零门槛AI开发平台的图像分类研发笔记

文章目录 微信小程序字符串字符串模板字符串拼接 上传图片编写JS代码编写wxml代码编写wxss代码 GET请求测试编写测试代码域名不合法问题 GET和POST请求测试编写JS代码编写wxml代码编写wxss代码 效果展示 微信小程序字符串 字符串模板 这是ES6引入的特性&#xff0c;允许你通过…

hibernate 配置 二级 缓存

一级缓存 是默认的 是session 级别的缓存 二级缓存是 可选的 是sessionfactory的缓存 hibernate.cfg.xml 加入如下配置 <!-- 开启二级缓存--> <property name"hibernate.cache.use_second_level_cache">true</property> <!-- 使用ecache 作…

http 和 https 的区别?

HTTP (HyperText Transfer Protocol) 和 HTTPS (HyperText Transfer Protocol Secure) 是两种用于在 Web 浏览器和网站服务器之间传输网页的协议&#xff0c;它们的主要区别在于安全性。以下是 HTTP 和 HTTPS 的一些关键区别&#xff1a; 安全性&#xff1a; HTTP&#xff1a;H…