caption-side
border-collapse
border-spacing
empy-cells
table-layout
Tabellarische Daten werden mit HTML Tabellen dargestellt. Die Formatierung der Tabellen und Tabelleninhalte geschieht wie immer mit CSS. Außerdem bietet CSS noch die Möglichkeit Blockelementen ein tabellenartiges Verhalten zuzuweisen. Das geschieht mit der Eigenschaft display. Auf ein so verändertes Blockelement kann man, wie auch auf Tabellen, alle CSS Eigenschaften für Tabellen anwenden. Es ist wichtig zu verstehen, dass die so veränderten Blockelemente keine tabellarischen Daten erfassen sollen, sondern dass es lediglich darum geht, dass Blockelemente sich wie Tabellen verhalten. Das kann für das Layout sehr nützlich sein.
Zur Ausrichtung des Inhalts innerhalb einer Tabellenzellen stehen CSS Eigenschaften zur Verfügung. Man findet sie unter dem Thema Texteigenschaften. Hier sind in erster Linie text-align und vertical-align zu nennen.
Mit dem HTML Element caption
kann man einer Tabelle eine Überschrift zuweisen. Mit der CSS Eigenschaft caption-side
wird die Position der Überschrift definiert.
table {caption-side: bottom;}
Eigenschaft | Wert | Bedeutung |
---|---|---|
Standardwert | top | |
Vererbbar | ja | |
Anwendbar | table oder Elemente mit display:inline- table | |
caption-side | top | oben |
bottom | unten |
Im Beispiel sieht man sofort den Unterschied zwischen den beiden Werten. Bei collapse
fallen die Rahmen zusammen und bilden keine Zwischenräume zwischen den einzelnen Tabellenzellen.
table {border-collapse: collapse;}
Eigenschaft | Wert | Bedeutung |
---|---|---|
Standardwert | separate | |
Vererbbar | ja | |
Anwendbar | table oder Elemente mit display:inline- table | |
border-collapse | collapse | Rahmen werden zu einem Rahmen ohne Zwischenräume |
separate | Zellen einzeln mit Zwischenräumen |
Der Abstand zwischen den Zellen wird mit border-spacing
festgelegt
table {border-spacing: 5px;}
Eigenschaft | Wert | Bedeutung |
---|---|---|
Standardwert | 0 | |
Vererbbar | ja | |
Anwendbar | table oder Elemente mit display:inline- table | |
border-spacing | Zahlenangabe | Zahlenangabe mit Maßeinheit |
Einige Browser, zeigen leere Tabellenzellen oft gar nicht an <td></td>
. Das sieht nicht schön aus und kann mittels CSS beeinflusst werden.
Achtung! Hier muss die Eigenschaft border-collapse: separate;
definiert sein.
table {empty-cells: show;}
Eigenschaft | Wert | Bedeutung |
---|---|---|
Standardwert | show | |
Vererbbar | ja | |
Anwendbar | table oder Elemente mit display:inline- table | |
empty-cells | show | Umrandung wird angezeigt |
hide | Umrandung wird nicht angezeigt |
Mit der Eigenschaft table-layout
beeinflusst man das Verhalten, in dem Punkte, dass Tabellen ihre Breite automatisch an den Inhalt anpassen, oder dass eine Größe definiert wird und Text sich in die vorgegeben Breite einpasst. Da beim Wert auto
der Browser eventuell die gesamte Tabelle vergrößern muss, wird sie erst angezeigt, wenn der vollständige Inhalt der Tabelle geladen ist.
Eigenschaft | Wert | Bedeutung |
---|---|---|
Standardwert | auto | |
Vererbbar | ja | |
Anwendbar | table oder Elemente mit display:inline- table | |
table-layout | auto | Wenn der Inhalt nicht die Zelle passt, wird die Zelle vergrößert |
fixed | Der Inhalt passt sich an oder wenn er nicht passt, wird er abgeschnitten (IE) oder läuft über den Zellenrand hinaus (Opera Firefox). |
Weitere Beispiele
Html Seite mit vertikal zentriertem Inhalt
Drop Down Menü mit List O Matic
Tabellen bereiten auf kleinen Bildschirmen Probleme.
Siehe folgenden Blog-Beitrag von Jonas Hellwig auf Kuturbanause Tabellen im responsive Webdesign
Eine Möglichkeit besteht darin, eine Tabelle scrollbar zu machen, indem man einen Container um die Tabelle legt und diesen mit der overflow Eigenschaft Scrollleisten zuzuweist. Die Scrollleisten kann man auch gestalten.
CSS
.tableContainer { width: 100%; overflow-y: auto; margin: 0 0 1em; } .tableContainer::-webkit-scrollbar { -webkit-appearance: none; width: 14px; height: 14px; } .tableContainer::-webkit-scrollbar-thumb { border-radius: 8px; border: 1px solid #36183d; background-color: #e0caca; }
HTML
<div class="tableContainer"> <table>...</table> </div>
Eine andere Möglichkeit ist, die Tabellenreihen untereinander anzuordnen und die Tabellenzellen horizontal zu positionieren. Das erreicht man indem man tr und td mit float: left
versieht.
Die th
Elemente werden in der folgenden Lösung beim kleinen Bildschirm ausgeblendet durch thead{display:none;}
Stattdessen wird vor den td Elementen ein Element mit dem :before
Selektor hinzugefügt, welches seinen Text aus einem data-label bekommt, welches in jeder td-Zelle integriert ist.
Ein data-* Attribut kann man setzen um Informationen in einem Attribut zu speichern. Nach data- kann man jeden beliebigen Bezeichner setzen.
data-label, data-count, data-row...
<td data-label="Stadt">...</td>
td::before{content: attr(data-label);}