There is a new value in CSS3 called 'initial', it will reset the prop's value to the browser's default.
That's where most people are mistaken (even I got it wrong once). The initial value is not the same thing as the browser's default value.
A browser default is set by the browser in its default stylesheet.
The initial value of a property is the default that is stated in the spec. The initial value is usually the same regardless of what element you apply the property to; it's the browser that decides whether it should apply a different value to different elements by default.
For example, the initial value of display
is inline
— many HTML elements default to display: block
, but setting display: initial
will turn them into inline elements, not block elements.
Even the document you link to itself links to another document defining the term "initial value":
The initial value given in the summary of the definition of each CSS property has different meaning for inherited and non-inherited properties.
With all that said, there is currently no way using CSS to reset a property to either a browser's default or an arbitrary level in the cascade (e.g. normalize.css or a reset stylesheet).