Saya menggunakan Twitter Bootstrap 3, dan saya memiliki masalah ketika saya ingin menyelaraskan dua secara vertikal div
, misalnya - tautan JSFiddle :
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
<!-- Optional theme -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css">
<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<div class="row">
<div class="col-xs-5">
<div style="height:5em;border:1px solid #000">Big</div>
</div>
<div class="col-xs-5">
<div style="height:3em;border:1px solid #F00">Small</div>
</div>
</div>
Sistem grid di Bootstrap menggunakan float: left
, tidak display:inline-block
, sehingga properti vertical-align
tidak berfungsi. Saya mencoba menggunakan margin-top
untuk memperbaikinya, tetapi saya pikir ini bukan solusi yang baik untuk desain responsif.
div
, tidak ada teks di dalamnya, sesuatu seperti ini jsfiddle.net/corinem/Aj9H9 tetapi dalam contoh ini saya tidak menggunakan bootstrapJawaban:
Anda masih dapat menggunakan kelas khusus saat Anda membutuhkannya:
Bootply
Menggunakan
inline-block
menambahkan ruang ekstra di antara blok jika Anda membiarkan ruang nyata dalam kode Anda (seperti...</div> </div>...
). Ruang ekstra ini memecah kisi kami jika ukuran kolom menambahkan hingga 12:Di sini, kami memiliki ruang ekstra di antara
<div class="[...] col-lg-2">
dan<div class="[...] col-lg-10">
(carriage return dan 2 tab / 8 spasi). Dan sebagainya...Ayo tendang ruang ekstra ini !!
Perhatikan komentar yang tampaknya tidak berguna
<!-- ... -->
? Mereka penting - tanpa mereka, spasi putih antara<div>
elemen akan mengambil ruang dalam tata letak, memecahkan sistem grid.Catatan: Bootply telah diperbarui
sumber
col-lg-2
dancol-lg-10
). Menariknya, jika Anda menambahkan kode JS berikut (dengan asumsi jQuery), ia berhasil memperbaiki sendiri:$('.row').html($('.vcenter'));
inline-block
ruang ekstra (terkenal) . Saya memberikan solusi dalam hasil edit saya.Tata letak kotak yang fleksibel
Dengan munculnya Kotak Fleksibel CSS , banyak mimpi buruk desainer web 1 telah teratasi. Salah satu yang paling rumit, penyelarasan vertikal. Sekarang dimungkinkan bahkan di ketinggian yang tidak diketahui .
Kotak Fleksibel (atau singkatnya, Flexbox), adalah sistem tata letak baru yang dirancang khusus untuk keperluan tata letak. The Spesifikasi negara :
Bagaimana ini bisa membantu dalam kasus ini? Baiklah, mari kita lihat.
Kolom selaras vertikal
Menggunakan Twitter Bootstrap kita punya
.row
beberapa.col-*
. Yang perlu kita lakukan adalah untuk menampilkan.row
2 yang diinginkan sebagai kotak wadah fleksibel dan kemudian sejajarkan semua item fleksibelnya (kolom) secara vertikal berdasarkanalign-items
properti.CONTOH DI SINI (Silakan baca komentar dengan hati-hati)
Hasil
Area berwarna menampilkan kotak kolom.
Mengklarifikasi
align-items: center
Peringatan Besar
Catatan penting # 1: Bootstrap Twitter tidak menentukan
width
kolom di perangkat ekstra kecil kecuali Anda memberikan salah satu.col-xs-#
kelas ke kolom.Karena itu dalam demo khusus ini, saya telah menggunakan
.col-xs-*
kelas agar kolom ditampilkan dengan benar dalam mode seluler, karena ini menentukanwidth
kolom secara eksplisit.Tapi Anda juga bisa mematikan tata letak Flexbox hanya dengan mengubah
display: flex;
kedisplay: block;
dalam ukuran layar tertentu. Contohnya:Atau Anda bisa menentukan
.vertical-align
hanya pada ukuran layar tertentu seperti:Dalam hal ini, aku akan pergi dengan @KevinNelson 's pendekatan .
Catatan penting # 2: Awalan vendor dihilangkan karena singkatnya. Sintaks Flexbox telah diubah selama ini. Sintaks tertulis baru tidak akan berfungsi pada versi browser web yang lebih lama (tetapi tidak setua Internet Explorer 9! Flexbox didukung pada Internet Explorer 10 dan yang lebih baru).
Ini berarti Anda juga harus menggunakan properti yang diawali dengan vendor seperti
display: -webkit-box
dan seterusnya dalam mode produksi.Jika Anda mengklik "Toggle Compiled View" di Demo , Anda akan melihat versi awalan deklarasi CSS (terima kasih kepada Autoprefixer ).
Kolom tinggi penuh dengan konten selaras vertikal
Seperti yang Anda lihat di demo sebelumnya , kolom (item fleksibel) tidak lagi setinggi wadahnya (kotak kontainer fleksibel. Yaitu
.row
elemen).Ini karena menggunakan
center
nilai untukalign-items
properti. Nilai defaultnya adalahstretch
agar item dapat mengisi seluruh ketinggian elemen induk.Untuk memperbaikinya, Anda dapat menambahkan
display: flex;
ke kolom juga:CONTOH DI SINI (Sekali lagi, pikirkan komentarnya)
Hasil
Area berwarna menampilkan kotak kolom.
Terakhir, namun tidak kalah pentingnya , perhatikan bahwa demo dan cuplikan kode di sini dimaksudkan untuk memberi Anda ide yang berbeda, untuk memberikan pendekatan modern untuk mencapai tujuan. Harap perhatikan bagian " Peringatan Besar " jika Anda akan menggunakan pendekatan ini di situs web atau aplikasi dunia nyata.
Untuk bacaan lebih lanjut termasuk dukungan browser, sumber daya ini akan berguna:
1. Sejajarkan gambar secara vertikal di dalam div dengan ketinggian responsif. 2. Lebih baik menggunakan kelas tambahan agar tidak mengubah default Bootstrap Twitter
.row
.sumber
col-*
, biola / codepens Anda tidak menggunakan bootstrap, sehingga mereka menyesatkan. Contoh Anda tidak berfungsi dengan bootstrap; sistem gridnya tidak berdasarkanflex
, sehingga tidak kompatibel. Cukup coba apa pun contoh Anda di halaman yang didukung bootstrap dan Anda akan menyadari bahwa itu tidak berfungsi.Kode di bawah ini berfungsi untuk saya:
sumber
Perbarui 2020
Saya tahu pertanyaan aslinya adalah untuk Bootstrap 3, tetapi sekarang setelah Bootstrap 4 telah dirilis, berikut adalah beberapa panduan terbaru tentang vertikal center.
Penting! Pusat vertikal relatif terhadap ketinggian induk
Bootstrap 4
Sekarang karena Bootstrap 4 adalah flexbox secara default, ada banyak pendekatan berbeda untuk penyelarasan vertikal dengan menggunakan: margin otomatis , utilitas flexbox , atau utilitas tampilan bersama dengan utilitas penyelarasan vertikal . Pada awalnya "utilitas penyelarasan vertikal" tampak jelas, tetapi ini hanya bekerja dengan elemen tampilan inline dan tabel. Berikut adalah beberapa opsi pemusatan vertikal Bootstrap 4 ..
1 - Pusat Vertikal Menggunakan Margin Otomatis:
Cara lain untuk memusatkan secara vertikal adalah menggunakan
my-auto
. Ini akan memusatkan elemen dalam wadahnya. Misalnya,h-100
buat baris menjadi tinggi penuh, danmy-auto
akan memusatkancol-sm-12
kolom secara vertikal .Bootstrap 4 - Pusat vertikal menggunakan Demo margin otomatis
my-auto
mewakili margin pada sumbu y vertikal dan setara dengan:2 - Pusat Vertikal dengan Flexbox:
Karena Bootstrap 4
.row
sekarangdisplay:flex
Anda cukup menggunakanalign-self-center
pada kolom apa saja untuk memusatkan secara vertikal ...atau, gunakan
align-items-center
pada keseluruhan.row
untuk mensejajarkan semuacol-*
baris secara vertikal ...Bootstrap 4 - Demo vertikal ketinggian tengah berbeda
3 - Pusat Vertikal Menggunakan Peralatan Display:
Bootstrap 4 memiliki layar util yang dapat digunakan untuk
display:table
,display:table-cell
,display:inline
, dll .. ini dapat digunakan dengan utils vertical alignment untuk inline menyelaraskan, inline-blok atau elemen sel tabel.Bootstrap 4 - Pusat vertikal menggunakan utils display Demo
Lihat juga: Vertical Align Center di Bootstrap 4
Bootstrap 3
Metode flexbox pada wadah item ke tengah:
Ubah metode translateY:
Metode tampilan sebaris:
Demo metode pemusatan Bootstrap 3
sumber
mx-auto
(pemusatan horizontal), sehingga masuk akal bahwamy-auto
memusatkan secara vertikal (sumbu y).Coba ini di CSS dari div:
sumber
Saya pikir saya akan membagikan "solusi" saya kalau-kalau itu membantu siapa pun yang tidak terbiasa dengan pertanyaan @media sendiri.
Berkat jawaban @ HashemQolami, saya membuat beberapa pertanyaan media yang dapat berfungsi seperti mobile-class sehingga saya bisa menumpuk col- * untuk mobile tetapi menampilkannya secara vertikal di tengah untuk layar yang lebih besar, misalnya
.
Tata letak yang lebih rumit yang membutuhkan jumlah kolom berbeda untuk setiap resolusi layar (mis. 2 baris untuk -xs, 3 untuk -sm, dan 4 untuk -md, dll.) Membutuhkan beberapa penyelesaian lanjutan, tetapi untuk halaman sederhana dengan -xs ditumpuk dan -sm dan lebih besar di baris, ini berfungsi dengan baik.
sumber
clear: both;
kelas di dalam kueri media agar bisa berfungsi..row
pengubah ... jadi seharusnya terlihat seperticlass="row row-sm-flex-center"
..row
Definisi BS3 menanganiclear:both;
clear: both;
lagi.Mengikuti jawaban yang diterima, jika Anda tidak ingin mengkustomisasi markup, untuk pemisahan masalah atau hanya karena Anda menggunakan CMS, solusi berikut berfungsi dengan baik:
Batasan di sini adalah bahwa Anda tidak dapat mewarisi ukuran font dari elemen induk karena baris menetapkan ukuran font menjadi 0 untuk menghapus spasi putih.
sumber
Saya lebih suka metode ini sesuai dengan David Walsh Vertical center CSS :
Itu
transform
tidak penting; itu hanya menemukan pusat sedikit lebih akurat. Internet Explorer 8 mungkin sedikit kurang terpusat sebagai hasilnya, tetapi masih tidak buruk - Dapatkah saya menggunakan - Transforms 2d .sumber
Ini solusi saya. Tambahkan saja kelas ini ke konten CSS Anda.
Maka HTML Anda akan terlihat seperti ini:
sumber
Saya hanya melakukan ini dan melakukan apa yang saya inginkan.
Dan sekarang halaman saya terlihat seperti
sumber
Saya benar-benar menemukan kode berikut berfungsi menggunakan Chrome dan bukan peramban lain selain jawaban yang dipilih saat ini:
Tautan Bootply
Anda mungkin perlu mengubah ketinggian (khusus aktif
.v-center
) dan menghapus / mengubah divdiv[class*='col-']
untuk kebutuhan Anda.sumber
Saya mengalami masalah yang sama. Dalam kasus saya, saya tidak tahu ketinggian wadah luar, tetapi ini adalah bagaimana saya memperbaikinya:
Pertama, atur tinggi untuk elemen
html
dan Andabody
sehingga 100%. Ini penting! Tanpa ini, elemenhtml
danbody
hanya akan mewarisi ketinggian anak-anak mereka.Kemudian saya memiliki kelas wadah luar dengan:
Dan terakhir wadah bagian dalam dengan kelas:
HTML sesederhana:
Ini yang Anda butuhkan untuk menyelaraskan konten secara vertikal. Lihat itu di biola:
Jsfiddle
sumber
Tidak perlu meja dan sel tabel. Itu bisa dicapai dengan mudah menggunakan transformasi.
Contoh: http://codepen.io/arvind/pen/QNbwyM
Kode:
sumber
Jika Anda menggunakan Less versi Bootstrap, dan mengkompilasi ke dalam CSS sendiri, Anda dapat menggunakan beberapa kelas utilitas untuk digunakan dengan kelas Bootstrap.
Saya telah menemukan ini bekerja dengan sangat baik di mana saya ingin menjaga respon dan konfigurasi dari sistem grid Bootstrap (seperti menggunakan
-md
atau-sm
), tapi saya ingin semua kolom dalam baris yang diberikan untuk semua memiliki ketinggian vertikal yang sama (sehingga saya dapat kemudian sejajarkan kontennya secara vertikal dan suruh semua kolom di baris memiliki garis tengah yang sama).CSS / Kurang:
HTML:
sumber
Saya menguraikan sedikit tentang jawaban zessx , untuk membuatnya lebih mudah digunakan ketika mencampur ukuran kolom yang berbeda pada ukuran layar yang berbeda.
Jika Anda menggunakan Sass , Anda dapat menambahkan ini ke file scss Anda:
Yang menghasilkan CSS berikut (yang dapat Anda gunakan langsung di stylesheet Anda, jika Anda tidak menggunakan Sass):
Sekarang Anda dapat menggunakannya di kolom responsif Anda seperti ini:
sumber
Perilaku Flex didukung secara asli sejak Bootstrap 4. Tambahkan
d-flex align-items-center
dirow
div. Anda tidak perlu lagi memodifikasi konten CSS Anda.Contoh sederhana: http://jsfiddle.net/vgks6L74/
Dengan contoh Anda: http://jsfiddle.net/7zwtL702/
Sumber: Flex · Bootstrap
sumber
OK, secara tidak sengaja saya telah mencampur beberapa solusi, dan akhirnya berfungsi sekarang untuk tata letak saya di mana saya mencoba membuat tabel 3x3 dengan kolom Bootstrap pada resolusi terkecil.
sumber
sumber
Coba ini,
sumber
Ada beberapa cara untuk melakukannya:
Menggunakan
dan CSS wadah untuk
Gunakan padding bersama dengan layar media untuk mengubah padding relatif terhadap ukuran layar. Layar Google @ media untuk tahu lebih banyak.
Gunakan bantalan relatif
Yaitu, tentukan bantalan dalam hal%
sumber
Dengan Bootstrap 4 (yang saat ini dalam alpha) Anda dapat menggunakan
.align-items-center
kelas. Jadi Anda dapat menjaga karakter responsif Bootstrap. Langsung bekerja dengan baik untuk saya. Lihat Dokumentasi Bootstrap 4 .sumber
HTML
CSS
sumber
Saya berlari ke situasi yang sama di mana saya ingin menyelaraskan beberapa elemen div secara vertikal berturut-turut dan menemukan bahwa kelas Bootstrap col-xx-xx menerapkan gaya ke div sebagai float: left.
Saya harus menerapkan style pada elemen div seperti style = "Float: none" dan semua elemen div saya mulai selaras secara vertikal. Berikut ini contoh kerjanya:
JsFiddle Link
Untuk berjaga-jaga jika seseorang ingin membaca lebih lanjut tentang properti apung:
W3Schools - Float
sumber