Web/CSS/max-block-size

From Get docs


The max-block-size CSS property specifies the maximum size of an element in the direction opposite that of the writing direction as specified by writing-mode. That is, if the writing direction is horizontal, then max-block-size is equivalent to max-height; if the writing direction is vertical, max-block-size is the same as max-width.

The other dimension's maximum length is specified using the max-inline-size property.

This is useful because the max-width is always used for horizontal sizes and max-height is always used for vertical sizes, and if you need to set lengths based on the size of your text content, you need to be able to do so with the writing direction in mind.

Any time you would normally use max-height or max-width, you should instead use max-block-size to set the maximum "height" of the content (even though this may not be a vertical value) and max-inline-size to set the maximum "width" of the content (although this may instead be vertical rather than horizontal). See the Example in writing-mode, which shows the different writing modes in action.


Syntax

/* <length> values */
max-block-size: 300px;
max-block-size: 25em;

/* <percentage> values */
max-block-size: 75%;

/* Keyword values */
max-block-size: auto;
max-block-size: max-content;
max-block-size: min-content;
max-block-size: fit-content(20em);

/* Global values */
max-block-size: inherit;
max-block-size: initial;
max-block-size: unset;

Values

The max-block-size property's value can be any value that's legal for the max-width and max-height properties:

<length>
Defines the max-width as an absolute value.
<percentage>
Defines the max-width as a percentage of the containing block's width.
auto
The browser will calculate and select a max-width for the specified element.
none
No limit on the size of the box.
max-content
The intrinsic preferred max-width.
min-content
The intrinsic minimum max-width.
fit-content(<length-percentage>)
Uses the fit-content formula with the available space replaced by the specified argument, i.e. min(max-content, max(min-content, argument)).

How writing-mode affects directionality

The values of writing-mode affect the mapping of max-block-size to max-width or max-height as follows:

Values of writing-mode max-block-size is equivalent to
horizontal-tb, lr ' , lr-tb ' , rl ' , rb ' , rb-rl ' max-height
vertical-rl, vertical-lr, sideways-rl ' , sideways-lr ' , tb ' , tb-rl ' max-width

The writing-mode values sideways-lr and sideways-rl were removed from the CSS Writing Modes Level 3 specification late in its design process. They may be restored in Level 4.


The writing modes lr, lr-tb, rl, rb, and rb-tl are no longer allowed in HTML contexts; they may only be used in SVG 1.x contexts.


Formal definition

Initial value 0
Applies to same as width and height
Inherited no
Percentages block-size of containing block
Computed value same as max-width and max-height
Animation type a length, percentage or calc();

Formal syntax

<'max-width'>

Examples

Setting max-block-size with horizontal and vertical text

In this example, the same text (the opening sentences from Herman Melville's novel Moby-Dick) is presented in both the horizontal-tb and vertical-rl writing modes.

Everything else about the two boxes is identical, including the values used for max-block-size.

HTML

The HTML simply establishes the two <div> blocks that will be presented with their writing-mode set using the classes horizontal or vertical. Both boxes share the standard-box class, which simply establishes coloring, padding, and their respective values of max-block-size.

<p>Writing mode <code>horizontal-tb</code> (the default):</p>
<div class="standard-box horizontal">
  Call me Ishmael. Some years ago—never mind how
  long precisely—having little or no money in my
  purse, and nothing particular to interest me on
  shore, I thought I would sail about a little and see
  the watery part of the world. It is a way I have of
  driving off the spleen and regulating the
  circulation.
</div>

<p>Writing mode <code>vertical-rl</code>:</p>
<div class="standard-box vertical">
  Call me Ishmael. Some years ago—never mind how
  long precisely—having little or no money in my
  purse, and nothing particular to interest me on
  shore, I thought I would sail about a little and see
  the watery part of the world. It is a way I have of
  driving off the spleen and regulating the
  circulation.
</div>

CSS

The CSS defines three classes. The first, standard-box, is applied to both boxes, as seen above. It provides standard styling including the minimum and maximum block sizes, font size, and so forth.

After that come the classes horizontal and vertical, which add the writing-mode property to the box, with the value set to horizontal-tb or vertical-rl depending on which class is used.

.standard-box {
  padding: 4px;
  background-color: #abcdef;
  color: #000;
  font: 16px "Open Sans", "Helvetica", "Arial", sans-serif;
  max-block-size: 160px;
  min-block-size: 100px;
}

.horizontal {
  writing-mode: horizontal-tb;
}

.vertical {
  writing-mode: vertical-rl;
}

Result

Specifications

Specification Status Comment
CSS Logical Properties and Values Level 1The definition of 'max-block-size' in that specification. Editor's Draft Initial definition

Browser compatibility

Update compatibility data on GitHub

Desktop Mobile
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet
max-block-size Chrome

Full support 57

Edge

Full support 79

Firefox Full support 41


Full support 41


No support 38 — 51

Disabled'

Disabled' From version 38 until version 51 (exclusive): this feature is behind the layout.css.vertical-text.enabled preference (needs to be set to true). To change preferences in Firefox, visit about:config.

IE

No support No

Opera

Full support 44

Safari

Full support 12.1

WebView Android

Full support 57

Chrome Android

Full support 57

Firefox Android Full support 41


Full support 41


No support 38 — 51

Disabled'

Disabled' From version 38 until version 51 (exclusive): this feature is behind the layout.css.vertical-text.enabled preference (needs to be set to true). To change preferences in Firefox, visit about:config.

Opera Android

Full support 43

Safari iOS

Full support 12.2

Samsung Internet Android

Full support 5.0

fit-content Chrome

Full support 57

Edge

Full support 79

Firefox

No support No

IE

No support No

Opera

Full support 44

Safari

Full support 12.1

WebView Android

Full support 57

Chrome Android

Full support 57

Firefox Android

No support No

Opera Android

Full support 43

Safari iOS

Full support 12.2

Samsung Internet Android Full support 5.0

Alternate Name'

Full support 5.0

Alternate Name'

Alternate Name' Uses the non-standard name: -webkit-fill-available

max-content Chrome

Full support 57

Edge

Full support 79

Firefox Full support 66


Full support 66


Full support 41

Prefixed'

Prefixed' Implemented with the vendor prefix: -moz-

IE

No support No

Opera

Full support 44

Safari

Full support 12.1

WebView Android

Full support 57

Chrome Android

Full support 57

Firefox Android Full support 66


Full support 66


Full support 41

Prefixed'

Prefixed' Implemented with the vendor prefix: -moz-

Opera Android

Full support 43

Safari iOS

Full support 12.2

Samsung Internet Android

Full support 5.0

min-content Chrome

Full support 57

Edge

Full support 79

Firefox Full support 66


Full support 66


Full support 41

Prefixed'

Prefixed' Implemented with the vendor prefix: -moz-

IE

No support No

Opera

Full support 44

Safari

Full support 12.1

WebView Android

Full support 57

Chrome Android

Full support 57

Firefox Android Full support 66


Full support 66


Full support 41

Prefixed'

Prefixed' Implemented with the vendor prefix: -moz-

Opera Android

Full support 43

Safari iOS

Full support 12.2

Samsung Internet Android

Full support 5.0

Legend

Full support  
Full support
No support  
No support
User must explicitly enable this feature.'
User must explicitly enable this feature.
Uses a non-standard name.'
Uses a non-standard name.
Requires a vendor prefix or different name for use.'
Requires a vendor prefix or different name for use.


See also