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 примера
HTML
<div class="demo-target">
  Изучаем CSS: оформление текста помогает читать и понимать страницу.
</div>
CSS
.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;
}

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

Спецификации: CSS overflow, svgwg

Поддерживается во всех основных браузерах с 2015 года.

Отдельные значения (2) поддерживаются не везде — смотрите таблицу.

Показать браузеры
Совместимостьcss.properties.text-overflow
ВозможностьКомпьютерыМобильные
ChromeEdgeFirefoxOperaSafariChrome AndroidFirefox for AndroidOpera AndroidSafari on iOSSamsung BrowserWebView AndroidWebView on iOS
text-overflow✓1✓12✓7

Версия 7 выпущена в 2011 г.

Примечание MDN (англ.)

Until Firefox 10, handling of text-overflow on blocks with inline overflow on both horizontal sides was incorrect. Before Firefox 10, if only one value was specified (such as text-overflow: ellipsis;), text was ellipsed on both sides of the block, instead of only the end edge based on the block's text direction.

✓11

Версия 11 выпущена в 2010 г.

Версия 9 выпущена в 2006 г. — Удалено в 15; Префикс -o-

✓1.3✓18✓7

Версия 7 выпущена в 2011 г.

Примечание MDN (англ.)

Until Firefox for Android 10, handling of text-overflow on blocks with inline overflow on both horizontal sides was incorrect. Before Firefox for Android 10, if only one value was specified (such as text-overflow: ellipsis;), text was ellipsed on both sides of the block, instead of only the end edge based on the block's text direction.

✓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 <textarea> elements, behaves as clip.

In textual <input> elements, behaves as clip while the element is focused.

From version 149, in contenteditable elements, behaves as clip while the element is focused.

✓12✓7

Версия 7 выпущена в 2011 г.

Примечание MDN (англ.)

In textual <input> and <textarea> elements, behaves as clip.

In contenteditable elements, behaves as clip while the element is focused.

✓15

Версия 15 выпущена в 2013 г.

Примечание MDN (англ.)

In <textarea> elements, behaves as clip.

In textual <input> elements, behaves as clip while the element is focused.

From version 133, in contenteditable elements, behaves as clip while the element is focused.

✓1.3

Версия 1.3 выпущена в 2005 г.

Примечание MDN (англ.)

In <textarea> elements, behaves as clip.

In textual <input> elements, behaves as clip while the element is focused.

✓18

Версия 18 выпущена в 2012 г.

Примечание MDN (англ.)

In <textarea> elements, behaves as clip.

In textual <input> elements, behaves as clip while the element is focused.

From version 149, in contenteditable elements, behaves as clip while the element is focused.

✓7

Версия 7 выпущена в 2011 г.

Примечание MDN (англ.)

In textual <input> and <textarea> elements, behaves as clip.

In contenteditable elements, behaves as clip while the element is focused.

✓14

Версия 14 выпущена в 2013 г.

Примечание MDN (англ.)

In <textarea> elements, behaves as clip.

In textual <input> elements, behaves as clip while the element is focused.

From version 100, in contenteditable elements, behaves as clip while the element is focused.

✓1

Версия 1 выпущена в 2007 г.

Примечание MDN (англ.)

In <textarea> elements, behaves as clip.

In textual <input> elements, behaves as clip while the element is focused.

✓1.0

Версия 1.0 выпущена в 2013 г.

Примечание MDN (англ.)

In <textarea> elements, behaves as clip.

In textual <input> elements, behaves as clip while the element is focused.

✓4.4

Версия 4.4 выпущена в 2013 г.

Примечание MDN (англ.)

In <textarea> elements, behaves as clip.

In textual <input> elements, behaves as clip while the element is focused.

From version 149, in contenteditable elements, behaves as clip while the element is focused.

✓1

Версия 1 выпущена в 2007 г.

Примечание MDN (англ.)

In <textarea> elements, behaves as clip.

In textual <input> elements, behaves as clip while the element is focused.

string××✓9

Версия 9 выпущена в 2011 г.

Примечание MDN (англ.)

In textual <input> and <textarea> elements, behaves as clip.

In contenteditable elements, behaves as clip while the element is focused.

×××✓9

Версия 9 выпущена в 2011 г.

Примечание MDN (англ.)

In textual <input> and <textarea> elements, behaves as clip.

In contenteditable elements, behaves as clip while the element is focused.

×××××
Синтаксис из двух значений××✓9×××✓9×××××

поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31

CSS синтаксис:

CSS
text-overflow: [ clip | ellipsis | <string> ]{1,2};

/* Глобальные значения */
text-overflow: initial | inherit | unset | revert | revert-layer;

| — выбор варианта; [ ] — группа, а внутри типа — допустимый диапазон; {1,2} — число повторений от 1 до 2.

JavaScript синтаксис:

JavaScript
element.style.textOverflow = "clip";

Начальное значение свойства

clip.

Значения свойства

Значения text-overflow
Значение Описание
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
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
<!doctype 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
CSS
.sample {
    width: 180px;
    max-width: 100%;
    overflow: hidden;
    white-space: nowrap;
}
.first {
    text-overflow: clip;
}
.second {
    text-overflow: ellipsis;
}