← How does CSS work · 样式从哪来 / CSS-wide 关键字 待审核 5 / 6
keywords · initial/inherit/unset/revert · all · revert-layer/rule

CSS-wide 关键字

前面几页讲清了「值从哪几层来」。这页讲控制手段:任何属性都能赋一个 CSS-wide 关键字,精确指定它该取哪一层的值——这才是真正「接管默认值」的工具。最核心、最常用的是下面四个:

  • initial——回到规范初始值(Level 1),无视继承、无视 UA。
  • inherit——强制取父元素的 computed 值,哪怕这属性本来不继承。
  • unset——按属性天性解析:可继承属性 = inherit,否则 = initial
  • revert——退回低优先级 origin:撤掉 author 值,落回 **UA(Level 2)**的值。

display 那一组:initial<div> 变回 inline(规范初始值),而 revert 让它回到 block(UA 的值)。这俩天差地别——想「恢复浏览器默认外观」时,你要的几乎总是 revert,而不是 initial。这是最常见的误用。

1 · 整体重置:all 一次性归零

all 是「除 direction/unicode-bidi 与自定义属性外所有属性」的简写,且只接受上面那四个关键字。一句 all: revert 就能把一个组件的所有属性整体退回 UA 基线——常用来做「样式隔离」。点按钮看这张满身 author 样式的卡片如何被各关键字整体重置:

还有个 revert-layer:当你用 @layer 组织 CSS 时,它把属性退回前一个 cascade layer 的值(而 revert 是退回整个 author origin 之下)。例如:

@layer base   { a { color: blue } }
@layer theme  { a { color: revert-layer } }  /* → 回到 base 的 blue */

粒度再细一档——revert-rule:它撤掉的既不是整个 origin、也不是整个 layer,而是当前这一条 style rule 内的声明,让该属性落回同层里其他 rule 决定的值。于是三个 revert 系关键字逐级收窄:revert(origin)→ revert-layer(layer)→ revert-rule(rule)。在 CSS animation 中它的行为等同 revert-layer

p         { color: blue; font-weight: bold }
p.special { color: revert-rule }  /* 只忽略本 rule 的 color → 回到 p 的 blue;font-weight 仍 bold */

**experimental:**当前浏览器支持度很低,生产慎用,先查兼容表。

2 · 一句话记忆

关键字 取哪一层 典型用途
initial 规范初始值(Level 1) 要属性规范定义的初始值
inherit 父元素 computed 值 强行让不继承的属性也跟父走
unset 继承则父值,否则初始值 「擦掉我写的,按属性天性来」
revert UA / user 层的值(Level 2) 恢复浏览器默认外观
revert-layer 前一个 @layer 的值 在分层 CSS 里撤掉本层
revert-rule 同层其他 rule 的值 只撤掉某一条 rule 的声明(experimental)

延伸阅读:MDN · all 与 CSS-wide keywords——all 简写的适用范围(排除 direction / unicode-bidi 与自定义属性)以及 revert / revert-layer 的逐项细节与兼容表;rule 级的 MDN · revert-rule 另有专页(含兼容表)。