переповнення тексту: еліпсис не працює


264

Це те, що я спробував (див. Тут ):

body {
    overflow: hidden;
}

span {
    border: solid 2px blue;
    white-space: nowrap;
    text-overflow: ellipsis;
}

По суті, я хочу, щоб проміжок скоротився еліпсисом, коли вікно зроблено невеликим. Що я зробив не так?


6
вимоги до роботи еліпсису: stackoverflow.com/a/33061059/3597276
Майкл Бенджамін

Проблема, яку я мав, коли я думав, що вона не працює, це те, що я не задав ширину досить довго (10 пікселів). Тож я вирізав еліпсис, так!
Прут

Відповіді:


459

Потрібно мати CSS overflow, width(або max-width) display, та white-space.

http://jsfiddle.net/HerrSerker/kaJ3L/1/

span {
    border: solid 2px blue;
    white-space: nowrap;
    text-overflow: ellipsis;
    width: 100px;
    display: block;
    overflow: hidden
}

Додаток Якщо ви хочете ознайомитись з методами виконання затискання рядків (багаторядкові переливні еліпси), подивіться на цю сторінку CSS-трюків: https://css-tricks.com/line-clampin/

Додаток2 (травень 2019 р.)
Як стверджує це посилання , Firefox 68 підтримуватиме -webkit-line-clamp(!)


12
Властивість білого простору - це те, чого мені не вистачало. Дякую.
nebulousGirl

65
Це гадає, що вам потрібно white-space: nowrap;майно. Тепер ви можете лише зробити один рядок тексту закінченням із ... замість блочного тексту.
Sven van Zoelen

3
Сьогодні всі основні браузери підтримують три крапки: caniuse.com/#feat=text-overflow
кази

1
@basZero Multiline Ellipsis не підтримується лише CSS. Ви повинні вжити інших заходів
юнзен

1
Вам потрібно вказати ширину, щоб контейнер був пов'язаний, вам потрібно встановити переповнення: приховано, щоб браузер приховав текст, який переходить на екран, а потім встановити текст-переповнення: еліпсис, щоб вказати браузеру, як особливо обробляти приховування переповнення тексту.
Майкл Ангштадт

46

Переконайтеся, що у вас є елемент блоку, максимальний розмір і встановіть переповнення прихованим. (Випробувано в IE9 та FF 7)

http://jsfiddle.net/uh9zD/

div {
    border: solid 2px blue;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    width: 50px;
}

5
Схоже, що це пробіл: властивість nowrap також може бути загалом необхідною для будь-якого простору.
Kzqai

Точний дублікат коментаря вище.
nebulousGirl

@nebulousGirl: насправді коментар Kzqai був раніше, ніж ті, які розміщені в коментарях HerrSerker.
lepe

В IE є химерність - IE не містить другого слова (перевірено в IE 11) ... Перейдіть до цифри. Працює в будь-якому іншому браузері, як очікувалося (включаючи стару добру Opera 12).
Nux

1
@Nux Це також не працює, як очікувалося в браузері MS Edge
yunzen

21

Для багато рядків у Chrome використовуйте:

display: inline-block;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2; // max nb lines to show
-webkit-box-orient: vertical;

Натхненний на youtube ;-)


Це дуже цікаве рішення. Він використовує -webkit-*властивості, але підтримується у всіх основних браузерах. Більше інформації можна знайти тут: css-tricks.com/almanac/properties/l/line-clamp
dkniffin

5

У мене виникли проблеми з еліпсисом під хромом. Увімкнення білого простору: тепер, здавалося, це виправлено.

max-width: 95px;
max-height: 20px;
overflow: hidden;
display: inline-block;
text-overflow: ellipsis;
border: solid 1px black;
font-size: 12pt;
text-align: right;
white-space: nowrap;

4
word-wrap: break-word;

це і тільки це зробило роботу для мене

<pre> </pre> 

тег

все інше не вдалося зробити еліпсисом ....


3

Просто голова для кожного, хто може наткнутися на це ... Мій h2 успадкував

text-rendering: optimizelegibility; 
//Changed to text-rendering: none; for fix

що не дозволяло еліпсису. Мабуть, це дуже вишукане так?


2

Додайте цей код нижче, де вам подобається

приклад

p{
   display: block; /* Fallback for non-webkit */
   display: -webkit-box;
   max-width: 400px;
   margin: 0 auto;
   -webkit-line-clamp: 2;
   -webkit-box-orient: vertical;
   overflow: hidden;
   text-overflow: ellipsis;
 }

2

Для декількох рядків

У хромі ви можете застосувати цей css, якщо вам потрібно застосувати еліпсис у кількох рядках.

Ви також можете додати ширину у свій css, щоб вказати елемент певної ширини:

.multi-line-ellipsis {
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
}
<p class="multi-line-ellipsis">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>


1

Ви можете спробувати використовувати еліпсис, додавши в CSS таке:

.truncate {
  width: 250px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

Але схоже, що цей код просто стосується однорядкової обрізки. Більше способів обрізки тексту та показу еліпсису можна знайти на цьому веб-сайті: http://blog.sanuker.com/?p=631


0

Додайте наступні рядки в CSS, щоб еліпсис працював

 p {
     display: block; // change it as per your requirement
     overflow: hidden;
     text-overflow: ellipsis;
     white-space: nowrap;
   }

0

Для тих із нас, хто не хоче використовувати фіксовану ширину , він також працює з використанням display: inline-grid. Тож разом із необхідними властивостями, які ви просто додаєтеdisplay

span {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    display: inline-grid;
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.