Seperti yang kita semua tahu, flex
properti adalah singkatan untuk flex-grow
, flex-shrink
, dan flex-basis
properti. Nilai defaultnya adalah 0 1 auto
, yang artinya
flex-grow: 0;
flex-shrink: 1;
flex-basis: auto;
tapi saya perhatikan, di banyak tempat flex: 1
digunakan. Apakah itu singkatan untuk 1 1 auto
atau 1 0 auto
? Saya tidak mengerti apa artinya dan saya tidak mendapatkan apa-apa saat mencari di Google.
Jawaban:
Berikut penjelasannya:
https://www.w3.org/TR/css-flexbox-1/#flex-common
Oleh karena
flex:1
itu setara denganflex: 1 1 0
sumber
flex
untuk semua anak, yang penting sebenarnyaflex: 1 ? 0;
, di mana "?" bisa apa saja, tidak akan ada bedanyawhat does flex:1 mean?
terbuka untuk interpretasi. Operasi tidak menanyakan spesifikasi, hanya untuk apa yang terjadi. Sayangnya Chrome sekarang adalah browser paling populer dan diperlukan dukungan. Saya sendiri bukan penggemar atau pengguna Chrome!flex: 1
berarti sebagai berikut:sumber
flex: 1
artinya1 1 0
... tapi di IE1 1 0px
1 1 0
dan1 1 0px
setara. IE kebetulan hanya mendukung satu dengan satu unit.1 1 0px
dan1 1 0
setara?flex-basis
, konten diabaikan dan ukuran elemen didasarkan padaflex-grow
/flex-shrink
.HATI-HATI
Di beberapa browser:
flex:1;
tidak samaflex:1 1 0;
flex:1;
=flex:1 1 0n;
(di mana n adalah satuan panjang).Poin kuncinya di sini adalah bahwa flex-basis membutuhkan satuan panjang .
Di Chrome misalnya
flex:1
danflex:1 1 0
menghasilkan hasil yang berbeda. Dalam kebanyakan keadaan, ini mungkin tampakflex:1 1 0;
berfungsi tetapi mari kita periksa apa yang sebenarnya terjadi:CONTOH
Basis fleksibel diabaikan dan hanya flex-grow dan flex-shrink yang diterapkan.
flex:1 1 0;
=flex:1 1;
=flex:1;
Sekilas ini mungkin tampak baik-baik saja, namun jika unit yang diterapkan dari wadah bersarang; mengharapkan yang tak terduga!
Coba contoh ini di CHROME
KESESUAIAN
Perlu dicatat bahwa ini gagal karena beberapa browser gagal mematuhi spesifikasi .
Browser yang menggunakan spesifikasi full flex:
PEMBARUAN 2019
Versi terbaru Chrome tampaknya akhirnya memperbaiki masalah ini tetapi browser lain masih belum.
Diuji dan berfungsi di Chrome Ver 74.
sumber
flex: 1
samaflex: 1 1 0
. Dalam contoh Anda jika Anda menghapus.Wrap
kelas dalam.Flex110x,.Flex1, .Flex110, .Wrap
aturan berfungsi seperti yang diharapkan.flex:1 1 0n;