Mam stół o 100% szerokości. Jeśli wstawię do niego <td>
s, zostaną one rozłożone na równej długości kolumny. Jednak chcę, aby wszystkie kolumny z wyjątkiem ostatniej miały jak najmniejszą szerokość, bez zawijania tekstu.
Najpierw ustawiłem width="1px"
wszystkie <td>
s z wyjątkiem ostatniego (chociaż przestarzałe, ale style="width:1px"
nie miało żadnego efektu), co działało dobrze, dopóki nie miałem danych wielowyrazowych w kolumnie. W takim przypadku, aby zachować jak najmniejszą długość, zawijał mój tekst.
Pokażę. Wyobraź sobie ten stół:
---------------------------------------------------------------------------------
element1 | data | junk here | last column
---------------------------------------------------------------------------------
elem | more data | other stuff | again, last column
---------------------------------------------------------------------------------
more | of | these | rows
---------------------------------------------------------------------------------
Bez względu na to, co próbuję, wciąż otrzymuję to:
---------------------------------------------------------------------------------
element1 | data | junk here | last column
---------------------------------------------------------------------------------
elem | more data | other stuff | again, last column
---------------------------------------------------------------------------------
more | of | these | rows
---------------------------------------------------------------------------------
lub (mimo że ustawiłem style="whitespace-wrap:nowrap"
) to:
---------------------------------------------------------------------------------
| | junk | last
element1 | data | |
| | here | column
---------------------------------------------------------------------------------
| more | other | again,
elem | | | last
| data | stuff | column
---------------------------------------------------------------------------------
more | of | these | rows
---------------------------------------------------------------------------------
Chcę dostać tabelę, którą przedstawiłem jako pierwszy. Jak to osiągnąć? (Wolałbym trzymać się standardu i używać CSS. Szczerze mówiąc, nie obchodzi mnie, czy IE również nie zaimplementował części standardu)
Więcej wyjaśnień: Potrzebuję, aby kolumny były jak najkrótsze bez zawijania słów (ostatnia kolumna powinna być tak duża, jak to konieczne, aby szerokość tabeli faktycznie osiągnęła 100%). Jeśli znasz LaTeX, chciałbym, aby tabele wyglądały naturalnie w LaTeX, gdy ustawisz ich szerokość na 100%.
Uwaga: znalazłem to, ale nadal daje mi to samo, co ostatnia tabela.
źródło
Odpowiedzi:
whitespace-wrap: nowrap
nie jest prawidłowym css. Towhite-space: nowrap
, czego szukasz.źródło
Działa to przynajmniej w Google Chrome. ( jsFiddle )
źródło
width
podejście do moich potrzeb, ponieważ mam wiele szerokich kolumn (zamiast jednej szerokiej kolumny, ponieważ powyższe rozwiązanie działa lepiej). Usunąłemwidth: 99%
zexpand
i dodawanewidth: 1%
doshrink
i rozwiązanie to działa dobrze dla mnie!td:nth-child(1), td:nth-child(2){white-space:nowrap;} td:nth-child(3){width: 99%;}
- Na wypadek gdyby wpadli nowicjusze. :)col
'sclass
wartości atrybutów do odpowiedniej tabelitd
sUżywając powyższego kodu, ostatnia komórka tabeli będzie starała się być tak duża, jak to tylko możliwe, a Ty zapobiegniesz zawijaniu się komórek poprzedzających. Robi to samo, co inne udzielone odpowiedzi, ale jest o wiele bardziej wydajne.
źródło
width: 1px;
do nieostatniego stylu potomnego, aby nie ostatnie kolumny były renderowane z minimalną szerokością.Trochę inny temat, ale może pomoże komuś, kto tak jak ja natknie się na to pytanie.
(Właśnie zobaczyłem komentarz Campbelna, który dokładnie to sugeruje po napisaniu mojej odpowiedzi poniżej, więc jest to w zasadzie szczegółowe wyjaśnienie jego komentarza)
Miałem problem na odwrót: chciałem ustawić jedną kolumnę tabeli na minimalną możliwą szerokość bez dzielenia jej na białe znaki (ostatnia kolumna w poniższym przykładzie), ale szerokość drugiej powinna być dynamiczna (łącznie z podziałami linii):
Proste rozwiązanie:
HTML
CSS
Kolumny z klasą
shrink
rozszerzają się tylko do minimalnej szerokości, ale inne pozostają dynamiczne. To działa, ponieważwidth
ztd
automatycznie rozszerzony, aby dopasować całą zawartość.Przykładowy fragment
Pokaż fragment kodu
źródło
Możesz ustawić stałą szerokość, umieszczając
div
tag wewnątrztd
https://jsfiddle.net/8bf17o1v/
źródło
Jeśli potrzebujesz wielu wierszy tekstu w komórce tabeli.
Nie
white-space: nowrap
używajwhite-space: pre;
zamiast tego.W komórce tabeli unikaj wszelkich formatów kodu, takich jak nowe linie i wcięcia (spacje) i użyj,
<br>
aby ustawić nową linię / wiersz tekstu. Lubię to:Demo na CodePen
źródło
Kombinacja albo
white-space: nowrap
albowhite-space: pre
zemin-width: <size>
będzie wykonać zadanie.width: <size>
samo w sobie nie wystarczy, aby utrzymać stół przed ściśnięciem.źródło