revert旨在恢复浏览器UA样式表中显式定义的默认值,而非规范初始值;对button、table等UA声明display的元素有效,而p、div等因UA未声明会退至initial(inline),导致布局异常。
revert 的目标很明确:绕过你写的 CSS 和继承链,直接找浏览器 UA stylesheet 里为这个元素+属性定义的值。比如 p { margin: revert } 会恢复成上下 1em,而不是 0(initial)或父元素的值(inherit)。它依赖浏览器是否真正实现了该元素的 UA 规则——Chrome/Firefox 对 margin、font-weight 等支持较好,但 Safari 对 button padding 可能 fallback 到 initial。
常见翻车点:
revert 在旧版 Safari(Safari < 15.4)和部分 Android WebView 中不生效,会静默退化为 unset
all: revert 不能重置 direction 和 unicode-bidi,这两个属性被 all 显式排除--my-color),revert 行为等同于 unset,因为 UA stylesheet 里没有定义它们unset 不关心浏览器怎么渲染,只查 MDN 上每个属性页标注的 Inherited: yes/no。可继承属性(如 color、font-size)走 inherit 逻辑;不可继承属性(如 display、border)直接取 initial 值。这意味着 display: unset 永远是 inline,哪怕你期望它是 block。
实际用法建议:
* { all: unset } 比 all: initial 安全,但仍需补关键布局属性:display: block、box-sizing: border-box
cursor、user-select:它们不可继承,unset 会退到 initial(cursor: auto、user-select: auto),可能让按钮失去点击反馈font-family: unset 会继承父元素字体,但若父元素没设,则回退到 initial(serif),不是系统默认字体按钮的默认样式(padding、border、background-color、cursor)来自浏览器 UA stylesheet,而 unset 对这些不可继承属性一律走 initial——padding: initial 是 0,background-color: initial 是 transparent,cursor: initial 是 auto。结果就是按钮“裸奔”:没内边距、没背景、点击无手型。这不是还原,是清零。
真正想还原,得用 revert:button { padding: revert; background-color: revert; cursor: revert; }。但要注意兼容性兜底——生产环境必须加降级:
button {padding: revert;padding: 0; /* fallback for older browsers */background-color: revert;background-color: transparent;}
all: unset 会同时重置 contain(影响渲染性能)、direction(破坏 RTL 文本)、will-change(意外关闭硬件加速)等冷门但关键属性;all: revert 同样会重置它们,但行为更贴近用户预期——比如 contain: revert 会回到 UA 默认的 none,而 contain: unset 因不可继承,退到 initial(也是 none,这里巧合一致)。真正危险的是 all: revert 在不支持的浏览器中完全失效,而 all: unset 至少还能按规范执行。
所以:
all: unset + 显式声明关键属性,兼容性可控revert 更精准,但必须查 CanIUse 并写降级unset = “恢复默认”,它只是“按继承规则自动选值”——那个值未必是你在 DevTools 里看到的“默认”tlwdr7650路由器没有wps按钮(tlwdr7650路由器没有wps按钮怎么办)
tlwdr7632扩展器电脑怎么设置(tlwdr7632扩展器电脑设置方法)
tlwda6332re安装教程(tlwda6332re如何安装)
tlwdr7632扩展器手机怎么设置(tlwdr7632扩展器手机设置方法)
tlxdr3010怎么设置网速快(tlxdr3010网速快设置方法)
tlwdr5620易展版怎么克隆(tlwdr5620易展版克隆方法)