Saya telah melihat pertanyaan ini dan sedikit googled , tetapi sejauh ini tidak ada yang berhasil. Saya pikir ini 2010 sekarang (pertanyaan-pertanyaan / jawaban sudah tua dan, well, belum terjawab) dan kami memiliki CSS3! Apakah ada cara untuk mendapatkan div untuk mengisi lebar dan tinggi sel seluruh tabel menggunakan CSS?
Saya tidak tahu berapa lebar dan / atau tinggi sel di masa depan, dan mengatur lebar dan tinggi div hingga 100% tidak berfungsi.
Juga, alasan saya membutuhkan div adalah karena saya harus benar-benar memposisikan beberapa elemen di luar sel, dan position: relative
tidak berlaku untuk td
s, jadi saya perlu div pembungkus.
Jawaban:
Kode berikut berfungsi pada mode kompatibilitas IE8 8, IE 8 IE 8, dan Chrome (tidak diuji di tempat lain):
Anda mengatakan dalam pertanyaan asli Anda bahwa pengaturan
width
danheight
untuk100%
tidak bekerja, meskipun, yang membuat saya menduga bahwa ada beberapa aturan lainnya utama itu. Apakah Anda memeriksa gaya yang dihitung di Chrome atau Firebug untuk melihat apakah aturan lebar / tinggi benar-benar diterapkan?Edit
Betapa bodohnya saya! The
div
itu ukuran teks, tidak ketd
. Anda dapat memperbaikinya di Chrome dengan membuatnyadiv
display:inline-block
, tetapi tidak berfungsi di IE. Itu membuktikan lebih sulit ...sumber
tinggi div = 100% dalam sel tabel hanya akan berfungsi ketika tabel memiliki atribut tinggi itu sendiri.
UPD di FireFox Anda juga harus menetapkan
height=100%
nilai keTD
elemen induksumber
td
ketinggian yang mengandung100%
juga, itu harus bekerja di FF. Ini jawaban yang benar.Saya harus menetapkan tinggi palsu ke
<tr>
tinggi dan: mewarisi untuk<td>s
tr telah
height: 1px
(toh diabaikan)Kemudian atur td
height: inherit
Kemudian atur div ke
height: 100%
Ini bekerja untuk saya di IE edge dan Chrome:
sumber
td { height: 1px }
untuk Chrome.Jika alasan Anda ingin div 100% di dalam sel tabel adalah untuk dapat memiliki warna latar memanjang hingga ketinggian penuh tetapi masih bisa memiliki jarak antar sel, Anda bisa memberikan
<td>
sendiri warna latar belakang dan menggunakan CSS properti border-spacing untuk membuat margin antar sel.Namun, jika Anda benar-benar membutuhkan div ketinggian 100%, maka seperti yang disebutkan di sini, Anda harus menetapkan ketinggian tetap ke
<table>
atau menggunakan Javascript.sumber
border-spacing:5px
elemen "tabel" ed, tapi saya setuju, menggunakan DIV di dalam sel jauh lebih elegan dan secara keseluruhan lebih baik untuk dimiliki.border-collapse: separate
ke tabel, jika tidak maka tidak akan berpengaruh. +1border-collapse: separate
adalah default, tapi ya, itu tip yang bagus.Jadi, karena semua orang memposting solusi mereka dan tidak ada yang baik untuk saya, ini milik saya (diuji di Chrome & Firefox).
Fiddle: https://jsfiddle.net/nh6g5fzv/
sumber
Karena setiap browser lain (termasuk IE 7, 8 dan 9) menangani
position:relative
sel tabel dengan benar dan hanya Firefox yang salah, cara terbaik Anda adalah menggunakan shim JavaScript. Anda tidak perlu mengubah DOM Anda untuk satu browser yang gagal. Orang-orang menggunakan shims sepanjang waktu ketika IE mendapatkan sesuatu yang salah dan semua browser lainnya memperbaikinya.Berikut ini cuplikan dengan semua kode yang dianotasi. JavaScript, HTML, dan CSS menggunakan praktik desain web responsif dalam contoh saya, tetapi Anda tidak harus melakukannya jika tidak mau. (Responsif berarti menyesuaikan dengan lebar browser Anda.)
http://jsfiddle.net/mrbinky3000/MfWuV/33/
Berikut adalah kode itu sendiri, tetapi tidak masuk akal tanpa konteksnya, jadi kunjungi URL jsfiddle di atas. (Cuplikan lengkap juga memiliki banyak komentar di CSS dan Javascript.)
sumber
top:0; left: 0;
.Saya mengusulkan solusi menggunakan
percobaanFlexbox untuk mensimulasikan tata letak tabel yang memungkinkan elemen konten sel mengisi sel induknya secara vertikal:Demo
sumber
setelah beberapa hari mencari, saya menemukan kemungkinan perbaikan untuk masalah ini.
Bahasa Spanyol: El truco es establecer la Tabla, el TR y el TD tinggi: 100%. Esto hace kompatibel dengan FireFox y Chrome. Internet Explorer ignora eso, por pon queos la etiqueta blok TD como. Klik tombol untuk membuka Explorer untuk altura máxima.
Penjelasan bahasa Inggris: dalam kode komentar
sumber
jika
<table> <tr> <td> <div>
semua telahheight: 100%;
ditetapkan, maka div akan mengisi ketinggian sel dinamis di semua browser.sumber
Ok tidak ada yang menyebutkan ini jadi saya pikir saya akan memposting trik ini:
overflow: otomatis pada div kontainer di dalam sel melakukan trik untuk saya. Tanpanya div tidak menggunakan seluruh ketinggian.
sumber
Jika sel tabel adalah ukuran yang Anda inginkan, tambahkan saja kelas css ini dan tetapkan ke div Anda:
Jika Anda ingin sel tabel untuk mengisi induk juga, tetapkan kelas ke sel tabel juga. Saya harap ini membantu.
sumber
sedikit terlambat ke pesta tapi inilah solusi saya:
sumber
Karena saya tidak memiliki reputasi yang cukup untuk mengirim komentar, saya ingin menambahkan solusi lintas-browser lengkap yang menggabungkan pendekatan @Madeorsk dan @ Saadat dengan sedikit modifikasi! (Diuji pada Chrome, Firefox, Safari, IE, dan Edge pada 2/10/2020)
Namun, jika Anda seperti saya, Anda juga ingin mengontrol perataan vertikal, dan dalam hal ini, saya suka menggunakan flexbox:
sumber
Saya pikir solusi terbaik adalah menggunakan JavaScript.
Tetapi saya tidak yakin bahwa Anda perlu melakukan ini untuk menyelesaikan masalah Anda tentang penempatan elemen di bagian
<td>
luar sel. Untuk itu Anda bisa melakukan sesuatu seperti ini:Tidak sejalan tentu saja, tetapi dengan kelas dan id.
sumber
Untuk membuat tinggi: 100% berfungsi untuk div bagian dalam, Anda harus mengatur ketinggian untuk induk td. Untuk kasus khusus saya ini bekerja menggunakan ketinggian: 100%. Hal ini membuat bagian dalam div tinggi, sedangkan elemen lain dari tabel tidak memungkinkan td menjadi terlalu besar. Anda tentu saja dapat menggunakan nilai lain dari 100%
Jika Anda ingin juga membuat sel tabel memiliki ketinggian tetap sehingga tidak menjadi lebih besar berdasarkan konten (untuk membuat gulir div bagian dalam atau menyembunyikan overflow), saat itulah Anda tidak punya pilihan selain melakukan beberapa trik js. Induk td harus memiliki tinggi yang ditentukan dalam satuan non-relatif (bukan%). Dan Anda kemungkinan besar tidak punya pilihan selain menghitung ketinggian itu menggunakan js. Ini juga akan membutuhkan tata letak tabel: gaya tetap ditetapkan untuk elemen tabel
sumber
Saya mengalami masalah yang sama sering dan selalu hanya menggunakan
table-layout: fixed;
padatable
elemen danheight: 100%;
pada div batin.sumber
Saya akhirnya tidak menemukan apa pun yang akan berfungsi di semua browser saya dan semua mode rendering browser / DocTypes, kecuali untuk menggunakan jQuery. Jadi inilah yang saya pikirkan.
Bahkan memperhitungkan rowspan.
Diuji dalam IE11 (mode Tepi), FF42, Chrome44 +. Tidak diuji dengan tabel bersarang.
sumber
Anda bisa melakukannya seperti itu:
sumber
Jika elemen yang diposisikan dan elemen bapaknya tidak memiliki lebar dan tinggi, maka atur
dalam elemen ayahnya,
sumber
Ini mungkin tidak disarankan.
Saya menemukan solusi yang berfungsi jika div Anda tidak mengandung teks dan memiliki latar belakang yang seragam.
memberikan div tinggi dan lebar yang diinginkan, tetapi dengan kelemahan besar memiliki daftar item peluru. Karena div memiliki warna latar yang homogen, saya menyingkirkan peluru dengan gaya-gaya tersebut:
sumber
Saya tidak yakin apa yang ingin Anda lakukan tetapi Anda dapat mencoba yang ini:
<td width="661" valign="top"><div>Content for New Div Tag Goes Here</div></td>
sumber
Berikut ini harus bekerja. Anda harus mengatur ketinggian ke sel induk. https://jsfiddle.net/nrvd3vgd/
sumber
Coba ini:
sumber
Coba letakkan display: blok tabel di dalam sel
sumber
Saya tidak melihat di sini CSS-trick lama untuk < div > di dalam < td >. Oleh karena itu saya ingatkan: sederhanakan menetapkan beberapa nilai minimal untuk lebar , tetapi apa yang Anda butuhkan untuk lebar minimum . Sebagai contoh:
The td width 's, dalam kasus itu, terserah Anda.
sumber
Ini adalah Solusi untuk memperpanjang tinggi 100% dan lebar 100% dalam html
<td>
jika Anda menghapus baris pertama dalam kode Anda, Anda dapat memperbaikinya ...
karena doctype ini tidak mengizinkan dalam beberapa file untuk menggunakan 100% persen di dalamnya
<td>
, tetapi jika Anda menghapus baris ini, tubuh gagal memperluas latar belakang ke ketinggian 100% dan lebar 100%, jadi saya menemukan iniDOCTYPE
yang menyelesaikan masalahDOCTYPE ini memungkinkan Anda memperluas latar belakang di tubuh Anda dengan tinggi 100% dan lebar 100%, dan memungkinkan Anda mengambil semua tinggi 100% dan lebar 100% ke dalam
<td>
sumber