Lebih
CSS Margin Cell
Dalam dokumen HTML, saya memiliki sebuah tabel dengan dua kolom dan beberapa baris. Bagaimana saya bisa meningkatkan ruang di antara yang pertama dan kedua kolom dengan css? I've mencoba menerapkan "margin-right: 10px;" untuk masing-masing sel pada sisi kiri, tetapi tidak berpengaruh.
86
16
Sebuah kata peringatan: meskipun
padding-right
mungkin memecahkan tertentu (visual) masalah, itu bukan cara yang tepat untuk menambahkan spasi antara sel tabel. Apa yangpadding-right
tidak untuk sel ini mirip dengan apa yang dilakukannya untuk sebagian besar unsur-unsur lain: menambah ruang hanya sel. Jika sel-sel tidak memiliki perbatasan atau warna latar belakang atau sesuatu yang lain yang memberikan permainan pergi, ini dapat meniru efek dari pengaturan ruang antara sel-sel, tetapi tidak sebaliknya.Sebagai seseorang mencatat, margin spesifikasi diabaikan untuk sel tabel:
CSS 2.1 Spesifikasi – Tabel – Visual yang tata letak dari isi tabel
Apa's "benar" dengan cara itu? Jika anda mencari untuk menggantikan
cellspacing
atribut dari tabel, makaborder-spacing
(denganborder-collapse
cacat) adalah pengganti. Namun, jika per-cell "margin" yang diperlukan, saya tidak yakin bagaimana hal itu dapat dengan benar dicapai dengan menggunakan CSS. Satu-satunya hack yang bisa saya pikirkan adalah untuk menggunakanpadding
seperti di atas, hindari styling dari sel-sel (warna latar belakang, perbatasan, dll.) dan sebagai gantinya menggunakan wadah Div di dalam sel-sel untuk melaksanakan styling seperti.Saya bukan CSS ahli, jadi saya juga bisa salah di atas (yang akan menjadi besar untuk tahu! Saya juga akan seperti sel tabel margin CSS solusi).
Cheers!
Menerapkan ini untuk pertama anda
<td>
:HTML contoh:
Jika anda dapat't menggunakan padding (misalnya anda memiliki perbatasan di td) mencoba ini
margin tidak bekerja pada sel-sel individual, namun anda bisa menambahkan kolom tambahan antara dua sel yang anda ingin menempatkan ruang antara... pilihan lain adalah dengan menggunakan border dengan warna yang sama sebagai latar belakang...
Saya menyadari hal ini cukup terlambat, tapi untuk catatan, anda juga dapat menggunakan CSS untuk melakukan hal ini (menghilangkan kebutuhan untuk gaya inline.) CSS ini berlaku padding untuk kolom pertama dari setiap baris:
Dan ini akan dapat anda HTML, sans CSS!:
Hal ini memungkinkan untuk jauh lebih elegan markup, terutama dalam kasus di mana anda perlu untuk melakukan banyak format tertentu dengan CSS.
Anda hanya dapat melakukan itu:
Tidak ada CSS yang diperlukan :) Ini 10px adalah ruang anda.
Mencoba
padding-right
. Anda're tidak diperbolehkan untuk menempatkanmargin
's antara sel-sel.Menggunakan border-collapse: separate; tidak't bekerja untuk saya, karena saya hanya perlu margin di antara sel-sel tabel tidak di sisi meja.
Saya datang dengan solusi berikutnya:
-CSS
-HTML
Solusi ini bekerja untuk
td
's yang perlu keduaperbatasan
danbantalan
untuk styling. (Diuji pada Chrome 32, IE 11, Firefox 25)Diperbarui 2016
Firefox sekarang mendukung itu tanpa
inline-block
dan setlebar
Jika anda memiliki kontrol dari lebar tabel, menyisipkan padding-left pada semua sel tabel dan menyisipkan negatif margin-left pada seluruh tabel.
Catatan, lebar tabel harus mencakup padding/margin yang lebar. Menggunakan di atas sebagai contoh, visual lebar tabel akan 700px.
Ini bukan solusi terbaik jika anda're menggunakan batas pada sel tabel.
Anda dapat't satu kolom individu dalam sel dengan cara itu. Dalam pendapat saya, pilihan terbaik anda adalah dengan menambahkan
style='padding-left:10px'
pada kolom kedua dan menerapkan gaya pada internal div atau elemen. Dengan cara ini anda dapat mencapai ilusi ruang yang lebih besar.SOLUSI
Saya menemukan cara terbaik untuk memecahkan masalah ini adalah kombinasi dari trial and error dan membaca apa yang tertulis di hadapan-ku:
http://jsfiddle.net/MG4hD/
Seperti yang anda lihat saya punya beberapa cukup rumit hal-hal yang terjadi... tapi yang utama kicker mendapatkan ini untuk mencari yang baik adalah:
ELEMEN INDUK (UL): border-collapse: separate; border-spacing: .25em; margin-left: -.25em;
ELEMEN ANAK (LI): display: table-cell; vertical-align: middle;
HTML
CSS
Berikut Cian's solusi pengaturan perbatasan di tempat margin, saya menemukan anda dapat mengatur warna perbatasan untuk transparan untuk menghindari harus mencocokkan warna latar belakang. Bekerja di FF17, IE9, Chrome v23. Tampaknya seperti solusi yang layak disediakan anda don't juga perlu yang sebenarnya perbatasan.
Menggunakan padding bukan cara yang benar untuk melakukan hal itu, mungkin mengubah tampilan tapi itu bukan apa yang anda inginkan. Hal ini dapat memecahkan masalah anda.
Anda dapat menggunakan keduanya:
Tapi itu's baik untuk digunakan dengan %.
Jika padding isn't bekerja untuk anda, yang lain bekerja di sekitar ini untuk menambahkan kolom tambahan dan mengatur margin via lebar menggunakan
<colgroup>
. Tidak ada padding solusi di atas bekerja untuk saya karena saya sedang mencoba untuk memberikan border sel itu sendiri margin, dan ini adalah apa yang memecahkan masalah di akhir:Gaya perbatasan sel tabel menggunakan :nth-child jadi yang ke-2 dan kolom ketiga muncul untuk menjadi satu kolom.