Partial Overrides
Last updated
Last updated
A partial override occurs when two or more rulesets containing related, but not identical declarations target the same element. This happens when a shorthand property overrides a longhand property, or visa versa. Here is a partial override in its simplest form:
In the example above the first ruleset uses the shorthand property margin
, which translated to computed styles equates to:
margin-top: 20px;
margin-right: 10px;
margin-bottom: 20px;
margin-left: 10px;
The second ruleset attempts to override the left margin using the longhand property margin-left
. However since the left margin already has a value (of 10px) it cannot be overridden. Immutable styles detects this partial override and throws the following compile time error:
Another example of partial overrides can be seen when both shorthand and longhand border properties target the same element:
The first ruleset uses the shorthand property border
, which translated to computed styles equates to:
border-top-width: 1px;
border-top-style: solid;
border-top-color: gainsboro;
border-right-width: 1px;
border-right-style: solid;
border-right-color: gainsboro;
border-bottom-width: 1px;
border-bottom-style: solid;
border-bottom-color: gainsboro;
border-left-width: 1px;
border-left-style: solid;
border-left-color: gainsboro;
The second ruleset attempts to override the left border color using the longhand property border-left-color
, which again is caught by the compiler:
Not all partial overrides are so easy to detect:
The first ruleset uses the shorthand property font
, which translated to computed styles equates to:
font-weight: 600;
font-size: 30px;
line-height: 1.5em;
font-family: sans-serif;
Fortunately immutable styles is aware that the line-height
set by font
in the first ruleset is overridden by the second ruleset: