Как обернуть текст в 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;
}

Отлично. Я пытался использовать слово-разрыв: разрыв-все в теле панели 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;

6

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

div
{
   white-space: pre-line;
}

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


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


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) символов.


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;


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



-2

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

width: 200px;
word-wrap: break-word;

14
Это идентично ответу выше. Зачем беспокоиться?
trgraglia
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.