Colgroup-Element der HTML-Tabelle funktioniert nicht
Lesezeit: 4 Minuten
happyontbelong
Ich möchte unterschiedliche Stile für jede Spalte einer Tabelle. Ich habe gelesen, dass Sie das tun könnten, indem Sie verwenden <colgroup> oder <col>, aber ich hatte kein Glück. Ich habe ein Beispiel Hier, und nichts scheint sich zu ändern. Mache ich etwas falsch? Funktioniert das mit XHTML?
Ich weiß, dass ich jedem ein “Klassen”-Attribut hinzufügen könnte <td>aber das scheint schwach.
@MichaelLaVoie: Während die Element wird von allen gängigen Browsern unterstützt, die Attribute werden nicht überall unterstützt. Auf deinem ersten Link steht Ein besserer Ansatz besteht darin, Klassennamen auf die jeweiligen colgroup-Elemente anzuwenden und dann das CSS-Styling für Ausrichtung, Farben, Breiten usw. zu überlassen.
– Aaron Digulla
16. April 2013 um 8:12 Uhr
@JannieT: Nur von den Attributen width wird von allen Browsern unterstützt und selbst das ist sehr eingeschränkt: Es erlaubt nur eine Zahl (Pixelbreite) oder Prozent.
– Aaron Digulla
16. April 2013 um 8:15 Uhr
John
Setze deine table-layout auf auto statt fix…
table {table-layout: auto;}
Meine persönliche Website unterstützt mehrere Themen und ich sehe diese Art von Unterschieden ständig.
Hier ist ein Trick, den ich verwendet habe, der tatsächlich gut funktioniert hat. In einer generischen (seitenweiten) CSS-Datei habe ich Folgendes eingefügt:
und so weiter bis zu dem, was meiner Meinung nach die maximale Anzahl von Spalten in einer Tabelle war, die ich jemals auf meiner Website benötigen würde.
Dann könnte ich auf jeder Tabelle die Breite mit einem Stil wie dem folgenden definieren:
Dies machte es einfach, die Spaltenbreiten festzulegen, und ich konnte Code hinzufügen, um die Größe der Spalten zu ändern, der einfach die Stileigenschaft in der Tabelle für die gewünschte Spalte ändern musste. Dadurch wurde vermieden, dass ich jedes Mal zahlreiche CCS-Einträge machen musste, wenn ich die Spaltenbreiten für eine Tabelle definieren wollte. Um eine Spaltenbreite zu ändern, könnten Sie so etwas verwenden:
Das Obige ändert einfach die Breite von Spalte 2, indem der Variablenwert –w2 geändert wird.
ramjamx
Sie könnten CSS-Selektoren verwenden, um ähnliche Ergebnisse zu erhalten, ohne zusätzliche Klassen hinzuzufügen.
Wenn Sie beispielsweise einer zweiten Spalte einen bestimmten Stil geben möchten, können Sie Folgendes verwenden:
table>tbody>td:nth-child(2){font-weight: bolder;}
Weißer Hase
Wenn Sie 2020 unterschiedliche Stile für Spalten wünschen, können Sie:
1. style/CSS
, aber nur für wenige Eigenschaften
2. Verwenden Sie th/td:nth-child(#number) in CSS (meine bevorzugte Lösung, keine Ahnung, was mit colspans passiert)
3. Fügen Sie den th/td-Elementen manuell eine Klasse hinzu
Sie sollten nicht das HTML-Attribut “width” verwenden, sondern style/CSS. Im Stil/CSS für
sollen Sie nur “border”, “background”, “width” und “visibility” verwenden. Sie können ems verwenden, um Werte auszudrücken.
Ich bin verwirrt: w3 sagt: “Die Eigenschaft ‘Breite’ gibt die Mindestbreite für die Spalte an.” was mir angesichts der Existenz einer “min-width” -Eigenschaft widersprüchlich erscheint. Auf Firefox 72 (Ubuntu)
<col style="width: 13em">
setzt eine “feste” Breite (wie ich erwartet hatte). Wenn ich die Größe des Fensters verändere und es verenge, wird die Spalte in der Größe angepasst und der Inhalt in mehr Zeilen umbrochen.
Weißer Hase
Ich hatte also gerade das gleiche Problem … das eigentliche Problem ist, dass Sie, selbst wenn style/CSS für
(anstelle von HTML-Attributen) verwendet wird, immer noch nur die folgenden Dinge formatieren können: