Css flex indentasi antara elemen. Menyelaraskan blok dengan CSS menggunakan wadah Flex

CSS FlexBox. (Modul Layout Kotak Fleksibel) - Modul tata letak wadah fleksibel adalah metode elemen peletakan, dasar sumbu didasarkan pada.

FlexBox terdiri dari keluar flex Container (Wadah Flex) dan barang Fleksibel (Item Flex). Elemen fleksibel dapat dibangun ke dalam string atau kolom, dan ruang kosong yang tersisa didistribusikan di antara mereka dengan berbagai cara.

Modul Flexbox memungkinkan Anda untuk menyelesaikan tugas-tugas berikut:

  • Tempatkan elemen dalam salah satu dari empat arah: dari kiri ke kanan, kanan kiri, atas atau bawah ke atas.
  • Mengesampingkan prosedur untuk menampilkan elemen.
  • Secara otomatis menentukan dimensi item sehingga mereka cocok dengan ruang yang terjangkau.
  • Pecahkan masalah dengan pusat horizontal dan vertikal.
  • Transfer elemen-elemen di dalam wadah tanpa membiarkan overflow.
  • Buat kolom dengan tinggi yang sama.
  • Buat ditekan ke bagian bawah halaman.

Flexbox memecahkan tugas-tugas tertentu - pembuatan tata letak satu dimensi, misalnya, panel navigasi, karena elemen flex hanya dapat ditempatkan pada salah satu sumbu.

Daftar masalah saat ini dari modul dan solusi lintas-browser untuk mereka yang dapat Anda baca di artikel Philip Walton.

Apa itu FlexBox.

Mendukung browser

YAITU: 11.0, 10.0 -ms-
Firefox: 28.0, 18.0 -Moz-
Chrome: 29.0, 21.0 -webkit-
Safari: 6.1 -WebKit-
Opera: 12.1 -webkit.
iOS Safari: 7.0 -webkit-
Opera Mini: 8
Browser Android: 4.4, 4.1 -webkit-
Chrome untuk Android: 44

1. Konsep dasar

Ara. 1. Flexbox Model.

Untuk menggambarkan modul Flexbox, set istilah tertentu digunakan. Nilai flow-flow dan mode perekaman menentukan korespondensi dari istilah-istilah ini ke arah fisik: atas / kanan / bawah / kiri, sumbu: vertikal / horizontal dan ukuran: lebar / tinggi.

Sumbu Utama. - Sumbu di mana elemen flex diletakkan. Itu terutama mengukur.

Mulai Utama dan Akhir Utama - Garis yang menentukan sisi awal dan akhir dari wadah fleksibel, relatif ke mana elemen flex diletakkan (dimulai dengan awal utama menuju ujung utama).

Ukuran utama) - Lebar atau ketinggian wadah fleksibel atau elemen flex, tergantung pada kenyataan bahwa mereka terutama diukur, tentukan ukuran utama wadah fleksibel atau elemen flex.

Silang sumbu - Axis tegak lurus dengan sumbu utama. Itu memanjang dalam dimensi transversal.

Cross Start and Cross End - Garis yang menentukan sisi awal dan akhir dari sumbu transversal relatif yang diletakkan elemen-elemen flex.

Ukuran silang) - Lebar atau ketinggian fleksibel-wadah atau elemen fleksibel, tergantung pada apa yang ada dalam dimensi transversal, adalah ukuran transversal mereka.


Ara. 2. Mode Baris dan Kolom

2. Flex-wadah

Flex Container menetapkan konteks pemformatan baru yang fleksibel untuk isinya. Wadah fleksibel bukan kontainer blok, oleh karena itu sifat-sifat CSS seperti float, jelas, luring vertikal tidak berfungsi untuk elemen anak. Juga, wadah fleksibel tidak mempengaruhi properti kolom, membuat speaker dalam teks dan elemen pseudo :: lini pertama dan :: huruf pertama.

Model Markup Flexbox dikaitkan dengan nilai tertentu dari properti CSS dari tampilan elemen HTML induk yang mengandung blok sub-pemilihan di dalam dirinya sendiri. Untuk mengontrol elemen-elemen menggunakan model ini, Anda perlu mengatur properti tampilan sebagai berikut:

Flex-Container (/ * Menghasilkan Blok Flex-Container * / display: -WebKit-Flex; Tampilan: Flex;) .flex-wadah (/ * Menghasilkan level string wadah-wadah * / display: -WebKit-inline-Flex ; Tampilan: inline-flex;)

Setelah menginstal nilai properti ini, setiap elemen anak secara otomatis menjadi elemen flex, pengaturan dalam satu baris (sepanjang sumbu utama). Dalam hal ini, elemen blok dan huruf kecil berperilaku sama, I.E. Lebar blok sama dengan lebar isinya, dengan mempertimbangkan bidang dalam dan bingkai elemen.


Ara. 3. Elemen Alignment dalam model Flexbox

Jika blok induk berisi teks atau gambar tanpa pembungkus, mereka menjadi elemen flex anonim. Teks adalah leveling di atas tepi atas blok wadah, dan ketinggian gambar menjadi sama dengan ketinggian blok, I.E. Itu cacat.

3. Elemen fleksibel

Flex-Elements - Blok yang mewakili isi wadah fleksibel di aliran. Wadah Flex menetapkan konteks pemformatan baru untuk isinya, yang menyebabkan fitur-fitur berikut:

  • Untuk elemen flex, nilai properti tampilan diblokir. Nilai tampilan: blok inline; dan menampilkan: sel tabel; dihitung dalam layar: blok; .
  • Ruang kosong antara elemen-elemen menghilang: itu tidak menjadi elemen fleksibel sendiri, bahkan jika teks inter-elemen dibungkus dalam elemen flex anonim. Untuk isi elemen flex anonim, tidak mungkin untuk menetapkan gaya mereka sendiri, tetapi akan mewarisi mereka (misalnya, parameter font) dari wadah fleksibel.
  • Elemen Flex yang benar-benar diposisikan tidak berpartisipasi dalam tata letak tata letak.
  • Margin Fields Elemen Flex yang berdekatan tidak runtuh.
  • Nilai persentase margin dan padding dihitung dari ukuran internal blok yang berisi mereka.
  • mARGIN: AUTO; Memperluas, menyerap ruang tambahan dalam pengukuran yang sesuai. Mereka dapat digunakan untuk menyelaraskan atau menyebarkan elemen flex yang berdekatan.
  • Ukuran minimum otomatis elemen fleksibel secara default adalah ukuran minimum isinya, yaitu, Lebar Min: AUTO; . Untuk menggulir wadah, ukuran minimum otomatis biasanya nol.

4. Flex-elemen dan orientasi

Isi wadah fleksibel dapat didekomposisi ke segala arah dan dalam urutan apa pun (pemesanan ulang elemen-elemen flex di dalam wadah hanya mempengaruhi rendering visual).

4.1. Arah sumbu utama: arah fleksibel

Properti itu milik wadah fleksibel. Mengelola arah sumbu utama, di mana elemen flex ditumpuk, sesuai dengan mode perekaman saat ini. Tidak diwarisi.

arah fleksibel.
Nilai:
Baris Nilai default dari kiri ke kanan (di RTL ke kanan kiri). Elemen Flex diletakkan di string. Awal (utama-mulai) dan tujuan akhir (main-end) dari sumbu utama sesuai dengan awal (inline-start) dan akhir (inline-end) dari sumbu inline (sumbu inline).
Baris-terbalik. Arah ke kanan kiri (di RTL kiri ke kanan). Elemen fleksibel diletakkan di string relatif terhadap tepi kanan wadah (dalam RTL - kiri).
kolom. Arah dari atas ke bawah. Elemen Flex ditata di kolom.
Kolom-terbalik. Kolom dengan elemen dalam urutan terbalik, bawah ke atas.
awal
mewarisi.

Ara. 4. Properti arah fleksibel untuk bahasa kiri ke kanan

Sintaksis

Flex-Container (Display: -WebKit-Flex; -webkit-Flex-Direction: Row-Reverse; Tampilan: Flex; Arah Fleksi: Baris-Terbalik;)

4.2. Mengelola Wadah Multi-Flex: Bungkus Flex

Properti menentukan apakah wadah flex akan menjadi garis tunggal atau multi-line, dan juga mengatur arah sumbu transversal, yang menentukan arah garis wadah fleksibel baru.

Secara default, elemen Flex ditumpuk dalam satu baris di sepanjang sumbu utama. Ketika meluap, mereka akan melampaui bingkai batas wadah fleksibel. Properti ini tidak diwarisi.


Ara. 5. Mengelola Multi-Stream menggunakan properti Flex-Wrap untuk LTR-Bahasa

Sintaksis

Flex-Container (Display: -WebKit-Flex; -WebKit-Flex-Wrap: Bungkus; Tampilan: Flex; Bungkus Flex;)

4.3. Ringkasan Arah dan Multipelay: Flex-Flow

Properti ini memungkinkan Anda untuk menentukan arah sumbu utama dan transversal, serta kemungkinan mentransfer elemen FLEX jika perlu untuk beberapa baris. Ini adalah rekaman singkatan dari arah fleksibel dan sifat flux-wrap. Nilai default adalah fleksibel-aliran: Baris NowRap; . Properti ini tidak diwarisi.

Sintaksis

Flex-Container (Display: -WebKit-Flex; -WebKit-Flex-Flow: Baris Bungkus; Tampilan: Flex; Flex-Flow: Row Wrap;)

