переполнение текста: многоточие не работает


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;собственность. Теперь вы можете закончить только одну строку текста ... вместо текста блока.
Свен ван Зелен

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

1
@basZero Multiline Ellipsis не поддерживается только с помощью CSS. Вы должны принять другие меры
июня

1
Вам нужно указать ширину, чтобы контейнер был связан, вам нужно установить переполнение: скрытый, чтобы браузер скрывал текст при переполнении, а затем установить переполнение текста: ellipsis, чтобы указать браузеру, как особенно нужно обрабатывать скрытие переполнения текста.
Майкл Ангштадт

46

Убедитесь, что у вас есть элемент блока, максимальный размер и установите переполнение скрытым. (Проверено в IE9 и FF 7)

http://jsfiddle.net/uh9zD/

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

5
Похоже, это свойство white-space: nowrap может быть вообще необходимо для всего, что имеет пробелы.
Kzqai

Точная копия комментария выше.
nebulousGirl

@nebulousGirl: на самом деле комментарий Кзкая был раньше, чем тот, что был опубликован в комментариях HerrSerker.
Лепе

В IE есть странность - IE не переносит второе слово (проверено в IE 11) ... Пойди разберись. Работает в любом другом браузере, как и ожидалось (включая старый добрый Opera 12).
Nux

1
@Nux Это также не работает
должным образом в

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

Для нескольких строк

В Chrome вы можете применить этот 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.