Ich habe einen Tisch mit 100% Breite. Wenn ich <td>
s hineinlege, werden sie mit gleich langen Spalten verteilt. Ich möchte jedoch, dass alle Spalten außer der letzten so klein wie möglich sind, ohne dass Text umbrochen wird.
Was ich zuerst getan habe, war, dass ich width="1px"
alle <td>
s außer zuletzt eingestellt habe (obwohl veraltet, aber das style="width:1px"
hatte keine Auswirkung), was gut funktionierte, bis ich Mehrwortdaten in der Spalte hatte. In diesem Fall wurde mein Text umbrochen, um die Länge so klein wie möglich zu halten.
Lassen Sie mich demonstrieren. Stellen Sie sich diese Tabelle vor:
---------------------------------------------------------------------------------
element1 | data | junk here | last column
---------------------------------------------------------------------------------
elem | more data | other stuff | again, last column
---------------------------------------------------------------------------------
more | of | these | rows
---------------------------------------------------------------------------------
Egal was ich versuche, was ich immer wieder bekomme, ist Folgendes:
---------------------------------------------------------------------------------
element1 | data | junk here | last column
---------------------------------------------------------------------------------
elem | more data | other stuff | again, last column
---------------------------------------------------------------------------------
more | of | these | rows
---------------------------------------------------------------------------------
oder (obwohl ich eingestellt habe style="whitespace-wrap:nowrap"
) dies:
---------------------------------------------------------------------------------
| | junk | last
element1 | data | |
| | here | column
---------------------------------------------------------------------------------
| more | other | again,
elem | | | last
| data | stuff | column
---------------------------------------------------------------------------------
more | of | these | rows
---------------------------------------------------------------------------------
Ich möchte den Tisch bekommen, den ich zuerst vorgestellt habe. Wie erreiche ich das? (Ich bleibe lieber beim Standard und verwende CSS. Es ist mir ehrlich gesagt egal, ob der IE auch keinen Teil des Standards implementiert hat.)
Weitere Erklärung: Ich muss die Spalten so kurz wie möglich halten, ohne Wörter zu umbrechen (die letzte Spalte sollte so groß sein, dass die Tabellenbreite tatsächlich 100% erreicht). Wenn Sie LaTeX kennen, möchte ich, wie Tabellen in LaTeX natürlich angezeigt werden, wenn Sie ihre Breite auf 100% einstellen.
Hinweis: Ich habe dies gefunden, aber es gibt mir immer noch das gleiche wie in der letzten Tabelle.
quelle
Antworten:
whitespace-wrap: nowrap
ist nicht gültig CSS. Es ist das,white-space: nowrap
wonach du suchst.quelle
Dies funktioniert zumindest in Google Chrome. ( jsFiddle )
quelle
width
Ansatz für meine Bedürfnisse umdrehen, da ich mehrere breite Spalten habe (anstatt einer breiten Spalte, da die obige Lösung besser funktioniert). Ich entferntwidth: 99%
vonexpand
und hinzugefügtwidth: 1%
zu ,shrink
und diese Lösung funktionierte gut für mich!td:nth-child(1), td:nth-child(2){white-space:nowrap;} td:nth-child(3){width: 99%;}
Folgendes getan: - Nur für den Fall, dass Neulinge vorbeikommen. :)col
sclass
in die entsprechende Tabelletd
sWenn Sie den obigen Code verwenden, versucht die letzte Tabellenzelle, so groß wie möglich zu sein, und Sie verhindern, dass die vorherigen Zellen umbrochen werden. Dies entspricht den anderen Antworten, ist jedoch wesentlich effizienter.
quelle
width: 1px;
nicht letzte untergeordnete Stil hinzugefügt werden , damit nicht letzte Spalten mit minimaler Breite gerendert werden .Etwas anderes Thema, aber vielleicht hilft es jemandem, der wie ich über diese Frage stolpert.
(Ich habe gerade den Kommentar von Campbeln gesehen, der genau dies vorschlägt, nachdem er meine Antwort unten geschrieben hat. Dies ist also im Grunde eine detaillierte Erklärung seines Kommentars.)
Ich hatte das Problem umgekehrt: Ich wollte eine Tabellenspalte auf die minimal mögliche Breite einstellen, ohne sie im Leerraum zu unterbrechen (letzte Spalte im folgenden Beispiel), aber die Breite der anderen sollte dynamisch sein (einschließlich Zeilenumbrüche):
Einfache Lösung:
HTML
CSS
Spalten mit Klasse werden
shrink
nur auf die Mindestbreite erweitert, andere bleiben jedoch dynamisch. Dies funktioniert , weilwidth
dietd
automatisch angepasst ganzen Inhalt erweitert.Beispiel-Snippet
Code-Snippet anzeigen
quelle
Sie können die feste Breite festlegen, indem Sie das
div
Tag darin platzierentd
https://jsfiddle.net/8bf17o1v/
quelle
Wenn Sie mehrere Textzeilen in der Tabellenzelle benötigen.
Nicht
white-space: nowrap
verwendenwhite-space: pre;
stattdessen .Vermeiden Sie in Tabellenzellen Codeformate wie neue Zeilen und Einrückungen (Leerzeichen) und verwenden Sie diese
<br>
, um eine neue Textzeile / Zeile festzulegen . So was:Demo auf CodePen
quelle
Eine Kombination von entweder
white-space: nowrap
oderwhite-space: pre
mitmin-width: <size>
erledigt den Job.width: <size>
allein reicht nicht aus, um den Tisch vor dem Zusammendrücken zu bewahren.quelle