4.4. Perintah Tampilan Elemen Flex: Pesanan

Properti menentukan urutan di mana elemen fleksibel ditampilkan dan terletak di dalam wadah fleksibel. Berlaku untuk elemen fleksibel. Properti ini tidak diwarisi.

Awalnya, semua elemen flex memiliki pesanan: 0; . Saat menentukan nilai dari -1 untuk elemen, bergerak ke awal waktu, nilai 1 - sampai akhir. Jika beberapa elemen flex memiliki nilai pesanan yang sama, mereka akan ditampilkan sesuai dengan pesanan asli.

Sintaksis

Flex-Container (Display: -WebKit-Flex; Tampilan: Flex;) .Flex-Item (-WebKit-order: 1;)
Ara. 6. Perintah tampilan elemen fleksibel

5. Elemen Flex Fleksibel

Aspek penentuan tata letak yang fleksibel adalah kemampuan untuk "menekuk" elemen fleksibel, mengubah lebar / tinggi mereka (tergantung pada ukuran mana pada sumbu utama) untuk mengisi ruang yang tersedia di dimensi utama. Ini dilakukan dengan menggunakan properti Flex. Wadah Flex mendistribusikan ruang kosong antara elemen-elemen anaknya (sebanding dengan koefisien fleksibel mereka) untuk mengisi wadah atau mengompresnya (sebanding dengan koefisien flex-shrink) untuk mencegah overflow.

Elemen Flex akan sepenuhnya "tidak fleksibel" jika nilai fleksibel dan shrink fleksibel adalah nol, dan "fleksibel" sebaliknya.

5.1. Set ukuran fleksibel dengan satu properti: Flex

Properti ini merupakan catatan singkat tentang sifat fleksibel-tumbuh, shrink-shrink dan fleksibe. Nilai default: Flex: 0 1 otomatis; . Anda dapat menentukan satu dan ketiga properti. Properti ini tidak diwarisi.

Sintaksis

Flex-Container (Display: -WebKit-Flex; Tampilan: Flex;) .Flex-Item (-WebKit-Flex: 3 1 100px; -ms-Flex: 3 1 100px;)

5.2. Koefisien Pertumbuhan: Flex-Grow

Properti menentukan koefisien pertumbuhan satu elemen fleksibel relatif terhadap elemen flex lainnya dalam wadah fleksibel selama distribusi ruang kosong positif. Jika jumlah nilai elemen fleksibel fleksibel dalam string kurang dari 1, mereka menempati kurang dari 100% dari ruang bebas. Properti ini tidak diwarisi.


Ara. 7. Manajemen ruang kosong di panel navigasi menggunakan fleksibel

Sintaksis

Flex-Container (Display: -WebKit-Flex; Tampilan: Flex;) .Flex-Item (-WebKit-Flex-Grow: 3; Flex-Grow: 3;)

5.3. Rasio Kompresi: Flex-Shrink

Properti ini menunjukkan koefisien kompresi elemen flex relatif terhadap elemen-elemen flex lainnya selama distribusi ruang bebas negatif. Dikalikan dengan ukuran dasar fleksibel. Ruang negatif didistribusikan secara proporsional dengan waktu bagaimana elemen dapat meluncur, oleh karena itu, misalnya, elemen flex kecil tidak akan berkurang ke nol hingga elemen flex terasa berkurang. ukuran yang lebih besar. Properti ini tidak diwarisi.


Ara. 8. Penyempitan elemen flex dalam string

Sintaksis

Flex-Container (Display: -WebKit-Flex; Tampilan: Flex;) .Flex-Item (-WebKit-Flex-Shrink: 3; Flex-Shrink: 3;)

5.4. Ukuran Dasar: Basis Flex

Properti menetapkan ukuran utama awal elemen flex sebelum distribusi ruang kosong sesuai dengan koefisien fleksibilitas. Untuk semua nilai, kecuali untuk otomatis dan konten, ukuran fleksibel dasar didefinisikan serta lebar dalam mode perekaman horizontal. Nilai persentase ditentukan relatif terhadap ukuran wadah fleksibel, dan jika ukurannya tidak ditentukan, nilai yang digunakan untuk fleksibel adalah ukuran isinya. Tidak diwarisi.

Sintaksis

Flex-Container (Display: -WebKit-Flex; Tampilan: Flex;) .Flex-Item (-WebKit-Flex-basis: 100px; Flex-Basis: 100px;)

6. Alignment.

6.1. Penyelarasan pada sumbu utama: membenarkan konten

Properti ini menyelaraskan elemen-elemen flex di sepanjang sumbu utama wadah fleksibel, mendistribusikan ruang kosong, tidak dihuni oleh elemen fleksibel. Ketika item dikonversi ke wadah fleksibel, elemen fleksibel default dikelompokkan bersama (jika bidang margin tidak ditentukan). Kesenjangan ditambahkan setelah menghitung nilai margin dan fleksibel-tumbuh. Jika ada elemen yang memiliki nilai non-nol dari flex-grow atau margin: AUTO; Properti tidak akan memiliki pengaruh. Properti ini tidak diwarisi.

Nilai:
Flex-Start. Nilai default. Elemen fleksibel ditata ke arah yang datang dari garis awal wadah fleksibel.
Flex-end. Elemen fleksibel diletakkan ke arah yang datang dari garis terakhir wadah fleksibel.
Pusat Elemen Flex diselaraskan di tengah wadah fleksibel.
Ruang-antar. Elemen flex didistribusikan secara seragam melalui garis. Elemen fleksibel pertama ditempatkan di tepi garis awal, elemen flex terakhir adalah untuk menyiram dengan tepi garis akhir, dan elemen flex yang tersisa pada garis didistribusikan sehingga jarak antara dua elemen yang berdekatan adalah sama. Jika ruang kosong yang tersisa negatif atau dalam string hanya ada satu elemen flex, nilai ini identik dengan parameter mulailah fleksibel.
Ruang-sekitar. Elemen fleksibel pada garis didistribusikan sehingga jarak antara dua elemen flex yang berdekatan adalah sama, dan jarak antara elemen flex pertama / terakhir dan tepi wadah fleksibel berkisar dari jarak antar elemen flex.
awal Menetapkan nilai properti default.
mewarisi. Mewarisi nilai properti dari elemen induk.

Ara. 9. Penyelarasan elemen dan distribusi ruang kosong menggunakan properti pembenaran-konten

Sintaksis

Flex-Container (Display: -WebKit-Flex; -WebKit-Justify-Content: Flex-start; Tampilan: Flex; Konten Flex;)

6.2. Sejajarkan Sumbu Transversal: Align-Item dan Align-Diri

Elemen Flex dapat diselaraskan pada sumbu transversal dari baris saat ini dari wadah flex. Align-item set penyelarasan untuk semua elemen kontainer fleksibel, termasuk elemen flex anonim. Align-Diri memungkinkan Anda untuk menimpa penyelarasan ini untuk elemen flex individu. Jika salah satu elemen margin flex transversal adalah otomatis, self-diri tidak berpengaruh.

6.2.1. Align-item.

Properti ini menyelaraskan elemen Flex, termasuk elemen flex anonim pada sumbu transverse. Tidak diwarisi.

Nilai:
Flex-Start.
Flex-end.
Pusat
Baseline. Garis dasar semua elemen flex yang terlibat dalam penyelarasan bertepatan.
Meregang.
awal Menetapkan nilai properti default.
mewarisi. Mewarisi nilai properti dari elemen induk.
Ara. 10. Penyelarasan elemen dalam wadah vertikal

Sintaksis

Flex-Container (Display: -WebKit-Flex; -webkit-align-items: Flex-start; Tampilan: Flex; Surel-item: Flex-Start;)

6.2.2. Menyelaraskan diri.

Properti ini bertanggung jawab untuk menyelaraskan elemen flex terpisah di ketinggian wadah fleksibel. Mengesampingkan keselarasan yang ditentukan oleh align-item. Tidak diwarisi.

Nilai:
MOBIL. Nilai default. Elemen Flex menggunakan penyelarasan yang ditentukan dalam properti wadah fleksibel align-item.
Flex-Start. Tepi atas elemen flex ditempatkan erat dengan garis flex (atau pada kejauhan, dengan mempertimbangkan bidang margin yang ditentukan dan kerangka kerja perbatasan elemen) yang melewati awal sumbu transversal.
Flex-end. Tepi bawah elemen flex ditempatkan erat dengan garis flex (atau pada jarak, dengan mempertimbangkan bidang margin yang ditentukan dan kerangka kerja perbatasan elemen) melewati ujung sumbu transversal.
Pusat Field Elemen Flex berpusat pada sumbu melintang di dalam garis Flex.
Baseline. Elemen flex diselaraskan dengan baseline.
Meregang. Jika ukuran transversal dari elemen flex dihitung sebagai otomatis dan tidak ada nilai transversal dari margin tidak sama dengan otomatis, elemennya diregangkan. Nilai default.
awal Menetapkan nilai properti default.
mewarisi. Mewarisi nilai properti dari elemen induk.

Ara. 11. Penyelarasan elemen flex individu

Sintaksis

Flex-Container (Display: -WebKit-Flex; Tampilan: Flex;) .Flex-Item (-WebKit-align-Self: Center;)

6.3. Garis Kontainer Flex: Konten Align

Properti melapisi garis-garis dalam wadah flex di hadapan ruang tambahan pada sumbu transversal, sama dengan menyelaraskan elemen individu Pada sumbu utama menggunakan properti pembenaran-konten. Properti ini tidak mempengaruhi wadah fleksibel tunggal. Tidak diwarisi.

Nilai:
Flex-Start. Baris disimpan menuju awal wadah fleksibel. Tepi baris pertama ditempatkan dekat dengan tepi wadah fleksibel, setiap selanjutnya - dekat dengan baris sebelumnya.
Flex-end. Baris diletakkan pada akhir wadah fleksibel. Tepi dari baris terakhir ditempatkan dekat dengan tepi wadah fleksibel, setiap sebelumnya - dekat dengan baris berikutnya.
Pusat Baris disimpan menuju pusat wadah flex. Baris terletak dekat satu sama lain dan selaras di tengah wadah fleksibel dengan jarak yang sama antara tepi awal isi wadah fleksibel dan string pertama dan antara tepi akhir dari konten konten flex dan string terakhir.
Ruang-antar. Baris didistribusikan secara seragam dalam wadah fleksibel. Jika ruang kosong yang tersisa negatif atau wadah fleksibel hanya memiliki satu garis flex, nilai ini identik dengan mulailah fleksibel. Jika tidak, tepi baris pertama ditempatkan dekat dengan tepi awal konten wadah fleksibel, tepi baris terakhir dekat dengan tepi akhir konten wadah fleksibel. Garis yang tersisa didistribusikan sehingga jarak antara dua baris yang berdekatan adalah sama.
Ruang-sekitar. Baris didistribusikan secara seragam dalam wadah fleksibel dengan setengah ruang di kedua ujungnya. Jika ruang kosong yang tersisa negatif, nilai ini identik dengan pusat pusat. Jika tidak, string didistribusikan sedemikian rupa sehingga jarak antara dua baris yang berdekatan adalah sama, dan jarak antara baris pertama / terakhir dan tepi isi wadah flex berkisar dari jarak antar baris.
Meregang. Nilai default. Baris elemen flex diregangkan secara merata, mengisi semua ruang yang tersedia. Jika ruang kosong yang tersisa negatif, nilai ini identik dengan mulailah. Jika tidak, ruang kosong akan dibagi rata di antara semua baris, meningkatkan ukuran transversal mereka.
awal Menetapkan nilai properti default.
mewarisi. Mewarisi nilai properti dari elemen induk.
Ara. 12. Penyelarasan multi-garis dari elemen flex

Sintaksis

Flex-Container (Display: -WebKit-Flex; -WebKit-Flex-Flow: Baris Bungkus; -WebKit-align-Content: Flex-End; Display: Flex-Flow: Flex-End: Flex-end: ; Tinggi: 100px;)

Modul tata letak Flexbox (kotak fleksibel) ditujukan untuk memberikan lebih dari metode yang efektif Lokasi, penyelarasan dan distribusi ruang kosong antara elemen dalam wadah, bahkan ketika ukurannya tidak diketahui di muka dan / atau dinamis (oleh karena itu, kata "Flex").

Ide dasar dari markup fleksibel (fleksibel) adalah untuk menyediakan wadah dengan kemampuan untuk mengubah lebar / tinggi (dan urutan) dari elemen-elemennya untuk jalan terbaik Isi ruang yang tersedia (terutama untuk penempatan pada semua jenis dan ukuran layar). Wadah FlexBox memperluas elemen untuk mengisi ruang kosong atau mengompresnya untuk menghindari overflow.

Yang paling penting adalah bahwa Flexbox adalah agnostik terarah berbeda dengan tata letak yang biasa (blok berdasarkan pada posisi vertikal dan elemen string berdasarkan posisi horizontal). Terlepas dari kenyataan bahwa mereka bekerja dengan cukup baik, mereka kurang fleksibilitas untuk mendukung aplikasi besar atau kompleks (terutama ketika datang ke perubahan orientasi, perubahan ukuran, peregangan, kompresi, dll.)

Catatan. Flexbox lebih cocok untuk komponen aplikasi dan tata letak kecil, sedangkan CSS grid dirancang untuk tata letak yang lebih besar.

Dasar dan terminologi.

Karena FlexBox adalah keseluruhan modul, bukan properti terpisah, mengandung banyak hal yang berbeda, termasuk satu set properti. Beberapa dari mereka dirancang untuk memasang wadah mereka (elemen induk yang dikenal sebagai "wadah flex"), sementara yang lain harus diinstal dengan elemen anak (dikenal sebagai "elemen flex").

Jika sistem tata letak biasa didasarkan pada arahan blok dan string, FlexBox didasarkan pada "arahan aliran fleksibel". Silakan lihat gambar ini dari spesifikasi yang menjelaskan ide dasar Flexbox.

Pada dasarnya elemen akan berlokasi sumbu Utama. (dari awal utama ke ujung utama) atau silang sumbu (dari cross-start ke cross-end).

Mendukung browser

Modul Layout Kotak Fleksibel CSS

Chrome untuk Android.

Browser BlackBerry dimulai dengan 10 versi mendukung sintaks baru.

Properti untuk wadah

Properti untuk elemen.

Properti untuk elemen induk (wadah flex)

display.

Menentukan wadah fleksibel; String atau blok tergantung pada nilai yang ditransmisikan. Termasuk konteks flex untuk semua elemen anak yang langsung.

Wadah (Tampilan: Flex; / * atau Interline-Flex * /)

Harap dicatat bahwa kolom CSS tidak mempengaruhi wadah fleksibel.

arah fleksibel.


Atur sumbu utama, dengan demikian menentukan arah elemen yang terletak di wadah. Flexbox (selain pembungkus opsional) adalah konsep tata letak searah. Pikirkan elemen fleksibel, terutama sebagai garis horizontal atau speaker vertikal.

Wadah (arah fleksibel: baris | baris-terbalik | kolom | kolom-terbalik;)

  • baris (default) - Dari kiri ke kanan di LTR; kanan ke kiri di RTL;
  • baris-terbalik. - kanan ke kiri di LTR; Dari kiri ke kanan di RTL;
  • kolom. - Hal yang sama adalah baris itu, hanya dari atas ke bawah;
  • kolom-terbalik. - Hal yang sama adalah baris-terbalik, hanya dari bawah ke atas;

flex-wrap.


Secara default, item akan mencoba mengisi hanya satu baris. Anda dapat mengubah perilaku ini dan memungkinkan item ditransfer ke baris berikutnya, jika perlu.

Wadah (flux-wrap: nowrap | bungkus | bungkus-terbalik;)

  • nowrap (default) - Semua elemen flex akan terletak pada satu baris;
  • membungkus. - Elemen Flex akan terletak di beberapa baris, top down;
  • bungkus-terbalik. - Elemen Flex akan terletak di beberapa baris, bottom-up;

membenarkan konten


Menentukan keselarasan di sepanjang sumbu utama. Ini membantu untuk mendistribusikan sisa ruang kosong setelah semua diperbaiki dan tidak diperbaiki dalam lebar fleksibel elemen telah mencapai ukuran maksimum. Ini juga membantu untuk melakukan kontrol atas penyelarasan elemen-elemen ketika mereka meluap tali.

Wadah (Membenarkan Konten: Mulai Flex | Flex-End | Center | Space-Antara | Space-Around;)

  • flex-Start (default) - Elemen-elemen ditekan ke awal baris;
  • flex-end. - Elemen-elemen ditekan menjelang akhir string;
  • pusat - Elemen terletak di tengah sepanjang string;
  • ruang-antar. - Elemen ditempatkan secara merata pada garis; Elemen pertama adalah di awal baris, elemen terakhir. Terletak di ujung garis;
  • ruang-sekitar. - Elemen-elemen ditempatkan secara merata pada garis dengan ruang yang sama di dekat mereka. Harap dicatat bahwa ruang visual tidak sama, karena semua elemen memiliki ruang yang sama di kedua sisi. Elemen pertama akan memiliki satu unit ruang dari sisi wadah, tetapi dua unit antara itu dan elemen berikutnya, karena elemen berikutnya juga memiliki satu unit dari dua sisi.

align-item.


Properti ini menentukan perilaku elemen flex di sepanjang sumbu transversal pada baris saat ini. Pikirkan itu sebagai O, hanya untuk sumbu transversal (sumbu utama tegak lurus).

Wadah (Align-Item: Mulai Flex | Flex-End | Center | Baseline | Peregangan;)

  • flex-Start - Elemen ditempatkan pada awal sumbu transversal;
  • fleksibel - Elemen ditempatkan pada akhir sumbu transversal;
  • pusat - Elemen terletak di tengah sumbu transversal;
  • baseline. - Elemen diselaraskan oleh baseline;
  • regangan (default) - Peregangan untuk mengisi seluruh wadah (lebar min-width / maks masih diamati);

sejajarkan - konten


Catatan. Properti ini tidak berfungsi ketika hanya ada satu garis elemen flex.

Wadah (sejajar-konten: flex-start | fleksibel | tengah | ruang-antara | spasi-sekitar | peregangan;)

  • flex-Start. - Baris terletak di awal wadah;
  • flex-end. - Garis terletak di ujung wadah;
  • pusat - Baris ditempatkan di tengah wadah;
  • ruang-antar. - baris didistribusikan secara merata, baris pertama terletak di awal wadah, dan baris terakhir di akhir;
  • ruang-sekitar. - baris didistribusikan secara merata, dengan jarak yang sama diantara mereka;
  • regangan (default) - Baris diregangkan melintasi lebar untuk menempati ruang yang tersisa;

Properti untuk Anak Perusahaan (Elemen Flex)

memesan


