นี่เป็นวิธีแก้ปัญหาที่ง่ายและสง่างามโดยมีข้อแม้บางประการ:
- คุณไม่สามารถทำให้ช่องว่างโปร่งใสได้จริงคุณต้องให้สีที่เฉพาะเจาะจงแก่พวกเขา
- คุณไม่สามารถปัดเศษเส้นขอบด้านบนและด้านล่างของช่องว่างได้
- คุณจำเป็นต้องรู้ช่องว่างภายในและขอบของเซลล์ตารางของคุณ
เมื่อนึกถึงสิ่งนี้ลองทำสิ่งนี้:
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
บล็อกไว้ด้านบนสุดของเซลล์ทั้งหมดในแถวที่คุณต้องการนำหน้าด้วยช่องว่าง บล็อกเหล่านี้ยื่นออกมาจากเซลล์เล็กน้อยเพื่อทับขอบที่มีอยู่แล้วซ่อนไว้ บล็อกเหล่านี้เป็นเพียงเส้นขอบด้านบนและด้านล่างประกบกัน: เส้นขอบด้านบนจะสร้างช่องว่างและเส้นขอบด้านล่างจะสร้างลักษณะที่ปรากฏของเส้นขอบด้านบนดั้งเดิมของเซลล์ขึ้นมาอีกครั้ง
โปรดทราบว่าหากคุณมีเส้นขอบรอบ ๆ ตารางรวมทั้งเซลล์คุณจะต้องเพิ่มระยะขอบแนวนอนของบล็อก 'ของคุณ ดังนั้นสำหรับเส้นขอบตาราง 4px คุณควรใช้แทน:
margin:-5px -12px 5px; /* 14px = original 10px + 2px for 'uncollapsed' part of table border */
และหากตารางของคุณใช้border-collapse:separate
แทนคุณborder-collapse:collapse
จะต้อง (ก) ใช้ความกว้างเส้นขอบตารางแบบเต็ม:
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 */
เทคนิคนี้ได้รับการปรับให้เข้ากับรุ่น. gap หลังจากที่คุณต้องการหรือสร้างช่องว่างแนวตั้ง (คอลัมน์) แทนช่องว่างแถว
นี่คือ codepen ที่คุณสามารถดูได้ในการทำงาน: https://codepen.io/anon/pen/agqPpW