Saya memiliki dua divs berdampingan. Saya ingin ketinggian mereka sama, dan tetap sama jika salah satu dari mereka mengubah ukuran. Saya tidak tahu yang satu ini. Ide ide?
Untuk memperjelas pertanyaan saya yang membingungkan, saya ingin kedua kotak selalu berukuran sama, jadi jika salah satu tumbuh karena teks ditempatkan ke dalamnya, yang lain harus tumbuh agar sesuai dengan ketinggian.
<div style="overflow: hidden">
<div style="border:1px solid #cccccc; float:left; padding-bottom:1000px; margin-bottom:-1000px">
Some content!<br/>
Some content!<br/>
Some content!<br/>
Some content!<br/>
Some content!<br/>
</div>
<div style="border:1px solid #cccccc; float:left; padding-bottom:1000px; margin-bottom:-1000px">
Some content!
</div>
</div>
html
css
html-table
flexbox
NibblyPig
sumber
sumber
Jawaban:
Flexbox
Dengan flexbox itu adalah deklarasi tunggal:
Awalan mungkin diperlukan untuk browser yang lebih lama, lihat dukungan browser .
sumber
flex-direction: column
: jsfiddle.net/sdsgW/1Ini adalah masalah umum yang banyak ditemui, tetapi untungnya beberapa pikiran cerdas seperti Ed Eliot di blognya telah memposting solusi mereka secara online.
Pada dasarnya apa yang Anda lakukan adalah membuat kedua div / kolom sangat tinggi dengan menambahkan
padding-bottom: 100%
dan kemudian "menipu browser" untuk berpikir mereka tidak menggunakan yang tinggimargin-bottom: -100%
. Lebih baik dijelaskan oleh Ed Eliot di blog-nya, yang juga mencakup banyak contoh.sumber
padding: 7px 10px
, jikapadding-bottom
properti diatur ke 100%? (PSoverflow:hidden
juga diperlukan untuk saya dirow
)Ini adalah area di mana CSS tidak pernah benar-benar memiliki solusi - Anda turun menggunakan
<table>
tag (atau berpura-pura menggunakandisplay:table*
nilai-nilai CSS ), karena itulah satu-satunya tempat di mana "menjaga banyak elemen dengan ketinggian yang sama" diterapkan.Ini berfungsi di semua versi Firefox, Chrome dan Safari, Opera dari setidaknya versi 8, dan di IE dari versi 8.
sumber
table
bukantable-row
?width
untuk div Anda, kecuali jika Anda menambahkandisplay: table
pada elemen induk, yang akan mengacaukan segalanya.Menggunakan jQuery
Menggunakan jQuery, Anda dapat melakukannya dalam skrip satu baris super sederhana.
Menggunakan CSS
Ini sedikit lebih menarik. Teknik ini disebut Faux Columns . Kurang lebih Anda tidak benar-benar mengatur ketinggian sebenarnya menjadi sama, tetapi Anda memasang beberapa elemen grafis sehingga mereka terlihat sama tinggi.
sumber
Saya terkejut bahwa tidak ada yang menyebutkan teknik Kolom Absolut (sangat tua tapi dapat diandalkan): http://24ways.org/2008/absolute-columns/
Menurut pendapat saya, itu jauh lebih unggul daripada kedua Kolom Faux dan teknik One True Layout.
Gagasan umum adalah bahwa elemen dengan
position: absolute;
posisi akan terhadap elemen induk terdekat yang dimilikiposition: relative;
. Anda kemudian meregangkan kolom untuk mengisi ketinggian 100% dengan menetapkan atop: 0px;
danbottom: 0px;
(atau piksel / persentase apa pun yang Anda butuhkan.) Berikut ini sebuah contoh:sumber
Anda dapat menggunakan Jquery's Equal Heights Plugin untuk menyelesaikannya, plugin ini membuat semua div dengan ketinggian yang sama persis dengan yang lain. Jika salah satu dari mereka tumbuh dan yang lain juga akan tumbuh.
Berikut contoh implementasinya
Ini tautannya
http://www.cssnewbie.com/equalheights-jquery-plugin/
sumber
Anda bisa menggunakan Kolom Faux .
Pada dasarnya ia menggunakan gambar latar belakang dalam DIV yang mengandung untuk mensimulasikan dua DIVs sama tinggi. Menggunakan teknik ini juga memungkinkan Anda untuk menambahkan bayangan, sudut bundar, batas khusus atau pola funky lainnya ke wadah Anda.
Hanya bekerja dengan kotak dengan lebar tetap.
Diuji dengan baik dan berfungsi dengan baik di setiap browser.
sumber
Hanya melihat utas ini saat mencari jawaban ini. Saya baru saja membuat fungsi jQuery kecil, semoga ini membantu, berfungsi seperti pesona:
JAVASCRIPT
HTML
sumber
Cara grid CSS
Cara modern untuk melakukan ini (yang juga menghindari keharusan menyatakan a
<div class="row"></div>
-wrapper di setiap dua item) adalah menggunakan kisi-kisi CSS. Ini juga memberi Anda kontrol mudah pada celah antara baris / kolom item Anda.sumber
Pertanyaan ini ditanyakan 6 tahun yang lalu, tetapi masih layak untuk memberikan jawaban sederhana dengan flexbox tata letak saat ini.
Cukup tambahkan CSS berikut ke ayah
<div>
, itu akan berhasil.Dua baris pertama menyatakan itu akan ditampilkan sebagai flexbox. Dan
flex-direction: row
memberi tahu browser bahwa anak-anaknya akan ditampilkan dalam kolom. Danalign-items: stretch
akan memenuhi persyaratan bahwa semua elemen anak akan meregang ke ketinggian yang sama itu salah satunya menjadi lebih tinggi.sumber
I'd like both boxes to always be the same size, so if one grows because text is placed into it, the other one should grow to match the height.
yang tidak disebutkan dalam jawaban yang diterima ... Saya baru saja menyelesaikannya di sini. Mungkin saya harus mengomentari jawaban yang diterima?align-items: stretch;
flex itu default?Menggunakan CSS Flexbox dan ketinggian minimum bekerja untuk saya
Katakanlah Anda memiliki wadah dengan dua div di dalamnya dan Anda ingin kedua div tersebut memiliki ketinggian yang sama.
Anda akan mengatur ' display: flex ' pada wadah serta ' align-items: stretch '
Maka cukup beri anak divs ' ketinggian min ' 100%
Lihat kode di bawah ini
sumber
Jika Anda tidak keberatan salah satu dari
div
mereka menjadi master dan mendikte ketinggian untuk keduanyadiv
ada ini:Biola
Apa pun yang terjadi,
div
di sebelah kanan akan melebar atau menindih & melimpah agar sesuai dengan ketinggiandiv
di sebelah kiri.Kedua
div
harus merupakan anak langsung dari sebuah wadah, dan harus menentukan lebarnya di dalamnya.CSS yang relevan:
sumber
Saya suka menggunakan elemen semu untuk mencapai ini. Anda dapat menggunakannya sebagai latar belakang konten dan biarkan mereka mengisi ruang.
Dengan pendekatan ini Anda dapat mengatur margin antara kolom, batas, dll.
sumber
Itu Fiddle
HTML
CSS
sumber
Saya telah mencoba hampir semua metode yang disebutkan di atas, tetapi solusi flexbox tidak akan berfungsi dengan benar dengan Safari, dan metode tata letak kotak tidak akan berfungsi dengan benar dengan versi IE yang lebih lama.
Solusi ini cocok untuk semua layar dan kompatibel lintas-browser:
Metode di atas akan sama dengan tinggi sel, dan untuk layar yang lebih kecil seperti ponsel atau tablet, kita dapat menggunakan
@media
metode yang disebutkan di atas.sumber
Anda dapat menggunakan jQuery untuk mencapai ini dengan mudah.
CSS
jQuery
HTML
Anda harus memasukkan jQuery
sumber
<div>
memiliki konten dinamis. Alasan saya katakan adalah jika<div class="right">
memiliki lebih banyak konten maka masalah lainnya muncul.Saya tahu ini sudah lama tapi saya tetap membagikan solusi saya. Ini adalah trik jQuery.
--- HTML
---- CSS
--- JQUERY
sumber
Ini adalah plugin jQuery yang menetapkan tinggi yang sama untuk semua elemen pada baris yang sama (dengan memeriksa offset.top elemen). Jadi, jika jQuery array Anda mengandung elemen dari lebih dari satu baris (offset.top berbeda), setiap baris akan memiliki tinggi yang terpisah, berdasarkan elemen dengan tinggi maksimum di baris itu.
};
sumber
sumber
Saya mengalami masalah yang sama jadi saya membuat fungsi kecil ini menggunakan jquery karena jquery adalah bagian dari setiap aplikasi web saat ini.
Anda dapat memanggil fungsi ini pada acara siap halaman
Saya harap ini berhasil untuk Anda.
sumber
Saya baru-baru ini menemukan ini dan tidak terlalu menyukai solusi, jadi saya mencoba bereksperimen.
.mydivclass {inline-block; vertical-align: middle; width: 33%;}
sumber
Apa yang saya lakukan di sini adalah mengubah tinggi ke min-tinggi dan memberinya nilai tetap. jika salah satu dari mereka diubah ukurannya, yang lain akan tetap sama tingginya. tidak yakin apakah ini yang Anda inginkan
sumber