line-height
속성의 이해
line-height
속성은
텍스트의 라인 높이(line height)를 설정합니다.
이 속성으로 텍스트의 행을 이루는 라인 박스의 위아래 가운데를 기준으로 높이를 조절할 수 있습니다.
두 가지 기능
이러한 특징으로 인해서 line-height
속성은 다음의 두 가지 기능을 가지게 됩니다.
- 텍스트의 행간 높이를 설정
- 내부 라인 박스(line box)의 최소 높이를 지정
텍스트의 행간 높이를 설정
다음은 line-height
속성으로 텍스트 행간의 높이을 설정하는 데모입니다.
라인 박스의 최소 높이를 지정
line-height
속성이 텍스트의 행간 높이만을 지정하는 것이 아닙니다.
텍스트가 없다고 하더라도 line-height
속성이 블록 컨테이너 요소에 적용될 때는,
해당 요소 내부 라인 박스(line box)의 최소 높이를 지정합니다.
라인 박스(line box)란
블록 컨테이너 요소 내부에 수평으로 된 가상의 공간을 의미하며 인라인 콘텐츠(예: 텍스트, 이미지, 링크, input 등)가 렌더링되는 공간을 말합니다.
단, flex
나 grid
박스 컨테이너에 적용될 때에는 텍스트 콘텐츠만이 해당 요소 내부 라인 박스의 최소 높이를 지정합니다.
line-height
속성의 형식은 다음과 같습니다.
형식 구문
형식 정의
초깃값 | normal |
---|---|
적용 요소 | 모든 요소 |
상속 | 예 |
퍼센트(% ) 단위 값 |
현재 요소의 font-size 가 100% 의 기준입니다. |
애니메이션 | 길이 단위가 있는 값에만 적용됩니다. |
구문
주의할 점
- 숫자 값이나 퍼센트(
%
) 단위 값의 기준은 현재 요소의font-size
입니다. - 애니메이션은 길이 단위가 있는 값에만 적용됩니다.
line-height
속성의 작동 방식
단순하게 line-height
속성의 작동 방식을 텍스트의 줄 간격, 즉 행간을 조절한다고만 이해하는 것은 일부만 이해하는 것입니다.
line-height
속성의 또 다른 기능으로 블록 요소 내의 라인 박스 높이를 설정하는 것입니다.
이 속성의 이름이 'line height'라는 것에 주목하세요. 앞서 설명했듯이 라인 박스는 블록 컨테이너 요소 내부의 수평으로 된 가상의 공간으로 텍스트나 이미지, input 등 인라인 콘텐츠(콘텐츠의 앞이나 뒤를 강제로 줄바꿈하는 성격이 없는 콘텐츠)가 렌더링되는 공간을 의미합니다.
따라서, line-height
속성은 텍스트의 줄 간격, 즉 행간을 조절하는 것 이외에도 인라인 콘텐츠의 최소 높이도 조절할 수 있습니다. 또한, line-height
속성은 높이 조절을 할 때 인라인 콘텐츠의 위/아래 가운데를 기준으로 위/아래로 길어지거나 짧아집니다.
다음의 세 가지 예시들을 통해 차근차근 살펴보겠습니다.
line-height
속성은 높이 조절을 할 때 인라인 콘텐츠의 위/아래 가운데를 기준으로 합니다.
이 텍스트는 line-height가 500%입니다.
이 텍스트는 line-height가 100px입니다.
이 텍스트는 line-height가 5px입니다.
위 예시들을 보면 알 수 있듯이 line-height
속성은 높이 조절을 할 때 인라인 콘텐츠의 위/아래 가운데를 기준으로 합니다.
line-height
속성은 텍스트 세로 기준으로 가운데 정렬하는데 유용합니다.
line-height
속성은 인라인 콘텐츠가 없을 경우 작동하지 않습니다.
위 예시를 보면 line-height
속성은 인라인 콘텐츠가 없을 경우 작동하지 않습니다. 이것은 당연한 것입니다. line-height
속성은 해당 요소의 높이를 지정하는 것이 아니라 블록 요소 내 라인 박스 높이를 설정하는 것이기 때문입니다. 라인 박스는 인라인 콘텐츠가 없을 경우 생성되지 않습니다.
line-height
속성은 텍스트에만 적용되는 것이 아니라 인라인 콘텐츠에도 적용됩니다.
위 예시를 보면 알 수 있듯이 line-height
속성은 텍스트에만 적용되는 것이 아니라 인라인 콘텐츠에도 적용됩니다.
line-height
속성은 텍스트 행의 높이를 설정하지만 이는 line-height
속성이 라인 박스의 최소 높이를 설정하는 것의 효과이기 때문입니다.
하지만, flex
나 grid
박스에서는 별개로 작동합니다.
텍스트
위 코드 예시를 보면 flex
박스 내에서 인라인 콘텐츠는 작동하지 않습니다. 하지만 텍스트 콘텐츠에서는 작동합니다.
브라우저 호환성
속성 |
데스크탑 Chrome
|
데스크탑데스크탑 Edge
|
데스크탑 Firefox
|
Safari
|
---|---|---|---|---|
line-height
|
1 | 12 | 1 | 1 |
명세서
명세서 사양 | |
---|---|
line-height
|
CSS Inline Layout Module Level 3 #line-height-property |