Secara default, semua elemen terletak di urutan asli. Namun, properti pesanan mengelola urutan di mana elemen di dalam wadah berada.

Item (Pesanan: ; }

fleksibel tumbuh.


Properti menentukan kemampuan untuk meningkatkan ukuran elemen, jika perlu. Dibutuhkan nilai tanpa dimensi sebagai proporsi yang menentukan bagaimana jumlah ruang kosong di dalam wadah harus menempati elemen.

Jika semua elemen memiliki properti fleksibel yang diinstal pada 1, maka ruang kosong di dalam wadah akan didistribusikan secara merata di antara semua elemen. Jika salah satu dari nilai elemen diatur ke 2, elemen akan dua kali lipat ruang daripada yang lain (setidaknya coba).

Item (Flex-Grow: ; / * default 0 * /)

Tidak mungkin untuk menunjukkan angka negatif.

fleksibil.

Menentukan ukuran elemen default, sebelum distribusi ruang yang tersisa. Mungkin panjang (20%, 5rem, dll) atau kata kunci.. Kata kunci otomatis berarti "terlihat seperti lebar atau properti lebar saya". Kata kunci konten berarti bahwa "ukuran didasarkan pada konten elemen" adalah kata kunci belum didukung dengan sangat baik, jadi sulit untuk memeriksanya, dan bahkan lebih sulit untuk mengetahui apa yang membuat konten minnya, maks- Konten dan konten fit.

Item (dasar fleksibel: | MOBIL; / * Auto default * /)

Jika diatur ke 0, maka ruang tambahan di sekitar konten tidak akan diperhitungkan. Jika Anda menginstal Otomatis, ruang tambahan akan didistribusikan berdasarkan nilai.

melenturkan

Ini adalah pengurangan untuk, dan. Parameter kedua dan ketiga (flex-shrink dan fleksible) tidak wajib. Nilai default diatur ke 0 1 otomatis.

Item (Flex: None | [<"flex-grow"> <"flex-shrink">? || <"flex-basis"> ] }

menyelaraskan diri.


Properti ini memungkinkan Anda untuk menimpa penyelarasan default (atau ditentukan menggunakan properti) untuk elemen flex individu.

Silakan lihat penjelasan properti untuk memahami nilai yang tersedia.

Item (Sejajarkan-diri: Auto | Mulai Flex | Flex-end | Center | Baseline | Peregangan;) .Item (Align-Self: Auto | Mulai Flex-end | Flex-End | Baseline | Stretch;)

Harap perhatikan bahwa float, jelas dan vertikal-align tidak memiliki pengaruh pada elemen flex.

Contohnya

Mari kita mulai dengan contoh sederhana.Tugas yang menentukan yang terjadi hampir setiap hari: pemusatan yang sempurna. Itu tidak bisa apa pun yang lebih mudah jika Anda menggunakan FlexBox.

Induk (tampilan: fleksibel; tinggi: 300px;). Menyediakan (lebar: 100px; tinggi: 100px; margin: otomatis;)

Itu tergantung pada fakta bahwa margin yang dipasang di auto dalam wadah fleksibel menyerap ruang tambahan. Dengan demikian, instalasi margin vertikal dalam otomatis pada item akan membuat item berpusat pada kedua sumbu.

Sekarang mari kita gunakan beberapa properti lagi. Pertimbangkan daftar 6 elemen, semua dengan ukuran tetap dalam istilah estetika, tetapi mereka dapat otomatis. Kami ingin mereka mendistribusikan secara merata di sepanjang sumbu horizontal dan sehingga ketika mengubah ukuran browser semuanya dalam urutan (tanpa permintaan media!).

Flex-wadah (Tampilan: Flex; Flex-Flow: Baris Bungkus; Membenarkan-konten: spasi-sekitar;)

Siap! Segala sesuatu yang lain hanyalah beberapa masalah desain. Di bawah ini adalah contoh pada codepen, pastikan untuk pergi ke sana dan mencoba mengubah ukuran jendela untuk melihat apa yang terjadi.

Mari kita coba yang lain. Bayangkan bahwa kami memiliki navigasi yang terletak di tepi kanan di bagian atas layar, tetapi kami ingin berada di tengah pada layar berukuran sedang dan berada dalam satu kolom pada layar kecil. Mudah sekali.

Navigasi (Tampilan: Flex; Flex-Flow: Baris Bungkus; Membenarkan-konten: Flex-end;) @Media semua dan (lebar maksimal: 800px) (.NAVIGAT (konten-konten: space-sekitar;)) dan (lebar maks: 500px) (.Navigasi (arah fleksibel: kolom;))

Mari kita coba lakukan sesuatu yang lebih baik, bermain dengan fleksibilitas elemen flex kita! Bagaimana dengan tata letak seluler-pertama tiga chone dengan tutup dan footer ke seluruh lebar layar, dan bahwa tidak ada ketergantungan pada urutan awal elemen.

Wrapper (Display: Flex; Flex-Flow: Row Wrap;) .Header, .main, .nav, .Acide, .Footer (Flex: 1 100%;) @Media semua dan (.Aside) (.Acide (Flex: 1 AUTO;)) @Media Semua dan (Min-Width: 800px) (.main (Flex: 2 0px;) .Aside-1 (Pesanan: 1;) .Aside 2;). (Pesanan: 3;) .footer (Pesanan: 4;))

Properti Terkait.

Kesalahan

Tentu saja, Flexbox bukan tanpa kesalahan. Koleksi terbaik yang saya lihat diwakili oleh Flexbugs Philip Walton dan Greg Whitworth. Ini adalah tempat open source untuk melacak semua kesalahan, jadi saya pikir yang terbaik hanya meninggalkan tautan.

Properti pesanan mengelola urutan di mana elemen anak muncul di dalam wadah fleksibel. Secara default, mereka berada di urutan awalnya ditambahkan ke wadah fleksibel.

Nilai-nilai

.Flex-Item (Pesanan:<целое число>; }

elemen Flex dapat dipesan ulang menggunakan properti sederhana ini tanpa mengubah kode HTML.

Nilai default.: 0.

fleksibel tumbuh.

Properti ini menetapkan koefisien pertumbuhan yang menentukan seberapa jauh elemen fleksibel akan meningkat relatif terhadap sisa elemen flex dalam wadah fleksibel, ketika mendistribusikan ruang kosong positif.

Nilai-nilai

.flex-item (Flex-Grow:<число>; }

Jika semua elemen fleksibel memiliki nilai fleksibel yang sama, semua elemen akan memiliki ukuran yang sama dalam wadah.

Elemen Flex kedua membutuhkan lebih banyak ruang relatif terhadap ukuran elemen flex lainnya.

Nilai default.: 0.

flex-Susut.

flex-shrink menetapkan koefisien kompresi yang menentukan seberapa jauh elemen flex akan dikompresi relatif terhadap elemen flex yang tersisa dalam wadah fleksibel, selama distribusi ruang bebas negatif.

Nilai-nilai

.flex-item (Flex-Susut:<число>; }

Secara default, semua elemen flex dapat dikompresi, tetapi jika kita mengatur nilai nol fleksibel (tanpa kompresi), maka elemen-elemen mempertahankan ukuran aslinya.

Nilai default.: 1.

Angka negatif tidak dapat diterima.

fleksibil.

Properti ini mengambil arti yang sama dengan sifat lebar dan tinggi, dan mendefinisikan ukuran utama awal dari elemen flex, sebelum ruang kosong didistribusikan sesuai dengan koefisien.

Nilai-nilai

.Flex-Item (Basis Flex: Auto |<ширина>; }

flex-basis ditentukan untuk elemen flex keempat dan menentukan ukuran awalnya.

Nilai default.: otomatis.

melenturkan

Properti ini adalah pengurangan untuk sifat-sifat fleksibel, shrink-shrink dan fleksibel. Tanaman nilai lain juga dapat diinstal otomatis (1 1 otomatis) dan tidak ada (0 0 otomatis).

Nilai-nilai

.Flex-Item (Flex: None | Auto | [ ? || ]; }

Nilai default.: 0 1 otomatis.

W3C merekomendasikan penggunaan properti Flex yang disingkat, alih-alih properti individual, karena Flex dengan benar mengatur ulang komponen yang tidak ditentukan untuk penggunaan khas.

menyelaraskan diri.

Properti self-mandiri memungkinkan Anda untuk menimpa penyelarasan default (atau nilai yang ditentukan melalui item Align) untuk elemen flex individu. Untuk memahami nilai-nilai yang tersedia, lihat deskripsi Align-Item untuk wadah Flex.

Nilai-nilai

.Flex-Item (Align-Self: Auto | Mulai Flex | Flex-End | Center | Baseline | Peregangan;)

Untuk elemen fleksibel ketiga dan keempat, penyelarasan ditimpa melalui properti self-mandiri.

Modul FlexBox-Leuauta. (Kotak fleksibel - "blok fleksibel", pada saat ini Rekomendasi kandidat W3C) menempatkan tugas untuk menawarkan cara yang lebih efisien untuk meletakkan, meratakan dan mendistribusikan ruang kosong antar elemen dalam wadah, bahkan ketika ukurannya tidak diketahui dan / atau dinamis (karenanya "fleksibel").

Gagasan utama dari penjaga flex dalam wadah diberkahi dengan kemampuan untuk mengubah lebar / tinggi (dan urutan) elemen-elemennya untuk mengisi ruang terbaik (dalam banyak kasus - untuk mendukung semua jenis tampilan dan ukuran layar ). Wadah fleksibel membentang elemen untuk mengisi ruang kosong atau mengompresnya untuk mencegah perbatasan.

