CSS свойство text-overflow
Определение и применение
Свойство text-overflow определяет, как обозначать обрезанный текст у края строки:
clip обрезает его без маркера, ellipsis добавляет многоточие … (U+2026).
Это один символ, а не три отдельные точки.
Само свойство не создаёт переполнение и не запрещает перенос строк. Оно применяется к блочному контейнеру,
когда содержимое выходит за край строки, а
overflow
отличается от visible: например, задано hidden, clip, scroll
или auto.
Для однострочного текста обычно используют overflow: hidden, text-overflow: ellipsis и
white-space
со значением nowrap. Однако nowrap не является обязательным условием: переполнение
возможно и при white-space: normal, если отдельное слово не помещается и не может быть разорвано.
Доступный размер строки должен быть ограничен; его может задать раскладка, поэтому явное width
не обязательно. Свойство действует в направлении строки, которое зависит от direction и
writing-mode. Оно не добавляет многоточие при переполнении блока снизу в обычном горизонтальном письме.
Попробуйте значения text-overflow
Нужны ограниченная ширина, overflow: hidden и white-space: nowrap. Меняется обозначение обрезанного текста, а не сам текст.
text-overflow: clip
HTML и CSS примера
<div class="demo-target">
Изучаем CSS: оформление текста помогает читать и понимать страницу.
</div>
.demo-target {
box-sizing: border-box;
width: 100%;
max-width: 300px;
padding: 16px;
border: 2px solid #245a85;
background: #fff3d6;
color: #172c3d;
font: 18px/1.5 system-ui;
overflow: hidden;
white-space: nowrap;
text-overflow: clip;
}
.demo-target {
box-sizing: border-box;
width: 100%;
max-width: 300px;
padding: 16px;
border: 2px solid #245a85;
background: #fff3d6;
color: #172c3d;
font: 18px/1.5 system-ui;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
Поддержка браузерами
Спецификации: CSS overflow, svgwg
Поддерживается во всех основных браузерах с 2015 года.
Отдельные значения (2) поддерживаются не везде — смотрите таблицу.
| Возможность | Компьютеры | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
text-overflow | 1 | 12 | 7 Версия 7 выпущена в 2011 г. Примечание MDN (англ.) Until Firefox 10, handling of | 11 Версия 11 выпущена в 2010 г. Версия 9 выпущена в 2006 г. — Удалено в 15; Префикс -o- | 1.3 | 18 | 7 Версия 7 выпущена в 2011 г. Примечание MDN (англ.) Until Firefox for Android 10, handling of | 11 Версия 11 выпущена в 2011 г. Версия 10.1 выпущена в 2010 г. — Удалено в 14; Префикс -o- | 1 | 1.0 | 4.4 | 1 |
clip | 1 | 12 | 7 | 15 | 1.3 | 18 | 7 | 14 | 1 | 1.0 | 4.4 | 1 |
ellipsis | 1 Версия 1 выпущена в 2008 г. Примечание MDN (англ.) In In textual From version 149, in | 12 | 7 Версия 7 выпущена в 2011 г. Примечание MDN (англ.) In textual In | 15 Версия 15 выпущена в 2013 г. Примечание MDN (англ.) In In textual From version 133, in | 1.3 Версия 1.3 выпущена в 2005 г. Примечание MDN (англ.) In In textual | 18 Версия 18 выпущена в 2012 г. Примечание MDN (англ.) In In textual From version 149, in | 7 Версия 7 выпущена в 2011 г. Примечание MDN (англ.) In textual In | 14 Версия 14 выпущена в 2013 г. Примечание MDN (англ.) In In textual From version 100, in | 1 Версия 1 выпущена в 2007 г. Примечание MDN (англ.) In In textual | 1.0 Версия 1.0 выпущена в 2013 г. Примечание MDN (англ.) In In textual | 4.4 Версия 4.4 выпущена в 2013 г. Примечание MDN (англ.) In In textual From version 149, in | 1 Версия 1 выпущена в 2007 г. Примечание MDN (англ.) In In textual |
string | 9 Версия 9 выпущена в 2011 г. Примечание MDN (англ.) In textual In | 9 Версия 9 выпущена в 2011 г. Примечание MDN (англ.) In textual In | ||||||||||
| Синтаксис из двух значений | 9 | 9 | ||||||||||
поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31
CSS синтаксис:
text-overflow: [ clip | ellipsis | <string> ]{1,2};
/* Глобальные значения */
text-overflow: initial | inherit | unset | revert | revert-layer;
| — выбор варианта; [ ] — группа, а внутри типа — допустимый диапазон; {1,2} —
число повторений от 1 до 2.
JavaScript синтаксис:
element.style.textOverflow = "clip";Начальное значение свойства
clip.
Значения свойства
| Значение | Описание |
|---|---|
clip |
Текст обрезается по размеру области содержимого. Начальное значение. |
ellipsis |
Добавляет многоточие … (U+2026), которое обозначает, что текст был обрезан.
Троеточие (горизонтальное многоточие/эллипсис) отображается внутри области содержимого, уменьшая при этом размер
отображаемого текста. Если необходимое место для отображения троеточия отсутствует, то оно обрезается.
|
string |
Указывает пользовательскую строку для отображения обрезанного текста. Поддерживается в Firefox; в Chrome, Edge и Safari не поддерживается. |
initial
|
Устанавливает начальное значение свойства. |
inherit
|
Наследует вычисленное значение свойства у родительского элемента. |
unset |
Для ненаследуемого свойства text-overflow устанавливает его
начальное значение.
|
revert |
Отменяет заданное в коде значение свойства для этого элемента: применяются пользовательские или стандартные стили браузера. Если они не задают значение, свойство наследуется или получает начальное значение по обычным правилам. Не возвращает значение из предыдущей строки CSS. |
revert-layer |
Сбрасывает значение свойства для текущего слоя каскада @layer. Применяется значение из другого слоя
по правилам каскада; если подходящего значения нет, возможен откат к стилям пользователя или браузера.
|
Спецификация
CSS Overflow — спецификация text-overflow.
Наследуется
Нет.
Анимируемое
Тип анимации — дискретный: значение переключается без плавных промежуточных положений.
Примеры, попробуйте сами
Обозначение обрезанного текста
Замените ellipsis на clip. Эффект требует ограниченной ширины, запрета переноса и скрытия переполнения.
base.css
* {
box-sizing: border-box;
}
body {
margin: 16px;
font:
16px/1.5 system-ui,
sans-serif;
color: #172c3d;
}
section {
margin-bottom: 24px;
min-width: 0;
}
h3 {
margin: 0 0 12px;
font-size: 16px;
}
.item {
padding: 8px;
min-width: 0;
background: #c5dbea;
border: 1px solid #35658a;
overflow-wrap: anywhere;
}
index.html
<html lang="ru">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title>Обозначение обрезанного текста</title>
</head>
<body>
<section>
<h3>Вариант A</h3>
<div class="sample first">
Учебный текст помогает увидеть изменение свойства. Сравните строки, расстояния и положение содержимого.
</div>
</section>
<section>
<h3>Вариант B</h3>
<div class="sample second">
Учебный текст помогает увидеть изменение свойства. Сравните строки, расстояния и положение содержимого.
</div>
</section>
</body>
</html>
style.css
.sample {
width: 180px;
max-width: 100%;
overflow: hidden;
white-space: nowrap;
}
.first {
text-overflow: clip;
}
.second {
text-overflow: ellipsis;
}