Jak złamać słowo na kreskę?

Biorąc pod uwagę stosunkowo prosty CSS:

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

Jak to zrobić, aby ciąg został ograniczony do width z 150, i po prostu zawija się do nowej linii myślnika?

Author: Nhan, 2008-08-04

11 answers

Zastąp myślniki tym:

&shy;
To się nazywa "miękki" myślnik.

div {
  width: 150px;
}
<div>
  12333&shy;2333&shy;233&shy;23339392&shy;332332323
</div>
 64
Author: Ryan Fox,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-30 09:06:55

We wszystkich nowoczesnych przeglądarkach* (a także w niektórych starszych przeglądarkach ),<wbr> element jest idealnym narzędziem do zapewnienia możliwości łamania długich słów w określonych punktach.

Cytuję z tego linku:

The Word Break Opportunity (<wbr>) element HTML reprezentuje pozycję w tekście, w której przeglądarka może opcjonalnie złamać linię, chociaż jej reguły łamania linii nie tworzyłyby przerwy w tym miejsce.

Oto jak można go użyć w przykładzie OP (lub zobaczyć go w akcji w JSFiddle):

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

*testowałem go w IE9, IE10 i najnowszych wersjach Chrome, Firefox, Opera i Safari.

div {
  width: 150px;
}
<div>
  12333-<wbr>2333-<wbr>233-<wbr>23339392-<wbr>332332323
</div>
 32
Author: aeskr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-30 08:39:27

Jako część CSS3, nie jest jeszcze w pełni obsługiwany, ale informacje na temat Word-wrapping można znaleźć tutaj . Inną opcją jest znacznik wbr, i żaden z nich nie jest w pełni obsługiwany.

 17
Author: John Downey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-10 21:33:00

Twój przykład działa zgodnie z oczekiwaniami w Google Chrome, Safari (Windows) i IE8. Tekst wyłamuje się z pola 150px w Firefoksie 3 i operze 9.5.

DODATKOWO &shy; nie będzie działać na twoim przykładzie, ponieważ również:

  • Praca przy łamaniu słów, ale gdy nie łamanie słów, nie wyświetla żadnych myślników, lub

  • Praca, gdy nie łamanie słów, ale wyświetlanie dwóch myślników podczas łamania słów ponieważ dodaje myślnik w przerwie.

 8
Author: Dave Rutledge,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-15 23:28:33

W tym konkretnym przypadku (gdzie twój ciąg znaków będzie zawierał myślniki) zamieniłbym tekst na ten Serwer:

<div style="width:150px;">
  <span>12333-</span><span>2333-</span><span>233-</span><span>23339392-</span><span>332332323</span>
</div>
 8
Author: Peter T. LaComb Jr.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-06 21:00:25

W zależności od tego, co dokładnie chcesz zobaczyć, możesz użyć kombinacji hyphen, soft hyphen, i / lub zero width space.

Na miękkim myślniku twoja przeglądarka może łamać słowa (dodając myślnik). Na przestrzeni o zerowej szerokości przeglądarka może łamać słowa (bez dodawania czegokolwiek).

Zatem, jeśli twój kod to coś w stylu:

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

Wtedy twoja przeglądarka pokaże to bez przerwy:

1111112222222-33333334444444-5555555

I to wszystko będzie możliwe Word-break:

111111-
222222-
-333333
444444-
555555

Wybierz opcję, której potrzebujesz. W Twoim przypadku może to być ten pomiędzy 4s a 5s.
 7
Author: Orion,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-28 15:38:09

Możesz również użyć :

word-break:break-all;

Ex.

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

Wyjście:

abababababa
ababababbba
abbabbababa
ababb

Word-break jest łamaniem całego słowa lub linii, nawet jeśli nie ma spacji w zdaniu, które nie ma stopy w podanej szerokości lub wysokości. nakrętka do tego należy podać szerokość lub wysokość.

 1
Author: Ajay Gupta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-27 12:40:39

Hope this may help

Użyj znacznika <br> (break), gdzie chcesz przerwać linię.

 1
Author: Mohammed Wahed Khan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-31 10:53:47

Niełamliwy myślnik działa dobrze.

Encja HTML (dziesiętna)

&#8209;
 0
Author: Marcus Hoelscher,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-21 22:09:57

Zamiast - możesz użyć &hyphen; lub \u2010.

Upewnij się również, że właściwośćmyślniki css byłaa nie ustawiona nanone (domyślną wartością jestmanual ).

<wbr> nie jest obsługiwany przez Internet Explorer.

 0
Author: TObject,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-14 04:29:27

Możesz użyć spacji o szerokości 0 po znaku myślnika:

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

Jeśli chcesz przełamać linię przed myślnikiem, użyj &#8203;-.

 0
Author: jcubic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-13 10:21:04