Yang paling penting, FlexBox-Lealieut tidak tergantung pada arah, berbeda dengan Leiants (blok, yang terletak secara vertikal, dan elemen inline secara horizontal). Sementara Lealieut biasa sangat bagus untuk halaman web, itu tidak memiliki fleksibilitas (tidak ada calalybur) untuk mendukung aplikasi besar atau kompleks (terutama ketika datang untuk mengubah orientasi layar, mengubah ukuran, peregangan, kompresi, dll.)

Komentar: FlexBox-Leuaout paling cocok untuk bagian komposit aplikasi dan leuaiutics skala kecil, sedangkan Grid lebih banyak digunakan untuk LAIAN skala besar.

Dasar-dasarnya

Karena Flexbox adalah keseluruhan modul, dan bukan hanya satu properti, itu menggabungkan banyak properti. Beberapa dari mereka harus diterapkan pada wadah (elemen induk, yang disebut wadah fleksibel.), sementara sifat-sifat lain berlaku untuk elemen anak, atau elemen flex..

Jika leuaout biasa didasarkan pada arahan elemen blok dan inline, fleksibel-liut didasarkan pada "arah aliran fleksibel". Lihat skema ini dari spesifikasi yang menjelaskan ide dasar Flex-Leuaitov.

Sebagian besar elemen akan didistribusikan bersama sumbu Utama. (dari mulai utama. sebelum main-end.) atau Sepanjang axis melintang (dari cross-start. sebelum cross-end.).

  • sumbu utama. - Sumbu utama di mana elemen fleksibel berada. Catatan, itu belum tentu horizontal, semuanya tergantung pada properti flex direction (lihat di bawah).
  • mulai utama. | main-end. - Elemen Flex ditempatkan dalam wadah dari posisi utama-mulai ke posisi utama.
  • ukuran utama. - Lebar atau tinggi elemen flex tergantung pada nilai primer yang dipilih. Nilai utamanya dapat berupa lebar atau tinggi elemen.
  • sumbu silang. - Sumbu transversal tegak lurus terhadap yang utama. Arahnya tergantung pada arah sumbu utama.
  • cross-start. | cross-end. - Baris Flex diisi dengan elemen dan terletak di wadah dari posisi silang ke posisi cross-end.
  • ukuran silang - Lebar atau ketinggian elemen flex, tergantung pada ukuran dimensi, sama dengan besarnya ini. Properti ini bertepatan dengan lebar atau tinggi item tergantung pada ukuran dimensi.

Properti

tampilan: Flex | Inline-flex;

Ini berlaku untuk:

Menentukan wadah fleksibel (inline atau blok, tergantung pada nilai yang dipilih), menghubungkan konteks fleksibel untuk semua keturunan langsungnya.

Tampilan: Nilai Lain | Flex | Inline-flex;

Mengingat:

  • Kolom CSS tidak berfungsi dengan wadah fleksibel
  • float, jelas dan vertikal-align tidak bekerja dengan elemen flex

arah fleksibel.

Ini berlaku untuk: Elemen parental fleksibel-wadah.

Atur sumbu utama sumbu utama, sehingga menentukan arah untuk elemen flex yang ditempatkan dalam wadah.

Flex-Direction: Baris | Row-Reverse | Kolom | Kolom-terbalik.
  • baris (default): dari kiri ke kanan untuk LTR, kanan ke kiri untuk RTL;
  • row-Reverse: Kanan kiri untuk LTR, dari kiri ke kanan untuk RTL;
  • kolom: mirip dengan baris, top down;
  • kolom-terbalik: Mirip dengan baris-terbalik, ke atas.

flex-wrap.

Ini berlaku untuk: Elemen parental fleksibel-wadah.

Menentukan apakah wadah akan menjadi satu-line atau multi-line, serta arah sumbu transversal menentukan arah di mana baris baru akan berada.

Flex-Wrap: Nowrap | Bungkus | Bungkus-terbalik.
  • nowrap (default): satu baris / dari kiri ke kanan untuk LTR, kanan ke kiri untuk RTL;
  • bungkus: Multi-line / dari kiri ke kanan untuk LTR, kanan ke kiri untuk RTL;
  • bungkus-terbalik: Multi-line / kanan kiri untuk LTR, dari kiri ke kanan untuk RTL.

fleksibel-flow.

Ini berlaku untuk: Elemen parental fleksibel-wadah.

Ini adalah pengurangan untuk sifat-sifat fleksibel dan bungkus fleksi, yang bersama-sama menentukan sumbu utama dan transversal. Default mengambil nilai baris sekarang.

Flex-Flow:<"flex-direction" > || <"flex-wrap" >

Ini berlaku untuk: Elemen parental fleksibel-wadah.

Menentukan penyelarasan relatif terhadap sumbu utama. Membantu mendistribusikan ruang kosong yang tersisa dalam kasus ketika elemen-elemen garis tidak "meregangkan", atau meregangkan, tetapi telah mencapai ukuran maksimumnya. Juga memungkinkan dalam beberapa cara untuk mengontrol keselarasan elemen-elemen ketika string dirilis.

: Mulai Flex | Flex-end | Pusat | Ruang-Antara | Ruang-sekitar.
  • flex-Start: Elemen digeser ke awal baris;
  • flex-end: elemen digeser oleh ujung string;
  • pusat: Elemen diselaraskan di tengah garis;
  • space-Antara: Elemen didistribusikan secara merata (elemen pertama di awal baris, yang terakhir - di akhir);
  • space-sekitar: Elemen didistribusikan secara merata dengan jarak yang sama antara mereka dan batas-batas string.

Ini berlaku untuk: Elemen parental fleksibel-wadah.

Menentukan perilaku default untuk elemen flex relatif terhadap sumbu transverse pada baris saat ini. Pertimbangkan versi pembenaran-konten ini untuk sumbu transversal (tegak lurus dengan utama).

: Mulai Flex | Flex-end | Pusat | Baseline | Meregang.
  • flex-Start: Batas silang untuk item terletak di posisi lintas-mulai;
  • flex-end: Batas lintas-ujung untuk item terletak pada posisi lintas-ujung;
  • pusat: Elemen diselaraskan di tengah sumbu transversal;
  • baseline: Elemen diselaraskan untuk baseline mereka;
  • stretch (default): Elemen diregangkan, mengisi wadah (memperhitungkan lebar min-width / maks).

Ini berlaku untuk: Elemen parental fleksibel-wadah.

Menyelaraskan garis kontainer flex di hadapan ruang kosong pada sumbu transversal, dengan cara yang sama seperti yang dilakukan oleh pembenaran pada sumbu utama.

Komentar: Properti ini tidak berfungsi dengan flexbox baris tunggal.

: Mulai Flex | Flex-end | Pusat | Ruang-Antara | Space-sekitar | Meregang.
  • flex-Start: Garis diselaraskan relatif terhadap awal wadah;
  • flex-end: baris selaras relatif terhadap akhir wadah;
  • pusat: baris diselaraskan di tengah wadah;
  • ruang-antara: baris didistribusikan secara merata (baris pertama di awal baris, yang terakhir ada di akhir);
  • space-sekitar: baris didistribusikan secara merata dengan jarak yang sama;
  • stretch (default): baris diregangkan, mengisi ruang kosong.

memesan

Ini berlaku untuk:

Secara default, elemen Flex terletak dalam urutan aslinya. Namun, properti pesanan dapat mengontrol urutan lokasi mereka dalam wadah.

Memesan:<integer\u003e

fleksibel tumbuh.

Ini berlaku untuk: Elemen elemen putri / fleksibel.

Menentukan untuk elemen flex kemampuan untuk "tumbuh" jika perlu. Mengambil nilai yang diindeks yang berfungsi sebagai proporsi. Ini menentukan fraksi ruang kosong apa di dalam wadah dan elemen mungkin menempati.

Jika semua item memiliki properti fleksibel sebagai 1, maka setiap keturunan akan menerima ukuran yang sama di dalam wadah. Jika Anda menetapkan salah satu keturunan hingga 2, maka akan memakan waktu dua kali lebih banyak daripada yang lain.

Flex-Grow:<nomor\u003e (default 0)

flex-Susut.

Ini berlaku untuk: Elemen elemen putri / fleksibel.

Menentukan untuk elemen flex kemampuan untuk mengompres jika perlu.

Flex-Susut: (Default 1)

Angka negatif tidak diterima.

fleksibil.

Ini berlaku untuk: Elemen elemen putri / fleksibel.

Menentukan ukuran default untuk elemen sebelum distribusi ruang dalam wadah.

Flex-Basis:<panjang\u003e. | Otomatis (Auto default)

melenturkan

Ini berlaku untuk: Elemen elemen putri / fleksibel.

Ini adalah reduksi untuk fleksibel, shrink-shrink dan fleksibe. Parameter kedua dan ketiga (flex-shrink, fleksible) adalah opsional. Nilai default adalah 0 1 otomatis.

Flex: Tidak ada | [<"flex-grow" > <"flex-shrink" >? || <"flex-basis" > ]

menyelaraskan diri.

Ini berlaku untuk: Elemen elemen putri / fleksibel.

Memungkinkan Anda menimpa penyelarasan default atau dalam item selaras, untuk elemen flex individu.

Lihat deskripsi properti Align-Item untuk pemahaman yang lebih baik tentang nilai-nilai yang tersedia.

Align-Self: Auto | Flex-Start | Flex-end | Pusat | Baseline | Meregang.

Contohnya

