Tworzenie stron internetowych

Dziedziczenie stylów w CSS: jak działa, czego nie dziedziczą klasy i jak nadpisywać style efektywnie?

3 min czytania
Dziedziczenie stylów w CSS: jak działa, czego nie dziedziczą klasy i jak nadpisywać style efektywnie?

Czy zdarzyło Ci się, że mimo ustawienia konkretnego koloru czy rozmiaru fontu w CSS, elementy na stronie nadal wyglądały inaczej, niż się spodziewałeś? Możliwe, że winny był mechanizm dziedziczenia stylów, który z jednej strony bardzo ułatwia projektowanie layoutu, z drugiej – potrafi wprowadzić nieco chaosu. W tym artykule przyglądamy się, jak działa dziedziczenie w CSS, które właściwości faktycznie są dziedziczone, a także jak nadpisywać style.

Na czym polega dziedziczenie stylów w CSS?

W CSS style mogą być dziedziczone przez elementy podrzędne (czyli zagnieżdżone w innych). Jeśli, na przykład, ustawisz dla body kolor tekstu jako szary (color: #666;), wszystkie paragrafy (<p>) czy nagłówki (<h1>, <h2>, itd.) odziedziczą ten styl – chyba że nadpiszesz go lokalnie.

To właśnie jest dziedziczenie: przekazywanie wartości stylów z elementów nadrzędnych do potomnych. Dotyczy to jednak tylko wybranych właściwości.

Które style są dziedziczone, a które nie?

Dziedziczone są głównie właściwości dotyczące tekstu i jego otoczenia, np.:

  • color;
  • font-family;
  • font-size;
  • letter-spacing;
  • line-height;
  • text-align;
  • visibility;
  • white-space.

Z drugiej strony, właściwości dotyczące układu, wyglądu tła, ramek i rozmiarów nie są dziedziczone automatycznie. Przykłady:

  • margin, padding;
  • border;
  • width, height;
  • display;
  • background, background-color.

To oznacza, że jeśli chcesz, aby wszystkie elementy miały np. to samo tło, musisz je ustawić jawnie – dziedziczenie tego nie rozwiąże.

A co z klasami? Czy style klas się dziedziczą?

Klasy jako takie też nie są dziedziczone

Zobacz  Co to jest programowanie obiektowe (OOP)? Zasady programowania

Jeśli element nadrzędny ma przypisaną klasę highlight, to jego “dzieci” nie odziedziczą tej klasy – i nie przejmą stylów, które są do niej przypisane. Jedyny sposób, aby styl z klasy przeszedł na potomne elementy, to takie ustawienie selektora, aby obejmował również dzieci. 

Przykład:

highlight {

  color: red;

}

Tutaj color: red zadziała na sam element z klasą highlight. Jeśli chcesz, by jego potomne elementy też były czerwone, musisz dodać gwiazdkę:

highlight * {

  color: red;

}

Jak w prosty sposób nadpisywać style?

Jeśli style z elementu nadrzędnego nie pasują do któregoś z elementów potomnych, możesz je zmienić na kilka sposobów.

Pierwsza, oczywista opcja – ustaw styl lokalnie dla wybranego elementu. Proste p { color: blue; } nadpisze dziedziczony kolor, bo z zasady działania arkuszy kaskadowych – element stylowany jest wg tej reguły, która w arkuszu pojawi się później.

Drugie wyjście: użyj selektora o wyższej wartości. CSS opiera się na zasadzie specificity i w przypadku konfliktu stylów stosuje reguły tego selektora, który jest bardziej szczegółowy (precyzyjnie wskazuje miejsce, które chcemy ostylować). Tak więc w przykładzie:

h1 {

  font-size: 36px;

}

h1.title {

  font-size: 42px;

}

nagłówek ostatecznie będzie miał font wielkości 42px – bo h1.title jest bardziej szczegółowy (zawiera i tag, i klasę stylowanego elementu). Dlatego też lepiej unikać stosowania zbyt wielu ogólnych selektorów – np. div, p, a – bez kontekstu; będą one bardzo łatwo nadpisywane.

Możesz też korzystać z keywordów inherit, initial oraz unset… ale świadomie (czyli tak samo, jak ze słów kluczowych w SEO). Czasem bowiem nie trzeba nic nadpisywać – wystarczy, że wymusisz dziedziczenie:

  • inherit – wymusza dziedziczenie stylu z elementu nadrzędnego (np. color: inherit;)
  • initial – przywraca wartość domyślną właściwości, jaką przewiduje specyfikacja CSS (np. display: initial;)
  • unset – działa jak inherit dla dziedziczonych właściwości i jak initial dla pozostałych.
Zobacz  Strona na Wordpress – czy warto? Jak zbudować?

I pamiętaj, że deklaracja !important zawsze powinna być ostatecznością. Tak, oznaczona nią reguła będzie miała najwyższy priorytet i pierwszeństwo nad innymi selektorami – ale gdy takich reguł pojawi się kilka, pojawi się też chaos. Takie siłowe nadpisywanie styli ma sens, jeśli np. musisz wymusić regułę np. w treści osadzonej z zewnętrznego źródła, ale w innych sytuacjach lepiej tego unikać.

tło banera
Genialne firmy mnożą
swój potencjał z
Ocena Clutch
5.0
Ocena Google
4.8
tło banera
Bądź widoczny w Google i wyszukiwarkach przyszłości (ChatGPT, Gemini, Perplexity i inne)
Zostaw adres e-mail — porozmawiamy o widoczności Twojej strony w AI.
Dane przetwarzamy w celu kontaktu, zgodnie z naszą
polityką prywatności
Marcin Stypuła
Jakub Rożnowski
Jakub Rożnowski Copywriter
Copywriter, który łączy świat marketingu cyfrowego z perspektywą naukową i humanistyczną. Pisze od 2021 roku, specjalizując się w długich, eksperckich artykułach, poradnikach i treściach wizerunkowych. W pracy stawia na połączenie dwóch wartości: rzetelnego researchu oraz lekkiego, często humorystycznego stylu. Poza copywritingiem rozwija się twórczo – pisze opowiadania, wiersze i myśli o pierwszej powieści.

Udostępnij

Oceń tekst

Średnia ocen 5 / 5. Liczba głosów: 1

Brak głosów - oceń jako pierwszy!

Zapytaj o ofertę SEO
Dołącz do newslettera
Powiązane artykuły Najnowsze Popularne

Zbuduj Twój potencjał SEO

Skonsultuj z nami Twoją sytuację w wyszukiwarce. Porozmawiajmy o Twoich celach i możliwościach współpracy