Logical properties
CSS logical properties provide a way to lay out content based on the document's writing mode and direction rather than the physical dimensions of the viewport. This enables more flexible and maintainable designs, especially for websites supporting multiple languages.
Whereas physical properties, like top
, right
, padding-bottom
, and border-bottom-left-radius
, define positions and features based on physical directions and reference specific sides of an element, logical properties such as inset-block-start
, inset-inline-end
, padding-block-end
, and border-end-end-radius
use logical directional keywords that are relative to the content flow along the block and inline axes.
Block direction
The block axis refers to the axis that defines the stacking order of elements in a block layout. It's essentially the direction along which blocks of content — like paragraphs (<p>
), headings, and divs (<div>
) — are laid out on a webpage. This is also known as the block direction. In left-to-right and left-to-right languages, the block direction is the vertical direction of the content flow, going from top to bottom.
The block-start and block-end directions represent the start edge and end edge of content along the block axis, or the "from" and "to" directions, respectively, with block-start
being the equivalent of top
and block-end
being the equivalent of bottom
in horizontal writing modes.
Inline direction
The inline axis is perpendicular to the block axis. The inline axis represents the direction along which inline content such as text flows within a block. This is also known as the inline direction. In left-to-right writing modes, like English, the inline direction is horizontal, left-to-right. In right-to-left languages, like Arabic and Hebrew, the inline direction is horizontal, right-to-left.
Inline-start and inline-end represent the start edge and end edge of content along the inline axis, respectively, with the values and properties inline-start
and inline-end
being equivalent to left
and right
properties and values in horizontal writing modes. Which ones are equivalent to right
or left
depends on the writing direction — for example inline-start
is left
in left-to-right languages and right
in right-to-left languages.