一、核心概念

CSS 继承是指某些 CSS 属性如果被设置在父元素上,其值会自动流向(应用到)其所有后代元素(子、孙元素等)的特性。

核心价值:通过将样式声明应用于祖先元素,可以避免在所有后代元素上重复编写相同的代码,使得样式表更简洁、更高效、更易于维护。


二、可继承的常见属性

1. 文本

/* 文本与字体相关 (Text & Font) */
color;                              /* 文本颜色 */
font-family;                        /* 字体系列设置 */
font-size;                          /* 字体大小 */
font-style;                         /* 字体样式(如斜体) */
font-variant;                       /* 字体变体(如小型大写字母) */
font-weight;                        /* 字体粗细(如粗体) */
font;                               /* 字体缩写属性 */
letter-spacing;                     /* 字符间距 */
line-height;                        /* 行高 */
text-align;                         /* 文本对齐方式 */
text-indent;                        /* 首行缩进 */
text-transform;                     /* 文本转换(如大写) */
word-spacing;                       /* 单词间距 */
text-shadow;                        /* 文本阴影 */
font-size-adjust;                   /* 字体大小调整 */
font-stretch;                       /* 字体拉伸 */
font-kerning;                       /* 字体字距调整 */
text-decoration-color;              /* 文本装饰颜色 */
text-decoration-line;               /* 文本装饰线型 */
text-decoration-style;              /* 文本装饰样式 */
text-decoration-thickness;          /* 文本装饰粗细 */
text-emphasis-color;                /* 文本强调颜色 */
text-emphasis-style;                /* 文本强调样式 */
text-underline-offset;              /* 下划线偏移 */
text-underline-position;            /* 下划线位置 */
white-space;                        /* 空白处理方式(如pre) */
hyphens;                            /* 连字符控制 */
line-break;                         /* 换行规则 */
overflow-wrap;                      /* 溢出换行(如break-word) */
quotes;                             /* 引号样式定义 */
direction;                          /* 文本方向(如rtl) */
unicode-bidi;                       /* Unicode双向算法设置 */

2. 列表

list-style-type;                    /* 列表标记类型(如disc) */
list-style-position;                /* 列表标记位置(如inside) */
list-style;                         /* 列表样式缩写(除image部分外) */

3. 表格

/* 表格相关 (Table) */
border-collapse;                    /* 表格边框合并方式 */
border-spacing;                     /* 表格边框间距 */
caption-side;                       /* 表格标题位置 */
empty-cells;                        /* 空单元格显示方式 */
table-layout;                       /* 表格布局算法 */

4.视觉与交互

/* 视觉与交互 (Visual & Interaction) */
visibility;                         /* 元素可见性 */
cursor;                             /* 鼠标光标样式 */
caret-color;                        /* 输入光标颜色 */

5.其他

page;                               /* 分页媒体设置 */
speak;                              /* 语音合成阅读方式 */
voice-family;                       /* 语音合成声音家族 */
volume;                             /* 语音合成音量 */
pitch;                              /* 语音合成音调 */
stress;                             /* 语音合成重音 */
richness;                           /* 语音合成音色丰富度 */
speak-punctuation;                  /* 语音合成标点阅读方式 */
speak-numeral;                      /* 语音合成数字阅读方式 */

三、不可继承的常见属性

这些属性通常与盒模型定位背景相关。它们只影响元素自身,如果希望后代元素拥有相同样式,必须显式声明。

1. 盒模型属性(Layout & Box Model)

