Generator flexboxa CSS

Generuj CSS
Dalej

Flexbox to wybór do jednowymiarowego układu: rzędy kart, paski nawigacji, wyśrodkowane hero, formularze. Model kontener-element jest potężny, ale jego kilkanaście właściwości wchodzi w nieoczywiste interakcje. Ten generator zdejmuje z ciebie zgadywanie przy konfigurowaniu kontenera: wybierz flex-direction, justify-content, align-items, flex-wrap i gap, a dostaniesz czystą regułę CSS, którą wkleisz prosto do arkusza stylów.

Jak wygenerować CSS

  1. 1

    Wybierz kierunek

    Wybierz row, column lub warianty odwrócone. To ustawia flex-direction, czyli oś, wzdłuż której płyną elementy.

  2. 2

    Ustaw justify-content

    Wybierz, jak elementy rozkładają się wzdłuż osi głównej: początek, środek, space-between, space-around lub koniec.

  3. 3

    Ustaw align-items

    Wybierz, jak elementy wyrównują się na osi poprzecznej: stretch, początek, środek lub koniec.

  4. 4

    Ustaw gap i wrap

    Dodaj odstęp między elementami w pikselach i zdecyduj, czy elementy zawijają się do nowej linii.

  5. 5

    Skopiuj CSS

    Generator zwraca regułę kontenera ze wszystkimi właściwościami, gotową do wklejenia do arkusza stylów.

Właściwości kontenera

Właściwość Wartości Efekt
flex-direction row / column / row-reverse / column-reverse Oś główna
flex-wrap nowrap / wrap / wrap-reverse Czy elementy się zawijają
justify-content flex-start / center / flex-end / space-between / space-around / space-evenly Dystrybucja na osi głównej
align-items flex-start / center / flex-end / baseline / stretch Wyrównanie osi poprzecznej każdej linii
align-content te same wartości + space-between / space-around Przy zawinięciu, dystrybucja linii na osi poprzecznej
gap (row-gap, column-gap) długość Odstęp między elementami

Właściwości elementu

Właściwość Wartości Efekt
flex-grow 0+ (bezjednostkowe) Udział pozostałej przestrzeni do wchłonięcia
flex-shrink 0+ (bezjednostkowe) Udział nadmiaru do skurczenia
flex-basis długość albo auto Rozmiar początkowy przed grow/shrink
flex skrót (1 1 auto itd.) Wszystkie trzy naraz
align-self auto / flex-start / center / flex-end / baseline / stretch Nadpisuje align-items dla jednego elementu
order całkowita Wizualne przestawienie bez zmiany DOM

Trik flex: 1

flex: 1 to skrót od flex: 1 1 0%. Sprawia, że element:

  • Rośnie, by wypełnić dostępną przestrzeń (grow: 1)
  • Kurczy się, jeśli konieczne (shrink: 1)
  • Startuje od rozmiaru zerowego (basis: 0%)

Dla kolumn o równej szerokości flex: 1 na każdym elemencie daje idealny podział. Dla sidebarów, które nie powinny kurczyć się poniżej treści, użyj flex: 0 0 240px (bez wzrostu, bez kurczenia, basis 240px).

Częste wzorce

Wyśrodkowane hero

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

Navbar z logo po lewej, linkami po prawej

.nav {
  display: flex;
  align-items: center;
  gap: 2rem;
}
.nav-links {
  margin-left: auto;  /* zepchnij w prawo */
  display: flex;
  gap: 1rem;
}

Responsywny wiersz kart

.card-row {
  display: flex;
  flex-wrap: wrap;
  gap: 1.5rem;
}
.card {
  flex: 1 1 260px;  /* grow/shrink, 260px minimum przed zawinięciem */
}

Pole formularza z przyciskiem (input elastyczny, przycisk stały)

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

Flexbox vs Grid

  • Flexbox: jeden wymiar (wiersz LUB kolumna). Najlepiej, gdy rozmiary elementów są zależne od treści albo gdy dystrybuujesz przestrzeń wzdłuż pojedynczej linii.
  • Grid: dwa wymiary (wiersze ORAZ kolumny z jawnymi torami). Najlepiej, gdy układ ma jednocześnie strukturę wierszy i kolumn.

Dla paska nawigacji albo stosu kart: Flexbox. Dla siatki kart produktowych z wieloma rzędami wyrównanych kart: CSS Grid. Wiele realnych stron używa obu, układ strony w Grid z Flexboxem w komponentach.

Częste pułapki

  • Elementy nie wypełniają kontenera: domyślny align-items: stretch stosuje się tylko, jeśli elementy nie mają stałej wysokości. Z jawną wysokością zostają w tym rozmiarze.
  • gap nie działa: sprawdź wsparcie przeglądarki. Flex gap pojawił się późno; Safari <14.1 go nie obsługiwało. Teraz uniwersalne w 2024+.
  • Dzieci kolumny flex się zwijają: kolumna flex ma align-items: stretch jako domyślne, co rozciąga elementy do szerokości kontenera. Jeśli jedno dziecko ustawia szerokość, wyłamuje się.
  • order jest tylko wizualne: czytniki ekranu i nawigacja klawiaturą podążają za kolejnością DOM. Nie używaj order, by treść miała sens; używaj tylko do wizualnego dopieszczenia.

Najczęściej zadawane pytania

Grid dla dwuwymiarowych układów strony (wiersze i kolumny razem). Flexbox dla jednowymiarowych dystrybucji (pasek nawigacji, wiersz przycisków, stos). Wewnątrz komórki Grid Flexbox dla jej wewnętrznego układu. Większość złożonych UI używa obu.

Bo domyślny flex-shrink to 1, ale domyślny min-width to auto, co równa się szerokości treści. Ustaw min-width: 0 (albo min-inline-size: 0) na elemencie, by pozwolić mu skurczyć się poniżej jego intrinsicznego rozmiaru.

display: flex; justify-content: center; align-items: center; na kontenerze. Pokrywa zdecydowaną większość przypadków ‘wyśrodkuj to coś’ dwoma liniami.

Tak, we wszystkich nowoczesnych przeglądarkach. Safari się spóźniło (dodane w 14.1, kwiecień 2021); dziś każda główna przeglądarka go obsługuje. Zastępuj odstępy oparte na margin przez gap, kiedy tylko możesz, dużo prostsze.

Powiązane narzędzia