Generator Flexbox CSS

Bangun tata letak Flexbox secara visual · sesuaikan properti kontainer dan item, lihat pratinjau langsung, salin CSS-nya.

Properti kontainer

Pratinjau langsung

CSS yang dihasilkan

Cara menggunakan

  1. Tetapkan properti kontainer: konfigurasikan kontainer flex, flex-direction, justify-content, align-items, flex-wrap, dan gap.
  2. Tambahkan dan konfigurasikan item flex: tambahkan elemen anak dan tetapkan flex-grow, flex-shrink, flex-basis, align-self, dan order secara individual.
  3. Salin CSS: dapatkan CSS lengkap untuk kontainer dan item, siap digunakan dalam proyek Anda.

Mengapa menggunakan generator Flexbox?

Flexbox adalah alat penting untuk tata letak CSS satu dimensi, menyelaraskan elemen dalam baris atau kolom dengan kontrol distribusi dan perataan yang andal. Tetapi propertinya banyak dan interaksinya kompleks: justify-content vs align-items, flex-grow vs flex-basis, sumbu utama vs sumbu silang. Generator interaktif ini memberikan umpan balik visual seketika saat Anda memodifikasi setiap properti, menjadikannya cara tercepat untuk mempelajari Flexbox dan mendapatkan CSS yang tepat untuk tata letak Anda.

Fitur

Pertanyaan umum

Apa perbedaan antara justify-content dan align-items?

justify-content mendistribusikan item sepanjang sumbu utama (horizontal secara default). align-items menyelaraskan item sepanjang sumbu silang (vertikal secara default). Saat flex-direction adalah column, sumbu terbalik, justify-content menjadi vertikal dan align-items menjadi horizontal.

Kapan menggunakan Flexbox atau CSS Grid?

Gunakan Flexbox untuk tata letak satu dimensi, barisan tombol, bilah navigasi, daftar kartu yang harus melompat ke baris baru. Gunakan CSS Grid untuk tata letak dua dimensi di mana Anda perlu mengontrol baris dan kolom secara bersamaan, seperti tata letak halaman lengkap atau kisi kartu yang kompleks.

Apa arti flex: 1?

flex: 1 adalah shorthand untuk flex-grow: 1; flex-shrink: 1; flex-basis: 0%. Itu memberi tahu item untuk tumbuh mengisi ruang yang tersedia, menyusut jika perlu, dan memulai dari nol sebelum mendistribusikan ruang. Semua item dengan flex: 1 berbagi ruang secara merata.

Apa yang sebenarnya dilakukan Flexbox

Flexbox (Flexible Box Layout) adalah model layout CSS yang dirancang untuk mendistribusikan ruang dan menyelaraskan item dalam arah satu dimensi: baik baris atau kolom. Ia memperkenalkan dua konsep inti yang menentukan bagaimana semuanya berperilaku: sumbu utama (arah utama item mengalir, horizontal secara default) dan sumbu silang (tegak lurus terhadap utama, vertikal secara default). Setelah Anda menginternalisasi utama vs silang, setiap properti Flexbox memetakan ke salah satunya: justify-content bekerja pada sumbu utama, align-items bekerja pada sumbu silang, flex-direction menukar sumbu mana yang mana.

Flexbox memecahkan serangkaian masalah layout yang mengganggu pengembang web dari 1998 hingga 2014. Sebelum Flexbox, memusatkan elemen secara vertikal memerlukan trik (display: table-cell, margin negatif, position: absolute dengan transformasi translate). Kolom dengan tinggi sama memerlukan teknik faux columns dengan gambar latar belakang. Footer lengket memerlukan perhitungan piksel yang tepat. Flexbox membuat semua ini sepele: deklarasi satu baris menggantikan dekade workaround CSS. Trade-off-nya adalah Flexbox bersifat satu dimensi; untuk layout dua dimensi (baris DAN kolom secara bersamaan), CSS Grid (dirilis 2017) adalah alat yang lebih baik.

Properti Flexbox membagi dengan rapi menjadi dua kelompok: properti kontainer (diterapkan ke induk: display: flex, flex-direction, flex-wrap, justify-content, align-items, align-content, gap) dan properti item (diterapkan ke anak: flex-grow, flex-shrink, flex-basis, align-self, order). Properti kontainer mengontrol pola layout; properti item mengontrol pengecualian individu. Generator ini menampilkan kedua set sehingga Anda dapat bereksperimen dengan bagaimana mereka berinteraksi tanpa menulis kode.

Bagaimana alat ini bekerja di balik layar

Pratinjau langsung adalah kontainer flex dengan elemen anak sampel. Saat Anda mengubah properti kontainer (flex-direction, justify-content, dll.) melalui dropdown dan input, JavaScript memperbarui gaya inline kontainer pratinjau, dan browser me-render ulang layout. Pratinjau adalah implementasi Flexbox browser yang sebenarnya, bukan simulasi JavaScript: Anda melihat dengan tepat apa yang akan dihasilkan CSS Anda pada halaman nyata.

Kontrol per item memungkinkan Anda menyesuaikan setiap anak secara individu. Anda dapat menambah atau menghapus item, mengatur nilai flex-grow, flex-shrink, flex-basis, align-self, dan order mereka, dan melihat bagaimana kontainer mendistribusikan ulang ruang sesuai dengan itu. Indikator sumbu visual menunjukkan sumbu utama dan silang untuk konfigurasi saat ini, memperkuat model mental. Propertinya adalah CSS nyata yang dapat Anda salin langsung ke stylesheet Anda, tidak diperlukan transpilasi atau prefiks framework.