/* 显示与定位 (Display & Positioning) */
display;                            /* 显示类型 */
position;                           /* 定位方式 */
float;                              /* 浮动方向 */
clear;                              /* 清除浮动 */
z-index;                            /* 堆叠顺序 */
clip;                               /* 裁剪区域 *//* 尺寸属性 (Dimensions) */
width;                              /* 元素宽度 */
height;                             /* 元素高度 */
min-width;                          /* 最小宽度 */
min-height;                         /* 最小高度 */
max-width;                          /* 最大宽度 */
max-height;                         /* 最大高度 *//* 外边距 (Margin) */
margin;                             /* 外边距缩写 */
margin-top;                         /* 上外边距 */
margin-right;                       /* 右外边距 */
margin-bottom;                      /* 下外边距 */
margin-left;                        /* 左外边距 *//* 内边距 (Padding) */
padding;                            /* 内边距缩写 */
padding-top;                        /* 上内边距 */
padding-right;                      /* 右内边距 */
padding-bottom;                     /* 下内边距 */
padding-left;                       /* 左内边距 *//* 边框属性 (Border) */
border;                             /* 边框缩写 */
border-top;                         /* 上边框 */
border-right;                       /* 右边框 */
border-bottom;                      /* 下边框 */
border-left;                        /* 左边框 */
border-width;                       /* 边框宽度 */
border-style;                       /* 边框样式 */
border-color;                       /* 边框颜色 */
border-radius;                      /* 边框圆角 *//* 盒模型与溢出 (Box Model & Overflow) */
box-sizing;                         /* 盒模型计算方式 */
overflow;                           /* 溢出处理缩写 */
overflow-x;                         /* 水平溢出处理 */
overflow-y;                         /* 垂直溢出处理 *//* 弹性布局 (Flexbox) */
flex;                               /* 弹性项目伸缩缩写 */
flex-grow;                          /* 弹性项目放大比例 */
flex-shrink;                        /* 弹性项目缩小比例 */
flex-basis;                         /* 弹性项目初始大小 */
flex-direction;                     /* 弹性容器主轴方向 */
flex-wrap;                          /* 弹性项目换行 */
justify-content;                    /* 主轴对齐方式 */
align-items;                        /* 交叉轴对齐方式 */
align-content;                      /* 多行对齐方式 */
order;                              /* 弹性项目顺序 */
align-self;                         /* 单个项目交叉轴对齐 *//* 网格布局 (Grid Layout) */
grid;                               /* 网格布局缩写 */
grid-template;                      /* 网格模板缩写 */
grid-template-columns;              /* 网格列定义 */
grid-template-rows;                 /* 网格行定义 */
grid-auto-columns;                  /* 自动网格列大小 */
grid-auto-rows;                     /* 自动网格行大小 */
grid-auto-flow;                     /* 自动放置算法 */
grid-column;                        /* 网格列位置 */
grid-row;                           /* 网格行位置 */
justify-self;                       /* 单个项目主轴对齐 *//* 间隙属性 (Gap) */
gap;                                /* 网格间隙缩写 */
column-gap;                         /* 列间隙 */
row-gap;                            /* 行间隙 */

2. 背景与外观(Background & Appearance)

/* 背景属性 (Background) */
background;                         /* 背景缩写 */
background-color;                   /* 背景颜色 */
background-image;                   /* 背景图像 */
background-repeat;                  /* 背景重复方式 */
background-position;                /* 背景位置 */
background-size;                    /* 背景尺寸 */
background-attachment;              /* 背景附着方式 */
background-clip;                    /* 背景裁剪区域 */
background-origin;                  /* 背景定位区域 *//* 视觉效果 (Visual Effects) */
box-shadow;                         /* 盒子阴影 */
opacity;                            /* 不透明度 */
filter;                             /* 滤镜效果 */
backdrop-filter;                    /* 背景滤镜 *//* 变换效果 (Transforms) */
transform;                          /* 变换效果 */
transform-origin;                   /* 变换原点 *//* 过渡动画 (Transitions & Animations) */
transition;                         /* 过渡效果缩写 */
transition-property;                /* 过渡属性 */
transition-duration;                /* 过渡持续时间 */
transition-timing-function;         /* 过渡时间函数 */
transition-delay;                   /* 过渡延迟时间 */
animation;                          /* 动画效果缩写 */
animation-name;                     /* 动画名称 */
animation-duration;                 /* 动画持续时间 */
animation-timing-function;          /* 动画时间函数 */
animation-delay;                    /* 动画延迟时间 */
animation-iteration-count;          /* 动画迭代次数 */
animation-direction;                /* 动画播放方向 */
animation-fill-mode;                /* 动画填充模式 */
animation-play-state;               /* 动画播放状态 */

