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  Sprawdzenie błędów na stronie – najważniejsze elementy

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  Jakie wdrożyć dane strukturalne schema na stronach contentowych?

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ć.

Zawodowy copywriter oraz student psychologii na Uniwersytecie Warszawskim. W świecie marketingu internetowego równie mocno, co chwytliwe (i wartościowe) treści interesuje go dobry design. Gdy nie zajmuje się tworzeniem contentu, odkrywa perełki kina niezależnego i pracuje nad własnymi opowiadaniami.

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