Sebab
Dari dokumentasi MDN :
[Properti margin] berlaku untuk semua elemen kecuali elemen dengan tipe tampilan tabel selain table-caption, table dan inline-table
Dengan kata lain, margin
properti tidak berlaku untuk display:table-cell
elemen.
Larutan
Pertimbangkan untuk menggunakan border-spacing
properti sebagai gantinya.
Catatan itu harus diterapkan ke elemen induk dengan display:table
tata letak dan border-collapse:separate
.
Sebagai contoh:
HTML
<div class="table">
<div class="row">
<div class="cell">123</div>
<div class="cell">456</div>
<div class="cell">879</div>
</div>
</div>
CSS
.table {display:table;border-collapse:separate;border-spacing:5px;}
.row {display:table-row;}
.cell {display:table-cell;padding:5px;border:1px solid black;}
Margin yang berbeda secara horizontal dan vertikal
Seperti yang disebutkan oleh Diego Quirós, border-spacing
properti ini juga menerima dua nilai untuk menetapkan margin yang berbeda untuk sumbu horizontal dan vertikal.
Sebagai contoh
.table {/*...*/border-spacing:3px 5px;} /* 3px horizontally, 5px vertically */
padding
dapat diatur untuk setiap pemilih yang diperlukan (misalnya kelas atau id), seperti biasa. Jika Anda maksudmargin
antara sel, maka itu dapat diatur secara terpisah untuk sumbu vertikal dan horizontal dengan menetapkan dua nilaiborder-spacing
, tetapi itu akan berlaku untuk seluruh tabel dan tidak untuk sel individu.Anda dapat menggunakan div dalam untuk mengatur margin.
JS Fiddle
sumber
.inner-div { margin-right: 5px; } .outer-cell:last-child .inner-div { margin-right: 0; }
. Tetapi perhatikan juga gotcha ini: latar belakang merah dan hijau dari contoh ini tidak akan selalu cocok dengan tinggi karena mereka tidak ada di sel.Sel tabel tidak menghormati margin, tetapi Anda bisa menggunakan batas transparan sebagai gantinya:
Catatan: Anda tidak dapat menggunakan persentase di sini ... :(
sumber
Jika Anda memiliki div berikutnya satu sama lain seperti ini
Ini seharusnya bekerja!
sumber