Selektory w CSS
1. Selektory podstawowe
Selektory to „wskazówki” w CSS, które określają do jakich elementów HTML mają być zastosowane style. Najczęściej używane są trzy podstawowe typy:
a) Selektory tagów (typów)
Odnoszą się do wszystkich elementów danego rodzaju. Przykład:
Wszystkie akapity <p> na stronie będą miały niebieski tekst.
b) Selektory klas
Używane do grupowania wielu elementów w celu nadania im wspólnego wyglądu.
- W HTML:
class="nazwa" - W CSS:
.nazwa
Przykład:
Każdy element z class="button" otrzyma zielone tło i biały tekst.
c) Selektory identyfikatorów (ID)
Używane do unikalnych elementów na stronie.
- W HTML:
id="nazwa" - W CSS:
#nazwa
Przykład:
Tylko element z id="header" otrzyma jasno-niebieskie tło.
❗ Uwaga: ID powinno być unikalne w całym dokumencie – stosujemy je rzadziej niż klasy.
2. Selektory złożone
Pozwalają tworzyć bardziej precyzyjne reguły.
a) Potomkowie (descendant selectors)
Selektor A B wybiera element B znajdujący się wewnątrz A.
Wszystkie akapity <p> wewnątrz <div> będą czerwone.
b) Dziecko (child selector)
Selektor A > B wybiera element B, który jest bezpośrednim dzieckiem A.
Tylko bezpośrednie elementy <li> w <ul> dostaną kwadratowe punktor.
c) Rodzeństwo (sibling selectors)
- Natychmiastowy brat (adjacent sibling) –
A + Bwybiera elementB, który występuje zaraz poA. - Ogólny brat (general sibling) –
A ~ Bwybiera wszystkie elementyB, które są rodzeństwemA.
Przykład:
Pierwszy akapit po nagłówku <h2> będzie szary.
d) Selektory atrybutów
Pozwalają stylować elementy na podstawie wartości atrybutów HTML.
Przykłady:
3. Specyficzność i kolejność stylów
Jeśli do jednego elementu pasuje wiele reguł CSS, przeglądarka musi zdecydować, która z nich ma pierwszeństwo.
a) Specyficzność (specificity)
To hierarchia ważności selektorów:
- Styl inline (w atrybucie
style) → najwyższy priorytet. - ID (
#id) → wysoki priorytet. - Klasy, atrybuty, pseudoklasy (
.class,[attr],:hover) → średni priorytet. - Tagi i pseudoelementy (
p,h1,::before) → najniższy priorytet. - Dziedziczenie – nie wszystkie właściwości dziedziczą się automatycznie.
Przykład (rosnąca siła):
b) Kolejność reguł (cascade)
Jeśli dwie reguły mają tę samą specyficzność, decyduje kolejność ich zapisu – ostatnia reguła nadpisuje poprzednią.
Przykład:
Tekst akapitów będzie czerwony, bo druga reguła nadpisuje pierwszą.
c) !important
Deklaracja !important nadaje najwyższy priorytet regule – nadpisuje nawet inline style.
Wszystkie akapity będą zielone, niezależnie od innych reguł.
❗ Jednak nadużywanie !important powoduje chaos w kodzie i utrudnia późniejsze modyfikacje.
4. Dziedziczenie w CSS
Wiele właściwości w CSS jest dziedziczonych – elementy potomne przejmują wartości stylów od elementu nadrzędnego.
a) Przykład dziedziczenia
Wszystkie elementy w dokumencie domyślnie odziedziczą czcionkę Arial i czarny kolor tekstu.
b) Właściwości, które się dziedziczą
color,font-family,font-size,font-style,line-height,text-align,visibility.
c) Właściwości, które NIE dziedziczą się automatycznie
margin,padding,border,background,width,height,display,position,float.
d) Wymuszanie dziedziczenia
Możemy wymusić dziedziczenie przy pomocy wartości inherit: