Hier ist eine einfache und elegante Lösung mit ein paar Einschränkungen:
- Sie können die Lücken nicht wirklich transparent machen, sondern müssen ihnen eine bestimmte Farbe geben.
- Sie können die Ecken der Ränder über und unter den Lücken nicht abrunden
- Sie müssen den Abstand und die Ränder Ihrer Tabellenzellen kennen
Versuchen Sie in diesem Sinne Folgendes:
td {padding:5px 8px;border:2px solid blue;background:#E0E0E0} /* lets say the cells all have this padding and border, and the gaps should be white */
tr.gapbefore td {overflow:visible}
tr.gapbefore td::before,
tr.gapbefore th::before
{
content:"";
display:block;
position:relative;
z-index:1;
width:auto;
height:0;
padding:0;
margin:-5px -10px 5px; /* 5px = cell top padding, 10px = (cell side padding)+(cell side border width)+(table side border width) */
border-top:16px solid white; /* the size & color of the gap you want */
border-bottom:2px solid blue; /* this replaces the cell's top border, so should be the same as that. DOUBLE IT if using border-collapse:separate */
}
Was Sie tatsächlich tun, ist, einen rechteckigen ::before
Block oben in alle Zellen in der Zeile einzufügen, denen eine Lücke vorangestellt werden soll. Diese Blöcke ragen etwas aus den Zellen heraus, um die vorhandenen Ränder zu überlappen und sie auszublenden. Diese Blöcke sind nur ein oberer und ein unterer Rand, die zusammengefügt sind: Der obere Rand bildet die Lücke, und der untere Rand erzeugt das Erscheinungsbild des ursprünglichen oberen Randes der Zellen.
Beachten Sie, dass Sie den horizontalen Rand Ihrer 'Blöcke' weiter vergrößern müssen, wenn Sie einen Rand um die Tabelle selbst sowie die Zellen haben. Für einen 4px-Tabellenrand würden Sie stattdessen Folgendes verwenden:
margin:-5px -12px 5px; /* 14px = original 10px + 2px for 'uncollapsed' part of table border */
Und wenn Ihre Tabelle border-collapse:separate
anstelle von verwendet border-collapse:collapse
, müssen Sie (a) die volle Breite des Tabellenrahmens verwenden:
margin:-5px -14px 5px; /* 14px = original 10px + 4px full width of table border */
... und auch (b) die doppelte Breite des Rahmens ersetzen, der jetzt unter der Lücke erscheinen muss:
border-bottom:4px solid blue; /* i.e. 4px = cell top border + previous row's bottom border */
Die Technik lässt sich leicht an eine .gapafter-Version anpassen, wenn Sie dies bevorzugen, oder vertikale (Spalten-) Lücken anstelle von Zeilenlücken erstellen.
Hier ist ein Codepen, in dem Sie ihn in Aktion sehen können: https://codepen.io/anon/pen/agqPpW