Mari kita mulai dengan contoh yang sangat, sangat sederhana, terjadi hampir setiap hari: keselarasan tepat di tengah. Tidak ada yang lebih mudah jika Anda menggunakan FlexBox.

.Pari (Display: Flex; Tinggi: 300px; / * Atau apapun * / ). Menyuruh (lebar: 100px; / * Atau apapun * / Tinggi: 100px; / * Atau apapun * / MARGIN: AUTO; / * Sihir! * /)

Contoh ini didasarkan pada fakta bahwa margin dalam wadah fleksibel ditentukan sebagai otomatis menyerap ruang yang tidak perlu, sehingga tugas referensi dengan demikian garis elemen persis di tengah kedua sumbu.

Sekarang mari kita gunakan beberapa properti. Hadir satu set 6 elemen ukuran tetap (untuk kecantikan), tetapi dengan kemampuan untuk mengubah ukuran wadah. Kami ingin mendistribusikannya secara merata secara horizontal, sehingga ketika jendela browser diubah ukurannya, semuanya tampak bagus (tanpa @ media-recorder!).

.flex-wadah ( / * Pertama buat konteks fleksibel * / Tampilan: Flex; / * Sekarang kita akan mendefinisikan arah aliran dan apakah kita ingin unsur-unsur ditransfer ke string baru * Ingatlah bahwa ini sama dengan: * Arah Fleksi: Baris; * Flex-Wrap: Bungkus; Atau Flex-Flow: BARU Bungkus; / * Sekarang kita mendefinisikan bagaimana ruang * / : Spasi-sekitar; )

Siap. Segala sesuatu yang lain adalah masalah pendaftaran. Di bawah ini adalah codepen, yang menunjukkan contoh ini. Pastikan untuk mencoba meregangkan / memeras jendela browser dan melihat apa yang terjadi.

Lihat pena ini!

Mari kita coba yang lain. Bayangkan bahwa kita membutuhkan navigasi yang selaras di tepi kanan di bagian paling atas situs kami, tetapi kami ingin selaras di tengah layar berukuran sedang dan berubah menjadi satu kolom pada kecil. Semuanya cukup sederhana.

/ * Layar Besar * / .Navigasi (Tampilan: Flex; Flex-Flow: Bill Wrap; / * Menggeser elemen pada akhir baris pada sumbu utama * / : flex-end; ) @Media semua dan (lebar maks: 800px) (.Navigasi ( / * Untuk layar ukuran menengah, kami menyelaraskan navigasi di tengah, mendistribusikan ruang kosong di antara elemen * / : Spasi-sekitar; )) / * Layar kecil * / @Media semua dan (lebar maks: 500px) (.Navigasi ( / * Pada layar kecil, bukan string, kami memiliki elemen dalam kolom * / Flex-Direction: kolom; )) Lihat pena ini!

Mari kita coba sesuatu yang lebih baik dan bermain dengan fleksibilitas elemen fleksibel! Bagaimana dengan berorientasi pada perangkat seluler Tata letak tiga-chone dengan topi penuh dan ruang bawah tanah? Dan urutan lokasi lain.

.Wrapper (Display: Flex; Flex-Flow: Row Wrap;) / * Kami menentukan semua elemen lebar 100% * / .Header, .main, .nav, .Aside, .falleer (Flex: 1 100%;) / * Dalam hal ini, kami mengandalkan pesanan asli untuk orientasi pada * perangkat seluler: * 1. Header * 2. NAV * 3. Utama * 4. Selain * 5. Footer * / / * Layar berukuran sedang * / @Media semua dan (Lebar min: 600px) ( / * Kedua Sagebar terletak dalam satu baris * / .Aside (Flex: 1 Auto;)) / * Layar Besar * / @Media semua dan (Lebar Min: 800px) ( / * Kami mengubah elemen tempat. Pasang-1 I.Main, dan juga menginformasikan * elemen.main mengambil dua kali lebih banyak ruang daripada Sidbars. Atau .main (Flex: 2 0px;) .Aside-1 (Pesanan: 1;) .main (Pesanan: 2;) .Aside-2 (Pesanan: 3;))) .Footer (Pesanan: 4;))

Jika Anda mengatakan pendek, maka tata letak dengan FlexBox memberi kami solusi sederhana dari tugas yang pernah sulit. Misalnya, ketika Anda perlu menyelaraskan elemen vertikal, atau tekan basement ke bagian bawah layar, atau cukup masukkan beberapa blok ke dalam satu baris sehingga mereka menempati semuanya ruang kosong. Tugas-tugas semacam itu diselesaikan tanpa fleksibel. Tetapi sebagai aturan, solusi ini lebih mirip dengan "kruk" - resepsi untuk menggunakan CSS tidak dimaksudkan. Sedangkan dengan FlexBox, tugas-tugas seperti itu diselesaikan persis seperti yang dipikirkan model Flex.

Modul Layout Kotak Fleksibel CSS (modul CSS untuk modul dengan blok fleksibel), FlexBox pendek, dibuat untuk menghapus kekurangan saat membuat berbagai struktur HTML, termasuk disesuaikan dengan lebar dan tinggi yang berbeda, dan buat tata letak logis dan sederhana. Dan pendekatan logis, sebagai aturan, bekerja di tempat yang tidak terduga, di mana hasilnya tidak dicentang - logika kami!

FlexBox memungkinkan Anda untuk mengontrol secara elegan parameter paling berbeda dari elemen-elemen di dalam wadah: arah, urutan, lebar, tinggi, penyelarasan, distribusi ruang bebas, peregangan dan kompresi elemen.

Pengetahuan dasar

FlexBox terdiri dari wadah dan elemen anaknya (item) (elemen fleksibel).

Untuk memasukkan FlexBox, apapun Elemen html. Cukup untuk menetapkan tampilan properti CSS: Flex; atau tampilan: inline-flex; .

1
2

Setelah menyalakan sifat flex, dua sumbu dibuat di dalam wadah: utama dan melintang (tegak lurus (⊥), sumbu silang). Semua elemen bersarang (level pertama) dibangun di sumbu utama. Secara default, sumbu utama horizontal dan memiliki arah dari kiri ke kanan (→), dan sumbu silang, masing-masing, vertikal dan diarahkan dari atas ke bawah (↓).

Sumbu utama dan silang dapat diubah di tempat, maka elemen akan terletak di atas (↓) dan ketika mereka berhenti pas, mereka akan pindah dari kiri ke kanan (→) - yaitu, sumbu hanya berubah di tempat-tempat . Pada saat yang sama, awal dan akhir lokasi elemen tidak berubah - hanya arah (sumbu) berubah! Itu sebabnya Anda perlu membayangkan sumbu di dalam wadah. Namun, tidak perlu berpikir bahwa ada beberapa kapak "fisik" di sana dan mereka memengaruhi sesuatu. Sumbu di sini hanyalah arah pergerakan elemen di dalam wadah. Misalnya, jika kami mengindikasikan penyelarasan elemen-elemen di tengah sumbu utama dan kemudian mengubah arah sumbu utama ini, itu akan berubah dan menyelaraskan: elemen-elemen berada di tengah secara horizontal, dan baja di tengah secara vertikal .. . Lihat contoh.

Fitur penting lain dari kotak Flex adalah kehadiran baris di arah melintang. Untuk memahami apa yang kita bicarakan, mari kita bayangkan bahwa ada sumbu horizontal utama, banyak elemen dan mereka tidak "memanjat" ke dalam wadah, sehingga mereka pergi ke baris lain. Itu. Wadah ini terlihat seperti ini: wadah, di dalamnya dua baris, di setiap baris untuk beberapa elemen. Disajikan? Sekarang ingat bahwa kita dapat menyelaraskan secara vertikal tidak hanya elemen, tetapi juga baris! Cara kerjanya dengan baik terlihat dalam contoh properti. Dan itu terlihat secara skematis:

Properti CSS.Yang dapat mempengaruhi model konstruksi tata letak: float, jelas, vertikal-align, kolom tidak berfungsi dalam desain flex. Ini menggunakan model lain untuk membangun tata letak dan properti CSS ini hanya diabaikan.

CSS Properties Flexbox.

FlexBox berisi aturan CSS yang berbeda untuk mengontrol seluruh desain Flex. Beberapa perlu diterapkan pada wadah utama, sementara yang lain ke elemen-elemen wadah ini.

Untuk wadah

Tampilan:

Termasuk properti Flex untuk item. Di bawah properti ini, elemen yang diinvestasikan di dalamnya jatuh: hanya keturunan level pertama yang terpengaruh - mereka akan menjadi elemen wadah Flex.

  • melenturkan - Elemen diregangkan ke seluruh lebar dan memiliki ruang penuh di antara blok di sekitarnya. Mendayung berlangsung di awal dan di ujung blok.
  • inline-flex. - Elemennya disederhanakan oleh elemen lain. Dalam hal ini, bagian dalamnya diformat sebagai elemen blok, dan elemen itu sendiri seperti built-in.

flex dan inline-Flex berbeda dalam kenyataan bahwa secara berbeda berinteraksi dengan elemen-elemen di sekitarnya, seperti tampilan: blok dan tampilan: blok inline.

Arah fleksibel:

Mengubah arah sumbu utama wadah. Sumbu transversal berubah sesuai.

  • baris (default) - Arah elemen dari kiri ke kanan (→)
  • kolom. - Arah elemen dari atas ke bawah (↓)
  • baris-terbalik. - Arah elemen di sebelah kanan kiri (←)
  • kolom-terbalik. - Arah elemen dari bawah ke atas ()
