Szuka się sposób przeglądarki owijania długie części tekstu, które nie mają na rozerwanie przestrzenie (na przykład długie URL) wewnątrz div z góry określonych szerokościach.zawijania CSS/js
Oto niektóre rozwiązania znalazłem całym Internecie i dlaczego oni NIE pracę dla mnie:
- overflow: hidden/Auto/przewijanie - Muszę cały tekst będzie widoczny bez przewijania. Element div może rosnąć pionowo, ale nie poziomo.
- Wstrzykiwanie & nieśmiały; na ciąg znaków przez js/server-side - & nieśmiały; jest obsługiwany przez FF3 teraz, ale kopiowanie i wklejanie adresu URL z nieśmiałym &; w środku nie będzie działać w Safari. Ponadto, według mojej wiedzy, nie ma czystej metody pomiaru szerokości tekstu, aby znaleźć najlepsze przesunięcia ciągów, aby dodać te znaki do (jest jeden hacky sposób, patrz następny element). Innym problemem jest to, że powiększanie Firefoksa i Opery może z łatwością to zepsuć.
- dumping tekst do ukrytego elementu i pomiaru offsetWidth - związane z pozycji wyżej, wymaga dodania dodatkowych znaków w ciągu. Ponadto, pomiar ilości przerw wymaganych w długim tekście może z łatwością wymagać tysięcy drogich wstawek DOM (po jednym dla każdej długości podłańcuchowej), które mogłyby skutecznie zamrozić stronę.
- użyciu czcionki o stałej szerokości się - znowu, powiększanie może zepsuć obliczeń szerokości, a tekst nie może być stylizowany swobodnie.
Rzeczy, które wyglądają obiecująco, ale nie są zupełnie tam:
- word-wrap break-word - To teraz part of CSS3 working draft, ale to nie jest obsługiwane przez obu Firefox, Opera lub Safari jeszcze. Byłoby to idealne rozwiązanie, jeśli pracował na wszystkich przeglądarkach dzisiaj :(
- wstrzykiwanie <WBR> tagi w ciągu poprzez js/server-side - kopiując i wklejając adresy URL działa we wszystkich przeglądarkach, ale wciąż nie dobrze określić, gdzie umieścić przerwy, a także ten znacznik unieważnia HTML:
- dodaje przerwy po każdym znaku - jest lepszy niż tysiące wstawień DOM, ale wciąż nie jest idealny (dodawanie elementów DOM do dokumentu je pamięć i zwalnia zapytania selektora, między innymi.)
Czy ktoś ma więcej pomysłów na rozwiązanie tego problemu?
'word-oblewania break-word;' działa dla przeglądarki Firefox 3.5+ - ale nie dla elementów wbudowanych, takich jak zakres. (nawet nie w Firefox 5.0) Musisz zastosować 'display: inline-block;', aby rozpiąć elementy za pomocą 'word-wrap: break-word;' – crispy