ฉันมีสอง div ที่นี่:
<div style="display:table-cell" id="div1">
content
</div>
<div style="display:table-cell" id="div2">
content
</div>
มีวิธีทำให้มีช่องว่างระหว่างสอง div (ที่มีdisplay:table-cell
) นี้หรือไม่?
ฉันมีสอง div ที่นี่:
<div style="display:table-cell" id="div1">
content
</div>
<div style="display:table-cell" id="div2">
content
</div>
มีวิธีทำให้มีช่องว่างระหว่างสอง div (ที่มีdisplay:table-cell
) นี้หรือไม่?
คำตอบ:
คุณสามารถใช้border-spacing
คุณสมบัติ:
HTML:
<div class="table">
<div class="row">
<div class="cell">Cell 1</div>
<div class="cell">Cell 2</div>
</div>
</div>
CSS:
.table {
display: table;
border-collapse: separate;
border-spacing: 10px;
}
.row { display:table-row; }
.cell {
display:table-cell;
padding:5px;
background-color: gold;
}
ตัวเลือกอื่น ๆ ?
ดีไม่จริง
ทำไม?
margin
คุณสมบัติไม่สามารถใช้ได้กับdisplay: table-cell
องค์ประกอบpadding
คุณสมบัติไม่สร้างช่องว่างระหว่างขอบของเซลล์float
คุณสมบัติทำลายพฤติกรรมที่คาดหวังของtable-cell
องค์ประกอบซึ่งสามารถสูงได้เท่ากับองค์ประกอบหลักposition: relative
บนtable-*-group
, table-row
, table-column
, table-cell
และtable-caption
องค์ประกอบที่จะไม่ได้กำหนด
border-right: 10px solid #FFF
. สิ่งนี้ใช้ได้ดีสำหรับฉันเมื่อออกแบบเมนูแบบเลื่อนลง CSS เมื่อฉันต้องการช่องว่างระหว่างtable-cell
องค์ประกอบ
ใช้เส้นขอบโปร่งใสถ้าเป็นไปได้
https://jsfiddle.net/74q3na62/
HTML
<div class="table">
<div class="row">
<div class="cell">Cell 1</div>
<div class="cell">Cell 2</div>
<div class="cell">Cell 3</div>
</div>
</div>
CSS
.table {
display: table;
border: 1px solid black;
}
.row { display:table-row; }
.cell {
display: table-cell;
background-clip: padding-box;
background-color: gold;
border-right: 10px solid transparent;
}
.cell:last-child {
border-right: 0 none;
}
คุณสามารถใช้border-spacing
คุณสมบัติตามที่คำตอบที่ยอมรับแนะนำ แต่สิ่งนี้ไม่เพียง แต่สร้างช่องว่างระหว่างเซลล์ตารางเท่านั้น แต่ยังสร้างระหว่างเซลล์ตารางและคอนเทนเนอร์ของตารางด้วย สิ่งนี้อาจไม่ต้องการ
หากคุณไม่ต้องการเส้นขอบที่มองเห็นได้บนเซลล์ตารางของคุณคุณควรใช้transparent
เส้นขอบเพื่อสร้างระยะขอบเซลล์ เส้นขอบโปร่งใสจำเป็นต้องมีการตั้งค่าbackground-clip: padding-box;
เนื่องจากมิฉะนั้นสีพื้นหลังของเซลล์ตารางจะแสดงบนเส้นขอบ
ขอบโปร่งใสและคลิปพื้นหลังได้รับการสนับสนุนใน IE9 ขึ้นไป (และเบราว์เซอร์สมัยใหม่อื่น ๆ ทั้งหมด) หากคุณต้องการความเข้ากันได้กับ IE8 หรือไม่ต้องการพื้นที่โปร่งใสจริงคุณสามารถตั้งค่าสีขอบสีขาวและออกbackground-clip
จากภายนอก
<div style="display:table;width:100%" >
<div style="display:table-cell;width:49%" id="div1">
content
</div>
<!-- space between divs - display table-cell -->
<div style="display:table-cell;width:1%" id="separated"></div>
<!-- //space between divs - display table-cell -->
<div style="display:table-cell;width:50%" id="div2">
content
</div>
</div>
ข้างต้นใช้งานได้นี่คือวิธีแก้ปัญหาของฉันที่ต้องใช้มาร์กอัปน้อยลงเล็กน้อยและมีความยืดหยุ่นมากกว่า
.cells {
display: inline-block;
float: left;
padding: 1px;
}
.cells>.content {
background: #EEE;
display: table-cell;
float: left;
padding: 3px;
vertical-align: middle;
}
<div id="div1" class="cells"><div class="content">My Cell 1</div></div>
<div id="div2" class="cells"><div class="content">My Cell 2</div></div>
สร้าง div ใหม่ด้วยชื่ออะไรก็ได้ (ฉันจะใช้ table-split) และกำหนดความกว้างโดยไม่ต้องเพิ่มเนื้อหาในขณะที่วางไว้ระหว่าง div ที่จำเป็นที่ต้องแยก
คุณสามารถเพิ่มความกว้างเท่าที่จำเป็นได้ ฉันเพิ่งใช้ไป 0.6% เพราะเป็นสิ่งที่ฉันต้องการเมื่อต้องทำสิ่งนี้
.table-split {
display: table-cell;
width: 0.6%
}
<div class="table-split"></div>
position: relative
เลย.