Jadual Kandungan
flex- asas
Ruang bebas positif dan negatif
flex-grow
flex-shrink
flex 的简写值
flex: 的应用:
两栏布局
三栏布局
结束语
Rumah hujung hadapan web tutorial css Artikel yang menerangkan secara terperinci kesan tiga sifat flex pada elemen

Artikel yang menerangkan secara terperinci kesan tiga sifat flex pada elemen

Aug 30, 2022 pm 07:50 PM
css flex

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:1Apa 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

flex- asas

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;
}
Salin selepas log masuk

Kesannya adalah seperti berikut:

Artikel yang menerangkan secara terperinci kesan tiga sifat flex pada elemen

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.

Artikel yang menerangkan secara terperinci kesan tiga sifat flex pada elemen

Ruang bebas positif dan negatif

Mari kita lihat dua konsep sebelum memperkenalkan dua sifat yang tinggalpositive free space Ruang kebebasan positif dan negative free spaceruang 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.

Artikel yang menerangkan secara terperinci kesan tiga sifat flex pada elemen

  • Terbalikkan ruang kosong

    Apabila jumlah lebar elemen kanak-kanak lebih besar daripada lebar bekas, limpahan Saiz 100px ialah ruang kosong terbalik.

Artikel yang menerangkan secara terperinci kesan tiga sifat flex pada elemen

Jadi apakah atribut yang digunakan untuk memperuntukkan ruang bebas positif dan negatif?

flex-grow

  • flex-grow 默认值 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;
  }
}
Salin selepas log masuk

Artikel yang menerangkan secara terperinci kesan tiga sifat flex pada elemen

增加的宽度计算方法:假设元素的 flex-grow 值为 x,正向自由空间宽度为l,则每个元素增加的宽度=xx的总和l\frac{x}{x的总和}*l,元素最终宽度 = 元素初始宽度+增加的宽度元素初始宽度 + 增加的宽度

  • 相同比例增长:当给每个子元素的都设定相同的 flex-grow 值,每个元素就会增长相同的宽度
.with-same-flex-grow {
  * {
    flex-grow: 1;
  }
}
Salin selepas log masuk

效果如下:

Artikel yang menerangkan secara terperinci kesan tiga sifat flex pada elemen

Pengiraan lebar elemen pertama dalam contoh ini11 1 1200 50=116.67pxfraksi{1}{ 1 1 1}*200 50 = 116.67px;

第二个元素宽度宽度计算 11+1+1200+100=166.67px\frac{1}{1+1+1}*200 + 100 = 166.67px

第三个同理为216.67px216.67px

  • 不同比例增长:给每个子元素的都设定不同的 flex-grow 值
.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;
  }
}
Salin selepas log masuk

效果如下:

Artikel yang menerangkan secara terperinci kesan tiga sifat flex pada elemen

Pengiraan lebar elemen pertama dalam contoh ini22 1 1200 50=150pxpecahan{2}{ 2 1 1}*200 50 = 150px;

第二个元素宽度的计算12+1+1200+100=150px\frac{1}{2+1+1}*200 + 100 = 150px

第三个同理是200px200px

  • 如果想让开始时尺寸不同的元素内容宽度相等(平分容器宽度),可以将 flex-basis 设置为 0(完全忽略 flex 子元素的尺寸) flex-grow 为 1(等比例分配)
.average {
  * {
    /* flex: 1 1 0; */
    flex-basis: 0;
    flex-grow: 1;
  }
}
Salin selepas log masuk

效果如下:

Artikel yang menerangkan secara terperinci kesan tiga sifat flex pada elemen

flex-shrink

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;
  }
}
Salin selepas log masuk

Artikel yang menerangkan secara terperinci kesan tiga sifat flex pada elemen

