max-height
속성의 이해
max-height
속성은 요소의 최대 높이, 즉 최대한의 세로 크기를 지정합니다.
요소의 콘텐츠나 스타일에 의해 높이가 커지더라도, 최대 높이인 max-height
값을 초과하여 커지지 않도록 제한합니다.
이 크기의 기준은 기본적으로 콘텐츠 영역의 높이입니다.
그러나, 요소의 크기를 계산할 때 크기의 기준을 설정하는 box-sizing
이 border-box
로 설정되어 있다면 테두리 영역까지의 높이가 기준이 됩니다.
형식 구문
selector {
max-height: <길이> | <백분율(%)> | <키워드>
}
예제
다음의 예제는 max-height
속성이 요소의 최대 높이를 설정하는 방식을 잘 보여줍니다.
두 개의 <div>
요소가 사용됩니다.
첫 번째는 height: 100px
로 지정된 Div-A
이고,
두 번째는 height: 400px
로 지정된 Div-B
입니다.
두 요소 모두 max-height
가 200px
로 지정되어 있습니다.
부연설명
height
속성은 요소의 높이, 즉 세로 크기를 지정합니다.
<div class="div-a">Div-A</div>
<hr>
<div class="div-b">Div-B</div>
.div-a {
height: 100px; /* 100px이 적용됨 */
max-height: 200px;
background-color: silver;
}
.div-b {
height: 400px;
max-height: 200px; /* 200px이 적용됨 */
background-color: gold;
}
max-height: 200px을 초과하지 않으므로 height: 100px이 적용됨
height: 400px은 max-height: 200px을 초과하므로 max-height: 200px이 적용됨
설명
- 첫 번째
Div-A
는height: 100px
이 지정되어 있으며, 최대 높이인max-height: 200px
보다 크지 않으므로height
값인100px
이 그대로 적용됩니다. - 두 번째
Div-B
는height: 400px
이 지정되었지만,max-height: 200px
보다 크기 때문에max-height
로 지정한 최대 높이인200px
을 가집니다.
이처럼 max-height
는 요소의 최대 높이를 설정하여 콘텐츠나 스타일에 의해 높이가 최대 높이보다 커지는 것을 방지합니다.
height
와 min-height
와의 관계
max-height
가height
보다 작으면height
는max-height
의 값을 사용합니다.max-height
가min-height
보다 작으면max-height
는min-height
의 값을 사용합니다.
max-height
가 height-width
보다 작은 경우
<button>button</button>
button {
min-height: 200px;
max-height: 30px; /* min-height보다 작음 */
}
min-height: 200px이 적용됨
구문
/* <길이> 단위 값 */
max-height: 120px;
max-height: 13rem;
max-height: 15rem;
/* <백분율(%)> 단위 값 */
max-height: 50%; /* 컨테이닝 블록 너비의 50% */
max-height: 100%; /* 컨테이닝 블록 너비의 100% */
/* <키워드> 값 */
max-height: none; /* 초깃값 */
max-height: max-content;
max-height: min-content;
max-height: fit-content;
/* 전역 값 */
max-height: inherit;
max-height: initial;
max-height: revert;
max-height: revert-layer;
max-height: unset;
값
max-height
속성은 다양한 형태의 값을 사용할 수 있습니다.
이를 설명과 예제로 정리하면 다음과 같습니다.
<길이>
단위 값
길이 단위의 값은 항상 양수입니다. (음수 값은 유효하지 않습니다.)
상대적 <길이>
단위
CSS rem과 em 단위 – 올바른 이해와 사용 방법을 참조하세요.
절대적 <길이>
단위
-
px
- CSS에서 사용 가능한 절대적 길이 단위
<백분율(%)>
단위 값
컨테이닝 블록(containing block)의 높이에 대한 백분율로 정의합니다. (음수 값은 유효하지 않습니다.)
예제
<div class="parent">
<div class="child">부모 요소(컨테이닝 블록)의 높이에 대한 백분율로 정의합니다.</div>
</div>
.parent {
height: 100px;
background-color: silver;
}
.child {
width: 120px;
max-height: 50%;
background-color: gold;
}
코드 부연설명
width
속성은 요소의 너비, 즉 가로 크기를 지정합니다.
콘텐츠의 높이가 부모 요소의 높이보다 클 경우에는 오버플로(overflow, 경계를 넘어섬)가 발생하여 콘텐츠가 부모 요소의 경계를 넘어설 수 있습니다.
none
초깃값입니다.
요소에 최대 높이를 지정하지 않습니다.
max-content
max-height
속성에서 max-content
값은 해당 요소에 설정되어 있는 너비를 기준으로, 콘텐츠의 높이가 이상적으로 충분히 맞춰질 수 있는(오버플로가 발생하더라도) 가장 작은 크기입니다.
max-content
는 그 콘텐츠가 차지하는 최적의 충분한 높이만큼만 요소의 크기를 맞추는 역할을 합니다.
min-content
max-height
속성에서 min-content
값은 해당 요소에 설정되어 있는 너비를 기준으로, 콘텐츠가 높이로 인해 오버플로를 방지하려는 목적의 최소 높이를 의미입니다.
fit-content
max-height
속성에서 fit-content
값은 컨테이닝 블록(containing block)의 높이나 레이아웃 제약을 고려하여,
요소의 최대 높이를 min-content
와 max-content
사이의 적합한 값으로 설정합니다.
주의할 점
max-height
속성을 사용할 때 다음의 두 가지 주의할 점이 있습니다.
display
가 inline
(대체되지 않은 인라인 요소, non-replaced inline elements)일 경우와 table columns(<col>
), column groups(<colgroup>
)인 요소에서는 max-height
속성이 적용되지 않습니다.
<span>
display가 inline
<br>
display가 inline
<br>
display가 inline
<br>
display가 inline
<br>
</span>
max-height: 1em;
은 적용되지 않습니다.
span {
display: inline; /* 이 값을 지정하지 않아도 span 요소의 display 초깃값은 inline이다 */
max-height: 1em;
background-color: gold;
}
max-height: 1em;
은 적용되지 않습니다. 자신 요소의 보여지는 콘텐츠의 높이입니다.
display가 inline
display가 inline
display가 inline
<백분율(%)>
단위 값 시 컨테이닝 블록(containing block)에 대한 의존성과 동작
요소에 max-height
속성의 값으로 백분율(%) 값을 사용할 때의 동작 방식에 대한 주의가 필요합니다.
백분율(%) 값은 컨테이닝 블록(containing block)의 높이에 비례하여 계산되기 때문에, 컨테이닝 블록(containing block)의 높이가 명시적으로 설정되지 않으면 해당 요소의 백분율(%) 높이가 제대로 계산되지 않을 수 있습니다.
컨테이닝 블록(containing block)의 높이가 명확히 정의되지 않거나, 해당 요소가 절대 위치(absolute positioning)가 아니면 백분율(%) 값이 자동으로 max-height: none
(최대 높이를 지정하지 않음)으로 처리된다는 점을 명확히 이해해야 합니다.
다음의 예제로 살펴보겠습니다.
<div class="parent">
<div class="child">현재 요소</div>
</div>
.parent {
border: 5px dashed red;
background-color: silver;
}
.child {
background-color: gold;
width: 150px;
max-height: 50%;
}
컨테이닝 블록(containing block)인 부모 요소 .parent
에 높이가 지정되지 않았기 때문에, 자식 요소인 .child
의 max-height: 50%
는 부모의 높이를 기준으로 계산할 수 없습니다. 이 경우, CSS에서는 기본적으로 자식 요소의 최대 높이가 none
(최대 높이를 지정하지 않음)으로 계산됩니다. 이 예제는 백분율(%) 값의 min-height
가 부모 요소의 높이를 기준으로 계산되지 않음을 잘 보여줍니다.
형식 정의
브라우저 호환성
속성과 값 |
데스크탑 Chrome
|
데스크탑데스크탑 Edge
|
데스크탑 Firefox
|
Safari
|
---|---|---|---|---|
max-height
|
18 | 12 | 1 | 1.3 |
none
|
18 | 12 | 1 | 1.3 |
max-content
|
46 | 79 | 66 | 11 |
min-content
|
46 | 79 | 66 | 11 |
fit-content
|
46 | 79 | 94 | 11 |
명세서
명세서 사양 | |
---|---|
max-height
|
CSS Box Sizing Module Level 3 #max-size-properties |