当前位置: 首页 > news >正文

CSS的三大特性:层叠、继承与优先级

CSS作为网页设计的核心语言,其三大核心特性——层叠性继承性优先级共同构成了样式表现的底层逻辑。理解这些特性将帮助开发者写出更优雅、更易维护的样式代码。

一、层叠性(Cascading)

1.1 核心概念

"层叠"指多个样式规则同时作用于同一元素时,浏览器通过特定规则确定最终样式的过程。这种特性如同透明薄膜的叠加,最终呈现综合效果。

1.2 层叠规则

  • 相同的属性会覆盖,后面的CSS属性会覆盖前面的CSS属性
  • 不同的属性会叠加,不同的CSS属性都会生效
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>层叠性</title><style>div{/* 相同的属性会覆盖 */color: red;/* 不同的属性会叠加 */font-size: 50px;}div{color: rebeccapurple;font-weight: 700;}</style>
</head>
<body><!-- 覆盖和叠加 --><div>我是div盒子属性</div>
</body>
</html>

运行结果:

二、继承性(Inheritance)

2.1 基本规则

子元素自动继承父元素的某些样式属性,主要涉及文本相关属性:

可继承属性示例

  • font-familyfont-size
  • colortext-align
  • line-heightlist-style
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>CSS三大特性</title><style>body{color:rgb(37, 66, 66);font-size: 30px;background-color:rgb(238, 238, 238);font-weight:700 ;font-family: "宋体";}</style>
</head>
<!-- 继承性:子级默认继承父级的文字控制属性 -->
<body><div>div 标签</div><p>p 标签</p><span>span 选择器</span><!-- 如果标签自己有样式则生效最自己的样式 a标签有自己的字体颜色 不继承父级文字的颜色属性 --><a href="#">a 标签</a><!-- h1自己有字体大小和字体的样式,那么就生效自己的,不继承父级样式 --><h1>我是大标题h1标签</h1>
</body>
</html> 

运行结果:

注意事项:

1、子级继承的是父级的文字控制属性

2、如果自己有自己的文字样式,那么不会继承父级的文字样式(可以理解为覆盖),显示自己的文字样式

3、如果子级没有自己的文字样式,那么才会继承父级的文字样式

三、优先级(Specificity)

优先级规则:

(1)简单选择器:优先级:也叫权重,当一个标签使用了多个选择器时,基于不同类型的选择器的匹配机制(记忆技巧:选择器的标签范围越大,优先级越低)

        公式:*<标签<类<id<行内样式<!important

(2)复合选择器:

CSS优先级的计算规则为:!important > ID选择器数量 > 类选择器数量 > 标签选择器数量,

并且优先级值按以下格式计算:(a,b,c,d),其中:

         a: 表示!important的使用次数。

          b: 表示ID选择器的数量。

          c: 表示类选择器、属性选择器和伪类的数量。

           d: 表示标签选择器和伪元素的数量。

下面将会通过几个例子带大家来理解一下复合选择器的优先级:

案例1:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>优先级-叠加计算规则</title><style>/* 行内样式>id选择器个数>类选择器个数>标签选择器个数 *//* 0,0,2,1 */.c1 .c2 div{color: aqua;}/* 0,1,0,1 */div #box3{color: rebeccapurple;}/* 0,1,1,0 */#box1 .c3{color: blue;}</style>
</head>
<body><div id="box1" class="c1"><div id="box2" class="c2"><div id="box3" class="c3">这行文本是什么颜色</div></div></div>
</body>
</html>

运行结果:

 

 案例2:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/* 行内样式>id选择器个数>类选择器个数>标签选择器个数 */div p{color: blueviolet;}/* 有继承,继承权重最低 */.father{color: brown;}</style>
</head>
<body><div class="father"><p class="son">猜猜我是什么颜色?</p></div>
</body>
</html>

运行结果:

 

案例3:
 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>第三题</title><style>/* (0,2,0,0) */#father #son{color:blue;}/* (0,1,1,1) */#father p.c2{color: aquamarine;}/* (0,0,2,2) */div.c1 p.c2{color: red; }#father{/* 继承设置的!important,继承权重最低,!important用晚了 */color: rebeccapurple!important;}/* 继承 */div#father.c1{color: yellow;}</style>
</head>
<body><div id ="father" class="c1" ><p id ="son" class="c2">这行文本是什么颜色?</p></div>
</body>
</html>

运行结果:

总结

三大特性协同工作,赋予CSS强大的表现力。掌握这些规则后,开发者可以:

  • 更精准控制元素样式
  • 减少冗余代码量
  • 提升样式可维护性
  • 快速定位样式冲突问题

理解这些底层原理,是写出高质量CSS代码的关键所在。随着CSS新特性的不断演进(如层叠层@layer),这些基础理论依然保持着核心地位。

http://www.xdnf.cn/news/209449.html

相关文章:

  • UI-TARS论文解读 并提供镜像
  • 深入理解Spring AI框架的核心概念
  • HarmonyOS ArkUI交互事件与手势处理全解析:从基础到高级实践
  • 阿里Qwen3 8款模型全面开源,免费商用,成本仅为 DeepSeek-R1 的三分之一
  • 深入理解 Linux 权限管理:从基础到进阶
  • Agent开源工具:mcp快速接入,mcp-use上手指南
  • 23G显存可以跑多大尺寸的Qwen3?
  • 第十六届蓝桥杯 2025 C/C++组 旗帜
  • 常见的 CSS 知识点整理
  • 20250429在Ubuntu 20.04.6下安装VMware Workstation16
  • [零基础]内网ubuntu映射到云服务器上,http访问(frp内网穿透)
  • Java controller接口出入参时间序列化转换操作
  • AimRT 从零到一:官方示例精讲 —— 六、pb_chn示例.md
  • OpenObserve API Usage Guide for Log Management
  • 四则运算+从单向链表中删除指定值的节点+名字的漂亮度+数独(Sudoku)
  • Dali 1.1.4 | 使用尖端技术将描述转换成独特艺术品、照片和图像,发挥无限创意
  • npm如何安装pnpm
  • Flip PDF Plus Corp7.7.22电子书制作软件
  • AimRT 从零到一:官方示例精讲 —— 一、工具链与基本概念
  • css3伸缩盒模型第一章(主轴以及伸缩盒模型)
  • P1903 [国家集训队] 数颜色 / 维护队列 Solution
  • neo4j暴露公网ip接口——给大模型联通知识图谱
  • Python 使用一等函数实现设计模式(案例分析:重构“策略”模式)
  • Linux 服务管理两种方式service和systemctl
  • Node.js 事件循环和线程池任务完整指南​
  • 香港科技大学广州|可持续能源与环境学域博士招生宣讲会—四川大学专场
  • 阿里云服务迁移实战: 05-OSS迁移
  • 【Linux系统】systemV共享内存
  • 基于tabula对pdf中多个excel进行识别并转换成word中的优化(五)
  • Go语言之路————接口、泛型