Dalam dokumen HTML saya, saya memiliki tabel dengan dua kolom dan beberapa baris. Bagaimana cara menambah spasi di antara kolom pertama dan kedua dengan css? Saya sudah mencoba menerapkan "margin-right: 10px;" ke setiap sel di sisi kiri, tetapi tidak berpengaruh.
96
Jawaban:
Terapkan ini ke yang pertama Anda
<td>
:Contoh HTML:
sumber
border-collapse: separate
(ada kesalahan ketik dalam ejaan diseparate
atas)border-spacing: 5px;
border-spacing
juga menambahkan spasi antar baris. Sayangnya, tidak ada properti terpisah untuk jarak vertikal dan horizontal.border-spacing
mengambil dua argumen - satu untuk horizontal dan satu untuk vertikal.Sebuah kata peringatan: meskipun
padding-right
mungkin menyelesaikan masalah khusus (visual) Anda, ini bukanlah cara yang tepat untuk menambahkan spasi antar sel tabel. Apa yangpadding-right
dilakukannya untuk sel mirip dengan apa yang dilakukannya untuk sebagian besar elemen lainnya: ia menambahkan ruang di dalam sel. Jika sel tidak memiliki batas atau warna latar belakang atau hal lain yang memberikan permainan itu, ini bisa meniru efek pengaturan ruang antara sel, tetapi tidak sebaliknya.Seperti yang dicatat seseorang, spesifikasi margin diabaikan untuk sel tabel:
Spesifikasi CSS 2.1 - Tabel - Tata letak visual dari isi tabel
Lalu apa cara yang "benar"? Jika Anda ingin mengganti
cellspacing
atribut tabel, makaborder-spacing
(denganborder-collapse
nonaktif) adalah penggantinya. Namun, jika "margin" per sel diperlukan, saya tidak yakin bagaimana hal itu dapat dicapai dengan benar menggunakan CSS. Satu-satunya peretasan yang dapat saya pikirkan adalah menggunakanpadding
seperti di atas, hindari gaya apa pun dari sel (warna latar belakang, batas, dll.) Dan sebagai gantinya gunakan wadah DIV di dalam sel untuk menerapkan gaya seperti itu.Saya bukan ahli CSS, jadi saya bisa saja salah di atas (yang akan sangat bagus untuk diketahui! Saya juga ingin solusi CSS margin sel tabel).
Bersulang!
sumber
Jika Anda tidak dapat menggunakan padding (misalnya Anda memiliki batas di td) coba ini
sumber
Saya menyadari ini cukup terlambat, tetapi sebagai catatan, Anda juga dapat menggunakan pemilih CSS untuk melakukan ini (menghilangkan kebutuhan akan gaya sebaris.) CSS ini menerapkan padding ke kolom pertama setiap baris:
Dan ini akan menjadi HTML Anda, tanpa CSS !:
Ini memungkinkan markup yang jauh lebih elegan, terutama dalam kasus di mana Anda perlu melakukan banyak pemformatan khusus dengan CSS.
sumber
Sayangnya margin tidak berfungsi pada setiap sel, namun Anda dapat menambahkan kolom tambahan di antara dua sel yang ingin Anda beri spasi di antara ... opsi lain adalah menggunakan batas dengan warna yang sama dengan latar belakang ...
sumber
Anda cukup melakukan itu:
Tidak diperlukan CSS :) Ini 10px adalah ruang Anda.
sumber
Coba
padding-right
. Anda tidak diizinkan untuk meletakkanmargin
di antara sel.sumber
Menggunakan border-collapse: pisahkan; tidak berhasil untuk saya, karena saya hanya membutuhkan margin di antara sel tabel bukan di sisi tabel.
Saya datang dengan solusi berikutnya:
- CSS
- HTML
sumber
Solusi ini bekerja untuk mereka
td
yang membutuhkanborder
danpadding
untuk penataan.(Diuji di Chrome 32, IE 11, Firefox 25)
Diperbarui 2016
Firefox sekarang mendukungnya tanpa
inline-block
dan satu setwidth
sumber
Anda tidak dapat memilih kolom individual dalam sel dengan cara itu. Menurut pendapat saya, opsi terbaik Anda adalah menambahkan a
style='padding-left:10px'
di kolom kedua dan menerapkan gaya pada div atau elemen internal. Dengan cara ini Anda dapat mencapai ilusi ruang yang lebih besar.sumber
Jika Anda memiliki kontrol atas lebar tabel, sisipkan padding-kiri di semua sel tabel dan sisipkan margin-kiri negatif di seluruh tabel.
Perhatikan, lebar tabel perlu menyertakan padding / lebar margin. Menggunakan di atas sebagai contoh, lebar visual tabel akan menjadi 700px.
Ini bukan solusi terbaik jika Anda menggunakan batas pada sel tabel Anda.
sumber
LARUTAN
Saya menemukan cara terbaik untuk memecahkan masalah ini adalah kombinasi dari trial and error dan membaca apa yang tertulis di hadapan saya:
http://jsfiddle.net/MG4hD/
Seperti yang Anda lihat, saya memiliki beberapa hal yang cukup rumit yang sedang terjadi ... tetapi hal utama untuk membuat ini terlihat bagus adalah:
ELEMEN ORANG TUA (UL): border-collapse: pisahkan; spasi-batas: .25em; margin kiri: -.25em;
UNSUR ANAK (LI): display: table-cell; perataan vertikal: tengah;
HTML
CSS
sumber
Mengikuti solusi Cian untuk mengatur perbatasan di tempat margin, saya menemukan Anda dapat mengatur warna perbatasan menjadi transparan untuk menghindari warna yang cocok dengan latar belakang. Bekerja di FF17, IE9, Chrome v23. Sepertinya solusi yang layak asalkan Anda juga tidak membutuhkan perbatasan yang sebenarnya.
sumber
Menggunakan padding bukanlah cara yang benar untuk melakukannya, ini dapat mengubah tampilan tetapi bukan itu yang Anda inginkan. Ini dapat menyelesaikan masalah Anda.
sumber
Anda dapat menggunakan keduanya:
Tapi lebih baik digunakan dengan % .
sumber
%
Jika padding tidak berfungsi untuk Anda, solusi lain adalah menambahkan kolom ekstra dan mengatur margin melalui lebar menggunakan
<colgroup>
. Tidak ada solusi padding di atas yang berfungsi untuk saya karena saya mencoba memberi batas sel itu sendiri margin, dan inilah yang pada akhirnya menyelesaikan masalah:Atur gaya batas sel tabel menggunakan: nth-child sehingga kolom ke-2 dan ketiga tampak seperti satu kolom.
sumber