Generator Flexbox CSS

hasilkan CSS
Berikutnya

Flexbox adalah andalan untuk layout satu dimensi: baris card, nav bar, hero yang dipusatkan, form. Model container-dan-item kuat, tetapi belasan propertinya berinteraksi dengan cara yang tidak jelas. Generator ini menghilangkan tebakan saat menyiapkan container: pilih flex-direction, justify-content, align-items, flex-wrap, dan gap, lalu dapatkan aturan CSS yang rapi untuk langsung disalin ke stylesheet Anda.

Cara menghasilkan CSS

  1. 1

    Pilih arah

    Pilih row, column, atau varian terbaliknya. Ini mengatur flex-direction, yaitu sumbu tempat item mengalir.

  2. 2

    Atur justify-content

    Pilih cara item didistribusikan di sepanjang sumbu utama: awal, tengah, space-between, space-around, atau akhir.

  3. 3

    Atur align-items

    Pilih cara item disejajarkan pada sumbu silang: stretch, awal, tengah, atau akhir.

  4. 4

    Atur gap dan wrap

    Tambahkan jarak antar item dalam piksel dan tentukan apakah item turun ke baris baru.

  5. 5

    Salin CSS

    Generator mengeluarkan aturan container dengan semua properti, siap ditempel ke stylesheet Anda.

Properti container

Properti Nilai Efek
flex-direction row / column / row-reverse / column-reverse Sumbu utama
flex-wrap nowrap / wrap / wrap-reverse Apakah item membungkus
justify-content flex-start / center / flex-end / space-between / space-around / space-evenly Distribusi main axis
align-items flex-start / center / flex-end / baseline / stretch Penjajaran cross axis setiap baris
align-content nilai yang sama + space-between / space-around Saat terbungkus, distribusi baris pada cross axis
gap (row-gap, column-gap) panjang Jarak antar item

Properti item

Properti Nilai Efek
flex-grow 0+ (tanpa unit) Bagian sisa ruang yang diserap
flex-shrink 0+ (tanpa unit) Bagian overflow yang dikecilkan
flex-basis panjang atau auto Ukuran awal sebelum grow/shrink
flex shorthand (1 1 auto, dll.) Ketiganya sekaligus
align-self auto / flex-start / center / flex-end / baseline / stretch Menimpa align-items untuk satu item
order bilangan bulat Urutan ulang visual tanpa mengubah DOM

Trik flex: 1

flex: 1 adalah shorthand untuk flex: 1 1 0%. Membuat item:

  • Tumbuh untuk mengisi ruang yang tersedia (grow: 1)
  • Menyusut jika perlu (shrink: 1)
  • Mulai dari ukuran nol (basis: 0%)

Untuk kolom dengan lebar sama, flex: 1 pada setiap item memberi pembagian sempurna. Untuk sidebar yang tidak boleh menyusut di bawah konten, pakai flex: 0 0 240px (tanpa grow, tanpa shrink, basis 240px).

Pola umum

Hero yang dipusatkan

.hero {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 100vh;
}

Navbar dengan logo di kiri, link di kanan

.nav {
  display: flex;
  align-items: center;
  gap: 2rem;
}
.nav-links {
  margin-left: auto;  /* dorong ke kanan */
  display: flex;
  gap: 1rem;
}

Baris card responsif

.card-row {
  display: flex;
  flex-wrap: wrap;
  gap: 1.5rem;
}
.card {
  flex: 1 1 260px;  /* grow/shrink, minimum 260px sebelum membungkus */
}

Field form dengan tombol (input fleksibel, tombol tetap)

.field {
  display: flex;
  gap: 0.5rem;
}
.field input {
  flex: 1;
}
.field button {
  flex: 0 0 auto;
}

Flexbox vs. Grid

  • Flexbox: satu dimensi (baris ATAU kolom). Terbaik saat ukuran item didorong konten atau saat Anda mendistribusikan ruang sepanjang satu garis.
  • Grid: dua dimensi (baris DAN kolom dengan track eksplisit). Terbaik saat layout memiliki struktur baris dan kolom secara bersamaan.

Untuk nav bar atau tumpukan card: Flexbox. Untuk grid card produk dengan beberapa baris card yang sejajar: CSS Grid. Banyak halaman nyata memakai keduanya, layout halaman Grid dengan Flexbox di dalam komponen.

Gotcha umum

  • Item tidak mengisi container: default align-items: stretch hanya berlaku jika item tidak memiliki tinggi tetap. Dengan tinggi eksplisit, mereka tetap pada ukuran tersebut.
  • gap tidak bekerja: cek dukungan browser. Flex gap muncul terlambat; Safari <14.1 tidak mendukungnya. Sekarang universal di 2024+.
  • Anak dari flex kolom collapse: kolom flex memiliki align-items: stretch sebagai default, yang meregangkan item ke lebar container. Jika satu anak menyetel width, ia keluar dari pola.
  • order hanya visual: screen reader dan navigasi keyboard mengikuti urutan DOM. Jangan pakai order untuk membuat konten masuk akal; pakai untuk poles visual saja.

Pertanyaan yang Sering Diajukan

Grid untuk layout halaman dua dimensi (baris dan kolom bersama). Flexbox untuk distribusi satu dimensi (nav bar, baris tombol, tumpukan). Di dalam cell Grid, Flexbox untuk layout internalnya. Sebagian besar UI kompleks memakai keduanya.

Karena default flex-shrink adalah 1 tetapi default min-width adalah auto, yang sama dengan lebar konten. Atur min-width: 0 (atau min-inline-size: 0) pada item agar bisa menyusut di bawah ukuran intrinsiknya.

display: flex; justify-content: center; align-items: center; pada container. Mencakup sebagian besar kasus “pusatkan benda ini” dengan dua baris.

Ya, di semua browser modern. Safari terlambat (ditambahkan di 14.1, April 2021); sekarang setiap browser besar mendukungnya. Ganti spasi berbasis margin dengan gap jika bisa, jauh lebih sederhana.

Alat Terkait