Flow relative values
In CSS, flow relative values are directional keyword values relative to an element's block and inline axes. These values include block-start
, block-end
, inline-start
, inline-end
, start
, and end
.
In CSS, physical properties define positions based on physical directions and reference specific sides of an element.
CSS logical properties on the other hand define styles based on the document's writing mode and direction rather than the physical dimensions of the viewport. Logical properties are relative to the content flow and use directional keywords relative to 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 right-to-left 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 like 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 the equivalent of left
and right
properties and values in horizontal writing modes. Whether they are equivalent to right
or left
depends on the writing direction. For example, inline-start
is equivalent to left
in left-to-right languages and right
in right-to-left languages.
Start and end
A CSS property's effects can be either one-dimensional or two-dimensional. For example, text-align
concerns the inline direction of text only, so is one-dimensional. When contextually constrained to one dimension, the flow-relative keywords are abbreviated to just start
or end
.