Saya memiliki kode berikut:
<div class="table">
<div class="row">
<div class="cell">Cell</div>
<div class="cell">Cell</div>
</div>
<div class="row">
<div class="cell colspan2">Cell</div>
</div>
</div>
<style>
.table {
display: table;
}
.row {
display: table-row;
}
.cell {
display: table-cell;
}
.colspan2 {
/* What to do here? */
}
</style>
Cukup mudah. Bagaimana cara menambahkan colspan (atau setara dengan colspan) untuk elemen display: table-cell
?
display: table-cell
.Jawaban:
Setahu saya, kurangnya colspan / rowpan hanyalah salah satu keterbatasan
display:table
. Lihat posting ini:http://www.onenaught.com/posts/201/use-css-displaytable-for-layout
sumber
Karena OP tidak secara eksplisit mengatur bahwa solusi harus CSS murni, saya akan keras kepala dan memberikan solusi yang saya temukan hari ini, terutama karena itu jauh lebih elegan daripada memiliki tabel di dalam tabel.
Contoh sama dengan <tabel> dengan dua sel per baris dan dua baris, di mana sel di baris kedua adalah td dengan
colspan="2"
.Saya telah menguji ini dengan Iceweasel 20, Firefox 23 dan IE 10.
Aksi langsung (demo) di sini .
EDIT: Saya telah menyempurnakan kode agar lebih ramah printer, karena mereka membiarkan warna latar belakang secara default. Saya juga membuat rowpan-demo , terinspirasi oleh jawaban terlambat di sini.
sumber
<div class="cell"></div>
karya (setidaknya dengan Firefox). Dengan desain ini, Anda perlu mengisi dengan sel kosong. Misalnya, jika Anda memilikinya sehingga sel 7 adalah colspan = 3 dan sel 8 normal, Anda memerlukan dua sel kosong antara sel 7 dan 8. Kecuali Anda mendesain sesuatu yang lain (margin? Satu div yang disesuaikan?) . Selain itu, lebar 100px dan 5 sel membuat segalanya menjadi rumit, karena kata-kata meregangkan sel css, pengaturan luapan tampaknya tidak membuat perbedaan. Anda juga perlu menghitung ulangwidth
untukdiv.colspan>div>div
.div.colspan{border-left:1px solid red}
. Ini harus ditempatkan di suatu tempat di bawah aturan yang menetapkan div.colspan tanpa batas, atau akan ditolak.Solusi sederhana yang berhasil untuk saya di Chrome 30:
Colspan dapat ditiru dengan menggunakan
display: table
alih-alihdisplay: table-row
untuk baris:Satu-satunya kelemahan adalah bahwa sel baris yang ditumpuk tidak akan sejajar secara vertikal, karena berasal dari tabel yang berbeda.
sumber
Jika Anda mencari cara CSS langsung untuk mensimulasikan colspan, Anda dapat menggunakan
display: table-caption
.sumber
Cukup gunakan a
table
.tabel hanya disukai saat digunakan untuk tujuan tata letak.
Ini tampak seperti data tabel (baris / kolom data). Oleh karena itu saya akan merekomendasikan menggunakan file
table
.Lihat jawaban saya untuk pertanyaan ini untuk informasi lebih lanjut:
membuat hal yang sama dengan div sebagai tabel
sumber
tr
/td
spam bukanlah html tercantik tetapi apakah itu satu-satunya alasan? Semua orang mengatakan tabel tidak "dimaksudkan" untuk digunakan untuk pemformatan, tetapi html itu sendiri tidak "dimaksudkan" untuk melakukan setengah dari hal-hal yang kami anggap dapat diterima oleh standar saat ini, termasuk aplikasi web.Inilah salah satu cara untuk merentang kolom di CSS yang saya gunakan untuk situasi saya sendiri.
https://jsfiddle.net/mb8npttu/
sumber
.colspan
denganwhite-space: nowrap;
untuk mendapatkan hasil yang saya inginkan, tapi bekerja hebat.Ada solusi untuk membuat colspan menjadi lebar seluruh tabel. Anda tidak dapat menggunakan teknik ini untuk mengumpulkan sebagian dari tabel.
Kode:
Penjelasan:
Kami menggunakan posisi absolut pada colspan untuk membuatnya menjadi lebar penuh tabel. Tabel itu sendiri membutuhkan posisi relatif. Kami menggunakan dummycell untuk menjaga ketinggian baris, posisi absolut tidak mengikuti aliran dokumen.
Tentu saja Anda juga dapat menggunakan flexbox dan grid untuk mengatasi masalah ini belakangan ini.
sumber
CSS
HTML
Kode
sumber
Ini dapat dilakukan hanya dengan CSS murni dan memusatkan teks di sepanjang colspan "palsu".
Triknya adalah mengatur baris ke
position:relative
, lalu menempatkan "div kosong" dirow
tempat yang Anda inginkancolspan
(harus memilikinyaheight
agar berfungsi), setelcell
tempat konten berada sebagaidisplay:grid
, dan terakhir, terapkanposition:absolute
ke elemen di dalam sel (dan pusatkan karena Anda dapat memusatkan elemen absolut lainnya).sumber
Dengan menggunakan kelas div dan atribut CSS yang sesuai, Anda dapat meniru efek colspan dan rowpan yang diinginkan.
Inilah CSS
Berikut contoh HTMLnya
Dari apa yang saya lihat di kedua pertanyaan, dan sebagian besar tanggapan, adalah orang-orang tampaknya lupa bahwa dalam div tertentu yang bertindak sebagai "sel tabel" Anda dapat memasukkan div lain yang bertindak seperti tabel yang disematkan, dan memulai proses lebih.
*** Ini tidak glamor, tetapi berhasil bagi mereka yang mencari jenis pemformatan ini dan mereka ingin menghindari TABLE. Jika untuk TATA LETAK DATA, TABEL masih berfungsi di HTML5.
Semoga ini bisa membantu seseorang.
sumber
<table>
- hanya saja orang harus menghindari penggunaannya untuk pemformatan visual . Menggunakannya untuk menampilkan data terstruktur adalah tempat yang harus digunakan , kecuali sesuatu yang lain (seperti<ul>
, sebagai contoh belaka) lebih cocok untuk tugas tersebut. Kedua, bung, 4 tabel. Anda membawa pertanyaan menarik ke tabel (baris baris), tetapi jawaban Anda menangis karena digunakan<table>
. Saya harus melihat bagaimana solusi saya bekerja di sini ...Anda dapat menyetel posisi konten colspan sebagai "relatif" dan baris "absolut" seperti ini:
sumber
Anda tidak dapat mencapai ini saat ini.
AFAIK ini akan dicakup oleh Tabel CSS , spesifikasi yang tampaknya saat ini berada dalam status "sedang dalam proses".
sumber
Anda dapat mencoba solusi ini, di mana Anda dapat menemukan cara menerapkan colspan menggunakan div https://codepen.io/pkachhia/pen/JyWMxY
HTML:
CSS:
sumber
Meskipun ini adalah pertanyaan lama, saya ingin membagikan solusi saya untuk masalah ini.
Ini biola . Ini sebenarnya bukan rentang, dan solusinya agak hack, tetapi berguna dalam beberapa situasi. Diuji di Chrome 46, Firefox 31 dan IE 11.
Dalam kasus saya, saya harus menyajikan beberapa data non-tabular dengan cara tabular, menjaga lebar kolom dan memberi judul pada sub-bagian data.
sumber
Gunakan tabel bersarang untuk menyarangkan rentang kolom ...
Atau gunakan 2 tabel di mana rentang kolom mencakup seluruh baris ...
sumber