При использовании CSS overflow: hidden я часто обнаруживал, что последняя строка текста частично обрезается. Есть ли способ предотвратить это, чтобы какие-либо частичные строки не отображались. Почти как вертикальный перенос слов.
CSS: Можно ли предотвратить переполнение: скрытое от обрезания последней строки текста?
Ответы (8)
Вы можете использовать оболочку div и многоколоночный css:
.wrapper {
-webkit-column-width: 150px; //You can't use 100%
column-width: 150px;
height: 100%;
}
Пример решения: http://jsfiddle.net/4Fpq2/9/
Обновление от 21 сентября 2017 г.
В Firefox это решение все еще работает, но не работает в Chrome. Недавно Chrome начал разбивать столбец на мелкие части, а также перестать разбивать содержимое, если вы установите высоту. В этом примере http://jsfiddle.net/4Fpq2/446/ я изменяю высоту на максимальную -height и показывает странное поведение Chrome. Если у вас есть идеи, пишите в комментариях.
Обновление от 25 марта 2019 г.
По сути, это работает даже для Chrome, но у вас должно быть как минимум две строки. Для блока с некоторым количеством видимого текста этот подход все еще должен работать нормально.
text-overflow:ellipsis
. Это возможно?
- person Cees Timmerman; 21.01.2015
Как только вы поймете, как работает column-width
, ответ @stalkerg обретет смысл.
column-width разбивает содержимое на столбцы, поэтому последний строка текста не поместится, она будет перемещена в следующий столбец. Теперь хитрость заключается в том, чтобы сделать ширину столбца равной ширине контейнера. Контейнер имеет переполнение: скрыто, поэтому второй столбец не будет отображаться.
.box {
width: 200px;
}
.container {
-webkit-column-width: 200vw;
-moz-column-width: 200vw;
column-width: 200vw;
height: 100%;
}
Это решение сработало для меня: https://stackoverflow.com/a/17413577/2540428 По существу создайте div-оболочку с подходящее дополнение и поместите содержимое в основной блок, где вы редактируете его высоту и скрываете переполнение. См. ссылку для более подробной информации.
Роб верен. Я делал div с максимальной высотой 11em, а последняя строка текста переполнения была только наполовину. white-space: nowrap просто удаляет эту последнюю строку целиком.
Я пытался
white-space: nowrap;
и Габи также правы, что это тоже вызывает проблемы.
Лучшее, что я придумал, это возиться с высотой строки и высотой div до тех пор, пока не будет обрезано наименьшее количество строк.
height
div можно точно разделить на его line-height
..
- person Gabriele Petrioli; 11.07.2010
это сработало для меня:
.wrapper_container{
width: 300px;
height: 200px;
overflow: hidden;
}
.wrapper{
-webkit-column-width: 300px;
column-width: 300px;
height: 100%;
}
Существует два свойства css3. 1) разрыв слова и 2) слово-арап
Не забывайте, что это новое свойство css3. Так что старые браузеры не поддерживают такое свойство.
.class-name {word-break: break-all;}
.class-name {word-wrap: break-word;}
просто добавьте атрибут ширины столбца и установите ширину контейнера, все будет работать.
просто используйте границу вместо заполнения.