CSS text-overflow — трикрапка замість обрізаного тексту


Властивість text-overflow задає спосіб обрізання тексту, що не помістився в середині елемента.

Властивість text-overflow

Ви можете вказати, що для позначення будь-якого прихованого тексту використовується ellipsis "..." або якийсь інший символ.

Якщо в блоку є властивість overflow зі значенням hidden, будь-який текст, який є занадто великим, щоб вміститися у блоці, буде відрізаний. Те ж саме стосується auto або scroll, хоча в таких випадках користувач має можливість прокрутки. У будь-якому випадку, залежно від того, де текст був перерваний користувач може або не може бути бачити його (ту частинку, яка не вмістилася). Ви можете використовувати text-overflow, щоб надати візуальну підказку користувачеві про те, що є більше вмісту, наприклад, символ "...".

Властивість text-overflow впливає тільки на вміст. У цьому випадку його можна використовувати з overflow-x, але не з overflow-y.

У багатьох випадках текст просто перенесеться на наступний рядок. Властивість text-overflow впливає тільки на вміст, який не може бути обрізаний (наприклад, через надто довге слово або коли властивість white-space встановлена на nowrap).

автор: Svitlana

Загальний опис

автор: NagarD

Нотатка

Ця властивість працює лише тоді, коли для блоку встановлено властивость overflow як auto чи hidden.

автор: Svitlana

Синтаксис

text-overflow: clip|ellipsis|string|initial|inherit;

Властивість text-overflow може отримувати 5 значень:

clip

Зайвий текст буде обрізано.

автор: Svitlana

ellipsis

Зайвий текст буде обрізано, а до кінця рядка додано три крапки.

автор: Svitlana

string

Текст, що має побачити користувач, замість обрізаного тексту. Наприклад: "Щоб прочитати це, увійдіть в розділ".

автор: Svitlana

initial

Встановлює властивість у значення без задання

автор: Svitlana

inherit

Вказує на спадковість властивості від свого батьківського елемента.

автор: Svitlana

Значення без задання: clip
Наслідує: Ні
Анімується: Ні
JavaScript синтаксис: object.style.textOverflow="ellipsis"

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
1 7 1.3 11 12 6
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 7 1

Приклади

+ запропонувати свій приклад у пісочниці

text-overflow працює лише в парі з overflow: hidden та white-space: nowrap: ellipsis завершує обрізаний рядок трьома крапками, clip зрізає мовчки.

HTML

<div class="dots">Довгий рядок, що не вміщається, закінчиться трьома крапками</div>
<div class="cut">Довгий рядок, що не вміщається, буде просто зрізаний</div>

CSS

div {
    width: 200px;
    white-space: nowrap;
    overflow: hidden;
    border: 1px solid #ccc;
    margin-bottom: 6px;
}

.dots { text-overflow: ellipsis; }
.cut  { text-overflow: clip; }
автор: Svitlana

Зверху — сам text-overflow: ellipsis без нічого (не працює), знизу — усі три оголошення разом. Різниця й є відповіддю на «чому не працює».

HTML

<p>лише text-overflow</p>
<div class="line broken">Дуже довгий заголовок новини, який точно не вміститься у відведену йому ширину блока</div>

<p>overflow + white-space + text-overflow</p>
<div class="line ok" title="Дуже довгий заголовок новини, який точно не вміститься у відведену йому ширину блока">Дуже довгий заголовок новини, який точно не вміститься у відведену йому ширину блока</div>

CSS

.line {
    width: 260px;
    margin-bottom: 1.5rem;
    padding: 0.5rem;
    border: 1px solid #888;
}

.broken {
    text-overflow: ellipsis;   /* самотою — жодного ефекту */
}

.ok {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}
автор: NagarD

Значення у дії

HTML

<p>Вибери потрібне значення для <code>text-overflow</code>:</p>

<div class="inputs">
  <input id="clip" checked name="text-overflow" type="radio"/>
  <label for="clip">clip</label>
  <message for="clip">Зайвий текст буде обрізано.</message>
  
  <input id="ellipsis" name="text-overflow" type="radio"/>
  <label for="ellipsis">ellipsis</label>
  <message for="ellipsis">Зайвий текст буде обрізано, а до кінця рядка додано три крапки.</message>
  
</div>

<p id="message">Зайвий текст буде обрізано.</p>

<hr>

<div id="block">
  Це просто дуууууже довгий рядочок.
</div>

CSS

* {
  box-sizing: border-box;
  padding: 0;
}

body {
  text-align: center;
  font-family: monospace;
  font-size: 17px;
  line-height: 1.5;
  color: #222;
}

#form {
  padding: 8px 16px;
  font-size: 19px;
}

#block {
  background: yellow;
	font-family: monospace;
	padding: 4px;
	color: #222;
  white-space: nowrap; 
  overflow: hidden;
	width: 16em; 
  text-overflow: clip;
}

#text {
  height: 60px;
  background-color: #eee;
  padding: 16px 0;
}

message {
  display: none;
}

JS

document.querySelectorAll('.inputs input').forEach((el) => el.addEventListener('change', function () {

  var messageText = document.querySelector("message[for='" + this.id + "']");
  document.querySelectorAll('#message').forEach((n) => n.textContent = messageText?.textContent ?? '');

  var newVal = null;
  if (this.id != 'string') {
    newVal = this.id;
  } else {
    newVal = '"' + this.value + '"';
  }

  document.querySelectorAll('#block').forEach((n) => n.style.setProperty('text-overflow', newVal));

}));
автор: Svitlana

Використання властивості text-overflow

HTML

<p>Це звичайний рядок тексту:</p>

<p class="example">
  Це просто дуууууже довгий рядочок.
</p>

<p>Тут ми обмежили ширину рядка:</p>

<p class="example hidden">
  Це просто дуууууже довгий рядочок.
</p>

<p>А тут ми застосували властивість <code>text-overflow: ellipsis;</code>,<br>щоб користувач знав, що вміст не закінчений:</p>

<p class="example hidden ell">
  Це просто дуууууже довгий рядочок.
</p>

CSS

body {
	font-size: 17px;
	font-family: sans-serif;
	color: #444;
}

p {
  white-space: nowrap; 
}

.example {
	background: yellow;
	font-family: monospace;
	padding: 4px;
	color: #222;
}

.hidden {
	overflow: hidden;
	width: 16em; 
}

.ell {
	text-overflow: ellipsis;
}
автор: Svitlana

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле веде сходинками (розділ → тип → сторінка), а хибний ключ підкреслить хвилею.
[[!sandbox/S0oh1hBm]] Живий приклад окремим рядком — саме вікно результату. Той самий ключ зі знаком !: наберіть [[! і дійдіть сходинками до потрібної сторінки, список покаже її приклади.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Правка
Зворотний зв'язок
Вхід