margin-block-start

Avatar of Geoff Graham
Geoff Graham on (Updated on )

The margin-block-start property in CSS defines the amount of space along the outer starting edge of an element in the block direction. It’s included in the CSS Logical Properties Level 1 specification, which is currently in Working Draft.

.element {
  margin-block-start: 25%;
  writing-mode: vertical-lr;
}

The starting edge in the block direction is determined by the element’s writing-mode, direction and text-orientation. So, when using margin-block-start in a horizontal left-to-right context, it acts just like margin-top as the starting edge of the element is the top of it.

But if we change the writing-mode to, say, vertical, the element is rotated, placing the starting edge toward the left. As a result, margin-block-start behaves just like margin-left. Basically, the starting edge is relative to the direction it flows. That’s what we mean when talking about “logical” properties.

Syntax

margin-block-start: <‘margin-top’>

It’s kinda weird to see the syntax of one property reference the syntax of another CSS property right in the documentation, but that’s really what it is. What it’s basically trying to say is that the property accepts the same values as margin-top which follows this syntax:

margin-top: <length> | <percentage> | auto;
  • Initial value: 0
  • Applies to: all elements except internal table elements, ruby base containers, and ruby annotation containers
  • Inherited: no
  • Percentages: as for the corresponding physical property
  • Computed value: same as corresponding margin-* properties
  • Animation type: by computed value type

Values

margin-block-start accepts a single length or keyword value.

/* Length values */
margin-block-start: 20px;
margin-block-start: 2rem;
margin-block-start: 25%;

/* Keyword values */
margin-block-start: auto;

/* Global values */
margin-block-start: inherit;
margin-block-start: initial;
margin-block-start: unset;

Demo

Click the button in the following demo to see how the starting edge of the element changes with the writing-mode.

Browser support

IEEdgeFirefoxChromeSafariOpera
No79+41+69+12.1+56+
Android ChromeAndroid FirefoxAndroid BrowseriOS SafariOpera Mobile
YesYes81+12.2+59+
Source: caniuse

Further reading