Canonical orderthe unique non-ambiguous order defined by the formal grammar
Syntax
Formal syntax: <length> | <percentage> | auto
margin-right: 20px; /* An absolute length */
margin-right: 1em; /* A length relative to the text size */
margin-right: 5%; /* A margin relative to the nearest block container's width */
margin-right: auto;
margin-right: inherit;
Values
<length>
Is a <length> specifying a fixed width: it can be absolute width, e.g. in px, or a width relative to the text size, e.g. in em, or relative to the viewport size, e.g. in vh.
<percentage>
Is a <percentage> relative to the width of the nearest containing block.
auto
Is a keyword indicating that the right margin receives a share of the remaining space, defined mainly by the current layout mode.. If there several auto values for margin-left or margin-right, the calculated space is evenly distributed between all the auto values. This table summarizes the different cases:
Internal table-* elements don’t have margins, use border-spacing instead
any, except flex, inline-flex, or table-*
any
fixed or absolute
0, except if both margin-left and margin-right are set to auto. In this case, it is set to the value centering the border area inside the available width, if fixed.
Absolutely positioned layout mode
flex, inline-flex
any
any
0, except if there is any positive horizontal free space. In this case, it is evenly distributed to all horizontal auto margins.