Gernot Back: Spaltenbreiten via COL behagt sich mit TD-Paddings

Beitrag lesen

Hallo Matschek,

Das Resultat ist eine unterschiedliche effektive Spaltenbreite.
Der Fuchs sieht die Sache wohl so, dass die Spalte fix 100px ist, und platziert darin die TDs mit 20px Padding, damit stehen 60px für den Inhalt zur Verfügung.
Der IE hingegen "argumentiert" wohl, dass die in der COL definierte Breite als Breite der TD durchvererbt wird (gem. CSS natürlich nicht wirklich geerbt). Der Folgeschluss ist dann, dass die Gesamtbreite der TDs die 100px plus Padding ist. Damit stehen 100px für den Inhalt zur Verfügung, und die Spalten sind effektiv 140px breit.

So etwas hängt natürlich auch vom verwendeten DOCTYPE ab.

Ich gebe Tabellen meist über CSS eine Gesamtbreite und lasse eine Spalte (COL-Element) als Puffer in der Breite undefiniert, vor allem dann, wenn ich der Tabelle table-layout:fixed verpasse. Damit Fahre ich meist ganz gut. Wenn ich Wert darauf lege, dass alle Spalten in IE und Firefox gleich ticken arbeite ich mit dem Nächsten-Geschwister-Selektor, den IE6 und IE7 ja nicht verstehen und die sich dann weiterhin nach den Abgaben der weniger mächtigen COL-Elemente richten, kann man es so differenzieren:

z.B.:

col.second { width:80px; }  
th:first-child + td { width:60px }

Gruß Gernot