Właściwości: initial, unset i revert

Spis treści

Wstęp

W CSS istnieją 4 wartości, które możesz przypisać do każdej właściwości. Są to: initial, inherit, unset, revert.

Przykłady: display: unset, background: revert, font-size: initial, border: inherit i tak w nieskończoność (prawie). Wszystkie te deklaracje są jak najbardziej prawidłowe.

W tym artykule wyjaśnię działanie 3 z nich: initial, unset i revert. O inherit wspominam w osobnym artykule.

Wartości initial, unset i revert

initial

Wartość initial dla wybranej właściwości oznacza domyślną wartość określoną w specyfikacji CSS, nie zwracając zupełnie uwagi na typ elementu HTML.

Zatem jeśli ustawisz wartość initial dla właściwości display to tak jakbyś napisał display: inline, ponieważ inline jest domyślną wartością dla display!

Nie ma znaczenia czy dotyczy to elementu div czy span, które w normalnych warunkach mają różne wartości kolejno: block oraz inline. Te różne wartości pochodzą od domyślnych styli dostarczonych przez przeglądarkę.

Zatem style przeglądarki są całkowicie pomijane w przypadku initial!

Ciekawostka! Reguła * {all: initial} spowoduje, że zobaczysz na górze strony wyświetloną treść zawartą w elemencie head 🤯!
Co udowadnia, że <head></head> jest pełnoprawnym elementem HTML (można mu ustawić np. tło), który poprzez style przeglądarki (display: none) jest ukrywany.

unset

Wartość unset zachowuje się tak samo, jak initial, ale tylko w przypadku właściwości niedziedzicznych.

Zatem dla display, position, background, margin, border itd. efekt będzie identyczny jak przy wartości initial.

Dla właściwości dziedzicznych, takich jak font-size, font-family, color itd., ustawi się inherit. Czyli te właściwości, które normalnie są dziedzicznie, nie utracą tej cechy!

Jakie jeszcze właściwości są dziedziczne? Dowiesz się tutaj: lista wszystkich właściwości dziedzicznych w CSS

revert

Wartość revert dla właściwości dziedzicznych działa podobnie jak unset, czyli dziedziczenie jest zachowane. Dla pozostałych właściwości wracamy do styli serwowanych nam domyślnie przez przeglądarkę (czyli trochę taki reset).

Zatem deklaracja display: revert na elemencie div oznacza block, a na elemencie span oznacza inline. Dzieje się tak dlatego, że właśnie takie wartości są ustawiane przez przeglądarkę dla elementów div i span.

Z kolei właściwości dziedziczne jak color, font-size itd. będą nadal dziedziczone od rodzica, nawet jeśli przeglądarka ustala swoją wartość dla takiej właściwości.

Zastosowanie w praktyce

Uważam, że najbardziej użyteczną wartością jest revert, w szczególności w parze z właściwością all, czyli all: revert.

Jak się pewnie domyślasz, właściwość all zastępuje wszystkie inne właściwości, zatem jeśli użyjesz all: revert w swojej regule to tak jak byś wymienił po kolei wszystkie istniejące właściwości CSS (setki) i nadał im wartość revert. Czyli bardzo przyjemny skrót!

Spójrz na przykład poniżej:

W pierwszej regule dla paragrafu p ... ustawiłem obramowanie, padding oraz tło. Dla body ustawiłem niebieski kolor tekstu, dlatego paragrafy mają także niebieski kolor (dziedziczą).

Dla drugiego paragrafu ustawiłem all: revert i efekt jest zgodny z oczekiwaniem.

Kolor i wielkość czcionki - bez zmian ze względu na to, że są dziedziczone od body.

Zniknęło za to obramowanie, padding i różowe tło. Te właściwości nie są ustawiane przez przeglądarkę dla elementu p, więc te właściwości tak de facto otrzymały wartość initial.

Co bardzo istotne, drugi paragraf (ten z revert) utrzymał swoje naturalne ustawienie display: block. Przy initial zmieniłoby się na display: inline.

Spójrz jeszcze na przykład guzika, który pokazuje zachowanie wszystkich trzech właściwości: initial, unset i revert. Przykład guzika lepiej zilustruje ci przede wszystkim działanie all: revert.

Dla body ponownie ustawiłem niebieski kolor tekstu oraz większy niż domyślnie rozmiar czcionki.

Przeanalizujmy po kolei:

Normalny guzik

Na to jak się prezentuje, wpływa styl narzucony przez przeglądarkę oraz odziedziczony od body kolor i rozmiar czcionki. Nic poza tym, żadnych więcej modyfikacji z mojej strony.

Guzik z all: initial

Zmiany w stosunki do normalnego guzika są przeogromne:

  • zniknęło tło i obramowanie, które dla guzika ustawiają style przeglądarki
  • kolor i rozmiar czcionki wróciły do domyślnych wartości

Wartość initial działa trochę jak bomba atomowa 💣, kamień na kamieniu się nie ostał.

Guzik z all: unset

Unset był trochę delikatniejszy od initial:

  • zachował się kolor i rozmiar czcionki (wartości dziedziczne)
  • zniknęło tło i obramowanie, jako że to nie są dziedziczne właściwości

Guzik z all: revert

Revert był najbardziej wyrozumiały, bo guzik z revert jako jedyny w ogóle przypomina guzik:

  • zachowało się tło i obramowanie nadawane przez style przeglądarki
  • kolor i rozmiar czcionki wróciły do domyślnych wartości

Gdybym nie ustawił dla body innego koloru i rozmiaru czcionki, to "Guzik z revert" wyglądałby dokładnie tak samo jak "Normalny guzik".

Autor
Karol Dworakowski
Programista, który odkrył w sobie pasję dzielenia się wiedzą.
Kontakt

Podobał Ci się ten artykuł?

Jeśli tak, to zapisz się do mojego newslettera!
Otrzymasz informacje o najnowszych wpisach, które poszerzą Twoją programistyczną wiedzę i przybliżą Cię do celu.
*Zero spamu, zero sztuczek - Twój adres jest bezpieczny!