Как разбить слово на тире? - PullRequest
62 голосов
/ 04 августа 2008

Учитывая относительно простой CSS:

div {
  width: 150px;
}
<div>
  12333-2333-233-23339392-332332323
</div>

Как сделать так, чтобы строка оставалась ограниченной width из 150 и просто переносилась на новую строку на дефисе?

Ответы [ 11 ]

63 голосов
/ 04 августа 2008

Замените ваши дефисы на это:

&shy;

Это называется "мягким" дефисом.

div {
  width: 150px;
}
<div>
  12333&shy;2333&shy;233&shy;23339392&shy;332332323
</div>
31 голосов
/ 30 января 2012

Во всех современных браузерах * (и в некоторых старых браузерах тоже) элемент <wbr> является идеальным инструментом для предоставления возможности разбить длинные слова в определенных точках.

Цитировать по этой ссылке:

HTML-элемент Word Break Opportunity (<wbr>) представляет позицию в тексте, где браузер может по желанию разбить строку, хотя в противном случае его правила переноса строки не создают разрыв в этом месте.

Вот как это можно использовать в примере с OP (или посмотреть его в действии на JSFiddle ):

<div style="width: 150px;">
  12333-<wbr>2333-<wbr>233-<wbr>23339392-<wbr>332332323
</div>

* Я тестировал его в IE9, IE10 и последних версиях Chrome, Firefox, Opera и Safari.

div {
  width: 150px;
}
<div>
  12333-<wbr>2333-<wbr>233-<wbr>23339392-<wbr>332332323
</div>
17 голосов
/ 04 августа 2008

Как часть CSS3, он еще не полностью поддерживается, , но вы можете найти информацию о переносе слов здесь . Другой вариант - тег wbr, & shy; и , который также не поддерживается полностью.

8 голосов
/ 05 декабря 2008

В этом конкретном случае (где ваша строка будет содержать дефисы) я бы преобразовал текст на эту сторону сервера:

<div style="width:150px;">
  <span>12333-</span><span>2333-</span><span>233-</span><span>23339392-</span><span>332332323</span>
</div>
8 голосов
/ 16 сентября 2008

Ваш пример работает должным образом в Google Chrome, Safari (Windows) и IE8. Текст выделяется из поля 150px в Firefox 3 и Opera 9.5.

Дополнительно &shy; не подойдет для вашего примера, так как:

  • работает, когда разрывается слово, но когда не разрывается слово, не отображаются дефисы, или

  • работает, когда не разрывается слово, но отображает два дефиса, когда разрывается слово так как он добавляет дефис на разрыв.

7 голосов
/ 16 сентября 2010

В зависимости от того, что именно вы хотите видеть, вы можете использовать комбинацию hyphen, soft hyphen и / или zero width space.

На мягком дефисе ваш браузер может разбивать слова (добавляя дефис). В пространстве с нулевой шириной ваш браузер может разбивать слова (без добавления чего-либо).

Таким образом, если ваш код выглядит примерно так:

111111&shy;222222&shy;-333333&#8203;444444-&#8203;555555

тогда ваш браузер покажет это без перерыва на слово:

1111112222222-33333334444444-5555555

и это будет всевозможным разрывом слов:

111111-
222222-
-333333
444444-
555555

Просто выберите нужную вам опцию. В вашем случае это может быть интервал от 4 до 5 секунд.

1 голос
/ 27 августа 2015

Вы также можете использовать:

word-break:break-all;

отл.

<div style='width:10px'>ababababababbabaabababababababbabababa</div>

Выход:

abababababa
ababababbba
abbabbababa
ababb

слово-разрыв - это разрыв слова или строки, даже если в предложении нет пробела, который не соответствует заданной ширине или высоте. Гайкой для этого вам необходимо предоставить ширину или высоту.

0 голосов
/ 13 сентября 2018

Вы можете использовать 0 ширины пробела после дефиса:

div {
  width: 150px;
}
<div>
  12333-&#8203;2333-&#8203;233-&#8203;23339392-&#8203;332332323
</div>

, если вы хотите разрыв строки перед дефисом, используйте &#8203;-.

0 голосов
/ 31 августа 2017

Надеюсь, что это может помочь

используйте тег <br> (break), где вы хотите разбить строку.

0 голосов
/ 14 мая 2015

Вместо - вы можете использовать &hyphen; или \u2010.

Кроме того, убедитесь, что свойство дефисы css было не установлено на нет (значение по умолчанию manual ).

<wbr> не поддерживается Internet Explorer .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...