← Back to course

Selektory i Podstawowe Stylowanie

Selektory i Podstawowe Stylowanie

Witaj ponownie.

W poprzedniej lekcji nauczyłeś się, czym jest CSS i jak połączyć go z HTML.

Teraz poznajemy selektory.

Selektory to sposób, w jaki CSS wybiera, co ma stylować.

Bez selektorów CSS stoi pośrodku pokoju i krzyczy:

“Zrób to niebieskie!”

A przeglądarka pyta:

“Co dokładnie?”

Dobre pytanie, przeglądarko.

Bardzo profesjonalnie.

Czego Się Nauczysz

W tej lekcji nauczysz się:

Czym Jest Selektor?

Selektor mówi CSS, które elementy HTML ma stylować.

Przykład:

p {
  color: gray;
}

Tutaj p jest selektorem.

Oznacza to:

Wybierz wszystkie elementy paragrafu i ustaw ich tekst na szary.

CSS zawsze musi wiedzieć, co ma stylować.

Selektor to “kto”.

Deklaracje to “co”.

Przykład:

h1 {
  color: blue;
  font-size: 48px;
}

To oznacza:

Znajdź każde h1, zrób je niebieskie i duże.

Bardzo bezpośrednio.

Prawie rozkazująco.

Ale w web developmencie odrobina stanowczości czasem pomaga.

Podstawowa Struktura Reguły CSS

Reguła CSS wygląda tak:

selector {
  property: value;
}

Przykład:

h2 {
  color: #111827;
}

Części są takie:

Selektor wybiera element.

Właściwość mówi, co zmienić.

Wartość mówi, jak to zmienić.

CSS to lista instrukcji.

Czasem elegancka.

Czasem dramatyczna.

Czasem oddalona o jeden brakujący średnik od zamieszania.

Stwórz Projekt

Stwórz folder dla tej lekcji:

mkdir css-lesson2
cd css-lesson2
touch index.html
touch style.css

Teraz masz:

css-lesson2/
  index.html
  style.css

Otwórz folder w swoim edytorze.

Najpierw napiszemy HTML.

Potem wystylizujemy go różnymi selektorami.

Taki jest plan.

I tym razem plan może nawet przetrwać spotkanie z przeglądarką.

Napisz HTML

Otwórz index.html i dodaj to:

<!DOCTYPE html>
<html lang="pl">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Selektory CSS</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <header id="top">
    <h1>Selektory CSS</h1>
    <p class="intro">Selektory pomagają CSS znaleźć właściwe elementy HTML.</p>
  </header>

  <main>
    <section class="card">
      <h2>Selektory Elementów</h2>
      <p>Selektory elementów stylują wszystkie elementy tego samego typu.</p>
    </section>

    <section class="card featured">
      <h2>Selektory Klas</h2>
      <p>Selektory klas są wielokrotnego użytku i bardzo przydatne.</p>
    </section>

    <section class="card">
      <h2>Selektory ID</h2>
      <p>Selektory ID wskazują jeden unikalny element na stronie.</p>
    </section>

    <section class="practice-box">
      <h2>Obszar Ćwiczeń</h2>
      <p>Ten obszar pomoże nam testować różne selektory.</p>
      <a href="#top">Wróć na górę</a>
    </section>
  </main>

  <footer>
    <p>Stworzone podczas nauki selektorów CSS.</p>
  </footer>
</body>
</html>

Zwróć uwagę na kilka ważnych rzeczy:

To są zaczepy.

CSS może ich użyć, żeby stylować konkretne części strony.

Zaczepy są ważne.

Bez zaczepów CSS musi zgadywać.

A CSS nie jest detektywem.

Selektory Elementów

Selektory elementów wybierają elementy HTML według nazwy tagu.

Przykład:

body {
  font-family: Arial, sans-serif;
}

To styluje całe body.

Inny przykład:

p {
  font-size: 18px;
}

To styluje wszystkie paragrafy.

Dodaj to do style.css:

body {
  font-family: Arial, sans-serif;
  background-color: #f4f4f4;
  color: #222;
  margin: 0;
}

h1 {
  color: white;
  font-size: 48px;
}

h2 {
  color: #111827;
}

p {
  font-size: 18px;
  line-height: 1.6;
}

To są selektory elementów:

Działają na każdy pasujący element na stronie.

Przydatne.

Potężne.

Ale czasem zbyt szerokie.

Jak używanie wałka malarskiego do poprawienia jednej małej kropki.

Selektory Klas

Selektor klasy wybiera elementy z konkretną klasą.

