This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
* Some parts of this feature may have varying levels of support.
The max-height CSS property sets the maximum height of an element. It prevents the used value of the height property from becoming larger than the value specified for max-height.
max-height: 150px;
max-height: 7em;
max-height: 75%;
max-height: 10px;
<section class="default-example" id="default-example">
<div class="transition-all" id="example-element">
This is a box where you can change the maximum height. <br />This will limit
how tall the box can be, potentially causing an overflow.
</div>
</section>
#example-element {
display: flex;
flex-direction: column;
background-color: #5b6dcd;
justify-content: center;
color: white;
}
max-height overrides height, but min-height overrides max-height.
/* <length> value */ max-height: 3.5em; max-height: anchor-size(height); max-height: calc(anchor-size(--my-anchor self-block, 250px) + 2em); /* <percentage> value */ max-height: 75%; /* Keyword values */ max-height: none; max-height: max-content; max-height: min-content; max-height: fit-content; max-height: fit-content(20em); max-height: stretch; /* Global values */ max-height: inherit; max-height: initial; max-height: revert; max-height: revert-layer; max-height: unset;
<length>Defines the max-height as an absolute value.
<percentage>Defines the max-height as a percentage of the containing block's height.
noneNo limit on the size of the box.
max-contentThe intrinsic preferred max-height.
min-contentThe intrinsic minimum max-height.
fit-contentUse the available space, but not more than max-content, i.e., min(max-content, max(min-content, stretch)).
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)).
stretchLimits the maximum height of the element's margin box to the height of its containing block. It attempts to make the margin box fill the available space in the containing block, so in a way behaving similar to 100% but applying the resulting size to the margin box rather than the box determined by box-sizing.
Note: To check aliases used by browsers for the stretch value and its implementation status, see the Browser compatibility section.
Ensure that elements set with a max-height are not truncated and/or do not obscure other content when the page is zoomed to increase text size.
| Initial value | none |
|---|---|
| Applies to | all elements but non-replaced inline elements, table columns, and column groups |
| Inherited | no |
| Percentages | The percentage is calculated with respect to the height of the generated box's containing block. If the height of the containing block is not specified explicitly (i.e., it depends on content height), and this element is not absolutely positioned, the percentage value is treated as none. |
| Computed value | the percentage as specified or the absolute length or none
|
| Animation type | a length, percentage or calc(); |
max-height =
none |
<length-percentage [0,∞]> |
min-content |
max-content |
fit-content( <length-percentage [0,∞]> ) |
<calc-size()> |
<anchor-size()>
<length-percentage> =
<length> |
<percentage>
<calc-size()> =
calc-size( <calc-size-basis> , <calc-sum> )
<anchor-size()> =
anchor-size( [ <anchor-name> || <anchor-size> ]? , <length-percentage>? )
<calc-size-basis> =
<size-keyword> |
<calc-size()> |
any |
<calc-sum>
<calc-sum> =
<calc-product> [ [ '+' | '-' ] <calc-product> ]*
<anchor-name> =
<dashed-ident>
<anchor-size> =
width |
height |
block |
inline |
self-block |
self-inline
<calc-product> =
<calc-value> [ [ '*' | / ] <calc-value> ]*
<calc-value> =
<number> |
<dimension> |
<percentage> |
<calc-keyword> |
( <calc-sum> )
<calc-keyword> =
e |
pi |
infinity |
-infinity |
NaN
table {
max-height: 75%;
}
form {
max-height: none;
}
| Specification |
|---|
| CSS Box Sizing Module Level 4> # sizing-values> |
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
max-height |
1 | 12 | 1CSS 2.1 leaves the behavior ofmax-height with table undefined. Firefox supports applying max-height to table elements. |
7CSS 2.1 leaves the behavior ofmax-height with table undefined. Opera supports applying max-height to table elements. |
1.3 | 18 | 4 | 14 | 1 | 1.0 | 4.4 | 1 |
anchor-size |
125 | 125 | No | 111 | 26 | 125 | No | 83 | 26 | 27.0 | 125 | 26 |
fit-content |
4625 | 7979 | 943Firefox implements the definitions given in CSS3 Basic Box. This definesavailable and not fit-available. Also, the definition of fit-content is simpler than in CSS3 Sizing. |
44 | 1172 | 4625 | 944Firefox for Android implements the definitions given in CSS3 Basic Box. This definesavailable and not fit-available. Also, the definition of fit-content is simpler than in CSS3 Sizing. |
43 | 1171 | 5.01.5 | 464.4 | 1171 |
fit-content_function |
No | No | 91 | No | No | No | No | No | No | No | No | No |
max-content |
46 | 79 | 663 | 44 | 119 | 46 | 664 | 43 | 119 | 5.0 | 46 | 119 |
min-content |
46 | 79 | 663 | 44 | 119 | 46 | 664 | 43 | 119 | 5.0 | 46 | 119 |
none |
18 | 12 | 1 | 15 | 1.3 | 18 | 4 | 14 | 1 | 1.0 | 4.4 | 1 |
stretch |
13828 | 13879 | No | 12215 | 9 | 13828 | No | 9115 | 9 | 1.5 | 1384.4 | 9 |
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/max-height