display: inline-flex
tidak membuat tampilan item fleksibel sejajar. Itu membuat tampilan wadah fleksibel sejajar. Itulah satu-satunya perbedaan antara display: inline-flex
dan display: flex
. Perbandingan serupa dapat dibuat antara display: inline-block
dan display: block
, dan hampir semua jenis tampilan lain yang memiliki mitra sebaris .1
Sama sekali tidak ada perbedaan efek pada item fleksibel; tata letak flex identik apakah wadah fleksibel level blok atau inline-level. Secara khusus, item fleksibel itu sendiri selalu berperilaku seperti kotak tingkat blok (meskipun mereka memiliki beberapa properti inline-blok). Anda tidak dapat menampilkan item fleksibel sebaris; jika tidak, Anda sebenarnya tidak memiliki tata letak yang fleksibel.
Tidak jelas apa yang sebenarnya Anda maksud dengan "menyelaraskan secara vertikal" atau mengapa Anda ingin menampilkan konten inline, tetapi saya curiga bahwa flexbox bukanlah alat yang tepat untuk apa pun yang Anda coba capai. Kemungkinan yang Anda cari hanyalah tata letak inline biasa ( display: inline
dan / atau display: inline-block
), yang flexbox bukan pengganti; flexbox bukanlah solusi tata letak universal yang diklaim semua orang (saya menyatakan ini karena kesalahpahaman mungkin mengapa Anda mempertimbangkan flexbox sejak awal).
1 Perbedaan antara tata letak blok dan tata letak inline berada di luar cakupan pertanyaan ini, tetapi salah satu yang paling menonjol adalah lebar otomatis: kotak level blok merentang secara horizontal untuk mengisi blok yang berisi, sedangkan kotak level inline menyusut agar sesuai dengan pertanyaan mereka. isi. Bahkan, untuk alasan ini saja Anda hampir tidak akan pernah menggunakan display: inline-flex
kecuali Anda memiliki alasan yang sangat baik untuk menampilkan inline wadah fleksibel Anda.
inline-flex
danflex
: jsfiddle.net/mgr0en3q/1 Biola asli oleh @ fish-graphics and @astridxOK, saya tahu pada awalnya mungkin sedikit membingungkan, tetapi
display
berbicara tentang elemen induk, jadi berarti ketika kita mengatakandisplay: flex;
:, ini tentang elemen dan ketika kita mengatakandisplay:inline-flex;
, juga membuat elemen itu sendiriinline
...Ini seperti membuat
div
inline atau blok , menjalankan snippet di bawah ini dan Anda dapat melihat bagaimanadisplay flex
memecahnya ke baris berikutnya:Juga buat cepat gambar di bawah ini untuk menunjukkan perbedaannya secara sekilas:
sumber
flex
daninline-flex
keduanya menerapkan tata letak fleksibel untuk anak-anak wadah. Wadah dengandisplay:flex
berperilaku seperti elemen tingkat blok itu sendiri, sementaradisplay:inline-flex
membuat wadah berperilaku seperti elemen inline.sumber
Perbedaan antara "flex" dan "inline-flex"
Jawaban singkat:
Salah satunya inline dan yang lainnya pada dasarnya merespons seperti elemen blok (tetapi memiliki beberapa perbedaan sendiri).
Jawaban yang lebih panjang:
Inline-Flex - Versi inline dari flex memungkinkan elemen, dan itu anak-anak, memiliki sifat flex sementara masih tetap dalam aliran reguler dari dokumen / halaman web. Pada dasarnya, Anda dapat menempatkan dua wadah fleks inline di baris yang sama, jika lebarnya cukup kecil, tanpa ada gaya berlebih yang memungkinkannya ada di baris yang sama. Ini sangat mirip dengan "inline-block."
Lentur - Wadah dan anak-anak itu memiliki sifat lentur tetapi wadah menyimpan baris, karena dikeluarkan dari aliran normal dokumen. Ini merespons seperti elemen blok, dalam hal aliran dokumen. Dua wadah flexbox tidak bisa ada di baris yang sama tanpa gaya berlebihan.
Masalah yang mungkin Anda alami
Karena elemen yang Anda daftarkan dalam contoh Anda, meskipun saya menebak, saya pikir Anda ingin menggunakan flex untuk menampilkan elemen yang terdaftar dalam mode baris demi baris tetapi terus melihat elemen berdampingan.
Alasan Anda kemungkinan mengalami masalah adalah karena flex dan inline-flex memiliki properti "arah-fleksibel" default yang disetel ke "baris." Ini akan menampilkan anak-anak berdampingan. Mengubah properti ini menjadi "kolom" akan memungkinkan elemen Anda menumpuk dan menyimpan ruang (lebar) sama dengan lebar induknya.
Di bawah ini adalah beberapa contoh untuk menunjukkan bagaimana flex vs inline-flex bekerja dan juga demo cepat tentang bagaimana elemen inline vs blok bekerja ...
Biola
Biola
Biola
Biola
Biola
Biola
Juga, dokumen referensi yang bagus: Panduan Lengkap untuk Flexbox - trik css
sumber
Tampilan: fleksibel menerapkan tata letak flex hanya untuk item fleksibel atau anak-anak wadah saja. Jadi, wadah itu sendiri tetap elemen blok tingkat dan dengan demikian memakan seluruh lebar layar.
Ini menyebabkan setiap wadah fleksibel untuk pindah ke garis baru di layar.
Tampilan: inline-flex menerapkan tata letak flex ke item fleksibel atau anak-anak serta ke wadah itu sendiri. Akibatnya wadah berperilaku sebagai elemen flex inline sama seperti anak-anak dan dengan demikian mengambil lebar yang dibutuhkan oleh barang-barangnya / anak-anak saja dan bukan seluruh lebar layar.
Ini menyebabkan dua atau lebih wadah fleksibel satu demi satu, ditampilkan sebagai inline-flex, sejajarkan diri mereka berdampingan di layar hingga seluruh lebar layar diambil.
sumber
Anda memerlukan informasi lebih banyak agar peramban mengetahui apa yang Anda inginkan. Misalnya, anak-anak wadah perlu diberi tahu "bagaimana" untuk melenturkannya.
Biola yang Diperbarui
Saya telah menambahkan
#wrapper > * { flex: 1; margin: auto; }
ke CSS Anda dan mengubahnyainline-flex
menjadiflex
, dan Anda dapat melihat bagaimana elemen-elemennya sekarang meratakan sendiri secara merata pada halaman.sumber
Buka di halaman penuh untuk pemahaman yang lebih baik
sumber