W HTML:

<p class="intro">Selektory pomagają CSS znaleźć właściwe elementy HTML.</p>

W CSS:

.intro {
  font-size: 20px;
}

Kropka . oznacza klasę.

Czyli .intro wybiera każdy element z:

class="intro"

Dodaj to do style.css:

.intro {
  font-size: 20px;
  color: #dbeafe;
}

Teraz tylko paragraf z klasą intro dostaje taki styl.

Klasy są wielokrotnego użytku.

Możesz używać tej samej klasy na wielu elementach.

Przykład:

<section class="card">

I CSS:

.card {
  background-color: white;
  padding: 24px;
  margin-bottom: 20px;
  border-radius: 12px;
}

Dodaj to:

.card {
  background-color: white;
  padding: 24px;
  margin-bottom: 20px;
  border-radius: 12px;
}

Teraz każda sekcja z klasą card dostaje ten sam styl.

To jedna z najważniejszych idei CSS.

Style wielokrotnego użytku.

Mniej powtarzania.

Mniej cierpienia.

Szlachetny cel.

Wiele Klas

Jeden element może mieć więcej niż jedną klasę.

Przykład:

<section class="card featured">

Ten element ma dwie klasy:

Dostaje style z obu.

Dodaj ten CSS:

.featured {
  border: 2px solid #2563eb;
  background-color: #eff6ff;
}

Teraz wyróżniona karta dostaje dodatkowy styl.

Nadal ma normalne style .card.

Ale dostaje też style .featured.

To przydatne, gdy chcesz mieć styl bazowy plus specjalną wersję.

Jak normalna pizza.

A potem pizza z dodatkowym serem.

CSS rozumie dodatkowy ser.

Przynajmniej emocjonalnie.

Selektory ID

Selektor ID wybiera jeden unikalny element.

W HTML:

<header id="top">

W CSS:

#top {
  background-color: #111827;
}

Symbol # oznacza ID.

Dodaj to:

#top {
  background-color: #111827;
  padding: 40px;
  text-align: center;
}

ID powinno być unikalne na stronie.

To znaczy, że nie powinieneś mieć wielu elementów z tym samym ID.

Używaj ID ostrożnie.

Do stylowania klasy są zwykle lepsze.

ID są przydatne dla:

Pomyśl o ID jak o numerze paszportu.

Klasa jest bardziej jak koszulka drużyny.

Wiele osób może mieć tę samą koszulkę.

Tylko jedna osoba powinna mieć ten sam numer paszportu.

Selektory Grupowane

Czasem chcesz zastosować ten sam styl do kilku selektorów.

Zamiast pisać to:

h1 {
  font-family: Arial, sans-serif;
}

h2 {
  font-family: Arial, sans-serif;
}

Możesz je zgrupować:

h1,
h2 {
  font-family: Arial, sans-serif;
}

Przecinek oznacza:

Zastosuj tę regułę do obu selektorów.

Przykład:

h1,
h2 {
  margin-top: 0;
}

Dodaj to:

h1,
h2 {
  margin-top: 0;
}

Selektory grupowane pomagają utrzymać CSS krótszy i czystszy.

Czystszy CSS łatwiej czytać.

Łatwiejszy do czytania znaczy łatwiejszy do naprawienia.

Łatwiejszy do naprawienia znaczy mniej dramatycznych westchnień.

Selektory Potomków

Selektor potomka wybiera element wewnątrz innego elementu.

Przykład:

footer p {
  color: #666;
}

To oznacza:

Wybierz każdy p wewnątrz footer.

Nie wybiera wszystkich paragrafów.

Tylko paragrafy w stopce.

Dodaj to:

footer p {
  color: #666;
  text-align: center;
}

Inny przykład:

.practice-box a {
  color: #2563eb;
  font-weight: bold;
}

To wybiera linki wewnątrz .practice-box.

Dodaj to:

.practice-box a {
  color: #2563eb;
  font-weight: bold;
}

Selektory potomków są przydatne, gdy liczy się kontekst.

Link w paragrafie może wyglądać normalnie.

Link w specjalnym pudełku może wyglądać inaczej.

CSS potrafi to obsłużyć.

CSS ma opinie.

Dużo opinii.

Wystylizuj Layout

Teraz dodaj więcej struktury do strony:

main {
  max-width: 800px;
  margin: 40px auto;
  padding: 20px;
}

.practice-box {
  background-color: #fff7ed;
  padding: 24px;
  border-radius: 12px;
  border: 2px dashed #fb923c;
}

footer {
  padding: 20px;
}

