Oto proste i eleganckie rozwiązanie z kilkoma zastrzeżeniami:
- Nie można tak naprawdę zrobić przezroczystości, musisz nadać im określony kolor.
- Nie można zaokrąglać rogów granic powyżej i poniżej luk
- Musisz znać wypełnienie i obramowanie komórek tabeli
Mając to na uwadze, spróbuj tego:
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 */
}
W rzeczywistości robisz naklejanie prostokąta ::before
bloku na górę wszystkich komórek w rzędzie, który chcesz poprzedzić przerwą. Bloki te wystają nieco z komórek, aby pokryć istniejące granice, ukrywając je. Te bloki są tylko górną i dolną ramką połączonymi ze sobą: górna ramka tworzy szczelinę, a dolna ramka ponownie tworzy wygląd oryginalnej górnej ramki komórek.
Zauważ, że jeśli masz obramowanie wokół samej tabeli, a także komórek, musisz dodatkowo zwiększyć poziomo-margines „bloków”. Tak więc dla obramowania tabeli 4px zamiast tego użyjesz:
margin:-5px -12px 5px; /* 14px = original 10px + 2px for 'uncollapsed' part of table border */
A jeśli border-collapse:separate
zamiast tego używana jest tabela border-collapse:collapse
, musisz (a) użyć pełnej szerokości obramowania tabeli:
margin:-5px -14px 5px; /* 14px = original 10px + 4px full width of table border */
... a także (b) zastąp podwójną szerokość obramowania, która teraz musi pojawić się poniżej odstępu:
border-bottom:4px solid blue; /* i.e. 4px = cell top border + previous row's bottom border */
Technikę można łatwo dostosować do wersji .gapafter, jeśli wolisz, lub do tworzenia szczelin pionowych (kolumnowych) zamiast szczelin rzędów.
Oto codepen, w którym można go zobaczyć w akcji: https://codepen.io/anon/pen/agqPpW