Kurs HTML i CSS · Moduł 3: Podstawy CSS
Zaawansowane selektory CSS
W tej lekcji8
Tworzenie selektorów CSS można zrealizować na wiele sposobów. Oto lista niektórych zaawansowanych selektorów:
* - selektor uniwersalny
Ten selektor działa na każdy element na stronie lub, jeśli jest poprzedzony rodzicem, na każdy element wewnątrz tego rodzica.
* {
color: red;
}Tutaj każdy element na stronie dostanie czerwony tekst.
# - selektor identyfikatora
Selektor identyfikatora (ID) wybiera element HTML z określonym identyfikatorem. Zaleca się używanie klas do stylowania, ale czasami można ostylować pojedynczy, unikalny element.
#myid {
color: red;
}Ta reguła zmieni kolor tylko jednego elementu: tego z atrybutem id="myid".
element element - selektor potomka
Spacja między selektorami oznacza "wewnątrz": reguła trafi do każdego elementu z drugiego selektora, który leży gdziekolwiek w środku elementu z pierwszego - na dowolnym poziomie zagnieżdżenia.
div p {
color: brown;
}Tutaj brązowy będzie każdy akapit leżący w <div>, także zagnieżdżony głębiej, np. w <section> wewnątrz tego diva. Akapity poza divami się nie zmienią. Opisany niżej selektor dziecka > jest węższy: działa tylko na bezpośrednie dzieci.
element + element - selektor sąsiada
Selektor ten odnosi się do sąsiedniego elementu. Wybierze element, który występuje bezpośrednio po wcześniej wymienionym elemencie.
Ten selektor działa na elementach, które sąsiadują ze sobą na tym samym poziomie.
h2 + p {
font-size: 18px;
}Tutaj akapit zaraz po nagłówku <h2> będzie miał rozmiar czcionki 18px.
element > element - selektor dziecka
Selektor ten wybiera tylko bezpośrednie dzieci - te, które są dokładnie jeden poziom niżej od selektora rodzica. Nie uwzględnia głębiej zagnieżdżonych elementów.
Ten selektor działa na dzieciach danego elementu, ale nie na dalszych potomkach.
div > p {
color: blue;
}Tylko bezpośrednie dzieci <div> zostaną pokolorowane na niebiesko.
element ~ element - selektor ogólnego rodzeństwa
To selektor ogólnego rodzeństwa: wybierze wszystkie elementy, które występują po wcześniej wymienionym elemencie i mają tego samego rodzica - nie muszą stać tuż za nim.
W przeciwieństwie do +, który bierze tylko najbliższego sąsiada, ~ wybiera całe dalsze rodzeństwo.
h2 ~ p {
font-weight: bold;
}Wszystkie akapity po nagłówku <h2> na tym samym poziomie zostaną pogrubione.
element[atrybut] / element[atrybut="wartość"]
Selektor atrybutu HTML pozwala ostylować elementy posiadające określony atrybut, np. href, lub te, których wartość atrybutu href jest równa "https://google.com".
W CSS istnieje kilka innych rodzajów selektorów atrybutów, które pozwalają precyzyjnie wybierać i stylizować elementy:
a[href*="google"]- Gwiazdka (*) oznacza, że określona wartość musi występować gdziekolwiek w wartości atrybutu. Na przykład, ten selektor wybierze wszystkie odnośniki (linki <a>), których atrybut href zawiera słowo "google", niezależnie od tego, czy jest to na początku, w środku czy na końcu wartości atrybutu.a[href^="http"]- Symbol^oznacza, że określona wartość musi występować na początku wartości atrybutu. Na przykład, ten selektor wybierze wszystkie odnośniki, których atrybut href zaczyna się od "http". Będzie to odnoszone zarówno do "http", jak i "https".a[href$=".com"]- Znak dolara ($) oznacza, że określona wartość musi występować na końcu wartości atrybutu. Na przykład, ten selektor wybierze wszystkie odnośniki, których atrybut href kończy się na ".com". Będzie to odnoszone do adresów URL z domeną ".com".a[data-kategoria="papirus"]- wybiera elementy, których własny atrybutdata-kategoriama wartość "papirus". Atrybutydata-*możesz wymyślać sam, ale w selektorze podajesz pełną nazwę: CSS nie ma gwiazdki zastępującej część nazwy atrybutu, a zapis[data-*="value"]przeglądarka odczyta jako atrybutdata-z operatorem*=.a[foo~="bar"]- Symbol tyldy (~) pozwala wybrać atrybut, który ma różne wartości oddzielone spacją. Na przykład, ten selektor wybierze elementy, których atrybut "foo" ma wartość "bar" lub wartość "bar" występuje jako jedno z kilku słów oddzielonych spacją.a:not(selektor)- Pseudo-klasa negująca, która wybiera wszystkie elementy, z wyjątkiem tych podanych wewnątrz nawiasu:not(). Na przykład, ten selektor wybierze wszystkie odnośniki (<a>), które nie mają klasy określonej w selektorze wewnątrz:not().
Dzięki tym selektorom atrybutów można bardziej precyzyjnie wybrać elementy na stronie i dostosować ich stylizację w zależności od wartości atrybutów.
Ćwiczenie: Zaawansowane selektory CSS
W tym ćwiczeniu nauczysz się, jak używać zaawansowanych selektorów CSS do precyzyjnej stylizacji elementów na stronie. Twoim zadaniem będzie utworzenie strony internetowej z różnymi elementami, które będą stylizowane za pomocą tych selektorów.
Krok 1: Stwórz podstawową strukturę dokumentu HTML
Najpierw stwórz nowy plik HTML i dodaj podstawową strukturę dokumentu HTML. Dodaj różne elementy, które będą stylizowane za pomocą zaawansowanych selektorów CSS.
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="styles.css"> <!-- Podłącz plik CSS -->
<title>Zaawansowane selektory CSS</title>
</head>
<body>
<h2>Nagłówek 2</h2>
<p>Akapit po nagłówku 2</p>
<div id="parent">
<p>Bezpośrednie dziecko div</p>
<span>Span wewnątrz div</span>
</div>
<h2>Nagłówek 2</h2>
<p>Akapit po kolejnym nagłówku 2</p>
<a href="https://example.com">Link do Example</a>
<a href="https://google.com">Link do Google</a>
<a href="https://example.com">Inny link do Example</a>
<ul>
<li>Pierwszy element listy</li>
<li>Drugi element listy</li>
<li>Trzeci element listy</li>
</ul>
</body>
</html>Krok 2: Stwórz plik CSS
Otwórz lub utwórz nowy plik CSS i zapisz go jako styles.css.
Krok 3: Selektor uniwersalny
Dodaj styl dla selektora uniwersalnego *, aby zmienić kolor tekstu na czerwony.
/* Selektor uniwersalny */
* {
color: red;
}Krok 4: Selektor identyfikatora
Dodaj styl dla elementu z identyfikatorem #parent, aby zmienić kolor tła.
/* Selektor identyfikatora */
#parent {
background-color: lightgray;
padding: 10px;
}Krok 5: Selektor sąsiada
Dodaj styl dla akapitu (<p>), który występuje bezpośrednio po nagłówku <h2>, aby zmienić rozmiar czcionki.
/* Selektor sąsiada */
h2 + p {
font-size: 18px;
}Krok 6: Selektor dziecka
Dodaj styl dla bezpośrednich dzieci elementu <div>, aby zmienić kolor tekstu.
/* Selektor dziecka */
div > p {
color: blue;
}Krok 7: Selektor ogólnego rodzeństwa
Dodaj styl dla wszystkich akapitów (<p>), które występują po nagłówku <h2> na tym samym poziomie, aby zmienić grubość czcionki.
/* Selektor ogólnego rodzeństwa */
h2 ~ p {
font-weight: bold;
}Krok 8: Selektor atrybutu
Dodaj styl dla linków (<a>) z określonym atrybutem href, aby zmienić ich kolor.
/* Selektor atrybutu */
a[href*="google"] {
color: green;
}Wynik
Po wykonaniu wszystkich kroków twój plik HTML i CSS powinny wyglądać następująco:
Plik HTML (index.html)
Cała strona z kroku 1, bez zmian:
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="styles.css"> <!-- Podłącz plik CSS -->
<title>Zaawansowane selektory CSS</title>
</head>
<body>
<h2>Nagłówek 2</h2>
<p>Akapit po nagłówku 2</p>
<div id="parent">
<p>Bezpośrednie dziecko div</p>
<span>Span wewnątrz div</span>
</div>
<h2>Nagłówek 2</h2>
<p>Akapit po kolejnym nagłówku 2</p>
<a href="https://example.com">Link do Example</a>
<a href="https://google.com">Link do Google</a>
<a href="https://example.com">Inny link do Example</a>
<ul>
<li>Pierwszy element listy</li>
<li>Drugi element listy</li>
<li>Trzeci element listy</li>
</ul>
</body>
</html>Plik CSS (styles.css)
Wszystkie reguły z kroków 3-8 w jednym pliku:
/* Selektor uniwersalny */
* {
color: red;
}
/* Selektor identyfikatora */
#parent {
background-color: lightgray;
padding: 10px;
}
/* Selektor sąsiada */
h2 + p {
font-size: 18px;
}
/* Selektor dziecka */
div > p {
color: blue;
}
/* Selektor ogólnego rodzeństwa */
h2 ~ p {
font-weight: bold;
}
/* Selektor atrybutu */
a[href*="google"] {
color: green;
}Eksperymentuj dalej
- Dodaj więcej elementów z różnymi selektorami, aby lepiej zrozumieć, jak działają różne selektory.
- Spróbuj dodać więcej stylów do swojej strony, np. zmieniając kolory, rozmiary i inne właściwości CSS.
- Przetestuj swoje umiejętności, tworząc bardziej złożone układy z użyciem różnych selektorów.
Po wykonaniu tego ćwiczenia powinieneś lepiej rozumieć, jak używać różnych zaawansowanych selektorów w CSS, aby precyzyjnie stylizować elementy na stronie.
Jak mawiał Mohamed: "Selektory CSS to jak precyzyjne hieroglify - im dokładniej wskazujesz element, tym lepszą kontrolę nad nim masz. Każdy skryba musi znać wszystkie symbole!"
Przetestuj zaawansowane selektory w edytorze poniżej:
Kod do tej lekcji: index.html
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="style.css">
<title>Zaawansowane selektory CSS</title>
</head>
<body>
<h2>Nagłówek 2</h2>
<p>Akapit po nagłówku 2</p>
<div id="parent">
<p>Bezpośrednie dziecko div</p>
<span>Span wewnątrz div</span>
</div>
<h2>Nagłówek 2</h2>
<p>Akapit po kolejnym nagłówku 2</p>
<a href="https://example.com">Link do Example</a>
<a href="https://google.com">Link do Google</a>
<a href="https://example.com">Inny link do Example</a>
<ul>
<li>Pierwszy element listy</li>
<li>Drugi element listy</li>
<li>Trzeci element listy</li>
</ul>
</body>
</html>Hasła z dokumentacji w tej lekcji
Widzisz błąd w tej lekcji?
Sprawdź się
Odpowiedz na pytania z tej lekcji. Wybierz odpowiedź, a od razu zobaczysz, czy jest poprawna.
1. Który selektor CSS odnosi się do każdego elementu na stronie?
2. Co wybiera selektor div > p?
To 2 z 3 pytań do tej lekcji. Pozostałe rozwiążesz w grze.
Zadania praktyczne w grze
- Układanie w poziomie
Ułóż selektor wybierający bezpośrednie paragrafy-dzieci elementu div:
- Edytor kodu
Otwórz plik style.css i przeanalizuj zaawansowane selektory: uniwersalny (*), dziecka (div > p), sąsiada (h2 + p), ogólnego rodzeństwa (h2 ~ p) oraz atrybutu (a[href*="google"]). Zmień kolory, żeby zobaczyć, na które elementy działa każdy selektor: w selektorze uniwersalnym ustaw color: #4A3C2A, w selektorze dziecka color: #1E90FF, w selektorze atrybutu color: #228B22, a do selektora sąsiada dodaj color: #8B4513.