CSS position: pięć wartości, jedno demo na żywo

Przewodnik po CSS position

CSS position: demo static, relative, absolute, fixed, sticky | We.Inc

Przełączaj jeden element między static, relative, absolute, fixed i sticky wewnątrz przewijanego dema. Wyjaśniamy containing block, inset, rozwiązywanie problemów ze sticky i wyśrodkowanie.

Właściwość position określa, jak element jest umieszczany. static to normalny przepływ. relative przesuwa go, zachowując jego miejsce. absolute wyjmuje go z przepływu i umieszcza względem najbliższego pozycjonowanego przodka. fixed przypina go do viewportu. sticky przewija się normalnie, aż dojdzie do progu, takiego jak top: 0, a potem się tam zatrzymuje.

Pięć wartości

Demo poniżej ma jedno pomarańczowe pudełko wewnątrz przewijanego obszaru. Zmieniaj jego wartość position, przesuwaj offsety, przewijaj i obserwuj, od czego jest mierzone. Dalej znajdziesz przewodnik po containing block, listę kontrolną dla sticky, który nie chce się przykleić, i skrót inset.

Najczęściej zadawane pytania

Czym różni się absolute od relative?

relative przesuwa element wizualnie, ale zostawia jego pierwotne miejsce w układzie, więc nic wokół się nie rusza. absolute całkowicie wyjmuje element z układu, sąsiedzi zamykają lukę, a top czy left są mierzone od najbliższego pozycjonowanego przodka, a nie od miejsca, w którym element by się znalazł.

Dlaczego position: sticky nie działa?

Typowe przyczyny to brak wartości top, przodek z overflow hidden lub auto albo rodzic, który nie jest wyższy od elementu sticky. Przejdź po kolei przez listę kontrolną na tej stronie; pierwsze dwa punkty wyłapują większość przypadków.

Względem czego pozycjonuje się absolute?

Względem swojego containing block: padding boxa najbliższego przodka, którego position ma wartość inną niż static. Kwalifikują się też przodkowie z transform, filter lub niektórymi wartościami contain. Jeśli takiego nie ma, jest to początkowy containing block o rozmiarze viewportu.

Dlaczego mój stały nagłówek przesuwa się razem ze stroną?

Któryś przodek ma transform, perspective, filter, backdrop-filter, will-change: transform lub contain: paint. Każda z tych właściwości zamienia go w containing block dla potomków z fixed, więc nagłówek jest przypięty do niego zamiast do ekranu.

Czym jest inset w CSS?

To skrót dla top, right, bottom i left, działający według tego samego schematu od jednej do czterech wartości co margin. inset: 0 rozciąga pozycjonowany element na cały jego containing block. inset-inline i inset-block ustawiają pary dla każdej osi.

Containing block w prostych słowach

Wyśrodkowanie za pomocą pozycjonowania absolute

Każda wartość w szczegółach

Wartości position

Co tworzy containing block dla absolute i fixed

Przodkowie przechwytujący pozycjonowanych potomków (według MDN)

Wzorce, których będziesz używać

Odznaka w rogu karty

Karta jest pozycjonowanym przodkiem. Ujemne offsety wypychają odznakę do połowy poza róg.

Przyklejony nagłówek tabeli

Kontener się przewija, więc th z top: 0 przykleja się do niego. Tło sprawia, że wiersze nie prześwitują.

Skrót inset

Ten sam schemat co margin: jedna wartość dla wszystkich stron, dwie dla pionu i poziomu, cztery zgodnie z ruchem wskazówek zegara od góry.

Plac zabaw z position

Wartość position

Rodzic ma position: relative

Offsety są ignorowane. Pudełko leży w normalnym przepływie między akapitami.

Pudełko jest narysowane z przesunięciem, ale luka w miejscu, gdzie by było, zostaje zachowana. Sąsiedzi się nie ruszają.

Mierzone od rodzica z przerywaną ramką, który ma position: relative.

Brak pozycjonowanego rodzica, więc mierzone jest od przewijanego obszaru dema, czyli następnego pozycjonowanego przodka wyżej.

Przypięte do ramki dema podczas przewijania. Ramka ma transform, co czyni ją containing block zamiast okna przeglądarki.

Przewija się z tekstem, aż znajdzie się top pikseli od góry kontenera przewijania, a potem trzyma się, dopóki jego rodzic nie odjedzie.

Przewijany obszar dema

Przewijaj wewnątrz tej ramki. Tekst jest wypełniaczem, żeby było co przewijać.

Rodzic

Pierwszy akapit przed pudełkiem.

Akapit po pudełku. Obserwuj, czy przesuwa się w górę, gdy pudełko opuszcza przepływ.

Linia {n} dodatkowej treści do przewijania.

Treść po rodzicu, linia {n}.

Kopiuj CSS

Dlaczego fixed zostaje w ramce: ramka ma transform: translateZ(0). Każdy transform zamienia element w containing block dla potomków z fixed. Na prawdziwej stronie bez takiego przodka fixed przyczepia się do okna przeglądarki.

Sticky nie działa: lista kontrolna

Przyklejony nagłówek schowany za inną treścią? Zobacz

z-index i konteksty nakładania

Zacznij za darmo · Bez karty kredytowej

Powiązane: Poradniki

Produkt

Dla kogo

Funkcje

Zasoby

Firma

Mapa strony