Teraz strona powinna wyglądać bardziej uporządkowanie.

Używasz:

To poważny krok.

Skrzynka narzędzi CSS się otwiera.

Postaraj się nie uderzyć młotkiem we własny palec.

Pełny CSS

Twój style.css powinien teraz wyglądać tak:

body {
  font-family: Arial, sans-serif;
  background-color: #f4f4f4;
  color: #222;
  margin: 0;
}

#top {
  background-color: #111827;
  padding: 40px;
  text-align: center;
}

h1 {
  color: white;
  font-size: 48px;
}

h2 {
  color: #111827;
}

h1,
h2 {
  margin-top: 0;
}

p {
  font-size: 18px;
  line-height: 1.6;
}

.intro {
  font-size: 20px;
  color: #dbeafe;
}

main {
  max-width: 800px;
  margin: 40px auto;
  padding: 20px;
}

.card {
  background-color: white;
  padding: 24px;
  margin-bottom: 20px;
  border-radius: 12px;
}

.featured {
  border: 2px solid #2563eb;
  background-color: #eff6ff;
}

.practice-box {
  background-color: #fff7ed;
  padding: 24px;
  border-radius: 12px;
  border: 2px dashed #fb923c;
}

.practice-box a {
  color: #2563eb;
  font-weight: bold;
}

footer {
  padding: 20px;
}

footer p {
  color: #666;
  text-align: center;
}

Zapisz.

Odśwież przeglądarkę.

Obserwuj.

Jeśli nic się nie zmieniło, sprawdź:

Bug “zapomniałem zapisać” jest legendarny.

Pokonał wielu dzielnych developerów.

Klasa czy ID?

Używaj klas przez większość czasu.

Używaj ID tylko wtedy, gdy coś jest naprawdę unikalne.

Dobre użycie klasy:

<section class="card">

Bo możesz mieć wiele kart.

Dobre użycie ID:

<header id="top">

Bo istnieje tylko jeden górny obszar.

Zły pomysł:

<section id="card">
<section id="card">
<section id="card">

Nie rób tego.

ID nie powinny się powtarzać.

Przeglądarka może nadal pokazać stronę.

Ale kod robi się podejrzany.

Jak trzy osoby używające tego samego paszportu na lotnisku.

Częste Błędy

Zapomnienie kropki dla klas

Źle:

card {
  background-color: white;
}

Dobrze:

.card {
  background-color: white;
}

Bez kropki CSS szuka elementu HTML <card>.

A jeśli go nie stworzyłeś, nic się nie stanie.

CSS jest surowy.

Nie zgaduje twoich marzeń.

Zapomnienie kratki dla ID

Źle:

top {
  background-color: black;
}

Dobrze:

#top {
  background-color: black;
}

# mówi CSS, że to jest ID.

Bez # nie ma selektora ID.

Mały symbol.

Duża różnica.

Zbyt szerokie selektory

To wpływa na wszystkie paragrafy:

p {
  color: red;
}

Czasem to jest w porządku.

Czasem chcesz tylko jeden obszar:

.card p {
  color: #444;
}

Bądź konkretny, kiedy trzeba.

Nie styluj całej wioski, jeśli chciałeś pomalować tylko jedne drzwi.

Praktyka

Stwórz własną stronę z:

Użyj:

Spróbuj wystylizować:

Trzymaj CSS uporządkowany.

Nie rzucaj stylami wszędzie jak konfetti po weselu.

Konfetti jest fajne.

Debugowanie konfetti już nie.

Mini Wyzwanie

Stwórz trzy karty:

Daj wszystkim kartom klasę card.

Daj Premium Plan dodatkową klasę featured.

Przykład:

<section class="card featured">
  <h2>Premium Plan</h2>
  <p>This plan has extra features.</p>
</section>

Potem wystylizuj:

Dokładnie tak działają prawdziwe strony.

Style wielokrotnego użytku.

Specjalne warianty.

Mniej chaosu.

Więcej kontroli.

Podsumowanie

Dzisiaj nauczyłeś się, że:

Selektory są fundamentem CSS.

Jeśli rozumiesz selektory, możesz kontrolować stronę.

Jeśli nie rozumiesz selektorów, CSS staje się tajemniczą zupą.

A już ustaliliśmy:

Zupa należy do miski.

Nie do twojego stylesheet.

Następna Lekcja

W następnej lekcji będziemy dokładniej stylować tekst, fonty i kolory.

Bo czytelny tekst jest ważny.

Strona z nieczytelnym tekstem to po prostu zagadka z hostingiem.