Как обернуть текст в HTML?

185

Как можно обернуть текст, aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaкоторый превышает ширину div(скажем 200px)?

Я открыт для любого решения, такого как CSS, jQuery и т. Д.

Сатья Каллури
источник

Ответы:

240

Попробуй это:

div {
    width: 200px;
    word-wrap: break-word;
}
Алан Хаггай Алави
источник
1
Я ошибаюсь или перенос слов - это уместность CSS3?
Габ Ройер
13
Это CSS3, но он работает практически во всех основных браузерах, включая IE5.5 -> 9 - caniuse.com/#search=word-wrap
Джон Хэдли
32
Когда перенос слов: брейк-слово; не работает попробуйте разбить слово: разбить все; / * это убийца * /
редочка
@redochka Но когда он используется word-break: break-all;в обычном тексте, он разбивает слова посередине, что уродливо ... Разве мы не можем сочетать оба поведения?
pawamoy
5
Важно: есть word-break: break-allи нет word-wrap: break-all. Легкая ошибка
Simon_Weaver
58

На начальной загрузке 3 убедитесь, что пустое пространство не установлено как «nowrap».

div {
  width: 200px;
  word-break: break-all;
  white-space: normal;
}
lukaserat
источник
Отлично. Я пытался использовать слово-разрыв: разрыв-все в теле панели Twitter Bootstrap 3, но это не сработало. Добавление пробела: нормальное было исправлением.
coolboyjules
5
Хорошо, мне white-space: normal;тоже нужно было, прежде чем это сработало.
Radbyx
56

Вы можете использовать мягкий дефис так:

aaaaaaaaaaaaaaa­aaaaaaaaaaaaaaa

Это будет выглядеть как

aaaaaaaaaaaaaaa-
aaaaaaaaaaaaaaa

если вмещающий ящик недостаточно велик или как

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

если это.

Ким Стебель
источник
18
Но как вы узнаете, где поставить ­?
Костас
Вы помещаете это в длинные слова, где они могут быть разделены. Вы даже можете получить эту информацию автоматически из подходящего словаря.
Ким Стебель
4
Но как насчет тарабарщины, как в примере? Это нормально, чтобы превратиться aaaaaa...aaaaaв a­a­a­a­a­a­a...a­a­a­a?
Костас
19
Именно то, что я искал. Мне нравится, что слишком стеснительно делать что-либо, пока это не нужно ;-)
w00t
3
это прекрасно работает, если переносимое слово представляет собой overly.long.java.package.name или похожую строку со многими точками. тогда вы можете добавить & shy; после каждой точки.
Dokaspar
28
   div {
    // set a width
    word-wrap: break-word
}

Решение ' word-wrap' работает только в IE и браузерах, поддерживающих CSS3.

Лучшее кросс-браузерное решение - использовать ваш серверный язык (php или любой другой) для определения местоположения длинных строк и размещения в них через равные промежутки времени html-сущности. ​ Эта сущность прекрасно разбивает длинные слова и работает во всех браузерах.

например

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa​aaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Орр Силони
источник
8
«поместите внутри них через равные промежутки времени html-сущность # 8203», но затем, когда вы попытаетесь скопировать текст и вставить его куда-нибудь, вы получите случайный символ Unicode посередине
user102008
9

Единственный, который работает в IE, Firefox, Chrome, Safari и Opera, если в слове нет пробелов (например, длинный URL):

div{
    width: 200px;  
    word-break: break-all;
}

Я нашел это, чтобы быть пуленепробиваемым.

Кайл Дарл
источник
9

Это сработало для меня

word-wrap: normal;
word-break: break-all;
white-space: normal;
display: block;
height: auto;
margin: 3px auto;
line-height: 1.4;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
Amol
источник
6

Другой вариант также использует:

div
{
   white-space: pre-line;
}

Это установит все ваши элементы div во всех браузерах, которые поддерживают CSS1 (который является почти всеми распространенными браузерами начиная с IE 8)

Эндрю Марэ
источник
Если у вас есть <pre>элемент , который вы хотите иметь перенос слов, это работает и word-breakили word-wrapнет.
Плутон
4

Кросс-браузер

.wrap
{
    white-space: pre-wrap; /* css-3 */    
    white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
    white-space: -pre-wrap; /* Opera 4-6 */    
    white-space: -o-pre-wrap; /* Opera 7 */    
    word-wrap: break-word; /* Internet Explorer 5.5+ */
}
вневременный
источник
2

Добавьте этот CSS к абзацу.

style="width:420px; 
min-height:15px; 
height:auto!important; 
color:#666; padding: 1%; 
font-size: 14px; 
font-weight: normal;
word-wrap: break-word; 
text-align: left" 
Свопнил Годамбе
источник
2
Мне нравится text-overflow:ellipsisтак же, как и следующему парню, но это не правильный ответ на этот вопрос. Он ищет перенос слов, а не усечение переполнения.
Спадли
1

Пример из хитростей CSS :

div {
    -ms-word-break: break-all;

    /* Be VERY careful with this, breaks normal words wh_erever */
    word-break: break-all;

    /* Non standard for webkit */
    word-break: break-word;

    -webkit-hyphens: auto;
    -moz-hyphens: auto;
    hyphens: auto;
}

Больше примеров здесь .

Юрай Гуниш
источник
0

Решение для серверной стороны, которое работает для меня: $message = wordwrap($message, 50, "<br>", true);где $messageстроковая переменная, содержащая слово / символы, которые нужно разбить. 50 - максимальная длина любого данного сегмента, и "<br>"это текст, который вы хотите вставить через каждые (50) символов.

deshbanks
источник
4
Это решение не будет работать, если в 50 раз ширина символа превышает требуемый максимум в 200 пикселей. Просто используйте функцию масштабирования вашего браузера, и вы в конечном итоге увидите, что она сломалась ...
dokaspar
0

Попробуй это

div{
  display: block;
  display: -webkit-box;
  height: 20px;
  margin: 3px auto;
  font-size: 14px;
  line-height: 1.4;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
  overflow: hidden;
  text-overflow: ellipsis;
}

свойство text-overflow: ellipsis add ... и line-зажим показывают количество строк.

Владимир Салгуэро
источник
0

В теле HTML попробуйте:

<table>
    <tr>
        <td>
            <div style="word-wrap: break-word; width: 800px">
                Hello world, how are you? More text here to see if it wraps after a long while of writing and it does on Firefox but I have not tested it on Chrome yet. It also works wonders if you have a medium to long paragraph. Just avoid writing in the CSS file that the words have to break-all, that's a small tip.
            </div>
        </td>
    </tr>
</table>

В теле CSS попробуйте:

background-size: auto;

table-layout: fixed;
Wesson2
источник
0

Попробуй это

div {display: inline;}
Майкл Муликита
источник
0

Я использовал бутстрап. Мой HTML-код выглядит как ...

<div class="container mt-3" style="width: 100%;">
  <div class="row">
    <div class="col-sm-12 wrap-text">
      <h6>
        text content
      </h6>
    </div>
  </div>
</div>

CSS

.wrap-text {
     text-align:justify;
}
Рахул Васник
источник
У Bootstrap есть text-justifyкласс, так что вы можете использовать его вместо.wrap-text
barbsan
0

Вы можете использовать этот CSS

p {
  width: min-content;
  min-width: 100%;
}
Рашид Икбал
источник
0

пытаться:

overflow-wrap: break-word;
Иден Шарвит
источник
-2

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

width: 200px;
word-wrap: break-word;
АКС
источник
14
Это идентично ответу выше. Зачем беспокоиться?
trgraglia