3.列表(List)

list-style-image;                   /* 列表标记图像 */

4.表格(Table)

border-spacing;                     /* 表格边框间距(部分浏览器) */
caption-side;                       /* 表格标题位置(部分浏览器) */

5.打印(Print)

page-break-before;                  /* 之前分页 */
page-break-after;                   /* 之后分页 */
page-break-inside;                  /* 内部避免分页 */

6.其他

outline;                            /* 轮廓 */
outline-width;                      /* 轮廓宽度 */
outline-style;                      /* 轮廓样式 */
outline-color;                      /* 轮廓颜色 */
outline-offset;                     /* 轮廓偏移 */
vertical-align;                     /* 垂直对齐方式 */
visibility;                         /* 可见性(部分情况) */
cursor;                             /* 光标样式(部分浏览器) */
resize;                             /* 尺寸调整 */
appearance;                         /* 原生外观控制 */

重要提示background 不继承是一个常见误区。父元素设置了背景图或背景色,子元素默认是透明的(transparent),所以会“透出”父元素的背景,看起来像是继承了,实则没有。


四、控制继承的关键字

CSS 提供了四个特殊的关键字来显式地控制继承行为,它们可以作为任何 CSS 属性的值。

1. inherit - 显式继承

强制元素获取其父元素该属性的计算值

.parent {border: 2px solid green;padding: 20px;
}.child {border: inherit; /* .child 的边框会和 .parent 一样:2px solid green */padding: inherit; /* .child 的内边距也会变成 20px */
}

使用场景:通常用于强制继承那些本身不可继承的属性(如 borderpadding)。

2. initial - 重置为初始值

将属性设置为它的默认初始值(由 CSS 规范定义)。

.parent {color: red;font-weight: bold;
}.child {color: initial; /* 颜色被重置为默认值 (通常是 black) */font-weight: initial; /* 字体粗细被重置为默认值 (normal) */
}

使用场景:撤销从父元素或用户代理样式表继承来的样式,将其“恢复出厂设置”。

3. unset - 智能重置

行为取决于属性本身:

  • 如果该属性是可继承的,其行为等同于 inherit

  • 如果该属性是不可继承的,其行为等同于 initial

.parent {color: red; /* 可继承属性 */border: 2px solid blue; /* 不可继承属性 */
}.child {color: unset; /* 等同于 inherit,会变成 red */border: unset; /* 等同于 initial,边框会消失 (初始值为 none) */
}

使用场景:一个“万能”重置值,非常实用。

4. revert - 还原为浏览器样式

将属性值还原到浏览器默认的样式表(用户代理样式表)所设定的值。

h1.child {font-size: revert; /* 会恢复成浏览器默认的 2em,而不是继承父元素的字号 */font-weight: revert; /* 会恢复成浏览器默认的 bold */
}

使用场景:撤销所有作者样式(你写的 CSS),回退到浏览器的基本样式。


五、总结与实践技巧

关键字行为适用场景
inherit强制从父元素继承计算值让不可继承的属性(如边框)也能继承
initial将属性重置为它的默认初始值清除所有样式(继承的和自己设置的),回到初始状态
unset是继承属性则inherit,不是则initial智能重置,常用在 CSS Reset 中
revert将属性还原为浏览器默认样式表的值撤销作者样式,恢复浏览器默认样式

最佳实践

1.利用继承简化代码:将字体、颜色等全局样式定义在 <body> 或一个顶层容器上。

body {font-family: system-ui;line-height: 1.5;color: #333;
}

页面内大部分文本都会自动应用这些样式

2.理解不可继承属性:不要误以为背景、边框等会继承,给子元素设置背景色时记得覆盖。

3.善用 inherit:当希望按钮、卡片等组件内部的文字颜色与组件外部一致时,可以使用 color: inherit;,提高组件的可复用性。

4.使用 unset 进行重置:在创建可复用组件时,可以使用 all: unset; 来移除元素的所有默认样式,然后从头开始设计,避免外部样式的干扰。

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

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

