The Four CSS Keywords That Reset Everything—and Why None Are Quite Right

Every CSS property accepts four special keyword values that manipulate the cascade: inherit, initial, unset, and revert. Most developers reach for inherit first—it's been around the longest and its behavior is intuitive: the element simply takes the computed value from its parent chain. A common example is forcing link colors in a footer to match the surrounding text without repeating the declaration.

<footer>
  ©2012 Website — <a href="https://css-tricks.com/contact">Contact</a>
</footer>
/* General site styles */
a {
  color: blue;
}

footer {
  color: white;
}
footer a {
  color: inherit;
}

That approach is clean and avoids setting the same value twice. But the other three keywords behave in far less intuitive ways:

  • initial resets a property to its specification-defined default.
  • unset acts as a hybrid: for inherited properties like color, it behaves like inherit; for non-inherited properties like float, it behaves like initial. Confusing enough that many devs never touch it.
  • revert is similarly tricky. For inherited properties it still means inherit, but for non-inherited properties it falls back to the browser's user-agent (UA) stylesheet value. So reverting display on a <p> element won't force it to inline—it stays sensibly at block.

CSS-Tricks' Chris Coyier has argued that what's really needed is a fifth keyword called default, which would always revert to the UA stylesheet, even for inherited properties—a stronger version of revert. As PPK notes in his own analysis, that would be genuinely useful: a way to blast away all inherited values on any given element, effectively creating scoped styles without resetting everything globally.

Chris Coyier argues we need a new value which he calls default. It reverts to the browser style sheet in all cases, even for inherited properties. Thus it is a stronger version of revert. I agree. This keyword would be actually useful.

PPK proposes another candidate: cascade. The idea is that it would work like currentColor—except for any property, not just color. It would expose the cascaded value as a free variable you could reference in other contexts, such as inside calculations, without needing to define a custom property first.

Having four keywords to fiddle with the cascade per-property, yet none that fully resets to UA defaults, leaves a real gap. A default keyword would give authors a powerful tool for restarting with fresh styles on a per-element basis—a pragmatic form of style isolation.