CSS - 6、三大特性

news/2025/3/11 16:54:00/文章来源:https://www.cnblogs.com/lwehne/p/18765507

在CSS中,有三大核心特性:层叠性(Cascading)继承性(Inheritance)特异性(Specificity)。这三大特性是CSS工作原理的基础,理解它们对于掌握CSS的使用至关重要。


1. 层叠性(Cascading)

定义:
层叠性是指当多个CSS规则应用于同一个HTML元素时,CSS引擎会根据规则的优先级来决定最终应用的样式。这种“层叠”的过程确保了样式规则的冲突可以被合理解决。

层叠的规则:

  1. 来源优先级

    • 内联样式 > 内部样式表 > 外部样式表 > 浏览器默认样式
  2. 特异性(Specificity)

    • 特异性决定了在冲突时哪个规则会被应用。特异性越高,规则的优先级越高。
    • 特异性计算:!important > ID选择器 > 类选择器/属性选择器/伪类 > 元素选择器/伪元素 > 通用选择器。
  3. 规则的顺序

    • 如果多个规则的特异性相同,则后定义的规则会覆盖先定义的规则(即“后写覆盖先写”)。

示例:

/* 外部样式表 */
p {color: blue;
}/* 内部样式表 */
p {color: green;
}/* 内联样式 */
<p style="color: red;">这是一段文本</p>

结果:

  • 文本颜色为红色,因为内联样式的优先级最高。

2. 继承性(Inheritance)

定义:
继承性是指某些CSS属性可以从父元素传递给子元素。这意味着子元素会自动继承父元素的某些样式,而无需显式声明。

可继承的属性:

  • 文本相关属性(如font-sizefont-familycolor等)。
  • 行高(line-height)。
  • 文本对齐方式(text-align)。
  • 某些边距和内边距属性(如marginpadding)。

不可继承的属性:

  • 大部分布局属性(如widthheightmarginpadding等)。
  • 背景相关属性(如background-color)。
  • 边框相关属性(如border)。

示例:

<div style="color: blue; font-size: 20px;"><p>这是一段文本</p>
</div>

结果:

  • <p>元素会继承<div>colorfont-size属性,因此文本颜色为蓝色,字体大小为20px

注意:

虽然某些属性可以继承,但开发者可以通过显式声明覆盖继承的样式。例如:

p {color: red; /* 覆盖继承的蓝色 */
}

3. 特异性(Specificity)

定义:
特异性是指CSS选择器的优先级。当多个规则冲突时,特异性决定了哪个规则会被应用。特异性越高,规则的优先级越高。

特异性的计算:

特异性由四个数字组成:(a, b, c, d),分别对应:

  1. a!important声明的数量(如果有!important,则优先级最高)。
  2. b:ID选择器的数量。
  3. c:类选择器、属性选择器和伪类选择器的数量。
  4. d:元素选择器和伪元素选择器的数量。

注意: 特异性是按位比较的,即先比较a,如果相同再比较b,依此类推。

示例:

/* 特异性:(0, 1, 0, 0) */
#main {color: blue;
}/* 特异性:(0, 0, 1, 0) */
.box {color: green;
}/* 特异性:(0, 0, 0, 1) */
p {color: yellow;
}

结果:

  • 如果一个元素同时匹配#main.boxp,最终颜色为蓝色,因为#main的特异性最高。

特殊情况:

  • !important声明:优先级最高,可以覆盖其他所有规则。
  • 内联样式:等同于!important,优先级很高。

CSS三大特性的总结

  1. 层叠性(Cascading)

    • 解决样式冲突的规则,包括来源优先级、特异性和规则顺序。
    • 确保样式规则可以合理“层叠”。
  2. 继承性(Inheritance)

    • 某些样式可以从父元素传递给子元素。
    • 可继承的属性主要包括文本相关样式。
  3. 特异性(Specificity)

    • 决定选择器优先级的规则。
    • 特异性越高,规则的优先级越高。

实际应用中的重要性

理解这三大特性可以帮助你更好地控制CSS样式的应用,避免意外的样式冲突和难以调试的问题。同时,合理利用这些特性可以提高代码的可维护性和可读性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/897325.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20241917 2024-2025-2《网络攻防实践》第2次作业