相关文章

UGUI源码剖析(15):Slider的运行时逻辑与编辑器实现

UGUI源码剖析&#xff08;第十五章&#xff09;&#xff1a;Slider的运行时逻辑与编辑器实现 在之前的章节中&#xff0c;我们已经深入了UGUI众多核心组件的运行时源码。然而&#xff0c;一个完整的Unity组件&#xff0c;通常由两部分构成&#xff1a;定义其在游戏世界中行为的…

【Python】爬虫html提取内容基础,bs4

前言 BeautifulSoup也就是bs4,里面功能其实有很多&#xff0c;不过对于爬虫而言主要掌握一下几块就可以了 怎么找标签&#xff1f;找到标签后怎么获取属性&#xff0c;怎么获取文本内容如何通过找到的标签继续获取子标签 安装 pip install bs4案例 对于找标签来说&#xf…

组件库打包工具选型(npm/pnpm/yarn)的区别和技术考量

组件库打包工具选型&#xff1a;npm/pnpm/yarn的区别与技术考量 一、核心差异概述 组件库打包工具的选择&#xff0c;本质是在​​依赖管理效率​​、​​磁盘空间占用​​、​​Monorepo支持​​、​​安装速度​​及​​幽灵依赖风险​​之间做权衡。npm作为Node.js默认工具…

新型APT组织“嘈杂熊“针对哈萨克斯坦能源部门发起网络间谍活动

感染链图示 | 图片来源&#xff1a;Seqrite实验室APT研究团队 Seqrite实验室APT研究团队近日发布了一份深度分析报告&#xff0c;披露了一个自2025年4月起活跃的新型威胁组织"嘈杂熊"(Noisy Bear)。该组织主要针对哈萨克斯坦石油天然气行业&#xff0c;攻击手法结合…

OpenCV 图像直方图

目录 一、什么是图像直方图&#xff1f; 关键概念&#xff1a;BINS&#xff08;区间&#xff09; 二、直方图的核心作用 三、OpenCV 计算直方图&#xff1a;calcHist 函数详解 1. 函数语法与参数解析 2. 基础实战&#xff1a;计算灰度图直方图 代码实现 结果分析 3. 进…

Firefox Window 开发流程(四)

1 引言 在进行 Firefox 浏览器的二次开发、内核研究或自定义构建之前&#xff0c;最重要的步骤就是拉取源码并进入 Mozilla 官方提供的开发引导模式。这不仅是所有定制工作的起点&#xff0c;同时也决定了后续开发环境的稳定性与可维护性。本文将从源码获取、工具使用、引导脚…

mybatis plus 使用wrapper输出SQL

在MyBatis-Plus中&#xff0c;Wrapper对象用于构建复杂的查询条件。虽然MyBatis-Plus本身没有直接提供从Wrapper对象获取完整SQL语句的方法&#xff0c;但你可以通过一些间接的方式来获取生成的SQL片段。以下是如何使用MyBatis-Plus的Wrapper来获取SQL片段的步骤&#xff1a;‌…

第1章:操作系统和计算机网络

1. 操作系统和计算机网络组成目标概述1.1. 核心知识操作系统和网络知识很庞大&#xff0c;大多内容枯燥无味&#xff0c;主功最常用的&#xff0c;符合2/8原则。操作系统&#xff1a;内核、性能、磁盘IO、内存、CPU进程、线程、文件、中断计算机网络&#xff1a;OSI七层模型、T…

day27|前端框架学习

1、验证。前后端连接&#xff0c;authentication2、action&#xff0c;在pinia&#xff0c;管理状态&#xff0c;处理异步操作&#xff08;API/Firebase&#xff09;。methods。在vue组件&#xff0c;处理组件内部逻辑3、滑动窗口&#xff0c;能有大致思路&#xff0c;但是自己…

单片机启动文件——数据段重定位,BSS段清零

目录重定位概念的引入一、数据段重定位1.作用&#xff1a;2.目的&#xff1a;3.自己模拟代码二、BSS段清零1.作用&#xff1a;2.目的&#xff1a;3.自己模拟代码三&#xff0c;实现原理重定位概念的引入 单片机中内存段的详细介绍 在单片机中内存分为了很多不同的区域&#xf…

