Освободите пространство сверху и снизу вашего текстового контента; достичь оптического баланса.
Опубликовано: 14 января 2025 г.
 Начиная с Chrome 133, text-box позволяет разработчикам и дизайнерам настраивать пространство над и под текстом.
От руки:
text-box-trim: trim-start | trim-end | trim-both | none;
text-box-edge: cap | ex | text | leading + alphabetic | text;
Сокращение:
text-box: trim-both cap alphabetic;
 Это свойство позволяет вам управлять пространством над и под текстом, например <h1> , <button> и <p> . Каждый шрифт создает различное количество направленного пространства этого блока, что влияет на размер элемента. Этот хаотичный вклад пространства нелегко измерить, и до сих пор его невозможно контролировать.
Шрифт знает, теперь знает и CSS!
Пространство над и под шрифтом обусловлено тем, как текст располагается в Интернете, и называется «полуинтерлиньяж». Об этом мастерски рассказывает Маттиас Отт в статье « The Thing With Leading In CSS» . По сути, когда набор текста выполнялся вручную, для разделения строк текста использовались кусочки металлического свинца. Сеть, вдохновленная лидированием, делит эту часть лида пополам и распределяет часть над контентом, а часть — под ним.
 Эта история имеет смысл, потому что text-box дает нам имена для каждой половины: сверху и снизу. Плюс возможность его обрезать.
 У text-box также есть предшествующий уровень техники, вы можете вспомнить захватывающий пост Итана Ванга под названием «Leading-Trim: The Future Of Digital Typesetting» , где впервые было представлено 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 поскольку он по-своему полезен для оптического баланса.
Детская площадка Исследователя
Следующая демонстрация позволяет изучить синтаксис и просмотреть результаты с помощью раскрывающихся меню. Вы можете менять шрифты, изменять значения обрезки выше и ниже, а также следить за цветными визуальными элементами и метками.
Что стоит попробовать:
-  Визуальная проверка того, как работает 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;
}
 Вот несколько элементов <button> , которые показывают, как обрезка пространства с помощью text-box делает padding: 10px выглядят одинаково со всех сторон в практичном интерактивном элементе. Обратите внимание, как альтернативный шрифт может создавать совершенно разные половинные интервалы. 
 Вот элементы <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-overridehttps://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/