Model pudełkowy CSS: margin, padding, border i display

Wizualizator modelu pudełkowego CSS

Model pudełkowy CSS: margin a padding, border, display | We.Inc

Przesuwaj suwaki treści, padding, border i margin i patrz, jak model pudełkowy rysuje się na nowo, a do tego box-sizing, zapadanie marginesów, style obramowań i wszystkie wartości display porównane na żywo.

Każdy element jest rysowany jako zagnieżdżone prostokąty: treść, potem padding (przestrzeń wewnątrz obramowania, wypełniona tłem), potem border, a na końcu margin (przezroczysta przestrzeń na zewnątrz, która odpycha sąsiadów). Przy box-sizing: border-box ustawiona szerokość obejmuje padding i border, dzięki czemu układy są znacznie bardziej przewidywalne. Właściwość display decyduje o tym, jak pudełka się układają.

Cztery warstwy, od środka na zewnątrz

Przesuń cztery suwaki, a diagram, zmierzony rozmiar całkowity i CSS zmienią się razem. Pod wizualizatorem możesz przełączyć box-sizing, zobaczyć, jak dwa marginesy zapadają się w jeden, i porównać block, inline, inline-block, flex, grid i none obok siebie na tych samych trzech elementach.

Najczęściej zadawane pytania

Czym różni się margin od paddingu?

Padding leży wewnątrz obramowania, więc wypełnia go tło elementu i jest częścią obszaru klikalnego. Margin leży poza obramowaniem, jest zawsze przezroczysty i tylko oddziela element od innych. Pionowe marginesy między blokami mogą się też zapadać, a padding nigdy się nie zapada.

Dlaczego mój element jest szerszy niż ustawiona szerokość?

Przy domyślnym box-sizing: content-box szerokość dotyczy tylko treści, a padding i border są doliczane. Pudełko 300px z paddingiem 20px i obramowaniem 2px ma po wyrenderowaniu 344px szerokości. Przełącz na box-sizing: border-box, a zostanie 300px, bo treść się zmniejszy.

Kiedy marginesy się zapadają?

Górne i dolne marginesy pudełek blokowych w normalnym przepływie łączą się, gdy się stykają: między rodzeństwem oraz między rodzicem a jego pierwszym lub ostatnim dzieckiem, gdy nie dzieli ich border, padding ani treść inline. Wygrywa większy margines. Marginesy nigdy nie zapadają się w kontenerach flex i grid ani w poziomie.

Czym różni się display: none od visibility: hidden?

display: none całkowicie usuwa element z układu, więc miejsce się zamyka, a czytniki ekranu go pomijają. visibility: hidden zachowuje zarezerwowane miejsce, ale nic nie rysuje, a treść jest też ukryta przed technologiami wspomagającymi. opacity: 0 zachowuje zarówno miejsce, jak i możliwość kliknięcia lub ustawienia fokusu.

Czy mogę ustawić width na elemencie inline?

Nie. Width, height i pionowe marginesy są ignorowane na zwykłym pudełku inline, takim jak span. Pionowy padding jest rysowany, ale nie rozsuwa linii. Zmień go na inline-block albo zrób z rodzica kontener flex, a te rozmiary zaczną działać.

content-box a border-box w liczbach

Obramowania to więcej niż zwykła linia

Jak display zmienia pudełko

Margin czy padding? Wybierz według zadania

Po co sięgnąć

Zapadanie marginesów na żywo

Pierwsza para pokazuje dwa elementy rodzeństwa, których marginesy 24px i 40px się stykają: odstęp wynosi 40px, a nie 64px. Druga para siedzi w kontenerze flow-root, który zapobiega łączeniu marginesów rodzica i dziecka, a trzecia używa flex, gdzie nic się nie zapada.

Zapadanie między rodzeństwem oraz rodzicem i dzieckiem

Zmieniaj marginesy i obserwuj odstępy. Dodanie padding-top: 1px do zewnętrznego pudełka też zapobiega łączeniu rodzica z dzieckiem.

Style obramowań i zaokrąglenia

Wszystkie osiem widocznych stylów obramowania

groove, ridge, inset i outset cieniują obramowanie, udając głębię. Najlepiej wyglądają przy 4px lub więcej.

Kształty zaokrągleń: zaokrąglony, pigułka, koło, elipsa

Ogromny promień, na przykład 999px, robi pigułkę dowolnej długości. 50% na kwadracie daje koło.

Każda wartość display na tych samych trzech elementach

Porównanie wartości display

block, inline, inline-block, flex i grid obok siebie

Każdy wiersz zawiera te same trzy elementy span z width: 80px i paddingiem. Tylko inline ignoruje szerokość.

display: none a visibility: hidden a opacity: 0

Trzy sposoby ukrywania w porównaniu

Środkowy element ukryty na trzy sposoby

Zwróć uwagę na lukę pozostawioną przez visibility i opacity oraz zamkniętą lukę przy display: none.

Reset border-box

Zastosuj border-box wszędzie

Pseudoelementy są uwzględnione, bo to też pudełka. Preflight w Tailwind zawiera już tę regułę.

Odpowiedniki w Tailwind

Klasy modelu pudełkowego w Tailwind (domyślna skala odstępów, 1 jednostka = 0.25rem)

Wizualizator modelu pudełkowego

Warstwa marginesu

Wyrenderowane pudełko (krawędź obramowania)

Zajęte miejsce, łącznie z marginesami

Żółty to margin, niebieska linia to border, zielony to padding, jasnoniebieski to treść.

szerokość obramowania

Kopiuj CSS

Zacznij za darmo · Bez karty kredytowej

Powiązane: Poradniki

Produkt

Dla kogo

Funkcje

Zasoby

Firma

Mapa strony