Co to są pseudo-klasy (:hover, :nth-child)
Co to są pseudo-klasy (:hover, :nth-child)
Pseudo-klasy pozwalają na stylowanie elementów HTML w zależności od ich stanu lub pozycji w strukturze dokumentu – bez potrzeby dodawania dodatkowych klas czy JavaScriptu. To bardzo wygodne narzędzie do tworzenia interaktywnych i dynamicznych efektów.
Pseudo-klasy zapisujemy za pomocą dwukropka, np. :hover, :nth-child(), :first-child. W tej lekcji skupimy się na dwóch z nich – najczęściej używanych w praktyce.
1. :hover – stylowanie po najechaniu
:hover to pseudo-klasa, która działa wtedy, gdy użytkownik najedzie kursorem myszy na dany element (np. link, przycisk, obrazek).
button:hover {
background-color: #388e3c;
color: white;
cursor: pointer;
}
Efekt działania: przycisk zmieni kolor tła i tekstu, gdy użytkownik na niego najedzie.
2. :nth-child() – wybieranie elementów według kolejności
:nth-child() pozwala stylować elementy w zależności od ich pozycji wśród rodzeństwa. Możesz wskazać np. co drugi element, każdy trzeci, tylko pierwszy itd.
li:nth-child(odd) {
background-color: #f0f0f0;
}
li:nth-child(3) {
font-weight: bold;
}
Efekt działania: wszystkie nieparzyste elementy listy będą miały tło, a trzeci element zostanie pogrubiony.
Przydatne warianty :nth-child
:nth-child(even)– parzyste elementy:nth-child(3n)– każdy trzeci element:nth-child(1)– pierwszy element
Dlaczego to jest przydatne?
Możesz z łatwością wyróżnić co drugi wiersz w tabeli, stylować wybrane elementy listy, tworzyć interaktywne efekty w nawigacji czy galeriach – wszystko bez JavaScriptu i bez ręcznego przypisywania klas.
Ćwiczenie – lista z efektami hover i nth-child
W JSFiddle stwórz listę <ul> z pięcioma elementami. Dodaj:
- kolorowe tło dla co drugiego elementu,
- zmianę koloru po najechaniu,
- pogrubienie dla trzeciego elementu.
<style>
ul li:nth-child(even) {
background: #e1f5fe;
}
ul li:nth-child(3) {
font-weight: bold;
}
ul li:hover {
background: #0288d1;
color: white;
}
</style>
<ul>
<li>Element 1</li>
<li>Element 2</li>
<li>Element 3</li>
<li>Element 4</li>
<li>Element 5</li>
</ul>
Zmieniaj wartości w :nth-child(), eksperymentuj z kolorami, dodawaj inne style – to świetna okazja, by zrozumieć, jak działają te selektory!
