CSS-обрезка текстового поля

Опубликовано: 14 января 2025 г.

Начиная с Chrome 133, text-box позволяет разработчикам и дизайнерам настраивать пространство над и под текстом.

Browser Support

  • Хром: 133.
  • Край: 133.
  • Firefox: не поддерживается.
  • Сафари: 18.2.

Source

От руки:

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 знает.

Попробуйте на CodePen

Отступы над и под шрифтом возникают из-за особенностей расположения текста в вебе, называемых «полуинтерлиньяжем». Об этом подробно рассказывает Маттиас Отт в своей статье «Проблемы интерлиньяжа в 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 поскольку она по-своему полезна для оптического баланса.

Игровая площадка исследователя

Изучите синтаксис на нашей игровой площадке и просмотрите результаты с помощью раскрывающихся меню. Вы можете менять шрифты, значения обрезки сверху и снизу, а также использовать цветные визуальные элементы и метки.

Предварительный просмотр синтаксиса с текстовым полем: trim-both-cap, выделенным и отображаемым буквенно-цифровым синтаксисом. Есть ещё три раскрывающихся списка для выбора значений обрезки.

Что стоит попробовать:

  1. Визуальная проверка того, как работает text-box-trim в однострочных и многострочных текстовых вариантах.
  2. При наведении курсора на вариант можно увидеть значения обрезки, использованные для достижения этого эффекта.
  3. Изменение шрифта.
  4. Обрезка только одной стороны текстового поля.
  5. Повторяйте синтаксис во время игры.
Попробуйте на CodePen

Что я могу построить и какие проблемы это решит?

Благодаря этой возможности обрезки появляются гораздо более простые решения для центрирования и выравнивания. Вы даже можете приблизиться к правильному интерлиньяжу, например, используя gap между содержимым.

Сравнение двух групп контента.
В первой группе интерлиньяж половинный, во второй — укороченный. В результате вторая группа расположена плотнее. Попробуйте на CodePen.

Более легкое центрирование

Для небольших, более строчных и внутренних компонентов, padding: 10px — разумный стиль, позволяющий задать элементу равные отступы со всех сторон. Однако результат может сбить с толку, поскольку часто сверху и снизу остаются дополнительные отступы.

Чтобы обойти эту проблему, разработчики часто намеренно уменьшают отступы сверху и снизу (в блоке), чтобы компенсировать эффект половинного интерлиньяжа.

button {
  padding-block: 5px;
  padding-inline: 10px;
}

На этом этапе нам остаётся пробовать комбинации значений, пока всё не будет оптически отцентрировано. Это может выглядеть хорошо на одном экране и в одной операционной системе, но не на другом.

text-box позволяет нам обрезать половину начального интервала из текста, делая полезными равные значения отступов, например 10px :

button {
  text-box: trim-both cap alphabetic;
  padding: 10px;
}
Показаны два примера.
Первый пример показывает элемент с отступом 10 пикселей и полуинтерлиньяжем. Второй пример показывает тот же элемент с текстовым полем: trim-both cap alphabetic. В результате вторая кнопка оказывается оптически центрированной. Попробуйте на CodePen.

Вот несколько элементов <button> , которые показывают, как обрезка пространства с помощью text-box делает padding: 10px одинаковым со всех сторон в практичном интерактивном элементе. Обратите внимание, как альтернативный шрифт может создавать совершенно другой полуинтервальный отступ.

Три группы кнопок. Первая использует обычный шрифт без засечек, вторая — замысловатый или забавный шрифт, а третья — тот же эффект, но с рукописным шрифтом.
У каждого шрифта разный полуинтервал, но значения обрезки одинаковы и позволяют нормализовать интервал. Попробуйте на CodePen.

Вот элементы <span> , которые часто используются для отображения категорий или значков. Ещё один случай, когда отступы с одинаковыми сторонами должны быть лучшим решением, но до появления text-box нам приходилось обходить этот вариант.

Теги показаны в сравнении бок о бок. В первой группе интерлиньяж половинный, во второй — укороченный.
Вторая группа бирок более плотная и оптически центрированная благодаря обрезанному интерлиньяжу.

Более легкое выравнивание

Избыточный, неконтролируемый, полуинтерлиньяж over текстовым полем и under также затрудняет выравнивание. В следующих примерах показано, когда полуинтерлиньяж может затруднить выравнивание и как обрезка боковых сторон текстового поля может улучшить выравнивание.

Здесь изображение размещается рядом с текстом. Изображение увеличивается до необходимой тексту высоты. Без text-box изображение всегда немного выше. С text-box изображение идеально выровняется с текстом.

Попробуйте на CodePen

Обратите внимание, что в сценариях с переносом строк пробел находится над первой отформатированной строкой текста и под последней отформатированной строкой текста.

В следующем примере обратите внимание, как функция логически адаптируется к изменению writing-mode . Попробуйте изменить текст и посмотрите, как макет останется выровненным.

Попробуйте на CodePen

Продолжать учиться

Хотите узнать больше? Следующий список ссылок предлагает разнообразную дополнительную информацию и примеры использования.