CSS

CSS: line-clamp

Spread the love

Свойство line-clamp обрезает текст до определенного количества строк.

Спецификация для него в настоящее время находится в статусе Working Draft (WD) — рабочий черновик, так что это означает, что все еще здесь ничего не высечено на камне, потому что работа над ней до конца еще не завершена. Тем не менее, он определяется как сокращение для max-lines и block-overflow, первое из которых отмечено как находящееся под угрозой удаления в текущем рекомендации-кандидате (Candidate Recommendation).

Легко увидеть, как max-lines будет исключен, поскольку его функция (установка количества строк перед усечением) уже встроена в line-clamp, и дальнейшая абстракция может быть ненужной.

Syntax

.module {
  line-clamp: [none | <integer>];
}

line-clamp принимает следующие значения в текущем черновике спецификации:

  • none: не устанавливает максимальное количество строк, и в результате не происходит усечения.
  • <integer>: устанавливает максимальное количество строк перед усечением содержимого, а затем отображает многоточие (…) в конце последней строки.

Это многоточие должно отображаться как символ Юникода (U+2026), но его можно заменить эквивалентом в зависимости от языка содержимого и режима записи используемого User-Agent.

Эй, я могу сделать это с помощью text-overflow?

Справедливый вопрос, друг мой, и ответ такой: ну…

text-overflow действительно имеет значение ellipsis, которое обрезает текст:

.truncate {
  text-overflow: ellipsis;

  /* Needed to make it work */  overflow: hidden;
  white-space: nowrap;
}

Красивая картинка, для хорошего старта. Но что, если мы хотим ввести многоточие не в первую строку, а где-то, скажем, в третью строку текста?

Вот где в игру вступает line-clamp. Просто обратите внимание, что для этого используется комбинация трех свойств:

.line-clamp {
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;  
  overflow: hidden;
}

Firefox теперь поддерживает это именно таким образом (с префиксами -webkit- и всем остальным).

Итак, в чем подвох?

На данный момент это поддержка браузера. Line clamps являются частью CSS Overflow Module Level 3 , который в настоящее время находится в статусе Working Draft (WD) — рабочий черновик и в настоящее время может полностью не поддерживается в некоторых браузерах.

Мы можем получить этот эффект (line clamp) с помощью префикса -webkit- (который, как ни странно, работает во всех основных браузерах). Поэтому, именно так была сделана демонстрация выше.

Так же для этих целей можно пойти по пути JavaScript. Clamp.js старая но вполне рабочая библиотека:

Поддержка браузера

Это поддержка WebKit свойства и недокументированной реализации Line Clamp в WebKit.

Эти данные поддержки браузера получены от Caniuse, в котором есть более подробная информация. Число указывает, что браузер поддерживает эту функцию в этой версии и выше.

Desktop

ChromeFirefoxIEEdgeSafari
14*68*No175*

Mobile / Tablet

Android ChromeAndroid FirefoxAndroidiOS Safari
108*107*2.3*5.0-5.1*

Дополнительные ресурсы

Перевод статьи: line-clamp

Была ли вам полезна эта статья?
[3 / 5]

Spread the love
Editorial Team

Recent Posts

Vue 3.4 Новая механика v-model компонента

Краткий перевод: https://vuejs.org/guide/components/v-model.html Основное использование​ v-model используется для реализации двусторонней привязки в компоненте. Начиная с Vue…

4 месяца ago

Анонс Vue 3.4

Сегодня мы рады объявить о выпуске Vue 3.4 «🏀 Slam Dunk»! Этот выпуск включает в…

4 месяца ago

Как принудительно пере-отобразить (re-render) компонент Vue

Vue.js — это универсальный и адаптируемый фреймворк. Благодаря своей отличительной архитектуре и системе реактивности Vue…

1 год ago

Проблемы с установкой сертификата на nginix

Недавно, у меня истек сертификат и пришлось заказывать новый и затем устанавливать на хостинг с…

1 год ago

Введение в JavaScript Temporal API

Каким бы ни было ваше мнение о JavaScript, но всем известно, что работа с датами…

1 год ago

Когда и как выбирать между медиа запросами и контейнерными запросами

Все, кто следит за последними событиями в мире адаптивного дизайна, согласятся, что введение контейнерных запросов…

1 год ago