Bagaimana saya bisa menentukan td
tag harus menjangkau semua kolom (ketika jumlah kolom yang tepat dalam tabel akan variabel / sulit untuk menentukan kapan HTML sedang dirender)? w3schools menyebutkan Anda dapat menggunakan colspan="0"
, tetapi tidak disebutkan dengan jelas browser apa yang mendukung nilai tersebut (IE 6 ada dalam daftar kami untuk mendukung).
Tampaknya pengaturan colspan
ke nilai yang lebih besar daripada jumlah teoritis kolom yang mungkin Anda miliki akan berfungsi, tetapi tidak akan berfungsi jika Anda telah table-layout
menyetel ke fixed
. Apakah ada kerugian menggunakan tata letak otomatis dengan jumlah yang besar colspan
? Apakah ada cara yang lebih tepat untuk melakukan ini?
Jawaban:
Saya memiliki IE 7.0, Firefox 3.0 dan Chrome 1.0
Atribut colspan = "0" dalam TD TIDAK mencakup semua TD di salah satu browser di atas .
Mungkin tidak direkomendasikan sebagai praktik markup yang tepat, tetapi jika Anda memberikan nilai colspan yang lebih tinggi daripada total, tidak mungkin. kolom di baris lain , maka TD akan span semua kolom.
Ini TIDAK berfungsi ketika properti CSS tata letak tabel diatur ke diperbaiki.
Sekali lagi, ini bukan solusi yang sempurna tetapi tampaknya bekerja di 3 versi browser yang disebutkan di atas ketika properti CSS tata letak-tabel otomatis . Semoga ini membantu.
sumber
colspan="42"
rentang seluruh rentang. Jelas ini adalah masalah untuk> 42 kolom, tetapi ini adalah salah satu dari sedikit angka ajaib yang saya setujui.Gunakan ini saja:
Ini berfungsi pada Firefox 3.6, IE 7 dan Opera 11! (dan saya kira pada orang lain, saya tidak bisa mencoba)
Peringatan: sebagaimana disebutkan dalam komentar di bawah ini sebenarnya sama dengan
colspan="100"
. Oleh karena itu, solusi ini akan dipecah untuk tabel dengan csstable-layout: fixed
, atau lebih dari 100 kolom.sumber
colspan="100%"
artinya tepatcolspan="100"
.Jika Anda ingin membuat sel 'judul' yang merentang semua kolom, sebagai tajuk untuk tabel Anda, Anda mungkin ingin menggunakan tag teks ( http://www.w3schools.com/tags/tag_caption.asp / https: // developer.mozilla.org/en-US/docs/Web/HTML/Element/caption) Elemen ini dimaksudkan untuk tujuan ini. Itu berperilaku seperti div, tetapi tidak menjangkau seluruh lebar induk tabel (seperti div akan melakukan di posisi yang sama (jangan coba ini di rumah!)), Sebagai gantinya, itu mencakup lebar meja. Ada beberapa masalah lintas-browser dengan batas dan semacamnya (dapat diterima untuk saya). Bagaimanapun, Anda dapat membuatnya terlihat sebagai sel yang membentang semua kolom. Di dalam, Anda dapat membuat baris dengan menambahkan elemen div. Saya tidak yakin apakah Anda bisa memasukkannya di antara tr-elemen, tapi itu akan menjadi retasan saya kira (jadi tidak disarankan). Pilihan lain akan bermain-main dengan divs mengambang, tapi itu yuck!
Melakukan
Jangan
sumber
Sebagai jawaban parsial, inilah beberapa poin tentang
colspan="0"
, yang disebutkan dalam pertanyaan.tl; versi dr:
colspan="0"
tidak berfungsi di peramban apa pun. W3Schools salah (seperti biasa). HTML 4 mengatakan bahwacolspan="0"
seharusnya menyebabkan kolom untuk span seluruh tabel, tetapi tidak ada yang mengimplementasikan ini dan itu dihapus dari spec setelah HTML 4.Beberapa detail dan bukti:
Semua browser utama memperlakukannya setara dengan
colspan="1"
.Inilah demo yang menunjukkan ini; coba di browser yang Anda suka.
HTML 4 spek (sekarang tua dan usang, tapi kembali saat ketika pertanyaan ini diminta) tidak memang mengatakan bahwa
colspan="0"
harus diperlakukan sebagai mencakup semua kolom:Namun, sebagian besar browser tidak pernah menerapkan ini.
HTML 5.0 (membuat rekomendasi kandidat pada tahun 2012), standar hidup WhatWG HTML (standar dominan saat ini), dan spesifikasi W3 HTML 5 terbaru semuanya tidak mengandung kata-kata yang dikutip dari HTML 4 di atas, dan dengan suara bulat menyetujui bahwa angka
colspan
0 tidak diperbolehkan, dengan kata-kata ini yang muncul dalam ketiga spesifikasi:Sumber:
Klaim berikut dari halaman W3Schools yang ditautkan dalam pertanyaan ini adalah - setidaknya saat ini - sepenuhnya salah:
dan
Jika Anda belum mengetahui bahwa W3Schools umumnya dianggap hina oleh pengembang web karena ketidakakuratannya yang sering terjadi, anggap ini pelajaran mengapa.
sumber
Untuk IE 6, Anda ingin menyamakan colspan dengan jumlah kolom di tabel Anda. Jika Anda memiliki 5 kolom, maka Anda akan menginginkan:
colspan="5"
.Alasannya adalah bahwa IE menangani colspans secara berbeda, menggunakan spesifikasi HTML 3.2:
Bug ini didokumentasikan dengan baik .
sumber
colspan
s harus bilangan bulat positif , yang membuatcolspan=0
ilegal; tidak ada tempat yang secara eksplisit menentukan yangcolspan=0
harus ditanganicolspan=1
(walaupun saya yakin itulah sebenarnya yang dilakukan IE 6). Juga, kutipan tidak (lagi?) Di mana saja di halaman forum yang Anda tautkan, dan sebagian besar hasil pencarian Google (sekarang?) Adalah tentang bug IE 6 colspan yang sama sekali berbeda .Jika Anda menggunakan jQuery (atau tidak keberatan menambahkannya), ini akan menyelesaikan pekerjaan dengan lebih baik daripada peretasan ini.
Untuk memudahkan implementasi, saya menghias setiap td / th saya perlu disesuaikan dengan kelas seperti "maxCol" maka saya dapat melakukan hal berikut:
Jika Anda menemukan implementasi yang tidak berhasil, jangan banting jawaban, jelaskan dalam komentar dan saya akan memperbarui jika dapat dicakup.
sumber
Solusi lain yang berfungsi tetapi jelek:, di
colspan="100"
mana 100 adalah nilai yang lebih besar dari total kolom yang Anda butuhkancolspan
.Menurut W3C,
colspan="0"
opsi hanya valid denganCOLGROUP
tag.sumber
<td>
s untuk memilikicolspan="0"
(lihat w3.org/TR/REC-html40/struct/tables.html#adef-colspan ), sedangkan HTML 5.0 tidak memungkinkanspan="0"
padacolgroup
(lihat w3.org/TR/html50/tabular- data.html # attr-colgroup-span yang menyatakan bahwa "nilai atribut konten span ['] harus bilangan bulat non-negatif yang valid lebih besar dari nol." ).Di bawah ini adalah solusi es6 ringkas (mirip dengan jawaban Rainbabba tetapi tanpa jQuery).
sumber
Hanya ingin menambahkan pengalaman dan jawaban saya untuk ini.
Catatan: Ini hanya berfungsi ketika Anda memiliki yang telah ditentukan
table
dantr
denganth
, tetapi memuat di baris Anda (misalnya melalui AJAX) secara dinamis.Dalam hal ini Anda dapat menghitung jumlah
th
ada di baris tajuk pertama Anda, dan menggunakannya untuk merentangkan seluruh kolom.Ini dapat diperlukan ketika Anda ingin menyampaikan pesan ketika tidak ada hasil yang ditemukan.
Sesuatu seperti ini di jQuery, di mana
table
tabel input Anda:sumber
th
s belum tentu jumlah kolom, karena beberapa di antaranya mungkin memiliki satucolspan
set, jadi ini tidak akan berfungsi seperti yang ditulis untuk semua orang.Mungkin saya seorang pemikir langsung tetapi saya agak bingung, tidak tahukah Anda nomor kolom meja Anda?
By the way IE6 tidak menghormati colspan = "0", dengan atau tanpa grup yang ditentukan. Saya juga mencoba menggunakan thead dan th untuk menghasilkan grup kolom tetapi browser tidak mengenali bentuk colspan = "0".
Saya sudah mencoba dengan Firefox 3.0 di windows dan linux dan hanya bekerja dengan doctype yang ketat.
Anda dapat memeriksa tes pada beberapa bowser di
http://browsershots.org/http://hsivonen.iki.fi/test/wa10/tables/colspan-0.html
Saya menemukan halaman tes di sini http://hsivonen.iki.fi/test/wa10/tables/colspan-0.html
Sunting: Harap salin dan tempel tautan, pemformatan tidak akan menerima bagian protokol ganda dalam tautan (atau saya tidak begitu pintar untuk memformatnya dengan benar).
sumber
Menurut spesifikasi
colspan="0"
harus menghasilkan lebar tabel td.Namun, ini hanya berlaku jika meja Anda memiliki lebar! Tabel mungkin berisi baris dengan lebar berbeda. Jadi, satu-satunya kasus bahwa penyaji mengetahui lebar tabel jika Anda mendefinisikan grup ! Jika tidak, hasil dari colspan = "0" tidak dapat ditentukan ...
http://www.w3.org/TR/REC-html40/struct/tables.html#adef-colspan
Saya tidak dapat mengujinya di browser lama, tetapi ini adalah bagian dari spesifikasi sejak 4.0 ...
sumber
colspan
0 dibuat ilegal. Baik w3.org/TR/html50/… (spec HTML 5.0) dan html.spec.whatwg.org/multipage/… (Standar WhatWG HTML Living Standard) menyatakan bahwacolspan
harus lebih besar dari nol. Dan seperti dicatat dalam jawaban lain di sini, browser tidak pernah benar-benar menerapkan perilaku HTML 4 lama yang Anda kutip.coba gunakan "colSpan" bukan "colspan". IE suka versi camelBack ...
sumber