QT(3)

四、基本组件1. Designer设计师&#xff08;掌握&#xff09;Qt Designer 是 Qt 提供的可视化界面设计工具&#xff0c;支持通过拖拽组件快速构建 GUI 界面&#xff0c;生成的界面文件以 .ui格式保存&#xff08;基于 XML 的标签语言&#xff09;。​​核心功能​​&#xff1a…

常用注解:@PostMapping、@RequestBody、@Autowired、@Service、@Mapper

1. PostMapping作用&#xff1a;将方法绑定到 HTTP POST 请求的特定路径上用法&#xff1a;PostMapping("/login") // 绑定到 POST /login PostMapping("/employees") // 绑定到 POST /employees PostMapping("/users/{id}") …

SoC日志管理

目录 一、汽车控制器中日志的核心类型 二、日志管理的核心环节与策略 1. 日志采集:确保“全面且不冗余” 2. 日志存储:平衡“可靠性”与“存储成本” 3. 日志安全:防止“篡改与泄露” 4. 日志生命周期:符合“法规与成本” 5. 日志工具与实现 三、汽车场景的特殊约束与应对 …

横评五款开源多智能体框架,AI高手都在用哪个?下一款Manus、Cursor、Devin,谁能撑起来?

Agent 成为共识的速度非常快。但今年 Agent 的真正转折点在于&#xff1a;多智能体。 从科研自动化到任务编排&#xff0c;从自动开淘宝店到 Vibe 一切&#xff0c;从 AI 浏览器到今天的 ChatGPT Agent&#xff0c;一切都是多智能体的味道。 但要真正搭建一个多智能体&#x…

GitHub每日最火火火项目(9.10)

1. Physical-Intelligence / openpi 项目名称&#xff1a;openpi项目介绍&#xff1a;基于 Python 开发&#xff0c;聚焦于物理智能领域&#xff0c;为相关研究与应用提供支持。Python 在科学计算、人工智能等领域有着广泛且成熟的生态&#xff0c;借助其丰富的库&#xff08;如…

2025年渗透测试面试题总结-61(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 2. 提交过什么漏洞 3. 常用漏洞扫描工具 4. OWASP TOP 10 2021核心变化 5. MySQL写WebShell权限要求 6.…

高可用消息队列线程池设计与实现:从源码解析到最佳实践

前言在现代分布式系统中&#xff0c;消息队列处理是核心组件之一。今天我们将深入解析一个高性能、高可用的消息队列线程池实现——FindMessageQueue&#xff0c;并探讨如何将其优化应用于实际项目中。一、核心架构设计1.1 整体架构图┌───────────────────…

Android App瘦身方法介绍

第一章 安装包构成深度剖析1.1 APK文件结构解剖APK文件本质是一个ZIP压缩包&#xff0c;通过unzip -l app.apk命令可查看其内部结构&#xff1a;Archive: app.apkLength Method Size Cmpr Date Time CRC-32 Name -------- ------ ------- ---- ---------- -…

深入浅出迁移学习:从理论到实践

1. 引言&#xff1a;为什么需要迁移学习&#xff1f;在深度学习爆发的这十年里&#xff0c;我们见证了模型性能的飞速提升 ——ResNet 在图像分类上突破人类视觉极限&#xff0c;BERT 在 NLP 任务上刷新基准&#xff0c;GPT 系列更是开启了大语言模型时代。但这些亮眼成果的背后…

嵌入式人别再瞎折腾了!这8个开源项目,解决按键/队列/物联网所有痛点,小白也能抄作业

嵌入式人别再瞎折腾了&#xff01;这8个开源项目&#xff0c;解决按键/队列/物联网所有痛点&#xff0c;小白也能抄作业 你是不是也有过这样的崩溃时刻&#xff1a;想做个按键控制&#xff0c;结果长按、连击、组合键的逻辑写了200行if-else&#xff0c;最后还时不时串键&#…