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 另有专页(含兼容表)。