Cara memusatkan div secara horizontal, dan vertikal di dalam wadah menggunakan flexbox. Dalam contoh di bawah ini, saya ingin setiap angka di bawah satu sama lain (dalam baris), yang dipusatkan secara horizontal.
.flex-container {
padding: 0;
margin: 0;
list-style: none;
display: flex;
align-items: center;
justify-content: center;
}
row {
width: 100%;
}
.flex-item {
background: tomato;
padding: 5px;
width: 200px;
height: 150px;
margin: 10px;
line-height: 150px;
color: white;
font-weight: bold;
font-size: 3em;
text-align: center;
}
<div class="flex-container">
<div class="row">
<span class="flex-item">1</span>
</div>
<div class="row">
<span class="flex-item">2</span>
</div>
<div class="row">
<span class="flex-item">3</span>
</div>
<div class="row">
<span class="flex-item">4</span>
</div>
</div>
row{
yang tidak berpengaruh pada baris. Jika Anda mengubahnya ke.row{
hasilnya akan sangat berbeda.Jawaban:
Saya pikir Anda menginginkan sesuatu seperti yang berikut ini.
Lihat demo di: http://jsfiddle.net/audetwebdesign/tFscL/
.flex-item
Elemen Anda harus tingkat blok (div
bukanspan
) jika Anda ingin ketinggian dan bantalan atas / bawah berfungsi dengan baik.Juga, aktifkan
.row
, atur lebar menjadiauto
bukan100%
..flex-container
Properti Anda baik-baik saja.Jika Anda ingin
.row
berada di tengah secara vertikal di port tampilan, tetapkan tinggi 100% kehtml
danbody
, dan juga nolbody
margin.Perhatikan bahwa
.flex-container
perlu ketinggian untuk melihat efek penyelarasan vertikal, jika tidak, wadah menghitung ketinggian minimum yang diperlukan untuk melampirkan konten, yang kurang dari ketinggian port tampilan dalam contoh ini.Catatan kaki:
The
flex-flow
,flex-direction
,flex-wrap
sifat bisa membuat desain ini lebih mudah untuk menerapkan. Saya pikir.row
wadah tidak diperlukan kecuali jika Anda ingin menambahkan beberapa styling di sekitar elemen (gambar latar belakang, perbatasan dan sebagainya).Sumber daya yang bermanfaat adalah: http://demo.agektmr.com/flexbox/
sumber
Cara Memusatkan Elemen secara Vertikal dan Horizontal di Flexbox
Di bawah ini adalah dua solusi pemusatan umum.
Satu untuk item flex rata-rata (
flex-direction: column
) dan yang lain untuk item flex rata-rata (flex-direction: row
).Dalam kedua kasus, ketinggian div terpusat dapat bervariasi, tidak terdefinisi, tidak diketahui, apa pun. Ketinggian div terpusat tidak masalah.
Inilah HTML untuk keduanya:
CSS (tidak termasuk gaya dekoratif)
Ketika item fleksibel ditumpuk secara vertikal:
DEMO
Ketika item fleksibel ditumpuk secara horizontal:
Sesuaikan
flex-direction
aturan dari kode di atas.DEMO
Memusatkan isi item fleksibel
Ruang lingkup konteks pemformatan fleksibel terbatas pada hubungan orangtua-anak. Keturunan dari wadah fleksibel di luar anak-anak tidak berpartisipasi dalam tata letak fleksibel dan akan mengabaikan sifat fleksibel. Pada dasarnya, sifat fleksibel tidak dapat diwariskan di luar anak-anak.
Oleh karena itu, Anda akan selalu perlu menerapkan
display: flex
ataudisplay: inline-flex
ke elemen induk untuk menerapkan sifat fleksibel pada anak.Untuk memusatkan teks secara vertikal dan / atau horizontal atau konten lain yang terkandung dalam item fleksibel, buat item tersebut sebagai wadah fleksibel (bersarang), dan ulangi aturan pemusatan.
Lebih detail di sini: Bagaimana cara menyelaraskan teks secara vertikal di dalam flexbox?
Atau, Anda dapat menerapkan
margin: auto
ke elemen konten item fleksibel.Pelajari tentang
auto
margin fleksibel di sini: Metode untuk Menyelaraskan Item Flex (lihat kotak # 56).Memusatkan beberapa baris item fleksibel
Ketika wadah fleksibel memiliki banyak garis (karena pembungkus)
align-content
properti akan diperlukan untuk penyelarasan sumbu-silang.Dari spec:
Lebih detail di sini: Bagaimana cara flex-wrap bekerja dengan align-self, align-items, dan align-content?
Dukungan browser
Flexbox didukung oleh semua browser utama, kecuali IE <10 . Beberapa versi browser terbaru, seperti Safari 8 dan IE10, memerlukan awalan vendor . Untuk cara cepat menambahkan awalan, gunakan Autoprefixer . Lebih detail dalam jawaban ini .
Solusi pemusatan untuk browser yang lebih lama
Untuk solusi pemusatan alternatif menggunakan tabel CSS dan properti pemosisian, lihat jawaban ini: https://stackoverflow.com/a/31977476/3597276
sumber
Menambahkan
ke elemen wadah apa pun yang Anda ingin pusatkan. Dokumentasi: membenarkan konten dan menyelaraskan item .
sumber
display: inline-flex
dalam kasus saya, tapi itu mudah diedit.)Jangan lupa untuk menggunakan atribut spesifik browser yang penting:
menyelaraskan item: pusat; ->
justify-content: center; ->
Anda dapat membaca dua tautan ini untuk memahami dengan lebih baik: http://css-tricks.com/almanac/properties/j/justify-content/ dan http://ptb2.me/flexbox/
Semoga berhasil.
sumber
1 - Atur CSS pada div induk ke
display: flex;
2 - Tetapkan CSS pada div induk ke
flex-direction: column;
Perhatikan bahwa ini akan membuat semua konten dalam div itu naik dari atas ke bawah. Ini akan bekerja paling baik jika div induk hanya berisi anak dan tidak ada yang lain.
3 - Atur CSS pada div induk ke
justify-content: center;
Berikut adalah contoh tampilan CSS:
sumber
Anda dapat memanfaatkan
display: flex; align-items: center; justify-content: center;
pada komponen induk Anda
https://repl.it/repls/TomatoImaginaryInisialisasi
sumber
diplay: flex;
untuk itu wadah danmargin:auto;
untuk barang itu berfungsi sempurna.CATATAN: Anda harus mengatur
width
danheight
untuk melihat efeknya.sumber
Jika Anda perlu memusatkan teks pada tautan, ini akan melakukan trik:
sumber
margin: auto
berfungsi sempurna dengan flexbox. Ini terpusat secara vertikal dan horizontal.sumber
HASIL:
KODE
HTML:
CSS:
di mana
flex-container
div digunakan untuk memusatkanrows
div Anda secara vertikal dan horizontal , danrows
div digunakan untuk mengelompokkan "item" Anda dan memesannya dalam kolom yang berbasis.sumber
sumber
Menggunakan CSS +
lihat DI SINI
sumber