Flex-Wrap:

Mengelola transfer elemen tanpa kompeten ke wadah.

  • nowrap (default) - Elemen bersarang terletak di satu baris (selama arah \u003d baris) atau dalam satu kolom (selama arah \u003d kolom), terlepas dari apakah mereka ditempatkan dalam wadah atau tidak.
  • membungkus. - Termasuk transfer item ke baris berikutnya jika tidak ditempatkan di wadah. Ini termasuk pergerakan elemen pada sumbu transversal.
  • bungkus-terbalik. - Juga bungkus saja transfer tidak akan turun, dan naik (ke arah yang berlawanan).
Fleksibel-aliran: arahan bungkus

Menggabungkan sifat fleksibel dan flux-wrap. Mereka sering digunakan bersama, sehingga properti Flex-Flow telah dibuat untuk menulis lebih sedikit kode.

flex-flow menerima nilai dari dua properti, dipisahkan oleh suatu ruang. Atau Anda dapat menentukan satu nilai properti apa pun.

/ * Hanya arah fleksibel * / fleksibel: baris; Flex-Flow: Row-Reverse; Fleksibel-aliran: kolom; Flex-Flow: Column-Reverse; / * Hanya Flex-Wrap * / Flex-Flow: NowRap; Flex-Flow: Bungkus; Fleksibel-aliran: membalikkan-terbalik; / * Segera kedua makna: Flex-Direction dan Flex-Wrap * / Flex-Flow: Baris NowRap; FLEX-FLOW: Bungkus kolom; FLEX-FLOW: Bungkus terbalik kolom-terbalik; Membenarkan konten:

Menyelaraskan elemen pada sumbu utama: jika arah \u003d baris, maka horizontal, dan jika arah \u003d kolom, maka secara vertikal.

  • flex-Start (default) - Elemen akan pergi dari awal (pada akhirnya mungkin ada tempat).
  • flex-end. - Elemen disamakan dengan akhir (tempat akan tetap pada awal)
  • pusat - Di tengah (tempat akan tetap ke kiri dan kanan)
  • ruang-antar. - Elemen ekstrem ditekan ke tepi (tempat antara elemen didistribusikan secara merata)
  • ruang-sekitar. - Ruang kosong didistribusikan secara merata antara elemen (elemen ekstrem tidak ditekan ke tepi). Ruang antara tepi wadah dan elemen ekstrem akan dua kali kurang dari ruang antara elemen di tengah baris.
  • ruang-merata
Sejajar - konten:

Menyelaraskan jajaran di mana elemen pada sumbu melintang berada. Sama seperti membenarkan konten hanya untuk sumbu yang berlawanan.

Catatan: Bekerja ketika setidaknya ada 2 baris, I.E. Jika hanya ada 1 baris yang terjadi.

Itu. Jika arah fleksibel: Baris, properti ini akan menyelaraskan baris yang tidak terlihat secara vertikal |. Penting untuk dicatat bahwa ketinggian blok harus diatur dengan kaku dan harus lebih besar dari ketinggian seri jika tidak, baris itu sendiri akan meregangkan wadah dan penyelarasan mereka kehilangan artinya, karena tidak ada ruang kosong di antara mereka .. . Tetapi ketika arah fleksibel: kolom, maka baris bergerak secara horizontal → dan lebar wadah hampir selalu lebih besar dari lebar seri dan penyelarasan baris segera mengakuisisi makna.

  • regangan (default) - Baris peregangan mengisi tali sepenuhnya
  • flex-Start. - Baris dikelompokkan di bagian atas wadah (mungkin ada tempat pada akhirnya).
  • flex-end. - baris dikelompokkan di bagian bawah wadah (tempat akan tetap pada awal)
  • pusat - baris dikelompokkan di tengah wadah (tempat akan tetap di tepi)
  • ruang-antar. - Baris ekstrem ditekan ke arah tepinya (tempat antara baris didistribusikan secara merata)
  • ruang-sekitar. - Ruang kosong didistribusikan secara merata di antara baris (elemen ekstrem tidak ditekan ke arah tepinya). Ruang antara tepi wadah dan elemen ekstrem akan dua kali kurang dari ruang antara elemen di tengah baris.
  • ruang-merata - Juga ruang-sekitar, hanya jarak dalam elemen ekstrem ke tepi wadah sama dengan antara elemen.
Align-Item:

Aligns elemen pada sumbu transversal di dalam baris (garis tak terlihat). Itu. Baris itu sendiri selaras melalui konten luring, dan elemen-elemen dalam baris ini (string) melalui align-item dan semua ini pada sumbu transverse. Tidak ada pemisahan seperti itu dari sumbu utama, tidak ada konsep seri dan elemen yang diselaraskan melalui konten pembenaran.

  • regangan (default) - Elemen peregangan mengisi string sepenuhnya
  • flex-Start. - Elemen-elemen ditekan ke awal baris
  • flex-end. - Elemen-elemen ditekan terhadap ujung baris
  • pusat - Elemen leveling di tengah baris
  • baseline. - Elemen diselaraskan oleh teks dasar

Untuk elemen kontainer.

Flex-Grow:

Menentukan peningkatan faktor elemen dengan adanya ruang kosong dalam wadah. Flex-Grow default: 0 I.E. Tidak ada elemen yang harus menambah dan mengisi ruang kosong dalam wadah.

Flex default-tumbuh: 0

  • Jika semua elemen menunjukkan fleksibel - tumbuh: 1, maka mereka semua meregangkan dan mengisi semua ruang kosong dalam wadah.
  • Jika salah satu elemen menunjukkan fleksibel-tumbuh: 1, maka itu akan mengisi semua ruang kosong dalam wadah dan penyelarasan melalui pekerjaan konten pembenaran tidak akan dapat bekerja: Tidak ada yang bisa menyelaraskan ruang ...
  • Saat fleksibel tumbuh: 1. Jika salah satu dari mereka memiliki fleksibel - tumbuh: 2, itu akan 2 kali lebih banyak daripada orang lain
  • Jika semua blok flex di dalam wadah fleksibel memiliki fleksibel-tumbuh: 3, maka mereka akan berukuran sama
  • Dengan fleksibel-tumbuh: 3. Jika salah satu dari mereka memiliki fleksibel tumbuh: 12, itu akan menjadi 4 kali lebih banyak daripada orang lain

Bagaimana itu bekerja? Misalkan wadah memiliki lebar 500px dan berisi dua elemen, yang masing-masing memiliki lebar dasar 100px. Oleh karena itu, 300 piksel bebas tetap dalam wadah. Sekarang, jika Anda menentukan fleksibel-tumbuh: 2 elemen pertama; , dan flex-grow kedua: 1; Blok akan mengambil seluruh lebar wadah yang tersedia dan lebar blok pertama akan menjadi 300px, dan 200px kedua. Ini dijelaskan oleh fakta bahwa ruang kosong 300px yang tersedia dalam wadah didistribusikan antara elemen dalam rasio 2: 1, + 200px dari yang pertama dan + 100px kedua.

Catatan: Dalam nilai yang dapat Anda tentukan angka fraksional., misalnya: 0,5 - Flex-Grow: 0,5

Flex-Susut:

Menentukan faktor pengurangan elemen. Fitur ini adalah fleksibel-tumbuh dan menentukan bagaimana elemen harus dikompresi jika tidak ada ruang kosong dalam wadah. Itu. Properti mulai bekerja ketika jumlah ukuran semua elemen lebih besar dari ukuran wadah.

Flex-Shrink Default: 1

Misalkan wadah memiliki lebar 600px dan berisi dua elemen, yang masing-masing memiliki lebar 300px - basis fleksibel: 300px; . Itu. Dua elemen sepenuhnya mengisi wadah. Elemen pertama akan menunjukkan penyusutan fleksibel: 2; , dan flex-shrink kedua: 1; . Sekarang mengurangi lebar wadah pada 300px, mis. Elemen harus dengan 300px untuk ditempatkan di dalam wadah. Mereka akan dikompres dalam rasio 2: 1, I.E. Unit pertama akan bergabung 200px, dan yang kedua hingga 100px dan dimensi baru dari elemen akan menjadi 100px dan 200px.

Catatan: Dalam nilai Anda dapat menentukan angka fraksional, misalnya: 0,5 - Susuran Flex: 0,5

Flex-Basis:

Menetapkan lebar dasar elemen - lebar sebelum kondisi yang tersisa mempengaruhi lebar elemen akan dihitung. Nilai dapat ditentukan dalam PX, EM, REM,%, VW, VH, dll. Lebar terakhir akan tergantung pada lebar dasar dan nilai-nilai fleksibel-tumbuh, menyusut dan konten di dalam blok. Dengan otomatis, elemen menerima lebar dasar relatif terhadap konten di dalamnya.

Default: Auto.

Terkadang lebih baik untuk memasang lebar elemen dengan kaku melalui properti lebar yang biasa. Misalnya, lebar: 50%; Ini akan berarti bahwa elemen di dalam wadah akan tepat 50%, namun, sifat fleksibel dan shrink-shrink juga akan berfungsi. Ini mungkin diperlukan ketika elemen direntangkan oleh konten di dalamnya, lebih ditentukan secara fleksibel. Contoh.

flex-basis akan "tangguh" jika reset tarik dan kompresi: fleksibil: 200px; Flex-Grow: 0; Flex-Susut: 0; . Semua ini dapat ditulis sebagai Flex: 0 0 200px; .

Flex: (Grow Shrink basis)