Panel CSS yang Dihasilkan diperbarui dengan setiap interaksi, menghasilkan dua aturan CSS: satu untuk kontainer (dengan properti flex yang dipilih) dan satu untuk item. Klik Salin CSS dan aturan ditulis ke clipboard Anda. Alat itu sendiri tidak pernah membuat permintaan jaringan; rendering pratinjau, pembuatan kode, dan penulisan clipboard semuanya terjadi di JavaScript pada perangkat Anda. Muat ulang halaman dan konfigurasi Anda hilang kecuali Anda menyalin CSS terlebih dahulu.

Sejarah singkat Flexbox

Alur kerja dunia nyata

Jebakan umum dan artinya

Privasi: semuanya berjalan di browser Anda

Alat pembelajaran dan layout CSS hadir dalam dua rasa: halaman HTML sederhana yang menjalankan JavaScript sisi klien (pribadi, cepat, tanpa setup) dan editor cloud dengan proyek yang disimpan (kolaboratif tetapi dengan trade-off privasi). Alat ini adalah jenis pertama. Pilihan properti Anda, konfigurasi item Anda, CSS yang dihasilkan Anda: semuanya tetap di sesi browser Anda. Muat ulang halaman dan statusnya hilang kecuali Anda menyalin CSS terlebih dahulu.

Taruhan privasi rendah di sini karena konfigurasi Flexbox jarang berisi informasi sensitif. Tetap saja, kurangnya analitik penting: Anda dapat bereksperimen dengan bebas tanpa proses trial-and-error Anda direkam. Sangat berguna dalam pengaturan kelas atau pelatihan perusahaan di mana memiliki siswa atau peserta pelatihan mendaftar akun di platform pihak ketiga adalah titik gesekan. Alat ini adalah halaman statis tunggal tanpa backend, dapat digunakan di browser apa pun, termasuk mesin perusahaan yang terkunci.

Saat alat lain adalah pilihan yang tepat

Pertanyaan umum lainnya

Apa arti pasti dari flex shorthand?

Shorthand flex mengatur tiga properti sekaligus: flex: <grow> <shrink> <basis>. Nilai umum: flex: 1 (1, 1, 0%) untuk item distribusi sama, flex: 0 0 auto untuk item ukuran tetap, flex: 1 1 250px untuk item yang tumbuh/menyusut dari titik awal 250px. Shorthand memiliki nilai awal khusus ketika hanya satu atau dua nilai disediakan; bentuk eksplisit tiga nilai menghindari kejutan.

Bagaimana cara membuat item membungkus ke beberapa baris?

Atur flex-wrap: wrap pada kontainer. Item meluap ke baris baru ketika tidak muat. Gabungkan dengan flex-basis pada item untuk mengontrol berapa banyak yang muat per baris: flex: 1 1 200px menciptakan grid responsif di mana item setidaknya 200px, tumbuh untuk mengisi ruang yang tersisa, dan membungkus ke baris baru pada layar sempit. Properti gap kontainer menangani spasi antara baris yang dibungkus dan item.

Dapatkah saya membalikkan urutan item flex?

Ya, dengan beberapa cara. Tingkat kontainer: flex-direction: row-reverse (atau column-reverse) membalikkan semua item dalam urutan. Tingkat item: properti order memberikan bobot numerik; item dengan angka lebih rendah muncul lebih dulu. Urutan default adalah 0; mengatur order: -1 pada satu item memindahkannya ke depan. Catatan aksesibilitas: pengurutan ulang visual tidak memengaruhi urutan tab atau urutan baca pembaca layar, yang dapat membingungkan pengguna keyboard dan teknologi bantuan. Gunakan dengan hemat.

Apa perbedaan antara align-items dan align-content?

align-items menyelaraskan item dalam baris (atau kolom) mereka sepanjang sumbu silang. align-content menyelaraskan baris (atau kolom) itu sendiri di dalam kontainer, hanya bermakna ketika ada beberapa baris yang dibungkus. Jika flex-wrap diatur ke nowrap (default), align-content tidak berpengaruh karena hanya ada satu baris. Gunakan align-items untuk penyelarasan satu baris, align-content untuk penyelarasan multi-baris.

Bagaimana cara memusatkan satu elemen dengan Flexbox?

Jawaban klasik: display: flex; justify-content: center; align-items: center; pada kontainer induk. Ini memusatkan anak baik secara horizontal maupun vertikal. Hanya untuk horizontal: gunakan justify-content: center saja. Hanya untuk vertikal: gunakan align-items: center saja. Jika Anda perlu memusatkan di dalam induk dengan tinggi tidak diketahui, tambahkan min-height: 100vh ke induk sehingga memiliki ruang vertikal untuk dipusatkan di dalamnya. Seluruh pola menggantikan 20 tahun workaround pemusatan CSS.

Mengapa pemangkasan teks saya tidak berfungsi dalam kontainer flex?

Karena default min-width: auto pada item flex. Text-overflow: ellipsis memerlukan elemen untuk benar-benar meluap kontainernya; dengan lebar minimum default diatur ke ukuran intrinsik konten, elemen tidak pernah meluap. Perbaikan: tambahkan min-width: 0 ke item flex yang berisi teks pemangkasan. Ini adalah bug Flexbox paling umum di jawaban Stack Overflow sepanjang masa: mencari flex text-overflow ellipsis not working mengembalikan ribuan versi dari jawaban yang persis sama ini.

Alat terkait