前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
首页程序员面试题库CSS revert inherited property reset
CSS层叠与选择器

revert 用在可继承属性上,值会回到父元素的继承值还是浏览器默认值?

revert 会把属性回退到上一个层叠来源。在作者样式里写 revert,相当于撤销所有作者样式表对该属性的声明,让浏览器按用户代理样式表来决定值。对可继承属性,用户代理样式表通常没有设置该属性,于是自然继承父元素的计算值。

前端进阶之旅 · 一题精讲更新于 2026.09.29
CSS#层叠与选择器
先看核心答案读代码示例
理解线索

`revert` 在层叠来源中的位置

  1. 作者来源开发者写的样式表,优先级最高,revert 撤销的就是这一层
  2. 用户代理来源浏览器内置样式表,作者来源被撤销后由它接管
  3. 继承机制用户代理样式表没有设值时,可继承属性从父元素拿值

revert 不是回到「CSS 规范的初始值」,而是回到「没有作者样式时浏览器会怎么渲染」,这两个结果经常不一样。

核心回答

先记住这个答案

revert 的作用是撤销当前层叠来源对该属性的所有声明。在作者样式表里写 color: revert,浏览器会假装作者从来没给这个属性写过任何值,然后按层叠规则去找下一个来源。对于可继承属性(比如 color、font-size),如果用户代理样式表没有显式设过值,就走正常继承,最终拿到父元素的计算值。所以大多数情况下,结果是父元素的继承值,而不是 CSS 规范里的初始值。

  • revert 撤销的是整个作者来源,不只是当前规则
  • 继承属性的结果取决于用户代理样式表有没有设值
  • revert 可恢复浏览器默认样式
  • initial 取初始值,revert 回退来源

一个具体场景:重置卡片内文字颜色

假设页面的 <body> 设了 color: #333,卡片组件里有个高亮区域被设成了 color: red。现在想让高亮区域回到「正常的文字颜色」。

用 revert 让颜色回到继承值CSS
body {
  color: #333;
}

.card .highlight {
  color: red;
}

/* 想撤销高亮,回到正常颜色 */
.card .highlight.muted {
  color: revert;
}
/* .muted 的 color 最终是 #333,来自 body 的继承 */

写了 revert 之后,浏览器会撤销所有作者样式对 color 的设置。用户代理样式表对大多数元素的 color 没有显式声明,所以 color 作为可继承属性,沿着 DOM 树往上找,拿到 body 上的 #333。 这里要注意 <a> 标签是个例外。浏览器默认给链接设了 color: -webkit-link(蓝色),所以在 <a> 上写 color: revert 会回到蓝色,而不是继承父元素的颜色。

revert 和 initial 以及 unset 的区别

这三个关键字经常被混淆,区别在于它们回退到哪一层。

initial 回到 CSS 规范定义的初始值。比如 color 的初始值在规范里是 canvastext(以前多数浏览器实际表现为黑色),display 的初始值是 inline。这个值和浏览器样式表、父元素都没有关系。

unset 对可继承属性等同于 inherit,对不可继承属性等同于 initial。它只关心属性是否可继承,不关心用户代理样式表里写了什么。

revert 则是回退到上一个层叠来源。作者样式里写 revert,撤销的是所有作者样式,保留用户代理样式。这意味着 <h1> 上写 font-size: revert 会恢复到浏览器默认的大标题字号(通常是 2em),而 unset 会让 font-size 继承父元素的值,标题就和正文一样大了。

一张速查表CSS
/* 假设父元素 font-size: 16px,浏览器给 h1 默认 font-size: 2em */
h1 { font-size: 24px; }

h1.reset-initial { font-size: initial; }
/* → medium(约16px),CSS 规范的初始值 */

h1.reset-unset   { font-size: unset; }
/* → 16px,继承父元素(因为 font-size 可继承) */

h1.reset-revert  { font-size: revert; }
/* → 2em(32px),恢复浏览器默认的 h1 字号 */

这个例子清楚地说明了三者的差异。revert 保留了浏览器对 <h1> 的特殊处理,另外两个没有。

回答前,多想一步

容易答错的地方

以为 revert 在继承属性上总是回到父元素的值
大部分情况确实如此,因为用户代理样式表对大多数继承属性没有显式声明。但浏览器对某些元素有特殊设置:<a> 的 color、<pre> 的 font-family、<th> 的 text-align 都被用户代理样式表显式设了值。在这些元素上用 revert,回到的是浏览器默认值,不是父元素的继承值。
把 revert 和 unset 搞混
unset 在继承属性上等同于 inherit,永远继承父元素的值。revert 则要看用户代理样式表有没有设过。两者在 <h1> 的 font-size、<a> 的 color 这些场景上差异很明显。
试着用自己的话回答

面试官还会怎么问?

revert 用在不可继承的属性上会怎样?

一样的逻辑:撤销作者来源,回到用户代理样式。比如 <div> 上写 display: revert,用户代理给 <div> 的默认 display 是 block,所以回到 block。如果是 <span>,回到 inline。

在 @layer 里写 revert 会怎样?

revert 撤销的是整个作者来源,不只是当前 @layer。即使写在低优先级的 layer 里,也会把所有 layer 的作者样式一起撤销。如果只想回退到上一个 layer 的值,要用 revert-layer。

浏览器兼容性怎么样?

Chrome 84、Firefox 67、Safari 9.1 以上都支持 revert。IE 不支持。如果要兼容 IE,只能手动写回具体的值。

从一道题,走向一组知识

把知识连起来

层叠与选择器

revert 和 revert-layer 有什么区别?分别在什么场景用?

revert-layer 只回退一个层叠层,revert 回退整个来源,两者的回退粒度完全不同。

层叠与选择器

@scope 和 Shadow DOM 都能隔离样式,能互相替代吗?

@scope 和 Shadow DOM 都在限制样式的作用范围,理解来源和作用域的区别有助于选对隔离方案。

参考资料

  • CSS:层叠与选择器参考资料

示例用于理解所注明的运行环境与边界;延伸学习可结合原文中的更多案例。

本题目录
  1. 先记住这个答案
  2. 一个具体场景:重置卡片内文字颜色
  3. revert 和 initial 以及 unset 的区别
  4. 容易答错的地方
  5. 面试官还会怎么问
  6. 把知识连起来
读懂,再试着讲出来

先看核心答案,再读代码。最后展开追问,检查自己有没有遗漏边界。

试着回答追问
浏览全部面试题理解原理,也关注真实的使用场景。回到顶部 ↑