Saya menggunakan Bootstrap. Bagaimana saya bisa membuat tiga kolom sama tingginya?
Ini adalah screenshot dari masalahnya. Saya ingin kolom biru dan merah sama tingginya dengan kolom kuning.
Ini kodenya:
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<div class="container-fluid">
<div class="row">
<div class="col-xs-4 panel" style="background-color: red">
some content
</div>
<div class="col-xs-4 panel" style="background-color: yellow">
catz
<img width="100" height="100" src="https://lorempixel.com/100/100/cats/">
</div>
<div class="col-xs-4 panel" style="background-color: blue">
some more content
</div>
</div>
</div>
css
twitter-bootstrap
Richard
sumber
sumber
.row
tidak adaflex-wrap: wrap;
. Berikut ini contohnya yang bekerja dengan responsif: codepen.io/bootstrapped/details/RrabNeJawaban:
Solusi 4 menggunakan Bootstrap 4
Bootstrap 4 menggunakan Flexbox sehingga tidak perlu untuk CSS tambahan.
Demo
Solusi 1 menggunakan margin negatif (tidak merusak responsif)
Demo
Solusi 2 menggunakan tabel
Demo
Solusi 3 menggunakan flex ditambahkan Agustus 2015. Komentar yang diposting sebelum ini tidak berlaku untuk solusi ini.
Demo
sumber
flex-wrap: wrap;
contoh ketiga untuk mengaktifkan daya tanggap. Anda juga ingin menambahkan tampilan: flex; arah fleksibel: kolom; ke kelas kolom. Jika Anda akan menggunakan .row dan bukan kelas khusus, Anda harus menyediakan opsi mundur untuk peramban yang lebih lama mengubah kembali tampilan. Ini sebuah contohPerbarui 2020
Pendekatan terbaik untuk Bootstap 3.x - menggunakan CSS flexbox (dan membutuhkan CSS minimal) ..
Bootstrap sama dengan tinggi flexbox
Untuk hanya menerapkan flexbox ketinggian yang sama di breakpoints spesifik (responsif), gunakan kueri media. Misalnya, di sini
sm
(768px) dan lebih tinggi:Solusi ini juga berfungsi dengan baik untuk beberapa baris (pembungkus kolom):
https://www.bootply.com/gCEXzPMehZ
Penanganan lainnya
Opsi-opsi ini akan direkomendasikan oleh orang lain, tetapi bukan ide yang baik untuk desain responsif. Ini hanya berfungsi untuk tata letak baris tunggal tanpa pembungkus kolom.
1) Menggunakan margin negatif besar & padding
2) Menggunakan display: table-cell (solusi ini juga memengaruhi grid responsif, sehingga permintaan @media dapat digunakan untuk hanya menerapkan
table
tampilan pada layar yang lebih luas sebelum kolom menumpuk secara vertikal)Bootstrap 4
Flexbox sekarang digunakan secara default di Bootstrap 4 sehingga tidak perlu CSS tambahan untuk membuat kolom dengan tinggi yang sama: http://www.codeply.com/go/IJYRI4LPwU
Contoh:
sumber
Tidak perlu JavaScript. Cukup tambahkan kelas
.row-eq-height
ke yang sudah ada.row
seperti ini:Kiat: jika Anda memiliki lebih dari 12 kolom di baris Anda, kisi bootstrap akan gagal membungkusnya. Jadi tambahkan yang baru
div.row.row-eq-height
setiap 12 kolom baru.Kiat: Anda mungkin perlu menambahkan
ke html Anda
sumber
Untuk menjawab pertanyaan Anda, inilah yang perlu Anda lihat demo responsif penuh dengan prefiks css :
Untuk menambahkan dukungan untuk flex konten thumbnail dalam kolom flex seperti screenshot di atas juga tambahkan ini ... Catatan Anda juga dapat melakukan ini dengan panel:
Sementara flexbox tidak berfungsi di IE9 dan di bawah ini Anda dapat menggunakan demo dengan mundur menggunakan tag kondisional dengan sesuatu seperti javascript kisi sebagai polyfill:
Adapun dua contoh lainnya dalam jawaban yang diterima ... Tabel demo adalah ide yang layak tetapi sedang dilaksanakan salah. Menerapkan CSS pada kelas-kelas kolom bootstrap secara khusus tanpa ragu akan memecah kerangka kerja grid sepenuhnya. Anda harus menggunakan pemilih khusus untuk satu dan dua gaya tabel tidak boleh diterapkan pada
[class*='col-']
lebar yang telah ditentukan. Metode ini HANYA harus digunakan jika Anda menginginkan tinggi yang sama DAN kolom dengan lebar yang sama. Ini tidak dimaksudkan untuk tata letak lain dan TIDAK responsif. Namun kami dapat membuatnya mundur pada tampilan seluler ...Terakhir, demo pertama dalam jawaban yang diterima yang mengimplementasikan versi satu tata letak yang benar adalah pilihan yang baik untuk beberapa situasi, tetapi tidak cocok untuk kolom bootstrap. Alasan untuk ini adalah bahwa semua kolom meluas ke ketinggian wadah. Jadi ini juga akan memecah respons karena kolom tidak meluas ke elemen di sebelahnya, tetapi seluruh wadah. Metode ini juga tidak akan memungkinkan Anda untuk menerapkan margin bawah ke baris lebih lama dan juga akan menyebabkan masalah lain seperti menggulir ke tag jangkar.
Untuk kode lengkap, lihat Codepen yang secara otomatis mengawali kode flexbox.
sumber
row:after, row:before
tampilan memiliki: set tabel yang tampaknya Safari tidak suka.Anda hanya menampilkan satu baris sehingga use case Anda mungkin terbatas hanya untuk itu. Jika Anda memiliki beberapa baris, plugin ini - github Javascript-grids - berfungsi dengan sempurna! Itu membuat setiap panel meluas ke panel tertinggi, memberikan setiap baris berpotensi ketinggian berbeda berdasarkan panel tertinggi di baris itu. Ini adalah solusi jquery vs css, tetapi ingin merekomendasikannya sebagai pendekatan alternatif.
sumber
Jika Anda ingin membuat ini berfungsi di browser apa pun, gunakan javascript:
sumber
.ready()
bukan waktu yang tepat untuk menyebutnya - itu harus dipanggil.load()
window.onload = function() {...function content above...}
sebagai gantinya. Ini bekerja lebih baik.Saya mencoba banyak saran yang dibuat di utas ini dan di halaman lain tetapi tidak ada solusi yang bekerja 100% di setiap browser.
Jadi saya bereksperimen cukup lama dan menghasilkan ini. Solusi lengkap untuk kolom Bootstrap Equal Height dengan bantuan flexbox dengan hanya 1 kelas. Ini berfungsi di semua browser utama IE10 +.
CSS:
HTML:
Untuk mendukung lebih banyak versi IE, Anda dapat, misalnya, menggunakan https://github.com/liabru/jquery-match-height dan menargetkan semua kolom anak dari
.equal-cols
. Seperti ini:Tanpa polyfill ini kolom akan berperilaku seperti kolom Bootstrap biasa sehingga merupakan fallback yang cukup bagus.
sumber
Anda dapat menggunakan inline-flex juga yang berfungsi cukup baik dan mungkin sedikit lebih bersih daripada memodifikasi setiap elemen baris dengan CSS.
Untuk proyek saya, saya ingin setiap baris yang elemen anak-anak memiliki batas sama tingginya sehingga perbatasan akan terlihat bergerigi. Untuk ini saya membuat kelas css sederhana.
sumber
Dari:
http://getbootstrap.com.vn/examples/equal-height-columns/equal-height-columns.css
sumber
solusi jquery nakal jika ada yang tertarik. Pastikan semua cols Anda (el) memiliki nama kelas yang sama ... berfungsi juga secara responsif jika Anda mengikatnya ke $ (window) .resize
Pemakaian
Catatan: Posting ini telah diedit sesuai komentar @Chris bahwa kode hanya menetapkan ketinggian tertinggi terakhir dalam
$.each()
fungsisumber
Beberapa jawaban sebelumnya menjelaskan cara membuat divs sama tinggi, tetapi masalahnya adalah ketika lebar terlalu sempit divs tidak akan menumpuk, karena itu Anda dapat menerapkan jawaban mereka dengan satu bagian tambahan. Untuk masing-masing Anda dapat menggunakan nama CSS yang diberikan di sini sebagai tambahan dari kelas baris yang Anda gunakan, jadi div akan terlihat seperti ini jika Anda selalu ingin div tersebut bersebelahan:
Untuk semua layar:
Untuk saat Anda ingin menggunakan sm:
Untuk saat Anda ingin md:
Untuk saat Anda ingin menggunakan lg:
EDIT Berdasarkan komentar, memang ada solusi yang lebih sederhana, tetapi Anda harus memastikan untuk memberikan info kolom dari lebar terbesar yang diinginkan untuk semua ukuran hingga xs (misalnya
<div class="col-md-3 col-sm-4 col-xs-12">
:sumber
flex-wrap: wrap;
maka Anda tidak perlu semua yang terpisah ... kecuali jika Anda secara khusus menginginkannya.Saya terkejut saya tidak dapat menemukan solusi yang berguna di sini pada akhir tahun 2018. Saya melanjutkan dan menemukan solusi Bootstrap 3 sendiri menggunakan flexbox.
Contoh bersih dan sederhana:
HTML
CSS
Lihat demo yang berfungsi: http://jsfiddle.net/5kmtfrny/
sumber
Saya tahu saya sangat terlambat tetapi sekarang Anda dapat menggunakan atribut gaya "min-height" untuk mencapai tujuan Anda.
sumber
Jika ada yang menggunakan bootstrap 4 dan mencari kolom dengan tinggi yang sama gunakan
row-eq-height
untuk div indukRef: http://getbootstrap.com.vn/examples/equal-height-columns/
sumber
inilah solusi saya (kompilasi CSS):
Jadi kode Anda akan terlihat seperti:
Pada dasarnya ini adalah sistem yang sama yang Anda gunakan dengan
.col-*
kelas dengan perbedaan yang perlu Anda terapkan.row-*
kelas ke baris itu sendiri.Dengan
.row-sm-eq
kolom akan ditumpuk di layar XS. Jika Anda tidak membutuhkannya untuk ditumpuk di layar apa pun yang dapat Anda gunakan.row-xs-eq
.Versi SASS yang sebenarnya kami gunakan:
Demo langsung
Catatan: mencampur
.col-xs-12
dan.col-xs-6
di dalam satu baris tidak akan berfungsi dengan baik.sumber
border-spacing
dan margin negatif.Ada masalah dengan menggunakan Solusi 1 saat menerapkannya hanya pada kolom di baris. Ingin meningkatkan Solusi 1.
(Maaf, tidak dapat mengomentari jawaban Popnoodles. Saya tidak memiliki reputasi yang cukup)
sumber
Terbaik di luar sana:
Github reflex - Documents
Bekerja dengan bootstrap
Memperbarui:
sumber
Inilah metode saya, saya telah menggunakan flex dengan beberapa perubahan dalam permintaan media.
kemudian menambahkan kelas ke induk yang diperlukan.
Saya menggunakan breakpoint responsif karena fluks biasanya menghambat sifat responsif bootstrap standar.
sumber
Saya menggunakan solusi super mudah ini dengan
clearfix
, yang tidak memiliki efek samping.Berikut ini adalah contoh di AngularJS:
Dan satu lagi contoh di PHP:
sumber
Bagi mereka yang mencari solusi cepat dan mudah - jika Anda memiliki set konten blok yang relatif konsisten, setinggi minimum pada div yang sedikit lebih besar daripada blok terbesar dapat lebih mudah diimplementasikan.
sumber
di mana .container-height adalah kelas gaya yang harus ditambahkan ke elemen gaya .row dimana semua .col * anak-anaknya memiliki tinggi yang sama.
Menerapkan gaya ini hanya untuk beberapa .row tertentu (dengan .container-height, seperti dalam contoh) juga menghindari menerapkan margin dan padding overflow untuk semua .col *.
sumber
Saya mencari solusi untuk masalah yang sama, dan menemukan satu hanya berfungsi !! - dengan hampir tidak ada kode tambahan ..
lihat https://medium.com/wdstack/bootstrap-equal-height-columns-d07bc934eb27 untuk pencairan yang baik, dan dengan resposne yang Anda inginkan di bagian bawah, dengan tautan.
https://www.codeply.com/go/EskIjvun4B
ini adalah cara responsif yang benar bagi saya ... kutipan: ... 3 - Gunakan flexbox (terbaik!)
Pada 2017, cara terbaik (dan termudah) untuk membuat kolom tinggi yang sama dalam desain responsif menggunakan CSS3 flexbox.
dan cukup gunakan:
sumber
Contoh:
https://jsfiddle.net/b9chris/njcnex83/embedded/result/
Diadaptasi dari beberapa jawaban di sini. Jawaban berbasis flexbox adalah cara yang benar setelah IE8 dan 9 mati, dan sekali Android 2.x mati, tetapi itu tidak benar pada tahun 2015, dan kemungkinan tidak akan pada 2016. IE8 dan 9 masih terdiri dari 4- 6% penggunaan tergantung pada bagaimana Anda mengukur, dan bagi banyak pengguna korporat, ini jauh lebih buruk. http://caniuse.com/#feat=flexbox
The
display: table
,display: table-cell
trik ini lebih mundur-kompatibel - dan satu hal yang besar adalah masalah kompatibilitas hanya serius adalah masalah Safari mana pasukanbox-sizing: border-box
, sesuatu yang sudah diterapkan pada tag Bootstrap Anda. http://caniuse.com/#feat=css-tableAnda jelas dapat menambahkan lebih banyak kelas yang melakukan hal serupa, seperti
.equal-height-md
. Saya mengikat ini ke divs untuk manfaat kinerja kecil dalam penggunaan terbatas saya, tetapi Anda bisa menghapus tag untuk membuatnya lebih digeneralisasi seperti sisa Bootstrap.Perhatikan bahwa jsfiddle di sini menggunakan CSS, dan, hal-hal yang sebaliknya akan disediakan oleh hard-coded dalam contoh yang ditautkan. Misalnya @ screen-sm-min telah diganti dengan yang akan dimasukkan Less - 768px.
sumber
Jika masuk akal dalam konteks Anda, Anda bisa menambahkan div 12 kolom kosong setelah setiap istirahat, yang bertindak sebagai pembagi yang memeluk bagian bawah sel tertinggi di baris Anda.
Semoga ini membantu!
sumber
Saya pikir saya baru saja menambahkan bahwa jawaban yang diberikan oleh Dr.Flink juga dapat diterapkan pada Bootstrap 3
form-horizontal
blok - yang bisa sangat berguna jika Anda ingin menggunakan warna latar belakang untuk setiap sel. Agar ini berfungsi untuk form bootstrap, Anda perlu membungkus konten form yang hanya berfungsi untuk mereplikasi struktur seperti tabel.Contoh di bawah ini juga menyediakan CSS yang menunjukkan permintaan media tambahan yang memungkinkan Bootstrap 3 untuk mengambil alih dan melakukan hal yang normal pada layar yang lebih kecil. Ini juga berfungsi di IE8 +.
Contoh:
sumber
Coba ini lakukan melalui flex-box
JSFiddle langsung - https://jsfiddle.net/grinmax_/spsn4fnq/
sumber
Jadi ya, Bootstrap 4 membuat semua cols dalam satu baris sama dengan tinggi, namun jika Anda membuat perbatasan di sekitar konten di dalam baris, Anda mungkin menemukan bahwa sepertinya cols bukan ketinggian yang sama!
Ketika saya menerapkan
height: 100%
elemen di dalam col saya menemukan bahwa saya kehilangan margin saya.Solusi saya adalah dengan menggunakan bantalan pada div col (bukan margin pada elemen dalam). Seperti itu:
Contoh kode di atas menggunakan Bootstrap 4.1 untuk membuat satu set sembilan kotak dengan perbatasan
sumber
HTML
CSS
JS
sumber
03/19/2019
** Bootstrap 4 Solusi Tinggi Ketinggian **
Utilitas Bootstrap / fleksibel untuk ketinggian yang sama
Contoh langsung dalam Codepen
Tinggi yang sama dengan kelas bootstrap dengan div induk tetap
height
ataumin-height
Tampilkan cuplikan kode
sumber
Anda dapat membungkus kolom di dalam div
sumber