Saya punya tabel sederhana yang digunakan untuk kotak masuk sebagai berikut:
<table border="1">
<tr>
<th>From</th>
<th>Subject</th>
<th>Date</th>
</tr>
Bagaimana cara mengatur lebar sehingga Dari dan Tanggal adalah 15% dari lebar halaman dan Subjek adalah 70%. Saya juga ingin tabel mengambil seluruh lebar halaman.
html
css
html-table
alamodey
sumber
sumber
width attribute
; itu menggunakan aCSS *style* width
, yang menggantikan atribut lebar <col>. (terlepas dari banyaknya orang yang memilih komentar itu !!)span="1"
berlebihan karena 1 adalah default.HTML:
CSS:
Praktik terbaik adalah menjaga HTML dan CSS Anda terpisah untuk duplikasi kode lebih sedikit, dan untuk pemisahan masalah (HTML untuk struktur dan semantik, dan CSS untuk presentasi).
Perhatikan bahwa, agar ini berfungsi di versi Internet Explorer yang lebih lama, Anda mungkin harus memberikan lebar spesifik meja Anda (misalnya, 900px). Peramban itu memiliki beberapa masalah dalam membuat elemen dengan dimensi persentase jika pembungkusnya tidak memiliki dimensi yang tepat.
sumber
Gunakan CSS di bawah ini, deklarasi pertama akan memastikan tabel Anda menempel pada lebar yang Anda berikan (Anda harus menambahkan kelas dalam HTML Anda):
sumber
table{table-layout:fixed};.from,.date{width:15%}
sudah cukup. Kecuali jika kelas digunakan pada elemen lain juga, menulisth.from
itu berlebihan dan dapat disingkat menjadi adil.from
.Cara alternatif dengan hanya satu kelas sambil mempertahankan gaya Anda dalam file CSS, yang bahkan berfungsi di IE7:
Baru-baru ini, Anda juga dapat menggunakan
nth-child()
pemilih dari CSS3 (IE9 +), di mana Anda baru saja meletakkan nr. dari masing-masing kolom ke dalam tanda kurung alih-alih merangkai mereka bersama dengan pemilih yang berdekatan. Seperti ini, misalnya:sumber
:nth-child
Solusi yang diajukan mengerikan dalam hal kinerja. Tidak ada alasan yang sah untuk menggunakannya (terutama dengan pemilih universal) dalam contoh ini di mana hanya ada tiga elemen (th
ataucol
) untuk gaya. Selain itu, Anda hanya perlu mengatur lebar ke dalamth
di baris pertama. Dalam.mytable td
contoh pertama adalah redundan.tr
dan kemudian milik mereka.mytable
. Jika Anda benar-benar ingin menggunakan "n" maka sesuatu seperti ini mungkin akan jauh lebih baik:.mytable th:nth-of-type(1) {width: 15%}; .mytable th:nth-of-type(2) {width: 70%};
. Juga tidak perlu menentukan lebar kolom ketiga dalam hal ini..mytable th+th{width: 70%}.mytable th+th+th{width:15%}
. Selektor "n" sendiri mungkin sangat berguna tetapi dalam kasus khusus ini (sebuah meja kecil dengan hanya 3 kolom) tidak benar-benar diperlukan. Bila menggunakantable-layout: fixed
Anda bahkan dapat melakukan hal ini:table{table-layout:fixed}th:first-child+th{width:70%}
.Ini adalah dua saran saya.
Menggunakan kelas. Tidak perlu menentukan lebar dua kolom lainnya karena mereka akan diatur ke masing-masing 15% secara otomatis oleh browser.
Tanpa menggunakan kelas. Tiga metode berbeda tetapi hasilnya identik.
Sebuah)
b)
c) Yang ini adalah favorit saya. Sama seperti b) tetapi dengan dukungan browser yang lebih baik.
sumber
Bergantung pada tubuh Anda (atau div yang membungkus meja Anda) 'pengaturan' Anda harus dapat melakukan ini:
Demo
sumber
sumber
Demo
sumber
Coba ini sebagai gantinya.
sumber
Jangan gunakan atribut perbatasan, gunakan CSS untuk semua kebutuhan gaya Anda.
Tapi menanamkan CSS seperti itu adalah praktik yang buruk - orang harus menggunakan kelas CSS, dan meletakkan aturan CSS dalam file CSS eksternal.
sumber
Berikut cara minimal lain untuk melakukannya di CSS yang berfungsi bahkan di browser lama yang tidak mendukung
:nth-child
dan penyeleksi sejenis: http://jsfiddle.net/3wZWt/ .HTML:
CSS:
sumber
Tambahkan colgroup setelah tag tabel Anda. Tentukan lebar dan jumlah kolom di sini. dan tambahkan tag tbody. Masukkan tr Anda di dalam tubuh.
sumber
sumber