height
속성의 이해
height
속성은 요소의 높이, 즉 세로 크기를 지정합니다.
이 크기의 기준은 기본적으로 콘텐츠 영역의 높이입니다.
그러나, 요소의 크기를 계산할 때 크기의 기준을 설정하는 box-sizing
이 border-box
로 설정되어 있다면 테두리 영역까지의 높이가 기준이 됩니다.
height 속성은 요소의 너비, 즉 가로 크기를 지정합니다.
형식 구문
selector {
height: <길이> | <백분율(%)> | <키워드>
}
구문
/* <길이> 단위 값 */
height: 120px;
height: 13rem;
height: 15rem;
/* <백분율(%)> 단위 값 */
height: 50%; /* 컨테이닝 블록 높이의 50% */
height: 100%; /* 컨테이닝 블록 높이의 100% */
/* <키워드> 값 */
height: auto; /* 초깃값 */
height: max-content;
height: min-content;
height: fit-content;
/* 전역 값 */
height: inherit;
height: initial;
height: revert;
height: revert-layer;
height: unset;
값
height
속성은 다양한 형태의 값을 사용할 수 있습니다.
이를 설명과 예제로 정리하면 다음과 같습니다.
<길이>
단위 값
길이 단위의 값은 항상 양수입니다. (음수 값은 유효하지 않습니다.)
상대적 <길이>
단위
CSS rem과 em 단위 – 올바른 이해와 사용 방법을 참조하세요.
절대적 <길이>
단위
예제
<p>height 속성은 요소의 높이, 즉 세로 크기를 지정합니다.</p>
p {
height: 100px;
background-color: gold;
}
height 속성은 요소의 높이, 즉 세로 크기를 지정합니다.
<백분율(%)>
단위 값
컨테이닝 블록(containing block)의 높이에 대한 백분율로 정의합니다. (음수 값은 유효하지 않습니다.)
예제
<div class="parent">
<p class="child">부모 요소(컨테이닝 블록)의 높이에 대한 백분율로 정의합니다.</p>
</div>
.parent {
height: 100px;
background-color: silver;
}
.child {
height: 50%;
background-color: gold;
}
부모 요소(컨테이닝 블록)의 높이에 대한 백분율로 정의합니다.
auto
초깃값입니다.
요소의 높이를 콘텐츠와 컨텍스트에 따라 브라우저가 자동으로 결정합니다.
예제
<p>auto 값은 요소의 높이를 콘텐츠와 컨텍스트에 따라 브라우저가 자동으로 결정합니다.</p>
<p class="width-200">auto 값은 요소의 높이를 콘텐츠와 컨텍스트에 따라 브라우저가 자동으로 결정합니다.</p>
p {
height: auto; /* 이 값을 지정하지 않아도 height 초깃값은 auto */
background-color: gold; /* 배경색으로 요소의 크기를 확인할 수 있습니다. */
}
.width-200 {
width: 200px; /* 특정 너비를 지정한 경우, 높이는 콘텐츠에 따라 조정됩니다. */
}
auto 값은 요소의 높이를 콘텐츠와 컨텍스트에 따라 브라우저가 자동으로 결정합니다.
auto 값은 요소의 높이를 콘텐츠와 컨텍스트에 따라 브라우저가 자동으로 결정합니다.
부연설명
이처럼 auto
값은 요소의 콘텐츠와 컨텍스트(예: 부모 요소의 너비, 요소 자체의 너비, 또는 레이아웃의 영향을 받는 상황 등)에 따라 브라우저가 자동으로 높이를 결정합니다.
max-content
height
속성에서 max-content
값은 값은 콘텐츠의 최대 높이에 맞춰 요소의 높이를 설정합니다.
즉, 요소의 높이는 콘텐츠가 온전히 차지할 수 있는 시점의 최대 높이로 설정됩니다.
max-content
는 그 콘텐츠가 차지하는 최적의 충분한 높이만큼만 요소의 크기를 맞추는 역할을 합니다.
예제를 통해 살펴보겠습니다.
<h4>height: max-content</h4>
<div class="parent">
<div class="child max-content-item">height의 max-content</div>
<div class="child max-content-item">height의 max-content 값의 이해</div>
<div class="child max-content-item">
height의 max-content 값은 그 콘텐츠가
차지하는 최적의 충분한 높이만큼 요소의 크기를
맞추는 역할을 합니다.
</div>
</div>
<h4>height: auto</h4>
<div class="parent">
<div class="child auto-item">height의 max-content</div>
<div class="child auto-item">height의 max-content 값의 이해</div>
<div class="child auto-item">
height의 max-content 값은 그 콘텐츠가
차지하는 최적의 충분한 높이만큼 요소의 크기를
맞추는 역할을 합니다.
</div>
</div>
.parent {
display: flex; /* Flexbox 사용 */
align-items: stretch;
background-color: silver;
border: 5px dashed red;
gap: 10px; /* 아이템 간 간격 */
padding: 10px;
}
.child {
width: 120px; /* 모든 요소에 동일한 너비 적용 */
background-color: gold;
border: 1px solid navy;
padding: 5px;
}
.max-content-item {
height: max-content;
}
.auto-item {
height: auto;
}
height: max-content
height: auto
예제에서는 두 개의 플렉스 박스로 구현되는 parent
이름을 가지는 요소가 있습니다.
align-items: stretch;
를 지정하면, 이 두 플렉스 박스의 아이템에 해당하는 자식 요소들은 명시적으로 height
가 설정되어 있지 않은 경우(height: auto
인 경우를 말함) 모두 부모 요소인 플렉스 박스의 높이만큼 일정하게 늘어납니다.
하지만, height
가 max-content
로 지정된 자식 요소들은 콘텐츠가 차지하는 최적의 높이만큼만 자동으로 높이가 설정됩니다. 이 경우, 자식 요소는 부모의 높이를 꽉 채우지 않고, 콘텐츠에 맞는 최적의 높이로 조정됩니다.
min-content
height
속성에서 min-content
값은 값은 콘텐츠의 최소 높이에 맞춰 요소의 너비를 설정합니다.
즉, 요소의 높이는 콘텐츠가 온전히 차지할 수 있는 시점의 최소 높이로 설정됩니다. 이때, 콘텐츠가 잘리거나 흐름을 깨뜨리지 않으면서 가능한 한 작은 높이를 유지합니다.
height
속성에서 min-content
와 max-content
는 콘텐츠의 크기에 따라 자동으로 높이를 설정합니다. 두 값은 인라인 콘텐츠에 적용될 때, 기본적으로 같은 높이를 가지게 됩니다. 이 값들은 콘텐츠가 차지하는 공간에 맞춰 최적의 높이를 설정하기 때문에, 텍스트나 인라인 콘텐츠 내용이 길거나 짧더라도 동일한 방식으로 동작합니다
fit-content
height
속성에서 fit-content
값은 부모 요소의 높이나 레이아웃 제약을 고려하여
요소의 콘텐츠 높이를 min-content
와 max-content
사이의 적합한 값으로 설정합니다.
주의할 점
height
속성을 사용할 때 다음의 세 가지 주의할 점이 있습니다.
min-height
와 max-height
와의 관계
height
가min-height
보다 작으면height
는min-height
의 값을 사용합니다.height
가max-height
보다 크면height
는max-height
의 값을 사용합니다.
height
속성을 지원하지 않는 요소
display
가 inline
(대체되지 않은 인라인 요소, non-replaced inline elements)일 경우와 table columns(<col>
), column groups(<colgroup>
)인 요소에서는 height
속성이 적용되지 않습니다.
<span>display가 inline</span>
height: 150px;
은 적용되지 않습니다.
span {
display: inline; /* 이 값을 지정하지 않아도 span 요소의 display 초깃값은 inline이다 */
height: 150px;
background-color: gold;
}
height: 150px;
은 적용되지 않습니다. 자신 요소의 보여지는 콘텐츠의 높이입니다.
<백분율(%)>
단위 값 시 컨테이닝 블록(containing block)에 대한 의존성과 동작
요소에 height
속성의 값으로 백분율(%) 값을 사용할 때의 동작 방식에 대한 주의가 필요합니다.
백분율(%) 값은 컨테이닝 블록(containing block)의 높이에 비례하여 계산되기 때문에, 컨테이닝 블록(containing block)의 높이가 명시적으로 설정되지 않으면 해당 요소의 백분율(%) 높이가 제대로 계산되지 않을 수 있습니다.
컨테이닝 블록(containing block)의 높이가 명확히 정의되지 않거나, 해당 요소가 절대 위치(absolute positioning)가 아니면 백분율(%) 값이 자동으로 height: auto
로 처리된다는 점을 명확히 이해해야 합니다.
다음의 예제로 살펴보겠습니다.
<div class="parent">
<div class="child">현재 요소</div>
</div>
.parent {
border: 5px dashed red;
background-color: silver;
}
.child {
background-color: gold;
width: 150px;
height: 50%;
}
컨테이닝 블록(containing block)인 부모 요소 .parent
에 높이가 지정되지 않았기 때문에, 자식 요소인 .child
의 height: 50%
는 부모의 높이를 기준으로 계산할 수 없습니다. 이 경우, CSS에서는 기본적으로 자식 요소의 높이가 auto
로 계산됩니다. 이 예제는 백분율(%) 값의 height
가 부모 요소의 높이를 기준으로 계산되지 않음을 잘 보여줍니다.
형식 정의
초깃값 | auto |
---|---|
적용 요소 | display 가 inline (대체되지 않은 인라인 요소, non-replaced inline elements)이면서
position 이
static
또는 relative
또는 sticky 일 경우(단, 플렉스 박스나 그리드 박스의 아이템이 아니어야 함)와
table columns( <col>
), column groups(<colgroup> )인 요소를 제외한 모든 요소 |
상속 | 아니오 |
애니메이션 | <길이> 단위 값, <백분율(%)> 단위 값, calc() 로 계산된 값 |
브라우저 호환성
속성과 값 |
데스크탑 Chrome
|
데스크탑데스크탑 Edge
|
데스크탑 Firefox
|
Safari
|
---|---|---|---|---|
height
|
1 | 12 | 1 | 1 |
max-content
|
46 | 79 | 66 | 11 |
min-content
|
46 | 79 | 66 | 11 |
fit-content
|
46 | 79 | 94 | 11 |
명세서
명세서 사양 | |
---|---|
height
|
CSS Box Sizing Module Level 4 #width-height-keywords |