Rekaman singkat dari tiga properti: Flex-Grow Flex-Shrink Flex-basis.

Default: Flex: 0 1 Auto

Namun, Anda dapat menentukan satu, dan dua nilai:

Flex: Tidak ada; / * 0 0 Auto * / / * Nomor * / Flex: 2; / * Flex-Grow (Flex-Basis Pergi ke 0) * / / * NOT Nomor * / Flex: 10em; / * Flex-Basis: 10em * / Flex: 30px; / * Flex-Basis: 30px * / Flex: Auto; / * Flex-Basis: Auto * / Flex: Content; / * Flex-Basis: Konten * / Flex: 1 30px; / * Flex-Grow and Flex-Basis * / Flex: 2 2; / * Flex-Grow and Flex-Shrink (Flex-Basis Goes 0) * / Flex: 2 2 10%; / * Flex-Grow and Flex-Shrink dan Flex-Basis * / Align-Self:

Memungkinkan Anda mengubah properti Align-Item, hanya untuk item terpisah.

Default: dari wadah align-item

  • meregang. - Elemen diregangkan mengisi tali sepenuhnya
  • flex-Start. - Elemen ditekan ke awal baris
  • flex-end. - Elemen ditekan menjelang ujung string
  • pusat - Elemen diratakan di tengah garis
  • baseline. - Elemen ini diselaraskan oleh garis dasar teks

Memesan:

Memungkinkan Anda mengubah urutan (posisi, posisi) dari elemen di baris umum.

Default: Pesanan: 0

Secara default, elemen memiliki urutan: 0 dan masukkan urutan penampilan mereka dalam kode HTML dan arah baris. Tetapi jika Anda mengubah nilai properti pesanan, item akan dibangun berdasarkan nilai: -1 0 1 2 3 .... Misalnya, jika salah satu item menunjukkan urutan: 1, maka Anda akan pertama-tama akan pergi semua nol, dan kemudian elemen dari 1.

Jadi itu mungkin, misalnya, elemen pertama berubah ke ujung, sementara tidak mengubah arah pergerakan elemen lain atau kode HTML.

Catatan

Apa perbedaan antara fleksibil dari lebar?

Di bawah perbedaan penting antara fleksibel dan lebar / tinggi:

    flex-basis hanya berfungsi untuk sumbu utama. Ini berarti bahwa ketika arah fleksibel: Baris-Flex-basis mengontrol lebar (lebar), dan ketika arah fleksibel: kolom mengontrol ketinggian (tinggi). .

    flex-basis hanya berlaku untuk elemen fleksibel. Jadi jika Anda menonaktifkan fleksi pada wadah, properti ini tidak akan memiliki efek.

    Elemen absolut dari wadah tidak berpartisipasi dalam desain flex ... dan karenanya fleksibel tidak mempengaruhi elemen-elemen wadah fleksibel jika mereka benar-benar diposisikan: absolut. Mereka perlu menentukan lebar / tinggi.

  • Saat menggunakan Nilai Flex Properties 3 (Flex-Grow / Flex-Shrink / Flex-Basis), Anda dapat menggabungkan dan menulis pendek, dan untuk lebar tumbuh atau menyusut Anda perlu menulis secara terpisah. Misalnya: Flex: 0 0 50% \u003d\u003d Lebar: 50%; Flex-Susut: 0; . Terkadang itu tidak nyaman.

Jika memungkinkan, masih memberikan fleksibil preferensi. Gunakan lebar hanya saat fleksibel tidak cocok.

Perbedaan Flex-basis dari Width - Bug atau Fich?

Konten di dalam elemen flex memotongnya dan tidak bisa melampaui batasnya. Namun, jika Anda menetapkan lebar melalui lebar atau lebar maks, dan tidak fleksibel, elemen di dalam wadah fleksibel akan dapat melampaui wadah ini (kadang-kadang Anda membutuhkan perilaku ini). Contoh:

Contoh Tata Letak Flex

Dalam contoh, di mana saja menggunakan awalan untuk lintas-browser. Saya melakukannya untuk membaca CSS yang nyaman. Karena itu, lihat contoh terbaru. versi Chrome. atau firefox.

Contoh sederhana # 1 dengan perataan vertikal dan horizontal

Mari kita mulai dengan contoh paling sederhana - leveling secara vertikal dan horizontal secara bersamaan dan pada ketinggian blok, bahkan karet.

Teks di tengah

Atau lebih, tanpa blok di dalam:

Teks di tengah

# 1.2 pemisahan (celah) antara elemen blok flex

Untuk memposisikan elemen wadah pada tepi dan secara sewenang-wenang memilih elemen setelah itu akan ada istirahat, Anda perlu menggunakan properti margin-kiri: Otomatis atau Margin-Right: Otomatis.

# 2 Menu Adaptif pada Flex

Buat menu di bagian atas halaman. Di layar lebar itu pasti benar. Rata-rata, selaras di tengah. Dan pada satu elemen kecil harus di baris baru.

# 3 Adaptif 3 kolom

Contoh ini menunjukkan seberapa cepat dan mudah membuat 3 kolom, yang, ketika menyempit, akan berubah menjadi 2 dan kemudian dalam 1.

Harap dicatat bahwa ini dapat dilakukan tanpa menggunakan aturan media, semuanya pada fleksibel.

1
2
3
4
5
6

Pergi ke jsfiddle.net dan ubah lebar bagian "Hasil"

# 4 blok adaptif pada Flex

Misalkan kita perlu menarik 3 blok, satu besar dan dua kecil. Pada saat yang sama perlu bahwa blok masuk ke layar kecil. Membuat:

1
2
3

Pergi ke jsfiddle.net dan ubah lebar bagian "Hasil"

Galeri # 5 pada Flex dan Transisi

Contoh ini menunjukkan seberapa cepat Anda dapat membuat akordeon mata yang cukup dengan gambar pada fleksibel. Perhatikan properti transisi untuk Flex.

# 6 Flex in Flex (hanya contoh)

Tugas membuat blok yang fleksibel. Sehingga awal teks di setiap blok berada pada garis horizontal yang sama. Itu. Dengan lebar lebar, blok tumbuh tinggi. Perlu bahwa gambar di bagian atas, tombol selalu di lantai bawah, dan teks di tengah dimulai pada satu garis horizontal ...

Untuk mengatasi masalah ini, blok itu sendiri diregangkan oleh fleksibel dan lebar maksimum yang mungkin diinstal. Setiap unit internal juga menjadi fleksibel dengan desain, dengan arah fleksibel: kolom; dan elemen di tengah (di mana teks berada) diregangkan fleksibel-tumbuh: 1; Untuk mengisi semua ruang kosong, hasilnya tercapai - teks dimulai dengan satu baris ...

Lebih banyak contoh

Dukungan browser - 98,3%

Tentu saja, tidak ada dukungan lengkap, tetapi semuanya browser modern Mendukung desain FlexBox. Bagi sebagian orang, Anda masih perlu menentukan awalan. Untuk gambaran nyata, lihat di Caniuse.com dan lihat bahwa 96,3% dari browser yang digunakan saat ini akan berfungsi tanpa awalan, dengan awalan 98,3%. Ini adalah indikator yang bagus untuk menggunakan Flexbox dengan berani.

Untuk mengetahui apa awalan yang relevan hari ini (Juni 2019), saya akan memberikan contoh semua aturan flex dengan prefixes yang diperlukan:

/ * Wadah * / .flex (display: -webkit-box; display: -ms-flexbox; display: Flex; -WebKit-inline-box; display: inline-flex; -Webkit-box-orient: vertikal; -webkit-box-direction: normal; -ms-flex-arah: kolom; arah fleksibel: kolom; -ms-flex-wrap: bungkus; -m -FLEX-FLOW: Bungkus kolom; fleksibel-aliran: Bungkus kolom; -webkit-box-pack: justify; -ms-flex-pack: membenarkan; membenarkan-konten: spasi-antara; Mendistribusikan; sejajar-konten: spasi-sekitar;) / * elemen * / .flex-item (-webkit-box-flex: 1; -ms-flex-positif: 1; -m- Flex- Negatif: 2; Flex-shrink: 2; -ms-flex-preferen-preferred-size: 100px; fleksibil: 100px; -ms-flex: 1 2 100px; Flex: -m-Flex-Item-align : Center; Align-Self: Center; -webKit-box-ordinal-group: 3; -ms-flex-order: 2;)

Lebih baik jika sifat-sifat dengan awalan akan pergi ke properti asli.
Tidak perlu untuk hari ini (dengan Caiuse) awalan hari ini (dengan Camiuse), tetapi secara umum lebih banyak.

Chrome. Safari. Firefox. Opera. YAITU Android. ios.
20- (lama) 3.1+ (lama) 2-21 (lama) 10 (tweeger) 2.1+ (lama) 3.2+ (lama)
21+ (Baru) 6.1+ (Baru) 22+ (Baru) 12.1+ (Baru) 11+ (Baru) 4.4+ (Baru) 7.1+ (Baru)
  • (Baru) - Sintaks baru: Tampilan: Flex; .
  • (Tweener) - Sintaks Unofficial Old 2011: Tampilan: FlexBox; .
  • (Lama) - Sintaks lama 2009: Tampilan: Kotak;

Video

Yah, jangan lupa tentang videonya, kadang-kadang juga menarik dan bisa dimengerti. Berikut ini beberapa populer:

Tautan Berguna untuk Flex

    flexBoxFroggy.com - Game Edukasi Flexbox.

    Flexplorer adalah perancang kode visual flex.