Pengiraan lebar penyerapan: Andaikan bahawa nilai setiap pengecutan lentur ialah xnx_n, lebar awal elemen ialah lnl_n, bebas terbalik ruang untukLLMaka lebar yang diserap oleh setiap elemen ialah: xnl n x1l 1 ... x nlnLfrac{x_n*l_n}{x_1*l_1 ... x_n*l_n}*L

  • 给子元素相同的 flex-shrink 值,这里以默认值 1 为例
.with-same-flex-shrink {
  * {
    flex-shrink: 1;
  }
}
Salin selepas log masuk

Artikel yang menerangkan secara terperinci kesan tiga sifat flex pada elemen

Pada masa ini, lebar penyerapan elemen pertama ialah: 11001100 1200 1300 100=16.67pxfrac{1* 100} {1*100 1*200 1*300}*100 = 16.67px, lebar elemen akhir ialah 10016.67=83.37px100-16.67px=83. 🎜>

Pada masa ini, lebar penyerapan elemen pertama ialah: 12001100 1200 1300 100=33.33pxfrac{1* 200} {1*100 1*200 1*300}*100 = 33.33px, lebar elemen akhir ialah 20033.33=166.67px200-36.33=1px 🎜>

这时第一个元素的吸收宽度为:13001100+1200+1300100=50px\frac{1*300}{1*100+1*200+1*300}*100 = 50px,最终元素宽度为 30050=250px300-50=250px

  • 给子元素不同的 flex-shrink 值
.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;
  }
}
Salin selepas log masuk

1Artikel yang menerangkan secara terperinci kesan tiga sifat flex pada elemen

Pada masa ini, lebar penyerapan elemen pertama ialah: 11001100 2200100=20 pxfrak{1*100}{1*100 2*200}*100 = 20px=80px100-20 =80px100

Pada masa ini, lebar penyerapan elemen kedua ialah: 22001100 2200100=80 pxfrak{2*200}{1*100 2*200}*100 = 80px=120px200-80 =120px200 x

300px300px

flex 的简写值

一般我们很少见上述属性单独使用,都是用flex这一个简写属性来表述元素的伸缩。

Flex 简写形式允许你把三个数值按这个顺序书写 flex-growflex-shrinkflex-basis。以下是常见的几种取值:

  • flex: initial 的扩展为 0 1 auto (不可放大、可缩小、大小与容器元素大小一致)
  • flex: auto 的扩展为 1 1 auto (可放大、可缩小、大小与容器元素大小一致)
  • flex: none 的扩展为 0 0 auto (不可放大、不可缩小、大小与容器元素大小一致)
  • flex: <positive-number></positive-number>的扩展为 <positive-number> 1 0</positive-number>

flex: <positive-number></positive-number>的应用:

两栏布局

.two-grid-wrapper {
  display: flex;
  margin-top: 20px;
  height: 200px;
  .left {
    width: 200px;
    background-color: gold;
  }
  .right {
    flex: 1;
    background-color: tan;
  }
}
Salin selepas log masuk

效果如下:左侧宽度不变,右侧自适应

1Artikel yang menerangkan secara terperinci kesan tiga sifat flex pada elemen

三栏布局

.three-grid-wrapper {
  display: flex;
  margin-top: 20px;
  height: 200px;
  .left {
    width: 200px;
    background-color: gold;
  }
  .right {
    width: 200px;
    background-color: gold;
  }
  .center {
    flex: 1;
    background-color: tan;
  }
}
Salin selepas log masuk

效果如下:左右宽度不变,中间自适应

1Artikel yang menerangkan secara terperinci kesan tiga sifat flex pada elemen

PS.flex 子元素没有 positive free space 就不会增长;没有 negative free space 就不会缩小。

结束语

学习八股文的时候发现自己对flex布局很不熟悉,基本概念都说不上来,只会无脑用,于是去学习,然后就诞生了这篇文章。欢迎指正。

