Ось просте і елегантне рішення з кількома застереженнями:
- Насправді ви не можете зробити прогалини прозорими, вам потрібно надати їм певний колір.
- Ви не можете заокруглювати кути меж вище та нижче прогалин
- Вам потрібно знати прокладки та межі комірок вашої таблиці
Зважаючи на це, спробуйте це:
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 */
}
Те, що ви насправді робите, - це вклеїти прямокутний ::before
блок у верхню частину всіх комірок у рядку, який ви хочете, щоб передував проміжок. Ці блоки трохи стирчать з комірок, щоб перекривати існуючі межі, приховуючи їх. Ці блоки є лише верхньою і нижньою облямівкою, прошиті разом: Верхня межа утворює проміжок, а нижня межа створює зовнішній вигляд початкової верхньої межі комірок.
Зауважте, що якщо у вас є межа навколо самого столу, а також комірок, вам потрібно буде додатково збільшити горизонтальний -ve межа ваших "блоків". Отже, для межі таблиці 4px ви замість цього використовуєте:
margin:-5px -12px 5px; /* 14px = original 10px + 2px for 'uncollapsed' part of table border */
І якщо ваша таблиця використовує border-collapse:separate
замість border-collapse:collapse
, тоді вам потрібно (a) використовувати повну ширину рамки таблиці:
margin:-5px -14px 5px; /* 14px = original 10px + 4px full width of table border */
... а також (b) замінити подвійну ширину межі, яка тепер повинна бути нижче проміжку:
border-bottom:4px solid blue; /* i.e. 4px = cell top border + previous row's bottom border */
Техніка легко пристосовується до версії .gapafter, якщо вам зручніше, або до створення вертикальних (стовпчикових) проміжків замість пропусків рядків.
Ось коден, де ви можете побачити його в дії: https://codepen.io/anon/pen/agqPpW