# 16. Typy selektorów CSS

W tej części kursu CSS poznamy podstawowe informacje na temat różnych rodzai selektorów CSS, inaczej mówiąc poznamy różne typy selektorów CSS.

Z pierwszym typem selektorów CSS mogliśmy się już zetknąć w poprzednich częściach tego działu kursu CSS, gdy wykorzystywaliśmy selektor elementu w naszych regułach CSS. Selektor elementu należy do typu selektorów CSS, które możemy nazwać w ten sam sposób, jak wspomniany selektor CSS, a więc typem tym są Selektory elementów.\
\
Selektory elementów zazwyczaj służą nam do wskazania bezpośrednio danego elementu (uwzględniając jego nazwę) np. `div`, `p`, `body`, jednak kilka z nich odszukuje dany element HTML na podstawie hierarchii w kodzie HTML, tzn. na podstawie informacji o tym czy dany element jest potomkiem, dzieckiem, czy bratem lub jednym z braci określonego elementu HTML.\
\
Innym selektorem CSS, który znajduje się w grupie selektorów elementu jest selektor uniwersalny, który służy do wskazania wszystkich elementów HTML (możemy go również wykorzystać do wskazania wszystkich potomków, dzieci, braci danego elementu HTML, przykładowo łącząc ze sobą selektor elementu, selektor dziecka oraz selektor uniwersalny, np. `div > *` dzięki czemu nasz przykładowy selektor odszuka wszystkie elementy dzieci elementu `div`).\
\
Innymi selektorami CSS, które należą do grupy selektorów elementu są selektor identyfikatora oraz selektor klasy. Wspomniane selektory tak naprawdę odszukują dany element HTML na podstawie jego wartości atrybutu `id` lub atrybutu `class`, jednak ich zapis został skrócony do jednego znaku czyli `#` (selektor identyfikatora) lub `.` (selektor klasy).\
\
Przykładowy selektor CSS należący do selektorów elementu został zastosowany w przykładzie, który znajduje się poniżej, natomiast przykłady z pozostałymi selektorami CSS należącymi do wspomnianego typu selektorów CSS możesz znaleźć w części przeznaczonej na opis Selektorów elementów.

```html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Darmowy Kurs CSS</title>

    <style>
      /* selektor dziecka */
      ul > li {
        color:red;
      }
    </style>
  </head>

  <body>

    <ol>
      <li>to jest przykładowy element - li</li>
      <li>to jest przykładowy element - li</li>
      <li>to jest przykładowy element - li</li>
    </ol>

    <ul>
      <li>to jest przykładowy element - li</li>
      <li>to jest przykładowy element - li</li>
      <li>to jest przykładowy element - li</li>
    </ul>

  </body>
</html>
```

Selektor `ul > li` odszuka wszystkie elementy HTML typu `li`, które są dziećmi elementu HTML typu `ul`.\
\
Rezultat:

<figure><img src="https://3876702757-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8htinEZYbP2Js3yNtq9f%2Fuploads%2FeP75PX7MbUL7OhV8s63F%2Fimage.png?alt=media&#x26;token=337c9250-1e4e-4311-9947-1a825b1413d5" alt=""><figcaption></figcaption></figure>

Kolejnym typem selektorów CSS są Selektory atrybutów. Jak sama nazwa wskazuje, selektory atrybutów służą do odszukania danego elementu HTML na podstawie jego nazwy atrybutu lub na podstawie wartości jaka została użyta w danym atrybucie danego elementu HTML.\
\
Przykładowy selektor CSS należący do selektorów atrybutów został zastosowany w przykładzie, który znajduje się poniżej, natomiast przykłady z pozostałymi selektorami CSS należącymi do wspomnianego typu selektorów CSS możesz znaleźć w części przeznaczonej na opis Selektorów atrybutów.

```html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Darmowy Kurs CSS</title>

    <style>
      /* selektor atrybutu */
      [title] {
        color:red;
      }
    </style>
  </head>

  <body>

    <ol>
      <li>to jest przykładowy element - li</li>
      <li title="element listy ol">to jest przykładowy element - li</li>
      <li>to jest przykładowy element - li</li>
      <li title="kolejny element listy ol">to jest przykładowy element - li</li>
    </ol>

  </body>
</html>
```

Selektor `[title]` odszuka wszystkie elementy HTML, które zawierają w sobie atrybut `title`.\
\
Rezultat:

<figure><img src="https://3876702757-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8htinEZYbP2Js3yNtq9f%2Fuploads%2FeLiVeuxvvTjM5xwcPLxh%2Fimage.png?alt=media&#x26;token=d56c9b0e-83a0-4016-b6c7-d65573cf9a7f" alt=""><figcaption></figcaption></figure>

