Как обернуть или разбить длинный текст / слово в диапазоне фиксированной ширины?


106

Я хочу создать диапазон с фиксированной шириной, чтобы, когда я набираю что-либо в диапазоне, например <span>lgasdfjksdajgdsglkgsadfasdfadfasdfadsfasdfasddkgjk</span>длинную строку без пробелов, слово (я) прерывается или переносится на следующую строку.

Любые идеи?

Ответы:


195

Вы можете использовать свойство CSS word-wrap:break-word;, которое разбивает слова, если они слишком длинные для вашей ширины диапазона.

span { 
    display:block;
    width:150px;
    word-wrap:break-word;
}
<span>VeryLongLongLongLongLongLongLongLongLongLongLongLongExample</span>


1
Хорошо работает для управления метками asp.net. Спасибо!
— etlds

42
Добавление white-space: normalпомогает переопределить внешний стиль, который может мешать :) .. inline-blockработает так же хорошо, какblock
— Катя

А как насчет разрыва двух пролетов внутри блочного элемента?
— Дэниел Спрингер

Для тех, у кого все еще возникают проблемы после использования этого ответа, обязательно укажите «ширину», иначе это может не сработать
— Staccato

Он должен иметь ширину, чтобы знать, где сломать
— DFSFOT

40

Попробуйте выполнить css с добавлением white-space:

span {
    display: block;
    word-wrap:break-word;
    width: 50px;
    white-space: normal
}

5
Спасибо! Я не мог понять, почему мой текст никогда не переносился! белое пространство было причиной.
— mdiehl13

1
Моя проблема также была исправлена ​​после того, как я поставил:white-space: normal
— majorBummer

Вот справочная таблица на случай, если вам понадобится пробел и упаковка: css-tricks.com/almanac/properties/w/whitespace
— Hritik

16

Как это

ДЕМО

  li span{
    display:block;
    width:50px;
    word-break:break-all;
}

мой друг, я хочу, чтобы ширина диапазона: 50 пикселей; значения в моем диапазоне отображаются только в 50 пикселей, а другие значения переходят на следующую строку и отображаются в 50 пикселей !!!
— محمد ری

1
@ mamal10 Проверьте решение Максима Лоранта.
— Mr_Green

3

По умолчанию a spanявляется inlineэлементом ... так что это не поведение по умолчанию.

Вы можете заставить его spanвести себя таким образом, добавив display: block;в свой CSS.

span {
    display: block;
    width: 100px;
}


0

Просто чтобы расширить практический объем вопроса и в качестве приложения к полученным ответам: иногда может оказаться необходимым указать немного больше селекторов.

Определив полный диапазон как display: inline-block, у вас могут возникнуть проблемы с отображением изображений.

Поэтому я предпочитаю определять диапазон так:

span {
  display:block;
  width:150px;
  word-wrap:break-word;      
}
p span, a span,
h1 span, h2 span, h3 span, h4 span, h5 span {
  display:inline-block;
}
img{
  display:block;
}

0

В моем случае display: block нарушал дизайн, как и предполагалось.

max-widthСвойство просто спас меня.

и для укладки тоже можно использовать text-overflow: ellipsis.

мой код был

max-width: 255px
overflow:hidden
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.