(学习视频分享:web前端

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara memasukkan gambar di bootstrap Cara memasukkan gambar di bootstrap Apr 07, 2025 pm 03:30 PM

Terdapat beberapa cara untuk memasukkan imej dalam bootstrap: masukkan imej secara langsung, menggunakan tag HTML IMG. Dengan komponen imej bootstrap, anda boleh memberikan imej yang responsif dan lebih banyak gaya. Tetapkan saiz imej, gunakan kelas IMG-cecair untuk membuat imej boleh disesuaikan. Tetapkan sempadan, menggunakan kelas IMG-Sempadan. Tetapkan sudut bulat dan gunakan kelas IMG-bulat. Tetapkan bayangan, gunakan kelas bayangan. Saiz semula dan letakkan imej, menggunakan gaya CSS. Menggunakan imej latar belakang, gunakan harta CSS imej latar belakang.

Cara mengubah saiz bootstrap Cara mengubah saiz bootstrap Apr 07, 2025 pm 03:18 PM

Untuk menyesuaikan saiz unsur-unsur dalam bootstrap, anda boleh menggunakan kelas dimensi, yang termasuk: menyesuaikan lebar: .col-, .w-, .mw-adjust ketinggian: .h-, .min-h-, .max-h-

Peranan HTML, CSS, dan JavaScript: Tanggungjawab Teras Peranan HTML, CSS, dan JavaScript: Tanggungjawab Teras Apr 08, 2025 pm 07:05 PM

HTML mentakrifkan struktur web, CSS bertanggungjawab untuk gaya dan susun atur, dan JavaScript memberikan interaksi dinamik. Ketiga melaksanakan tugas mereka dalam pembangunan web dan bersama -sama membina laman web yang berwarna -warni.

Cara Menulis Garis Pecah Di Bootstrap Cara Menulis Garis Pecah Di Bootstrap Apr 07, 2025 pm 03:12 PM

Terdapat dua cara untuk membuat garis perpecahan bootstrap: menggunakan tag, yang mewujudkan garis perpecahan mendatar. Gunakan harta sempadan CSS untuk membuat garis perpecahan gaya tersuai.

Cara Menyiapkan Kerangka untuk Bootstrap Cara Menyiapkan Kerangka untuk Bootstrap Apr 07, 2025 pm 03:27 PM

Untuk menubuhkan rangka kerja bootstrap, anda perlu mengikuti langkah -langkah ini: 1. Rujuk fail bootstrap melalui CDN; 2. Muat turun dan tuan rumah fail pada pelayan anda sendiri; 3. Sertakan fail bootstrap di HTML; 4. Menyusun sass/kurang seperti yang diperlukan; 5. Import fail tersuai (pilihan). Setelah persediaan selesai, anda boleh menggunakan sistem grid Bootstrap, komponen, dan gaya untuk membuat laman web dan aplikasi yang responsif.

Cara menggunakan butang bootstrap Cara menggunakan butang bootstrap Apr 07, 2025 pm 03:09 PM

Bagaimana cara menggunakan butang bootstrap? Perkenalkan CSS bootstrap untuk membuat elemen butang dan tambahkan kelas butang bootstrap untuk menambah teks butang

Cara melihat tarikh bootstrap Cara melihat tarikh bootstrap Apr 07, 2025 pm 03:03 PM

Jawapan: Anda boleh menggunakan komponen pemetik tarikh bootstrap untuk melihat tarikh di halaman. Langkah -langkah: Memperkenalkan rangka kerja bootstrap. Buat kotak input pemilih Tarikh dalam HTML. Bootstrap secara automatik akan menambah gaya kepada pemilih. Gunakan JavaScript untuk mendapatkan tarikh yang dipilih.

Cara menggunakan bootstrap di vue Cara menggunakan bootstrap di vue Apr 07, 2025 pm 11:33 PM

Menggunakan bootstrap dalam vue.js dibahagikan kepada lima langkah: Pasang bootstrap. Import bootstrap di main.js. Gunakan komponen bootstrap secara langsung dalam templat. Pilihan: Gaya tersuai. Pilihan: Gunakan pemalam.

See all articles