Rumah > Artikel > hujung hadapan web > Artikel yang menerangkan secara terperinci kesan tiga sifat flex pada elemen
Semasa pembangunan, atribut flex sering digunakan untuk bertindak pada elemen anak kotak fleksibel, seperti: flex:1
atau flex: 1 1 auto
Jadi bagaimana atribut ini mengawal tingkah laku unsur? flex:1
Apa sebenarnya maksudnya? Biarkan artikel ini membawa anda melalui pemahaman menyeluruh tentang sifat flex! [Pembelajaran yang disyorkan: tutorial video css]
Pertama sekali, kita perlu memahami bahawa flex ialah singkatan daripada tiga atribut flex-grow
, flex-shrink
dan flex-basis
Anda boleh menggunakan satu atau dua, atau tiga nilai yang menentukan atribut flex. Untuk sintaks tertentu, sila rujuk MDN-flex
Seterusnya, kami akan membongkar kesan ketiga-tiga atribut ini pada elemen satu demi satu
asas lentur mentakrifkan saiz subelemen lentur yang dimulakan sebelum peruntukan ruang berlaku, atribut 默认值 auto
saiz subelemen lentur sebelum ia terbentang atau mengecut.
Jika asas-flex ditetapkan kepada auto, penyemak imbas akan terlebih dahulu menyemak sama ada saiz utama elemen anak fleksibel ditetapkan kepada nilai awal elemen anak fleksibel.
Contohnya, jika anda telah menetapkan lebar 150px untuk elemen anak fleksibel anda, maka 150px ialah asas-flex bagi elemen anak fleksibel ini, jika tidak ditetapkan, auto akan diselesaikan mengikut saiz kandungannya . Dalam contoh ini, lebar elemen pertama ditetapkan kepada 150px, dan lebar elemen kedua dan ketiga tidak ditetapkan.
:first-child { width: 150px; }
Kesannya adalah seperti berikut:
Jika anda mahu flexbox mengabaikan sepenuhnya saiz elemen anak flex, tetapkan flex-basis kepada 0 . Dengan cara ini, walaupun elemen 1 mempunyai set lebar, lebar terakhirnya ialah lebar kandungan.
Mari kita lihat dua konsep sebelum memperkenalkan dua sifat yang tinggalpositive free space
Ruang kebebasan positif dan negative free space
ruang kosong terbalik:
ruang kosong ke hadapan
Sebagai contoh, terdapat bekas lentur lebar 500px dan nilai atribut arah lentur ialah baris , tiga Elemen kanak-kanak fleksibel 100px lebar, maka 200px yang tidak diisi ialah ruang kosong positif.
Terbalikkan ruang kosong
Apabila jumlah lebar elemen kanak-kanak lebih besar daripada lebar bekas, limpahan Saiz 100px ialah ruang kosong terbalik.
Jadi apakah atribut yang digunakan untuk memperuntukkan ruang bebas positif dan negatif?
默认值 0
, jika diberikan integer positif, elemen flex akan menjadi lentur - asas adalah asas, membesar dalam saiz di sepanjang paksi utama, dan mengambil ruang yang ada. flex-grow memperuntukkan ruang pertumbuhan secara berkadar. Keadaan awal: Kami menetapkan lebar untuk ketiga-tiga elemen dan jumlahnya tidak lebih besar daripada lebar paksi utama
.flex-grow-father { width: 500px; div:nth-child(1) { width: 50px; } div:nth-child(2) { width: 100px; } div:nth-child(3) { width: 150px; } }
增加的宽度计算方法:假设元素的 flex-grow
值为 x
,正向自由空间宽度为l,则每个元素增加的宽度=,元素最终宽度 = ;
.with-same-flex-grow { * { flex-grow: 1; } }
效果如下:
Pengiraan lebar elemen pertama dalam contoh ini;
第二个元素宽度宽度计算 ;
第三个同理为
.with-different-flex-grow { div:nth-child(1) { flex-grow: 2; } div:nth-child(2) { flex-grow: 1; } div:nth-child(3) { flex-grow: 1; } }
效果如下:
Pengiraan lebar elemen pertama dalam contoh ini;
第二个元素宽度的计算;
第三个同理是
.average { * { /* flex: 1 1 0; */ flex-basis: 0; flex-grow: 1; } }
效果如下:
flex-shrink 属性指定了 flex 元素的缩小值,默认值为 1
; 它确定在分配 negative free space 时,flex 子元素相对于 flex 容器中其余 flex 子元素收缩的程度。默认值 1。用于减少盒子空间使盒子适应容器而不溢出(为了避免 border 干扰去掉边框)
我们给三个元素都设定宽度,并且总和大于主轴宽度;这里我们将元素的flex-shrink值设置为 0 (元素宽度不变,不需要吸收溢出的宽度),目的是观察一下反向自由空间。
.flex-shrink-wrapper { display: flex; div:nth-child(1) { width: 100px; background: gold; } div:nth-child(2) { width: 200px; background: tan; } div:nth-child(3) { width: 300px; background: gold; } } .zero { * { flex-shrink: 0; } }
Pengiraan lebar penyerapan: Andaikan bahawa nilai setiap pengecutan lentur ialah , lebar awal elemen ialah , bebas terbalik ruang untukMaka lebar yang diserap oleh setiap elemen ialah:
.with-same-flex-shrink { * { flex-shrink: 1; } }
Pada masa ini, lebar penyerapan elemen pertama ialah: , lebar elemen akhir ialah
Pada masa ini, lebar penyerapan elemen pertama ialah: , lebar elemen akhir ialah
这时第一个元素的吸收宽度为:,最终元素宽度为
.with-different-flex-shrink { div:nth-child(1) { flex-shrink: 1; } div:nth-child(2) { flex-shrink: 2; } div:nth-child(3) { flex-shrink: 0; } }
Pada masa ini, lebar penyerapan elemen pertama ialah: =80p−
Atas ialah kandungan terperinci Artikel yang menerangkan secara terperinci kesan tiga sifat flex pada elemen. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!