Kolejnym typem selektorów CSS są Selektory pseudoelementów. Jak sama nazwa wskazuje, selektory pseudoelementów służą do odszukania różnego rodzai pseudoelementów HTML, czyli takich elementów HTML, które tak naprawdę nie występują w naszym kodzie dokumentu HTML, jednak które możemy utworzyć oraz wskazać za pomocą wspomnianych selektorów pseudoelementów, oraz do których możemy również dodać różne właściwości CSS (czasami nie wszystkie), tak jak do "zwyczajnych" elementów HTML, które znajdują się w kodzie naszego dokumentu HTML.\
\
Przykładowy selektor CSS należący do selektorów pseudoelementów został zastosowany w przykładzie, który znajduje się poniżej, natomiast przykłady z pozostałymi selektorami CSS należącymi do wspomnianego typu selektorów CSS możesz znaleźć w części przeznaczonej na opis Selektorów pseudoelementów.

```html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Darmowy Kurs CSS</title>

    <style>
      /* selektor pierwszej litery tekstu */
      li:first-letter {
        color:red;
      }
    </style>
  </head>

  <body>

    <ol>
      <li>to jest przykładowy element - li</li>
      <li>to jest przykładowy element - li</li>
      <li>to jest przykładowy element - li</li>
    </ol>

  </body>
</html>
```

Selektor `li:first-letter` dodana właściwość `color:red;` do pierwszej litery tekstu w każdym elemencie HTML typu `li`.\
\
Podobny efekt możemy uzyskać umieszczając pierwszą literę tekstu danego elementu HTML w osobnym elemencie HTML, do którego należy dodać właściwość `color:red;` jednak tego typu czynność nie musimy wykonywać, dzięki temu że istnieje selektor :first-letter\
\
Rezultat:

<figure><img src="https://3876702757-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8htinEZYbP2Js3yNtq9f%2Fuploads%2FK3gP7Yelewlj2fusFgR2%2Fimage.png?alt=media&#x26;token=5b92aa59-29ac-49a2-ba56-53584d950fe7" alt=""><figcaption></figcaption></figure>

Ostatnim typem selektorów CSS są Selektory pseudoklas. Selektory pseudoklas służą do odszukania danego elementu HTML na podstawie różnych kryteriów, np. na podstawie tego czy dany element jest pierwszym dzieckiem, ostatnim dzieckiem, lub którymkolwiek z dzieci. Selektory pseudoklas mogą dodać właściwości CSS do danego elementu HTML na podstawie różnych sytuacji, np. w momencie gdy najedziemy na dany element kursorem myszki. Selektory pseudoklas również w dużej mierze zawierają w sobie selektory, które służą do odszukania różnych elementów formularza HTML (na podstawie ich różnych atrybutów i wartości, np. na podstawie czy dany element formularza został wyłączony, czyli czy posiada on atrybut `disabled` o wartości `disabled` (selektor :disabled)).\
\
Przykładowy selektor CSS należący do selektorów pseudoklas został zastosowany w przykładzie, który znajduje się poniżej, natomiast przykłady z pozostałymi selektorami CSS należącymi do wspomnianego typu selektorów CSS możesz znaleźć w części przeznaczonej na opis Selektorów pseudoklas.

```html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Darmowy Kurs CSS</title>

    <style>
      /* selektor pierwszego dziecka */
      li:first-child {
        color:red;
      }
    </style>
  </head>

  <body>

    <ol>
      <li>to jest przykładowy element - li</li>
      <li>to jest przykładowy element - li</li>
      <li>to jest przykładowy element - li</li>
    </ol>

    <ul>
      <li>to jest przykładowy element - li</li>
      <li>to jest przykładowy element - li</li>
      <li>to jest przykładowy element - li</li>
    </ul>

  </body>
</html>
```

Selektor `li:first-child` odszuka wszystkie elementy HTML typu `li`, które są pierwszym dzieckiem swojego elementu rodzica.\
\
Rezultat:

<figure><img src="https://3876702757-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8htinEZYbP2Js3yNtq9f%2Fuploads%2FmDEkj8rEAb1iy16GdB9q%2Fimage.png?alt=media&#x26;token=8705f1c5-cf75-4e9a-9a1c-9a8150d8d3e5" alt=""><figcaption></figcaption></figure>

W następnej części kursu CSS poznamy kilka sposobów łączenia ze sobą różnych typów selektorów CSS.
