Saya memiliki sedikit masalah aneh yang saat ini saya pecahkan menggunakan a table
, lihat di bawah. Pada dasarnya, saya ingin dua div mengambil 100% dari lebar yang tersedia, tetapi hanya mengambil ruang vertikal sebanyak yang dibutuhkan (yang tidak terlalu jelas dari gambar). Keduanya harus selalu memiliki tinggi yang sama persis dengan garis kecil di antara keduanya, seperti yang ditunjukkan.
(sumber: pici.se )
Ini semua sangat mudah dilakukan menggunakan table
, yang saat ini saya lakukan. Namun, saya tidak terlalu tertarik pada solusinya, karena secara semantik ini sebenarnya bukan tabel.
html
css
html-table
Deniz Dogan
sumber
sumber
Jawaban:
Anda bisa mendapatkan kolom dengan tinggi yang sama di CSS dengan menerapkan bantalan bawah dalam jumlah besar, margin negatif bawah dengan jumlah yang sama dan mengelilingi kolom dengan div yang memiliki luapan tersembunyi. Menengahkan teks secara vertikal sedikit lebih rumit, tetapi ini akan membantu Anda.
Saya pikir itu layak untuk disebutkan
jawaban sebelumnya oleh streetpc memiliki html yang tidak valid, doctype-nya adalah XHTML dan ada tanda kutip tunggal di sekitar atribut. Yang juga perlu diperhatikan adalah ituAnda tidak memerlukan elemen tambahanclear
untuk membersihkan float internal wadah. Jika Anda menggunakan overflow hidden ini menghapus float di semua browser non-IE dan kemudian menambahkan sesuatu untuk memberikan hasLayout seperti width atau zoom: 1 akan menyebabkan IE menghapus float internalnya.Saya telah menguji ini di semua browser modern FF3 + Opera9 + Chrome Safari 3+ dan IE6 / 7/8. Ini mungkin tampak seperti trik yang jelek tetapi berhasil dengan baik dan saya sering menggunakannya dalam produksi.
Saya harap ini membantu.
sumber
Ini tahun 2012 + n, jadi jika Anda tidak lagi peduli dengan IE6 / 7
display:table
,,display:table-row
dandisplay:table-cell
bekerja di semua browser modern:http://www.456bereastreet.com/archive/200405/equal_height_boxes_with_css/
Pembaruan 2016-06-17: Jika menurut Anda waktunya telah tiba
display:flex
, periksa Flexbox Froggy .sumber
display: flex
?Anda harus menggunakan flexbox untuk melakukannya. Ini tidak didukung di IE8 dan IE9 dan hanya dengan awalan -ms di IE10, tetapi semua browser lain mendukungnya. Untuk prefiks vendor, Anda juga harus menggunakan autoprefixer .
sumber
Anda bisa mendapatkan ini bekerja dengan js:
sumber
Ini adalah masalah klasik di CSS. Sebenarnya tidak ada solusi untuk ini.
Artikel dari A List Apart ini adalah bacaan yang bagus tentang masalah ini. Ini menggunakan teknik yang disebut "kolom palsu", berdasarkan memiliki satu gambar latar belakang ubin vertikal pada elemen yang berisi kolom yang menciptakan ilusi kolom dengan panjang yang sama. Karena berada di pembungkus elemen terapung, ini merupakan elemen terpanjang.
Editor A List Apart memiliki catatan ini di artikel:
Teknik ini membutuhkan desain lebar yang sepenuhnya statis yang tidak bekerja dengan baik dengan tata letak cair dan teknik desain responsif yang populer saat ini untuk situs lintas perangkat. Untuk situs lebar statis, bagaimanapun, ini adalah pilihan yang dapat diandalkan.
sumber
Saya memiliki masalah serupa dan menurut saya pilihan terbaik adalah menggunakan sedikit javascript atau jquery.
Anda bisa mendapatkan div yang diinginkan memiliki tinggi yang sama dengan mendapatkan nilai div tertinggi dan menerapkan nilai itu ke semua div lainnya. Jika Anda memiliki banyak div dan banyak solusi, saya sarankan untuk menulis sedikit kode js sebelumnya untuk mengetahui div mana yang paling tinggi dan kemudian gunakan nilainya.
Dengan jquery dan 2 divs sangat sederhana, berikut ini contoh kode:
$('.smaller-div').css('height',$('.higher-div').css('height'));
Dan akhirnya, ada 1 hal terakhir. Padding mereka (atas dan bawah) harus sama! Jika salah satu memiliki bantalan yang lebih besar, Anda perlu menghilangkan perbedaan bantalan.
sumber
Sejauh yang saya tahu, Anda tidak dapat melakukan ini menggunakan implementasi CSS saat ini. Untuk membuat dua kolom dengan tinggi yang sama Anda membutuhkan JS.
sumber
Ini berfungsi untuk saya di IE 7, FF 3.5, Chrome 3b, Safari 4 (Windows).
Juga berfungsi di IE 6 jika Anda menghapus komentar pada div yang lebih jelas di bagian bawah. Mengedit : seperti kata Natalie Downe, Anda bisa menambahkan
width: 100%;
untuk#container
gantinya.Saya tidak tahu cara CSS untuk memusatkan teks secara vertikal di div kanan jika div tidak memiliki tinggi tetap. Jika ya, Anda dapat menyetel
line-height
ke nilai yang sama dengan tinggi div dan meletakkan div bagian dalam yang berisi teks Andadisplay: inline; line-height: 110%
.sumber
Dengan menggunakan Javascript, Anda dapat membuat dua tag div memiliki tinggi yang sama. Div yang lebih kecil akan menyesuaikan tingginya sama dengan tag div tertinggi menggunakan kode yang ditunjukkan di bawah ini:
Dengan "left" dan "right" menjadi id dari tag div.
sumber
Dengan menggunakan properti css -> display: table-cell
sumber
Menggunakan JS, gunakan
data-same-height="group_name"
di semua elemen yang Anda ingin memiliki ketinggian yang sama .Contoh: https://jsfiddle.net/eoom2b82/
Kode:
sumber
Saya perlu melakukan sesuatu yang serupa, inilah implementasinya. Untuk merekap tujuannya, itu adalah untuk memiliki 2 elemen yang mengambil lebar wadah induk tertentu, dan tingginya hanya setinggi yang seharusnya. Pada dasarnya tinggi sama dengan tinggi maksimal dari jumlah konten terbesar, tetapi wadah lain sedang menyiram.
html
css
sumber
Beberapa tahun yang lalu,
float
properti yang digunakan untuk memecahkan masalah dengantable
pendekatan menggunakandisplay: table;
dandisplay: table-row;
dandisplay: table-cell;
.Tapi sekarang dengan properti flex, Anda bisa menyelesaikannya dengan 3 baris kode:
display: flex;
danflex-wrap: wrap;
danflex: 1 0 50%;
1 0 50%
adalahflex
nilai yang kami berikan:flex-grow flex-shrink flex-basis
masing-masing. Ini adalah pintasan yang relatif baru di flexbox untuk menghindari mengetiknya satu per satu. Saya harap ini membantu seseorang di luar sanasumber