Farbe aller vier Ränder ändern, auch bei `border-collapse: collapse;

Avatar of Daniel Jauch
Daniel Jauch am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Die Eigenschaft border-collapse eignet sich hervorragend, um die Ränder von <table>-Zellen gleichmäßig zu gestalten. Das sorgt für ein sauberes Erscheinungsbild, das ich eigentlich bevorzuge.

Es gibt jedoch etwas, das Probleme mit der Art und Weise verursachen kann, wie ein Browser die Zellen und ihre jeweiligen Ränder zeichnet. Jede Zelle wird beim Zeichnen in Reihenfolge *unter* die vorherige platziert. Das bedeutet, wenn Tabellen unterschiedliche Randfarben haben, werden diese Ränder auf einigen Seiten verborgen.

Das Problem

Sehen Sie sich im folgenden Codebeispiel die Zellen an, um zu sehen, wie Ränder hintereinander verborgen sein können.

Siehe den Pen Table border collapse step 1 von Daniel (@gooseofmusic) auf CodePen.

Da z-index auf Zellen innerhalb einer <table> nicht funktioniert, müssen wir mit dem Inhalt innerhalb der Zellen arbeiten.

Die Lösung

Schritt 1

Fairer Hinweis: Diese Lösung verwendet negative Ränder. Für diejenigen unter Ihnen, die keine negativen Ränder mögen, schauen Sie weg.

Zuerst packen wir den Inhalt der Zelle in einen Wrapper. Verschieben Sie den Rand, den Abstand usw. nach innen, um es anzupassen.

Siehe den Pen Table border collapse step 2 von Daniel (@gooseofmusic) auf CodePen.

Das allein wird das Problem eigentlich umkehren: Die unteren und rechten Ränder erscheinen oben.

Schritt 2

Von dort aus müssen wir auch z-index zum :hover-Zustand hinzufügen, damit er sich über die anderen Elemente stapelt. Da wir den Inhalt innerhalb der Tabellenzelle z-indexen und nicht die <td> selbst, funktioniert es.

Siehe den Pen Table border collapse step 3 von Daniel (@gooseofmusic) auf CodePen.

Stellen Sie sicher, dass der z-index *nicht* in einer transition enthalten ist, sonst sehen Sie, wie die zuvor verborgenen Ränder statt auszublenden „hineinwischen“.