So gibst du einer Tabelle einen Rahmen
Tabellen haben standardmäßig keine Rahmen. Füg sie mit CSS hinzu: Ein border an jeder Zelle zeichnet das Gitter, und border-collapse: collapse an der Tabelle verschmilzt jedes Paar benachbarter Rahmen zu einer Linie.
Die Kurzschreibweise border nimmt eine Breite, einen Stil und eine Farbe in beliebiger Reihenfolge: 1px solid #6b7280. Setz sie an th, td, nicht nur an table: Ein Rahmen an der Tabelle zeichnet nur den äußeren Rand.
border-collapse: separate vs. collapse
border-collapse entscheidet, ob sich Zellen Rahmen teilen.
| Wert | Ergebnis |
|---|---|
separate (Standard) | Jede Zelle hat ihren eigenen Rahmen, mit einer Lücke zwischen den Zellen, die border-spacing festlegt |
collapse | Benachbarte Zellen teilen sich einen Rahmen; border-spacing wird ignoriert |
In der Tabelle mit separate siehst du beide Ebenen: den blauen Tabellenrahmen und einen eigenen gelben Kasten um jede Zelle, mit border-spacing dazwischen. Ändere 6px in 0, und die Zellen berühren sich, aber die Linien sind immer noch doppelt. Nur collapse verschmilzt sie.
Wenn zwei verschmolzene Rahmen aufeinandertreffen und sich unterscheiden, gewinnt der breitere. Bei gleicher Breite entscheidet der Stil (double schlägt solid, das dashed und dotted schlägt), und bei Gleichstand schlägt der Rahmen der Zelle den der Zeile und dieser den der Tabelle. Deshalb ist der äußere Rand der verschmolzenen Tabelle gelb und nicht blau: Zellen und Tabelle haben dort beide 2px solid, und die Zellen gewinnen.
Nur horizontale Linien oder nur innere Linien
Die meisten modernen Tabellen zeichnen nicht jede Linie. Zwei übliche Muster:
Die zweite Tabelle entfernt den Rahmen an der Außenseite jeder Randzelle. border-inline-start und border-inline-end bedeuten Anfang und Ende der Zeile, dasselbe CSS bleibt also auch in Sprachen richtig, die von rechts nach links laufen und in denen die erste Zelle auf der anderen Seite steht.
Abgerundete Tabellenecken
border-radius bewirkt nichts an einer Tabelle mit border-collapse: collapse. Abgerundete Tabellen nutzen das separate-Modell ohne Abstand und zeichnen jede Linie nur einmal, indem Zellen nur einen unteren Rahmen und einen am Ende bekommen:
Die beiden Eckzellen des Kopfes bekommen einen eigenen Radius, damit der graue Hintergrund der Rundung folgt. Ohne ragen ihre eckigen Ecken über den abgerundeten Rahmen hinaus. Der Radius beträgt 9px, also die 10px der Tabelle minus ihren 1px Rahmen, damit die beiden Rundungen übereinanderliegen.
Farbe und Dicke der Rahmen je Bereich
Rahmen können sich je nach Bereich der Tabelle unterscheiden. Selektoren auf thead, tfoot und einzelne Zeilen setzen eine kräftigere Linie unter den Kopf oder über die Summen:
Die 3px-Linien gewinnen dort, wo sie auf die grauen 1px-Linien treffen, nach den Verschmelzungsregeln oben. Die übrige Tabellenstruktur (thead, tfoot, th) erklärt die Seite zur HTML Tabelle.
Das border-Attribut
Alte Tutorials verwenden Attribute am <table>-Tag:
<table border="1" cellspacing="0" cellpadding="6">
Browser beachten border="1" noch: Es zeichnet einen Rahmen an der Tabelle und jeder Zelle, im separate-Modell, was den doppelten Look ergibt. Alle drei Attribute sind in HTML5 obsolet. Die CSS-Entsprechungen sind border an den Zellen, border-spacing (oder border-collapse: collapse) an der Tabelle und padding an den Zellen.
Häufige Fehler
- Rahmen nur an
table. Du bekommst einen Rand ohne Linien darin. Setz den Rahmen anth, td. border-collapse: collapsevergessen und dann doppelte Linien sehen.border-radiusmitborder-collapse: collapse. Der Radius wird ignoriert.border-spacingmitborder-collapse: collapse. Abstände funktionieren nur im separate-Modell.- Rahmen an
<tr>im separate-Modell. Zeilen zeichnen keine Rahmen, solange die Tabelle nicht verschmolzen ist; style stattdessen die Zellen. border="1"verwenden in neuem Code. Es funktioniert noch, kann aber keine Farbe festlegen und ist obsolet.
Häufig gestellte Fragen
Wie gebe ich einer Tabelle in HTML einen Rahmen?
Mit CSS an der Tabelle und ihren Zellen: table { border-collapse: collapse; } th, td { border: 1px solid #999; }. Der Rahmen an den Zellen zeichnet das Gitter, und border-collapse: collapse verschmilzt benachbarte Rahmen zu einfachen Linien.
Warum hat meine Tabelle doppelte Rahmen?
Standardmäßig zeichnet jede Zelle ihren eigenen Rahmen mit einer Lücke zwischen den Zellen (border-collapse: separate), benachbarte Zellen zeigen also zwei Linien. Setz border-collapse: collapse an das <table>, um sie zu einer zu verschmelzen.
Ist das border-Attribut für Tabellen noch gültig?
<table border="1"> zeichnet in jedem Browser noch Rahmen, ist aber in HTML5 obsolet und gibt dir keine Kontrolle über Farbe oder Stil. Nimm stattdessen die CSS-Eigenschaft border.
Wie runde ich die Ecken einer Tabelle ab?
border-radius wirkt nicht an einer Tabelle mit border-collapse: collapse. Nimm border-collapse: separate mit border-spacing: 0, setz den Radius an die Tabelle und gib den Eckzellen einen passenden Radius (border-start-start-radius und Verwandte), damit ihr Hintergrund nicht aus den Ecken ragt.
Wie entferne ich den Rahmen einer Tabelle?
Tabellen haben keinen Rahmen, solange nichts einen hinzufügt. Entferne das Attribut border aus dem <table>-Tag oder setz border: none an table, th, td, um ein Stylesheet zu überschreiben, das sie hinzufügt.