Vielleicht noch border-collapse: collapse;
Ohne border kleben die Zellen dann lückenlos aneinander.
Ob das sinnvoll ist hängt von der übrigen Gestaltung ab.
Grundsätzlich musst Du bei Webseiten unterscheiden zwischen der logischen Auszeichnung und der Präsentation. Die Auszeichnung wird in HTML gemacht. HTML legt fest, was der Inhalt bedeutet. Um tabellarische Daten auszuzeichznen, gibt es das Tag
. Sonst nichts.
Für die Präsentation ist CSS zuständig. Wie Deine Tabelle jetzt tatsächlich aussehen soll, z.B. dass sie keine Ränder hat, das wird mit CSS gemacht. Und nur mit CSS.
„Trennung von Inhalt und Layout“ ist das.
HTML macht nur die Struktur, niemals irgendwas, das mit Layout oder Design zu tun hat. Man zeichnet Elemente aufgrund ihrer Bedeutung mit bestimmten Tags aus, niemals, weil sie ein bestimmtes Erscheinungsbild haben.
Das nur so als Hintergrundwissen, das übrigens so für alle anderen Tags auch gilt. Man zeichnet z.B. ein Element mit aus, weil man es betonen will, weil es wichtig ist, niemals, weil in einigen Browsern kursiv dargestellt wird. Um Schrift kursiv zu machen, ohne dass sie dadurch eine bestimmte Bedeutung erlangt, nimmt man CSS mit font-style:italic. Aber niemals wendet man CSS an, um etwas wichtiges auf dem Bildschirm zu verdeutlichen, dazu muss erstmal die Bedeutung per HTML (hier: ) gelegt werden.
bin nun nicht sicher, ob das w3c konform ist, aber es ist ein riesen vorteil, dass css-einstellungen deinen html-code übersteuern.
also wenn du z.b. im code
angibst, und im css etwas anderes definierst, werden deine css einstellungen heran gezogen.
Abgesehen davon, dass man gleiche zusammenfassen kann, ist das hier ein grober Fehler in Sachen Nutzbarkeit, weil Deine Besucher nicht erkennen können, welche Links sie schon besucht haben.
border-width: 2;
border-style: 2;
2 was? Ochsen? Aliens? em? px? %?
Ohne Einheit gehts nur bei der 0.
BORDER-TOP: black 1px solid;
In CSS wird alles klein geschrieben.
Aber der Rand ist immonoch da, sonst geht alles.
In der Tabelle? Naja, Du gibst ja auch an, dass Deine Tabelle Rahmen haben soll, dann mach die verschiedenen Angaben zu border halt weg.
Nun,ihr könnt es euch denken,der schwarze Rand ist immernoch da.
Ehm, die Angabe für border oben bedeutet nichts anderes, als dass ein schwarzer Rand um das Element mit der Klasse „tblmain“ gelegt wird. Wenn Du den nicht willst, lass das border weg.
Ist es möglich, dass die Spalten immer andere Farben haben
Ja klar. Aber da der IE verschiedene Selektoren nicht kennt, ist es am Besten, jeder Spalte (also jedem Element einer Spalte) eine Klasse mitzugeben, also sowas wie „.pair“ und „.impair“ (bitte nicht „.rot“ oder „.blau“, weil wenn Du die Farbe ändern willst, hast Du eine Klasse „rot“, die die Farbe vielleicht auf Gelb setzt oder Du hast eine Menge Korrekturaufwand).
Und ich dachte, sowas hätte ich schon in CSS2 benutzt. Jedenfalls unterstützt Firefox das, aber IE nicht. Kann natürlich sein, dass das schon CSS3 ist. Aber das meinte ich mit den „Selektoren, die IE nicht kennt“.