Używałem word-wrap: break-word
do zawijania tekstu div
si span
si. Jednak wydaje się, że nie działa w komórkach tabeli. Mam tabelę ustawioną na width:100%
jeden wiersz i dwie kolumny. Tekst w kolumnach, choć stylizowany powyższym word-wrap
, nie jest zawijany. Powoduje, że tekst przekracza granice komórki. Dzieje się tak w przeglądarce Firefox, Google Chrome i Internet Explorer.
Oto jak wygląda źródło:
td {
border: 1px solid;
}
<table style="width: 100%;">
<tr>
<td>
<div style="word-wrap: break-word;">
Looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong word
</div>
</td>
<td><span style="display: inline;">Short word</span></td>
</tr>
</table>
Długie słowo powyżej jest większe niż granice mojej strony, ale nie łamie się z powyższym HTML. Wypróbowałem poniższe sugestie dotyczące dodawania text-wrap:suppress
i text-wrap:normal
, ale żadne nie pomogło.
html
css
html-table
psychotik
źródło
źródło
white-space: pre-wrap
developer.mozilla.org/en-US/docs/Web/CSS/white-spaceOdpowiedzi:
Poniższe działa dla mnie w Internet Explorerze. Zwróć uwagę na dodanie
table-layout:fixed
atrybutu CSSźródło
<colgroup>
, naprawiło to dla mnie.lub
źródło
<span>
.Word-wrap
łamie słowa tylko w razie potrzebytable-layout: fixed;
.Długie ujęcie, ale sprawdź dwukrotnie za pomocą Firebug (lub podobnego), czy przypadkowo nie dziedziczysz następującej zasady:
Może to zastąpić określone zachowanie związane z łamaniem linii.
źródło
white-space:normal;
Okazuje się, że nie ma na to dobrego sposobu. Najbliższe, jakie przyszedłem, to dodanie „przepełnienie: ukryte”; do diva wokół stołu i utraty tekstu. Wydaje się jednak, że prawdziwym rozwiązaniem jest porzucenie stołu. Używając div i względnego pozycjonowania byłem w stanie osiągnąć ten sam efekt, pomniejszony o dziedzictwo
<table>
AKTUALIZACJA 2015: To jest dla tych jak ja, którzy chcą tej odpowiedzi. Po 6 latach działa to dzięki wszystkim uczestnikom.
źródło
Jak wspomniano, umieszczenie tekstu w
div
prawie działa. Po prostu trzeba określićwidth
zdiv
, który ma szczęście do układów, które są statyczne.Działa na FF 3.6, IE 8, Chrome.
źródło
min-width: 100%
wraz z,width
aby upewnić się, żediv
zajmuje całą komórkę.Long,Long,Long,Long,Long
. Chcę to zawinąć po każdym przecinku (,).Obejście, które wykorzystuje przepełnienie i działa dobrze przy normalnym układzie stołu + szerokość stołu 100%
https://jsfiddle.net/krf0v6pw/
HTML
CSS
Korzyści:
overflow-wrap:break-word
zamiastword-break:break-all
. Co jest lepsze, ponieważ najpierw próbuje złamać spacje i odcina słowo tylko wtedy, gdy słowo jest większe niż jego kontener.table-layout:fixed
potrzebne Użyj zwykłego automatycznego dostosowywania rozmiaru.width
lub stałejmax-width
w pikselach.%
W razie potrzeby określ rodzica.Testowane w FF57, Chrome62, IE11, Safari11
źródło
Zmień swój kod
do
Przykład
źródło
break-word
w pierwszej kolejności.Problem z
jest to, że nie będzie działać tak dobrze, gdy w tekście jest trochę spacji, np
Jeśli słowo
andthenlongerwithoutspaces
mieści się w komórce tabeli w jednym wierszu, alelong text with andthenlongerwithoutspaces
nie, długie słowo zostanie podzielone na dwie części, a nie zawinięte.Alternatywne rozwiązanie: wstaw U + 200B ( ZWSP ), U + 00AD ( miękki łącznik ) lub U + 200C ( ZWNJ ) w każdym długim słowie po każdym, powiedzmy, 20-tym znaku (patrz jednak ostrzeżenie poniżej):
Ostrzeżenie : wstawienie dodatkowych znaków o zerowej długości nie wpływa na odczyt. Wpływa to jednak na tekst kopiowany do schowka (te znaki są oczywiście również kopiowane). Jeśli tekst ze schowka zostanie później użyty w funkcji wyszukiwania w aplikacji internetowej ... wyszukiwanie zostanie przerwane. Chociaż to rozwiązanie można zobaczyć w niektórych dobrze znanych aplikacjach internetowych, należy unikać, jeśli to możliwe.
Ostrzeżenie : podczas wstawiania dodatkowych znaków nie należy rozdzielać wielu punktów kodowych w obrębie wykresu. Aby uzyskać więcej informacji, zobacz https://unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries .
źródło
é
nazwać „znakami” (np. Mogą być zapisane jako dwa punkty kodowe). Prawdopodobnie naprawdę mamy na myśli „grafemy”, ale nie znam żadnego języka, który sprawia, że omijanie ich jest trywialne.Sprawdź to demo
Oto link do przeczytania
źródło
break-all
spowoduje, że przeglądarka całkowicie zignoruje podziały wyrazów przy podejmowaniu decyzji, gdzie wstawiać podziały wiersza, z efektem, że nawet jeśli komórka zawiera normalną prozę bez żadnych bardzo długich słów, skończy się to podziałem wiersza w środku słów. Jest to zazwyczaj niepożądane.Testowane w IE 8 i Chrome 13.
Powoduje to, że tabela dopasowuje się do szerokości strony, a każda kolumna zajmuje 50% szerokości.
Jeśli wolisz, aby pierwsza kolumna zajmowała więcej strony, dodaj
width: 80%
do niej,td
jak w poniższym przykładzie, zastępując 80% wybranym procentem.źródło
Jedyne, co należy zrobić, to dodać szerokość do środka
<td>
lub do<div>
środka, w<td>
zależności od układu, który chcesz osiągnąć.na przykład:
lub
źródło
Odpowiedź, która wygrała nagrodę jest prawidłowa, ale nie działa, jeśli pierwszy wiersz tabeli ma scaloną / połączoną komórkę (wszystkie komórki mają równą szerokość).
W takim przypadku należy użyć tagów
colgroup
icol
, aby wyświetlić go poprawnie:źródło
źródło
p
w komórce tabeli, która nie ma stałej szerokości, prawie na pewno zakończy sięp
przepełnieniem lub brakiem wypełnienia komórki tabeli.Wygląda na to, że musisz ustawić
word-wrap:break-word;
element bloku (div
) o określonej (nie względnej) szerokości. Dawny:lub
word-break:break-all
za pomocą sugestii Abhisheka Simona.źródło
To działa dla mnie:
A atrybut tabeli to:
źródło
table-layout: fixed
, jest już dużo starsza odpowiedź sugerująca to, więc ta odpowiedź nie dodaje żadnych nowych informacji.Jeśli nie potrzebujesz obramowania tabeli, zastosuj to:
źródło
table-layout: fixed
; ten nie dodaje nic nowego do strony.Znalazłem rozwiązanie, które wydaje się działać w Firefox, Google Chrome i Internet Explorer 7-9. Do tworzenia dwu kolumnowego układu tabeli z długim tekstem po jednej stronie. Wszędzie szukałem podobnego problemu, a to, co działało w jednej przeglądarce, zepsuło drugą, lub dodanie większej liczby tagów do tabeli wydaje się być złym kodowaniem.
NIE użyłem do tego tabeli. DL DT DD na ratunek. Przynajmniej do ustalenia układu dwukolumnowego, który jest w zasadzie zestawem glosariusza / słownika / słowa.
I trochę ogólnej stylizacji.
Korzystając z zawijanego zawijania słów i marginesu po lewej, mam dokładnie to, czego potrzebowałem. Pomyślałem, że podzielę się tym z innymi, być może pomoże to komuś innemu z dwukolumnowym układem stylu definicji, z problemami z zawijaniem słów.
Próbowałem użyć zawijania słów w komórce tabeli, ale działało to tylko w Internet Explorerze 9 (i oczywiście Firefox i Google Chrome), głównie próbując naprawić zepsutą przeglądarkę Internet Explorer tutaj.
źródło
Tabele są domyślnie zawijane, więc upewnij się, że wyświetlane są komórki tabeli
table-cell
:źródło
style = "układ tabeli: stały; szerokość: 98%; zawijanie słów: słowo-łamanie"
Demo - http://jsfiddle.net/Ne4BR/749/
To zadziałało dla mnie świetnie. Miałem długie linki, które spowodowałyby, że tabela przekroczyłaby 100% w przeglądarkach internetowych. Testowane na IE, Chrome, Android i Safari.
źródło
table-layout: fixed
”.Rozwiązaniem współpracującym z Google Chrome i Firefox (nie testowane z Internet Explorerem) jest ustawienie
display: table-cell
jako element blokowy.źródło
Możesz spróbować, jeśli Ci odpowiada ...
Umieść obszar tekstowy w swoim td i wyłącz go kolorem tła białym i określ liczbę wierszy.
źródło