Inilah solusi sederhana dan elegan, dengan beberapa peringatan:
- Anda tidak dapat benar-benar membuat celah transparan, Anda harus memberi mereka warna tertentu.
- Anda tidak dapat membulatkan sudut batas di atas & di bawah celah
- Anda perlu mengetahui lapisan dan batas sel tabel Anda
Dengan mengingat hal itu, coba ini:
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 */
}
Apa yang sebenarnya Anda lakukan adalah menempelkan persegi panjang ::before
blok bagian atas semua sel di baris yang Anda inginkan diawali dengan celah. Blok ini sedikit keluar dari sel untuk tumpang tindih dengan batas yang ada, menyembunyikannya. Blok-blok ini hanyalah batas atas dan bawah yang diapit bersama: Batas atas membentuk celah, dan batas bawah menciptakan kembali tampilan batas atas asli sel.
Perhatikan bahwa jika Anda memiliki batas di sekeliling tabel itu sendiri dan juga sel, Anda harus lebih meningkatkan margin horizontal -ve dari 'blok' Anda. Jadi untuk batas tabel 4px, Anda sebaiknya menggunakan:
margin:-5px -12px 5px; /* 14px = original 10px + 2px for 'uncollapsed' part of table border */
Dan jika tabel Anda menggunakan border-collapse:separate
bukan border-collapse:collapse
, maka Anda harus (a) menggunakan lebar perbatasan tabel penuh:
margin:-5px -14px 5px; /* 14px = original 10px + 4px full width of table border */
... dan juga (b) ganti double-lebar perbatasan yang sekarang perlu muncul di bawah celah:
border-bottom:4px solid blue; /* i.e. 4px = cell top border + previous row's bottom border */
Teknik ini mudah disesuaikan dengan versi .gapafter, jika Anda suka, atau untuk membuat celah vertikal (kolom) alih-alih celah baris.
Berikut adalah codepen tempat Anda dapat melihatnya dalam aksi: https://codepen.io/anon/pen/agqPpW