------------恢复内容开始------------ ------------恢复内容开始------------ 1.实验内容1实验要求(1)从www.besti.edu.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取如下信息: DNS注册人及联系方式 该域名对应IP地址 IP地址注册人及联系方式 IP地址所在国家…

3.11 概率论 递推求解

概率初步 1.1 随机试验 1.2 样本空间 1.3 随机事件 1.4 事件间的关系 对立事件 1.5 事件间关系的运算1.6 频率与概率注:p(A-B):发生A且不发生B=p(AB)(B上面还有一横) 1.7 古典概型 1.7.1 条件:样本空间包含有限个元素,每个基本事件发生的可能性相同 1.8 几何概型1.9 条件概…

day25 文件的磁盘的管理2

day25 磁盘的管理2 1.mount 命令的挂载的实践 [root@linux-yzk ~]# lsblk NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 xfs …

深度学习时序数据处理的综述笔记

Deep Learning for Sensor-based Human Activity Recognition Deep Learning for Sensor-based Human Activity Recognition: Overview, Challenges, and Opportunities: ACM Computing Surveys: Vol 54, No 4 进入WHAR后一直苦于找不带一个明确的问题。经帅气师兄推荐看一下这…

多合一控制器IPU

经纬恒润高压多合一控制器将新能源汽车中多个动力系统相关模块进行整合,如:整车控制器VCU、电池管理系统BMS等。这种集成化设计旨在减少整车控制器数量,减轻重量,降低成本,提高可靠性及空间利用率。 经纬恒润高压多合一控制器将新能源汽车中多个动力系统相关模块进行…

【第一篇】如何优雅使用多功能调试器上的EEPROM

EEPROMEEPROM是一种带电可擦的可编程只读存储器,相较于FLASH来说,EEPROM的寿命更长,写入数据之前不需要先进行擦写操作。目前市面上常见的eeprom的型号多为at24cxx,其中有02,04,08,16,32等等。在多功能调试器上加入EEPROM的目的:主要是起一个学习作用,因为在多功能调…

linux 中 awk命令利用数组对指定列去重复

001、实例如下:(base) [b20223040323@admin2 test]$ ls a.txt (base) [b20223040323@admin2 test]$ cat a.txt ## 测试数据, 第一列又两类重复 aa 11 bb 89 aa 77 kk 66 aa 88 kk 99 (base) [b20223040323@admin2 test]$ awk …

No.54 ES6---class类

一、class的基本语法ES6 提供了更接近传统语言的写法,引入了 Class(类)这个概念,作为对象的模板。 通过 cass 关键字,可以定义类。 基本上,ES6 的 class 可以看作只是一个语法糖,它的绝大部分功能,ES5 都可以做到,新的 class 写法只是让对象原型的写法更加清晰、更像面向…

Bat脚本启动本地Kafka

一:功能介绍本地启动Kafka,当需要测试多个Kafka Broker时使用脚本启动多个实例二:使用介绍编写 bat 文件,将下述代码填入保存,注意路径配置@echo off @REM 声明 UTF-8 编码,避免乱码问题 chcp 65001 setlocal enabledelayedexpansion @REM 代表脚本启动的当前路径,如上…

Pwnable_orw

题源题解 保护只开启了栈保护 分析 进入ida分析 main函数如下seccomp (Secure Computing Mode)是一种 Linux 内核安全机制,它可以 限制进程可执行的系统调用(syscall),用于减少攻击面,提高程序安全性。使用seccomp-tools查看允许调用的函数,即orw(open,read,write) sec…

日期类、Date、Calendar、IO 流、File

DAY9.2 Java核心基础 日期类 java对日期使用提供了良好的封装,包括java.util.Date和java.util.Calender Date Date类使用比较简单,直接通过构造函数实例化对象接口,Date对象标识当前的系统时间,默认的格式并不是我们所熟悉的,一般我们需要对他进行格式化处理,将日常的展现…

深入String、StringBuffer、String 实例化有两种方式、String、StringBuffer常用方法

DAY9.1 Java核心基础 String String 开发使用的频率高 String 实例化有两种方式1、直接赋值 String str1 ="Word";2、通过构造函数创建对象 String str2 =new String("Word");字符串对象底层的基本数据类型是char 比如Word,是char[] str ={W,o,r,d}; 两种…