line-clamp
Усекает свойство текста в определенном количестве линий.
Спецификация для него в настоящее время является черновиком редактора, так что это означает, что здесь ничего не высечено в камне, потому что работа над ним продолжается. Тем не менее, это определено как сокращение от max-lines
и block-overflow
, первое из которых отмечено как рискующее быть исключенным в Рекомендации кандидата.
Легко увидеть, как max-lines
можно было бы исключить, поскольку его функция (установка количества строк перед усечением) уже запекается, line-clamp
и любая дальнейшая абстракция может быть ненужной. Но это сбивает нас с пути, так что давайте продолжим.
Синтаксис
.module ( line-clamp: (none | ); )
line-clamp
принимает следующие значения в текущем проекте спецификации:
none
: не устанавливает максимальное количество строк, и в результате не происходит усечения.: устанавливает максимальное количество строк перед обрезкой содержимого, а затем отображает многоточие (…) в конце последней строки.
Это многоточие должно отображаться как символ Юникода (U + 2026), но может быть заменено эквивалентом на основе языка содержимого и режима записи используемого User-Agent.
Эй, а нельзя ли это сделать с переполнением текста?
Справедливый вопрос, мой друг, и ответ: ну ...
(Видите, что я там делал?)
… Вроде как.
text-overflow
действительно имеет ellipsis
значение, которое будет обрезать текст:
.truncate ( text-overflow: ellipsis; /* Needed to make it work */ overflow: hidden; white-space: nowrap; )
См. Переполнение текста ручкой Джеффа Грэма (@geoffgraham) на CodePen.
Приятно хорошо, это хорошее начало. Но что, если мы хотим ввести многоточие не в первую строку, а где-нибудь, скажем, в третьей строке текста?
Вот где line-clamp
вступает в игру. Просто обратите внимание, что для этого используется комбинация трех свойств:
.line-clamp ( display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; )
См. Зажим линии Pen (-webkit) Джеффа Грэма (@geoffgraham) на CodePen.
Firefox поддерживает это сейчас, именно так (с -webkit-
префиксами и всем остальным).
Итак, в чем подвох?
На данный момент это поддержка браузера. Строчные зажимы являются частью модуля переполнения CSS уровня 3, который в настоящее время находится в черновике редактора и в настоящее время полностью не поддерживается.
Мы можем получить какое-то действие по ограничению строки с помощью -webkit-
префикса (который, как ни странно, работает во всех основных браузерах). Фактически, именно так и была сделана демонстрация выше.
При желании мы могли бы пойти по пути JavaScript. Clamp.js сделает свое дело:
См. Статью Джеффа Грэма (@geoffgraham) на CodePen.
Поддержка браузера
Это поддержка фирменной и недокументированной реализации ограничения линии WebKit.
Эти данные о поддержке браузером взяты из Caniuse, где есть более подробная информация. Число означает, что браузер поддерживает эту функцию в этой версии и выше.
Рабочий стол
Хром | Fire Fox | IE | Край | Сафари |
---|---|---|---|---|
14 * | 68 * | Нет | 17 | 5 * |
Мобильный / планшет
Android Chrome | Android Firefox | Android | iOS Safari |
---|---|---|---|
88 * | 85 * | 2.3 * | 5,0–5,1 * |