텍스트 콘텐츠 위와 아래의 여백을 줄여 시각적 균형을 맞춥니다.
게시일: 2025년 1월 14일
Chrome 133부터 text-box
를 사용하면 개발자와 디자이너가 텍스트 위와 아래의 공간을 조정할 수 있습니다.
Browser Support
장문:
text-box-trim: trim-start | trim-end | trim-both | none;
text-box-edge: cap | ex | text | leading;
line-fit-edge: alphabetic | text;
문구:
text-box: trim-both cap alphabetic;
이 속성을 사용하면 텍스트 위와 아래의 공간(예: <h1>
, <button>
, <p>
)을 제어할 수 있습니다. 모든 글꼴은 요소의 크기에 기여하는 이 블록 방향 공간을 서로 다른 양으로 생성합니다. 이러한 혼돈스러운 공간 기여도는 쉽게 측정할 수 없으며 지금까지는 제어할 수 없었습니다.
글꼴이 알고 있으니 이제 CSS도 알 수 있습니다.
글꼴 위와 아래의 공간은 웹에서 텍스트를 배치하는 방식인 'half-leading'(반행간) 때문입니다. 이 내용은 Matthias Ott의 CSS의 Leading 관련 문제라는 게시물에서 전문적으로 다룹니다. 기본적으로, 활판 인쇄가 수작업으로 이루어졌을 때는 금속 납 조각을 사용하여 텍스트 줄을 구분했습니다. 웹은 여백에서 영감을 받아 여백을 반으로 나누고 콘텐츠 위와 아래에 여백을 배치합니다.
이 기록은 의미가 있습니다. text-box
는 각 절반의 이름(over 및 under)을 제공하기 때문입니다. 자르기 기능도 있습니다.
text-box
에 대한 선행 기술도 있습니다. Ethan Wang의 흥미로운 게시물인 Leading-Trim: The Future Of Digital Typesetting(Leading-Trim: 디지털 서체의 미래)을 기억하시나요? 이 게시물에서 leading-trim
(이전의 text-box
이름)이 처음 소개되었습니다.
텍스트 자르기의 진입점은 디자이너를 위한 Figma 및 '세로 자르기' 컨트롤일 수 있습니다. 이 X 게시물에서는 이 세로 자르기 옵션이 어디에 있는지, 그리고 버튼에 어떤 도움이 되는지 보여줍니다.
어떻게 이 페이지에 도달했든 이처럼 사소해 보이는 서체 설정은 큰 차이를 만들 수 있습니다.
기능 및 문법 개요
다음은 text-box
를 사용할 때 가장 일반적으로 필요한 두 가지 한 줄짜리 코드입니다.
h1 {
/* trim both sides to the capital letters */
text-box: trim-both cap alphabetic;
/* trim both sides to the lowercase letter x */
text-box: trim-both ex alphabetic;
}
이 기능을 가장 일반적으로 사용하는 방법은 둘 다 cap alphabetic
로 자르는 것입니다. 다음 데모에서는 이를 여러 번 사용합니다. 그러나 이전 예에서는 ex alphabetic
도 보여줍니다. ex alphabetic
는 고유한 방식으로 광학적 균형에 유용하기 때문입니다.
탐색기 놀이터
다음 데모에서는 구문을 살펴보고 드롭다운 메뉴를 사용하여 결과를 확인할 수 있습니다. 글꼴을 변경하고, 오버 및 언더 트림 값을 변경하고, 색상 코딩된 시각적 요소와 라벨을 따라갈 수 있습니다.
시도해 볼 만한 작업:
- 단일 줄 및 여러 줄 텍스트 변형에서
text-box-trim
가 작동하는 방식을 시각적으로 검사합니다. - 대안 위로 마우스를 가져가면 해당 효과를 얻는 데 사용된 자르기 값이 표시됩니다.
- 글꼴 변경
- 텍스트 상자의 한 쪽만 자릅니다.
- 플레이하면서 문법을 검토합니다.
이를 사용하여 무엇을 빌드할 수 있나요? 또는 어떤 문제를 해결하나요?
이 자르기 기능에서 비롯된 훨씬 더 간단한 중앙 정렬 및 정렬 솔루션이 있습니다. 콘텐츠 사이에 gap
와 같은 기호를 사용할 수 있는 적절한 여백을 적용할 수도 있습니다.
간편한 가운데 정렬
더 작고 인라인이며 콘텐츠 고유 구성요소의 경우 padding: 10px
는 모든 측면에 동일한 간격을 지정하기 위해 요소에 지정할 수 있는 적절한 스타일입니다. 하지만 상단과 하단에 여백이 많이 생겨 혼란을 줄 수 있습니다.
이 문제를 해결하기 위해 개발자는 절반의 들여쓰기 효과를 상쇄하기 위해 윗부분과 아랫부분 (블록)에 패딩을 더 적게 명시적으로 적용하는 경우가 많습니다.
button {
padding-block: 5px;
padding-inline: 10px;
}
이제 물체가 시각적으로 가운데에 위치할 때까지 값 조합을 시도해 보겠습니다. 한 화면과 운영체제에서는 잘 보이지만 다른 화면과 운영체제에서는 잘 보이지 않을 수 있습니다.
text-box
를 사용하면 텍스트에서 선행 공백의 절반을 자르므로 10px
과 같은 동일한 패딩 값을 유용하게 사용할 수 있습니다.
button {
text-box: trim-both cap alphabetic;
padding: 10px;
}
다음은 text-box
로 공간을 자르면 실용적인 양방향 요소에서 padding: 10px
가 모든 측면에서 동일하게 표시되는 방식을 보여주는 몇 가지 <button>
요소입니다. 대체 글꼴을 사용하면 반행간격이 크게 달라질 수 있습니다.
다음은 카테고리 또는 배지를 표시하는 데 자주 사용되는 <span>
요소입니다. 균등한 측면 패딩이 가장 좋은 해결책이어야 하는 또 다른 경우이지만 text-box
까지는 이를 해결해야 했습니다.
더 쉬운 정렬
텍스트 상자 위 (over
)와 아래 (under
)에 추가로 발생하는 제어할 수 없는 절반의 여백도 정렬을 어렵게 만듭니다. 다음 예에서는 반 간격으로 인해 정렬이 어려워질 수 있는 경우와 텍스트 상자의 블록 측면을 자르면 더 나은 정렬을 만들 수 있는 방법을 보여줍니다.
여기서는 이미지가 텍스트 옆에 배치되어 있습니다. 이미지는 텍스트에 필요한 높이로 늘어나지만 text-box
가 없으면 이미지가 항상 약간 더 큽니다. text-box
를 사용하면 이미지를 텍스트 콘텐츠와 완벽하게 정렬할 수 있습니다.
줄바꿈이 있는 시나리오에서는 공백이 형식이 지정된 첫 번째 텍스트 줄 위에 있고 형식이 지정된 마지막 텍스트 줄 아래에 있습니다.
다음 예에서는 기능이 writing-mode
의 변경사항에 논리적으로 적응하는 방식을 확인할 수 있습니다. 텍스트를 변경해 보고 레이아웃이 계속 정렬되는 방식을 확인합니다.
학습 계속하기
자세한 내용이 궁금하신가요? 다음 링크 목록에서는 다양한 추가 정보와 사용 사례를 제공합니다.
- https://codepen.io/collection/zxQBaL - 위의 모든 데모가 포함된 Codepen 컬렉션
- https://github.com/jantimon/text-box-trim-examples - 얀 닉라스님의 훌륭한 연구 및 데모
- https://css-tricks.com/two-css-properties-for-trimming-text-box-whitespace/
- https://drafts.csswg.org/css-inline-3/#text-edges
size-adjust
또는ascent-override
https://web.dev/articles/css-size-adjust와 혼동하지 마세요.- https://www.smashingmagazine.com/2012/12/css-baseline-the-good-the-bad-and-the-ugly/
- https://css-tricks.com/two-css-properties-for-trimming-text-box-whitespace/
- 여러 HTML 요소에 적용됨 https://codepen.io/nileshprajapati/pen/RweKdmw
- Safari 블로그 게시물 https://webkit.org/blog/16301/webkit-features-in-safari-18-2/
- https://piccalil.li/blog/why-im-excited-about-text-box-trim-as-a-designer/