Witaj witaj nie sraj
zapierdalaj do nauki zapierdalaj do nauki zapierdalaj do nauki
HTML
Dowiesz się tu podstaw HTML.
1. Szkielet i semantyka
-
Struktura dokumentu
-
Typografia i hierarchia
-
Listy
-
Linki i kotwice
-
Obrazy i video
-
Kontenery i grupowanie treści
2. Warstwa interakcji
-
Formularze
-
Formularze i przyciski
-
Walidacja danych
3. Tabele
-
Tabele – podstawy
-
Struktura tabeli
-
Łączenie komórek
4. Id, klasy i atrybuty
-
4.1 Atrybuty globalne
-
4.2 Atrybuty języka i danych
-
4.3 Dobre praktyki
1.1. Struktura dokumentu
Te elementy definiują "tożsamość" pliku. Przeglądarka musi wiedzieć, że czyta kod HTML5, w jakim języku jest treść, oraz co ma wyświetlić na karcie (tytuł).
Lista tagów
-
<!DOCTYPE html>– Deklaracja informująca przeglądarkę o użyciu standardu HTML5. -
<html>– Główny kontener całego dokumentu (tag "korzeń"). -
<head>– Sekcja z informacjami technicznymi strony (nie są one bezpośrednio widoczne w oknie przeglądarki). -
<meta charset="UTF-8">– Deklaracja kodowania znaków (pozwala na poprawne wyświetlanie polskich znaków). -
<title>– Tekst wyświetlany na pasku karty w przeglądarce. -
<body>– Sekcja zawierająca całą widoczną treść strony.
Witaj!
To jest treść widoczna w przeglądarce.
1.2. Typografia i hierarchia
Te tagi budują szkielet informacyjny strony. Nagłówki tworzą hierarchię (jak w spisie treści książki), co jest kluczowe dla SEO i czytników ekranu. Akapity i elementy liniowe pozwalają zarządzać blokami tekstu oraz wyróżniać konkretne frazy bez zmiany układu strony.
Lista tagów
-
<h1>– Najważniejszy tytuł strony (tylko jeden na dokument). -
<h2>– Główny nagłówek sekcji. -
<h3>– Podtytuł/podrozdział. -
<h4>do<h6>– Nagłówki niższego rzędu. -
<p>– Akapit (podstawowy blok tekstowy). -
<span>– Element liniowy (do objęcia konkretnego słowa, np. by nadać mu kolor w CSS później). -
<br>– Wymuszenie przełamania linii (nowa linia bez tworzenia nowego akapitu). -
<hr>– Pozioma linia (tematyczne oddzielenie treści).
Tytuł Główny
Sekcja o mnie
To jest akapit, w którym specjalnie wyróżniam fragment tekstu.
Moje zainteresowania
Pierwsza linia tekstu.
Druga linia tekstu (przełamanie).
Podtytuł techniczny
Treść końcowa.
1.3. Listy
Listy pozwalają uporządkować informacje w sposób czytelny i estetyczny, prosty do kontroli potem.
Lista tagów
-
<ul>– Lista nieuporządkowana (wypunktowana), gdy kolejność nie ma znaczenia. -
<ol>– Lista uporządkowana (numerowana), gdy ważna jest kolejność kroków. -
<li>– Pojedynczy element (musi być dzieckiem<ul>lub<ol>).
Lista zakupów:
- Chleb
- Mleko
Instrukcja:
- Otwórz edytor.
- Napisz kod.
1.4. Linki i kotwice
Linki pozwalają na nawigację między różnymi stronami lub sekcjami wewnątrz tej samej strony, co nazywamy kotwicami.
Tag linka
-
<a>– Hiperłącze / link.
Atrybuty linka
-
<href="...">– Atrybut docelowy (URL zewnętrzny lub nazwa kotwicy). -
<target="_blank">– Otwiera link w nowej karcie przeglądarki. -
<id="...">– Atrybut nadawany elementowi, do którego chcemy „skoczyć” (np.<id="kontakt">).
1.5. Obrazy i multimedia
Służą do wyświetlania grafik oraz odtwarzania plików wideo bezpośrednio w oknie przeglądarki. Są to elementy typu „samozamykającego się” (nie potrzebują osobnego tagu zamykającego).
Tag obrazka
-
<img>– Tag do osadzania obrazu.
Atrybuty obrazka
-
src="..."– Ścieżka do pliku (adres URL lub lokalizacja na dysku). -
alt="..."– Tekst alternatywny (kluczowy dla dostępności – wyświetli się, jeśli obrazek się nie załaduje) oraz dla osób korzystających z czytników ekranu (np. niewidomych). -
width/height– Szerokość i wysokość w pikselach (określenie wymiarów poprawia wydajność ładowania). -
loading="lazy"– Atrybut, który wstrzymuje ładowanie obrazka, dopóki użytkownik do niego nie przewinie (oszczędność transferu).
Tag wideo
-
<video>– Tag do osadzania wideo.
Atrybuty wideo
-
controls– Dodaje pasek odtwarzacza (play, pauza, głośność). -
src="..."– Źródło pliku wideo. -
autoplay– Uruchamia film automatycznie (często blokowane przez przeglądarki bezmuted). -
muted– Wycisza film.
1.6. Kontenery i grupowanie treści
Niektóre elementy HTML nie mają własnego znaczenia (semantyki/stylowania większego), ale służą do organizowania i grupowania innych elementów. Są one szczególnie przydatne przy stylowaniu strony (CSS) oraz manipulacji elementami (JavaScript).
Do takich elementów należą <div> i <span>. Różnią się one sposobem działania: jeden jest blokowy, a drugi liniowy.
Tag div
-
Element blokowy (zaczyna się od nowej linii i zajmuje całą szerokość?).
-
Służy do grupowania większych fragmentów strony.
-
Najczęściej używany do budowy layoutu i sekcji.
Sekcja strony
To jest tekst w kontenerze div.
Drugi blok treści.
Tag span
-
Element liniowy (nie łamie linii)
-
Działa wewnątrz tekstu
-
Służy do wyróżniania fragmentów
To jest ważne słowo w zdaniu.
Możemy wyróżnić fragment tekstu.
2.1. Formularze
Formularze pozwalają użytkownikowi na wprowadzenie własnych danych (np. imię, komentarz, hasło) i wysłanie ich na serwer. To "punkt styku" między stroną a użytkownikiem.
Tag form
<form>– Kontener całego formularza.
Atrybuty form
action="..."– Adres strony, na którą dane zostaną wysłane.method="..."– Metoda wysyłki:GET(dane widoczne w pasku adresu) lubPOST(dane ukryte, bezpieczniejsze).
Tag label
<label>– Etykieta pola. Atrybutformusi pasować doidkonkretnego pola (dzięki temu kliknięcie w napis zaznacza pole).
Tag input
<input>– Pole wejściowe (typ definiuje się przez atrybuttype).
typy inputa
type="text"– Zwykły tekst.type="email"– Sprawdza, czy wpisano poprawny adres e-mail.type="password"– Maskuje wpisywane znaki.type="checkbox"– Pole wyboru (wiele opcji).type="radio"– Wybór jednej opcji z grupy.
Formularz z text, email, password
2.2. Formularze cz.2
tag textarea
-
<textarea>– Pole na dłuższy tekst (treść wpisuje się między znacznikami, nie przez value)
-
<rows="...">- Liczba widocznych wierszy tekstu. -
<cols="...">- Szerokość pola w liczbie znaków (nie jest to dokładna szerokość w pikselach). -
<placeholder="...">- Tekst podpowiedzi wyświetlany, gdy pole jest puste. -
<maxlength="...">- Maksymalna liczba znaków, które można wpisać.
tag select
-
<select>– Lista rozwijana z możliwością wyboru jednej opcji.<option>– Pojedyncza opcja w liście rozwijanej (dziecko<select>).
-
<selected>- Oznacza domyślnie wybraną opcję. -
<value="...">- Wartość opcji, która zostanie przesłana do serwera.
tag button
-
<button>– Przycisk, wywołujący akcje.
-
<type="button">- Zwykły przycisk, który sam z siebie nic nie robi (można go użyć do np. wywołania funkcji JavaScript). -
<type="submit">- Przycisk, który wysyła formularz (domyślnie, jeśli jest w formie). -
<type="reset">- Przycisk, który resetuje wszystkie pola formularza do wartości początkowych. -
<disabled>- Atrybut, który dezaktywuje przycisk (nie można go kliknąć).
tag fieldset i legend
-
<fieldset>– Grupuje powiązane elementy formularza. -
<legend>– Tytuł grupy elementów formularza.
-
<disabled>- Wyłącza wszystkie elementy formularza wewnątrz<fieldset>.
2.3. Walidacja danych
Pozwalaja przeglądarce sprawdzić, czy dane wpisane przez użytkownika spełniają określone wymagania, jeszcze zanim trafią na serwer, mimo to trzeba sprawdzić dane po stronie serwera, ponieważ da się modyfikować dane po stronie klienta.
Lista atrybutów
-
<required>– Wymusza wypełnienie pola formularza. -
<min / max>– Ustawia minimalną i maksymalną wartość dla pola formularza. -
<step>– Skok (np. co 0.5 lub co 10). -
<pattern="...">– Wymusza wpisanie danych zgodnych z określonym wyrażeniem regularnym (np. dla numeru telefonu).
3.1. Tabele – podstawy
Tabele w HTML służą do przedstawiania danych w wierszach i kolumnach. Używa się ich wtedy, gdy informacje mają układ tabelaryczny, np. plan lekcji, cennik, wyniki lub zestawienie danych.
Tag table
<table>– Główny kontener tabeli.
Tag tr
<tr>– Wiersz tabeli.
Tag td
<td>– Zwykła komórka tabeli.
Tag th
<th>– Komórka nagłówkowa tabeli.
Prosta tabela
| Imię | Wiek |
|---|---|
| Anna | 22 |
| Jan | 25 |
3.2 Struktura tabeli
Większe tabele można podzielić na część nagłówkową, główną i stopkę. Dzięki temu kod jest bardziej uporządkowany i czytelny.
Tag thead
<thead>– Górna część tabeli, zwykle zawiera nagłówki kolumn.
Tag tbody
<tbody>– Główna część tabeli z danymi.
Tag tfoot
<tfoot>– Dolna część tabeli, np. podsumowanie.
Tabela z thead, tbody i tfoot
| Produkt | Cena |
|---|---|
| Klawiatura | 100 zł |
| Myszka | 50 zł |
| Razem | 150 zł |
3.3 Łączenie komórek
W tabelach można łączyć komórki w poziomie i pionie. Służą do tego atrybuty colspan oraz rowspan.
Atrybuty
colspan="..."– Łączy komórki w poziomie.rowspan="..."– Łączy komórki w pionie.
Tabela z colspan
| Dane ucznia | |
|---|---|
| Imię | Kasia |
| Klasa | 3A |
Tabela z rowspan
| Imię | Przedmiot |
|---|---|
| Marek | Matematyka |
| Informatyka |
4.1. Atrybuty globalne
Atrybuty globalne to takie, których można używać w wielu różnych elementach HTML. Pozwalają identyfikować elementy, grupować je, dodawać podpowiedzi, ukrywać treść lub ustawiać podstawowe informacje o zawartości.
Atrybut id
id="..."– Unikalny identyfikator elementu. Na jednej stronie dana wartośćidpowinna wystąpić tylko raz.
Atrybut class
class="..."– Nadaje elementowi jedną lub więcej klas. Klasy służą głównie do stylowania w CSS i wybierania elementów w JavaScript.
Atrybut title
title="..."– Dodatkowa podpowiedź wyświetlana po najechaniu kursorem na element.
Atrybut hidden
hidden– Ukrywa element na stronie.
Atrybut style
style="..."– Pozwala nadać styl bezpośrednio w elemencie (tzw. styl inline).
Przykład z id, class, title, hidden i style
To jest akapit z identyfikatorem.
To jest akapit z klasą.
Ten tekst jest ukryty.
Ten tekst ma kolor czerwony.
4.2. Atrybuty języka i danych
Niektóre atrybuty globalne służą do określenia języka treści albo do przechowywania własnych danych, które mogą być później wykorzystane np. w JavaScript.
Atrybut lang
lang="..."– Określa język treści elementu lub całego dokumentu.
Atrybuty data-*
data-*– Pozwalają zapisać własne dane w elemencie HTML, np.data-id,data-role,data-category.
Przykład z lang i data-*
To jest tekst po polsku.
4.3. Dobre praktyki
Niektóre atrybuty są bardzo często używane, dlatego warto znać kilka podstawowych zasad.
Lista zasad
idpowinno być unikalne w całym dokumencie.classmoże być używane wielokrotnie w wielu elementach.stylelepiej stosować rzadko – zwykle lepiej przenosić style do CSS.hiddenukrywa element całkowicie.data-*dobrze nadają się do przechowywania dodatkowych informacji dla JavaScript.
CSS
Ta część jest o tym, jak nadać stronie wygląd i układ. Najpierw ustawiasz kolor i tekst, potem odstępy i rozmiary, a na końcu uczysz się układać elementy obok siebie i reagować na różne szerokości ekranu.
1. Start
1.1 Podłączenie i składnia
1.2 Selektory id, class, tag
1.3 Zmienne CSS i JS
2. Kolory i tekst
2.1 Kolory
2.2 Kolor czcionki i tła
2.3 Czcionka i rozmiar tekstu
2.4 Wyrównanie i dekoracja tekstu
3. Odstępy, obramowania, rozmiar
3.1 Margin i padding
3.2 Border
3.3 Width, height, box-sizing
3.4 Jednostki
4. Układy
4.1 Display: block, inline, inline-block, flex, grid
4.2 Flexbox: kierunek, wyrównanie i odstępy
4.3 Grid
4.4 Responsywność i media queries
5. Responsywność
5.1 Responsywność — o co chodzi
5.2 Viewport i meta viewport
5.3 Elastyczne podstawy bez media queries
5.4 Co najczęściej psuje układ
5.5 Media queries — składnia i działanie
5.6 max-width, min-width i zakresy
5.7 Mobile-first
5.8 Co zmienia się w praktyce
5.9 Przykłady responsywnych układów
5.10 Typowe błędy i dobre praktyki
5.11 Na przyszłość
1.1. Podłączenie i składnia
Są trzy podstawowe sposoby na użycie CSS
atrybut style w elemencie html
-
style=""– atrybut pozwalający na przypisanie stylów bezpośrednio do elementu. -
Najlepiej unikać tego sposobu, ponieważ miesza treść z wyglądem i utrudnia zarządzanie stylem, również nie pozwala na ponowne wykorzystanie tych samych stylów w wielu elementach.
ELEMENT STYLE w DOKUMENCIE HTML
-
<style></style>– element ten powinno umieszczać się w sekcji<head>, choć sama używam w<body>. Pozwala on na zdefiniowanie stylów CSS, które będą stosowane do elementów na stronie.
Ten tekst jest czerwony.
style w dokumencie css
-
Głównym sposobem przechowywania stylów jest umieszczenie ich w osobnym pliku z rozszerzeniem
.css. -
Podłączasz go do dokumentu HTML za pomocą elementu
<link>w sekcji<head>. -
Możesz rozdzielać style na kilka plików (np.
style.css,layout.css,theme.css) i podłączać je wszystkie. -
Ten sposób jest najbardziej zalecany, ponieważ oddziela treść od wyglądu, ułatwia zarządzanie stylami i pozwala na ponowne wykorzystanie tych samych stylów na wielu stronach.
Ten tekst jest czerwony.
1.2. Selektory id, class, tag...
Style można podłączać na bardzo wiele sposobów, ponieważ to co naprwadę cię ogranicza to to co wstawisz w html.
id
-
id=""– Selektor id pozwala na stylowanie konkretnego elementu o unikalnym identyfikatorze. W CSS używa się go z prefiksem#, np.#moj-id. -
Identyfikator powinien być unikalny w całym dokumencie, więc ten sposób jest dobry do stylowania pojedynczych elementów.
class
-
class=""– Selektor class pozwala na stylowanie wielu elementów jednocześnie. W CSS używa się go z prefiksem., np..moja-klasa. -
Możesz opisywać nimi nawet elementy jak button typu .button-warning i np. by oznaczało że każdy z 50 przyciskow z taka klasa by byly czerwone, jako ostrzezenie
tagi
-
Możesz korzystać z selektorów tagów, np.
pdo stylowania wszystkich akapitów,h1do stylowania wszystkich nagłówków pierwszego poziomu itd. -
Raczej nie jest to typowy sposób użycia, jak już to do ustawienia domyślnych stylów, albo np w konkretnym div ale to potem wiecej powiem o np.
#sekcja-a > p {}, co oznacza, że w elemencie o id#sekcja-akażdy paragraf będzie miał styl, który ustawimy w nawiasach klamrowych. Jest dużo innych takich możliwości, co czasem pozwala nawet na unikanie javascriptu do pewnych rzeczy.
1.3. Zmienne CSS i połączenie z JS
Zmienne CSS pozwalają zapisać wartość raz i używać jej w wielu miejscach. To wygodne przy kolorach, odstępach, promieniach zaokrągleń i motywach strony, ponieważ np. masz jakiś kolor główny dla strony to potem możesz w jednym miejscu zmienić kolor i zmieni się na całej stronie nawet w 200 miejscach. Zwłaszcza, że możesz też dać jakiś główny kolor i w niektórych miejscach użyć go z jakimś nasyceniem, co teoretycznie może pozwolić, że zmiana pięciu kolorów pozwoli całą stronę zmienić kolorystycznie.
Element i zapis
Zmienne zwykle zapisuje się w
:root, żeby były dostępne globalnie.Tworzysz je przez
--nazwa-zmiennej, a używasz przezvar(--nazwa-zmiennej).
Połączenie z JavaScript
JS może zmienić wartość zmiennej, np. dla motywu jasny/ciemny.
Prosty przykład zmiany:
document.documentElement.style.setProperty('--main-color', 'tomato').Prosty odczyt:
getComputedStyle(document.documentElement).getPropertyValue('--main-color').
Przykład zmiany:
Przykład odczytu:
Pełny przykład interaktywny (kliknij przycisk):
2.1. Kolory
Kolory w CSS można zapisywać na kilka sposobów. Najczęściej spotkasz gotowe nazwy kolorów, zapis hex, rgb, rgba oraz transparent.
Nazwy kolorów
CSS ma wbudowane gotowe nazwy kolorów. To najprostszy zapis i dobry na start.
red– czerwonyblue– niebieskigreen– zielonyblack– czarnywhite– białygray– szaryorange– pomarańczowytomato– gotowa nazwa odcienia czerwono-pomarańczowegopurple– fioletowypink– różowy
Hex
Hex to zapis szesnastkowy poprzedzony znakiem #. Jest bardzo popularny w projektach i często używany w edytorach graficznych oraz figmie.
#ff0000– czerwony#0000ff– niebieski#00ff00– zielony#000000– czarny#ffffff– biały#7c3aed– przykładowy fiolet#f59e0b– przykładowy pomarańczowy
RGB
RGB zapisuje kolor przez ilość czerwieni, zieleni i niebieskiego. Każda wartość jest z zakresu od 0 do 255.
rgb(255, 0, 0)– czerwonyrgb(0, 0, 255)– niebieskirgb(0, 255, 0)– zielonyrgb(0, 0, 0)– czarnyrgb(255, 255, 255)– białyrgb(220, 38, 38)– ciemniejszy czerwony
RGBA
RGBA działa jak RGB, ale ma jeszcze czwartą wartość – przezroczystość. Ostatnia liczba jest z zakresu od 0 do 1.
rgba(255, 0, 0, 1)– pełny czerwony bez przezroczystościrgba(255, 0, 0, 0.5)– czerwony z połową przezroczystościrgba(0, 0, 255, 0.3)– lekko przezroczysty niebieskirgba(37, 99, 235, 0.7)– niebieski z lekką przezroczystością
Transparent
transparent oznacza całkowicie przezroczysty kolor. Przydaje się np. przy tłach, obramowaniach albo efektach hover.
transparent– całkowicie przezroczysty kolor
Tekst w kolorze z nazwy.
Tekst w kolorze hex.
Tekst w kolorze rgb.
Tekst w kolorze rgba.
Tło może być transparent.
2.2. Kolor czcionki i tła
Jedne z najczęściej używanych właściwości CSS to kolor tekstu i tła elementu. Po dodaniu odstępów i bordera to więkoszść efektu wizualnego jaki potrzebujemy.
Właściwości
color– ustawia kolor tekstu.background-color– ustawia kolor tła elementu.
2.3. Czcionka i rozmiar tekstu
CSS pozwala ustawić rodzinę fontów, wielkość, pogrubienie i wysokość linii. Dzięki temu tekst staje się czytelniejszy i bardziej uporządkowany.
Właściwości
font-family– wybór kroju pisma.font-size– rozmiar tekstu.font-weight– grubość tekstu.line-height– wysokość linii.
Większy i mocniejszy nagłówek tekstowy
To jest zwykły akapit, ale ma wygodniejszą wysokość linii, więc czyta się go przyjemniej.
2.4. Wyrównanie i dekoracja tekstu
Poza kolorem i rozmiarem możesz ustawić też ułożenie tekstu oraz dodatkowe ozdobniki, takie jak podkreślenie czy przekreślenie.
Właściwości
text-align– wyrównanie tekstu w poziomie, np. do lewej, środka, prawej albo obustronnie.text-decoration– dekoracja tekstu, np.underline,line-throughalbooverline.text-transform– zmiana wielkości liter.vertical-align– wyrównanie w pionie, ale tylko w wybranych sytuacjach, np. dla elementów inline lub komórek tabeli. Lepiej jakgbyś używała jednak flexa, ale czasem można tego użyć albo i sztucznie paddingiem wyrównąć jak znasz wysokość, choć nie polecam.
Tekst wyrównany do lewej.
Tekst wyśrodkowany.
Tekst wyrównany do prawej.
Tekst wyjustowany wygląda równo przy obu krawędziach, gdy jest odpowiednio długi i ma więcej treści do rozciągnięcia. Dodam troche tekstu abys zobaczyla co to robi mozesz tez zmienic na komputerze wielkosc okna aby lepiej zobaczyć efekt. (osobiście nigdy tego nie użyłam nawet chyba, ale ciekawe)
Tekst podkreślony.
Tekst przekreślony.
Tekst z linią nad tekstem.
małe litery zamienione na wielkie
DUŻE LITERY ZAMIENIONE NA MAŁE
każde słowo zaczyna się wielką literą
3.1. Margin i padding
To jedna z najważniejszych rzeczy przy układaniu elementów. margin robi odstęp na zewnątrz elementu, a padding robi odstęp wewnątrz.
Właściwości
margin– odstęp od innych elementów.padding– odstęp między treścią a krawędzią elementu.Możesz też używać stron osobno:
margin-top,padding-leftczy npmargin-inlinei inne, sama musisz se dobrać jak wolisz z nich korzystaćRównież w margin i padding, możesz konkretne strony w margin i padding:
margin: 10px 20px 30px 40px;Kolejno oznacza górny, prawy, dolny i lewy odstęp. Też możeszmargin: 10px 20px;to jest skrócony zapis dla kolejno pionu i poziomu, czyli pion to top i bottom a poziom to left i right.
3.2. Border
Obramowanie pomaga oddzielić element od reszty strony. Bardzo często łączy się je z tłem, paddingiem i zaokrągleniem rogów.
Właściwości
border– skrócony zapis szerokości, stylu i koloru obramowania. (border-width,border-style,border-color)border-radius– zaokrąglenie rogów.border-color,border-width,border-style– ustawienia osobno.Również możesz używać stron osobno:
border-top,border-right,border-bottom,border-left.Styl obramowania:
solid,dashed,dotted,double(może są też inne, ale dla ciekawszych są inne metody).
Można też
Można też wyłączyć obramowanie,
border: none;. A potem np. dodać tylko dolny border:border-bottom: 2px solid #8b5cf6;Można też wyłączyc np. tylko lewy border:
border-left: none;
3.3. Width, height, box-sizing
Szerokość i wysokość kontrolują rozmiar elementu. box-sizing decyduje, czy padding i border wliczają się do finalnego rozmiaru boxa. Postaram się dorobić sekcję 3.4 z jednostkami typu px, % itd jeśli nei masz czytająć to jeszcze.
Właściwości width i height
width– szerokość elementu.height– wysokość elementu.
Wartości dla width i height
px– stały rozmiar, np.220px.%– procent względem rodzica, np.50%.auto– rozmiar wyliczany automatycznie.fit-content– rozmiar dopasowany do zawartości.Pamiętaj, że auto i fit-content czasem nei działa w niektórych sytuacjach albo nie działają tak jak byś chciała.
Przykład width w px
Przykład width w %
Przykład width: fit-content
Przykład height w px
Przykład height: auto
Właściwość box-sizing
box-sizing– decyduje, jak liczony jest końcowy rozmiar elementu.
Wartości dla box-sizing
content-box– domyślnie szerokość i wysokość liczą tylko zawartość. Padding i border dodają się osobno.border-box– szerokość i wysokość obejmują też padding i border.Żebyś widziała różnicę lepiej, dałam mniejsze width i height oraz większy padding aż 50px, bo nie zawsze ta różnica jest widoczna i jak powinnaś zobaczyć border-box jakgby: wsadził padding do środka a nie jak content-box zwiększył szerokość o niego, potem pokaże trik fajny na border-box, ale musisz pamiętać, że jak dasz za duży padding to potrafi rozpchac środek ponieważ nie mieści się tekst z padding w tym rozmiarze.
Przykład box-sizing: content-box
Przykład box-sizing: border-box
Dodatkowe właściwości rozmiaru
min-width– minimalna szerokość elementu.max-width– maksymalna szerokość elementu.min-height– minimalna wysokość elementu.max-height– maksymalna wysokość elementu.
Przykład min-width
Przykład max-width
Przykład min-height
Przykład max-height
Moja rada, zawsze tego używam, choć oczywiście nie musisz
Można dać na początku pliku css border-box dla wszystkich elementów, używając gwiazdki (*), co też można używać w inne sposoby nei tylko do tego, ale zwykle jak zaczynam to robić, to umieszczam takie coś na początku pliku css. I ważne żeby umieszczać na początku ponieważ jak dasz dalej to może nadpisac późniejsze style a tak to jak potem chcesz konkretny elemnt inaczej to nadpisze to
W ten sposób każdy element na stronie będzie miał ustawiony border-box.
To od razu pokaże na innym przykładzie możesz np jak tutaj dla wszystkich elementów w klasie .my-class, ale * zalicza sie do elementow w srodku, wiec jesli chcesz tez na .my-class to musisz dać ją oddzielnie albo po przecinku, wtedy css wie, że to co w {} ma zrobići dla tego elementu i tego co po przecinku czyli każdego w nim w tym przypadku.
Ten tekst jest na 3 poziomie zagnieżdżenia i do niego też zalicza się gwiazdka (*)
3.4. Jednostki
W CSS wiele właściwości przyjmuje wartości z jednostkami. Najczęściej spotkasz jednostki stałe, względne względem tekstu albo względem ekranu.
Nie każda właściwość przyjmuje każdą jednostkę. Zawsze warto sprawdzić w dokumentacji, jaki typ wartości obsługuje dana właściwość.
MDN ma bardzo dobrą rozpiskę wartości i jednostek CSS: CSS values and units.
Większość jednostek będziesz musiała sama w praktyce się nauczyć.
Najczęstsze grupy
px– piksele, czyli stały rozmiar. (czyli w porównaniu do %, na różnych monitorach może wyglądać inaczej), oraz pamiętaj, że np niektóre przeglądarki zajmują wiecej miejsca jakimiś menu itd, albo nei każdy otwiera w 100% szerokosci i wysokości okna stronę.%– procent względem rodzica albo innego kontekstu właściwości. (zwykle jeśli nie daszposition: relative;to raczej odwoła się to dobodyale nei zawsze musi.)em– względem bieżącego rozmiaru tekstu.rem– względem rozmiaru tekstu elementu root.vwivh– względem szerokości i wysokości viewportu. (co też trzeba się nauczyć, że w różncyh sytuacjach nei musi być to to co chcesz, albo inaczej się zachowuje, ale często lubie dać npmax-width: 100vw;na html i body)dvh– dynamiczna wysokość viewportu, przydatna szczególnie na mobile.fit-content– rozmiar dopasowany do treści w granicach kontenera.
Przykład px
Przykład %
Przykład em
Ten tekst ma 1.5em.
Przykład rem
Ten tekst ma 1.5rem.
Przykład vw
Jak widzisz, niezależnie od diva wokół i innych elementów, jednostka vw jest zależna od szerokości viewportu czyli jakgby monitora, więc u mnei na komputarze pokazał się scroll na elemencie bo wyszło za niego.
Przykład vh
Przykład dvh
Różnica między vw a vh sprowadza się do tego, do której krawędzi ekranu się odnosisz: vw (Viewport Width) to jednostka oparta na szerokości okna przeglądarki, gdzie $1vw$ odpowiada $1\%$ tej szerokości, natomiast vh (Viewport Height) bazuje na jego wysokości i $1vh$ to $1\%$ pionowego wymiaru okna. W praktyce oznacza to, że element z ustawioną wartością 100vw będzie zawsze tak szeroki jak ekran, a element 100vh będzie zawsze tak wysoki jak ekran, niezależnie od tego, jak duże są ich kontenery nadrzędne. Warto jednak pamiętać, że na urządzeniach mobilnych tradycyjne vh bywa zdradliwe, ponieważ często nie uwzględnia dynamicznie pojawiającego się paska adresu przeglądarki, co może powodować ucinanie dołu strony – dlatego w nowoczesnym CSS do precyzyjnego ustawiania wysokości sekcji na telefonach lepiej sprawdza się dvh, które na bieżąco reaguje na zmiany widocznego obszaru. Natomiast w przypadku szerokości, zamiast 100vw często bezpieczniej jest użyć 100%, aby uniknąć problemów z nachodzeniem treści na pionowy pasek przewijania.
Przykład fit-content
Praktyczna uwaga
pxjest prosty i przewidywalny.emiremsą bardzo dobre dla tekstu i odstępów.vw,vhidvhprzydają się w layoutach i sekcjach na cały ekran.Nowocześniejsze jednostki, zwłaszcza viewportowe, warto sprawdzać w dokumentacji i kompatybilności przeglądarek.
Pełna lista jednostek jest bardzo duża, dużo z nich mają fajne zastosowanie, ale najlepiej zwłąszcza bez sprawdzania kompatybilności i przegladarek i tez nawet ich wersji, używać px, em, rem, %, vw, vh co pozwala na zrobienie prawie wszystkiego, zwłaszcze ze mozna uzyc js do pomocy zwykle.
4.1. Display: block, inline, inline-block, none, flex, inline-flex, grid, inline-grid
Właściwość display mówi, jak element zachowuje się w układzie strony. To ona decyduje, czy element zajmuje cały wiersz, siedzi w tekście, czy staje się kontenerem układu.
Jak niżej piszę, że np zajmuje całą dostępną szerokość, to jest to defaultow, czyli jak np. dasz width: 200px; to tyle zajmie, ale to też pokazuje czemu np niektore elementy jak p gdy dawalas text-align: center; w grze ktora pisalas to ladnie sie ukladaly bo elementy te zajmowaly cala szerokosc, wiec wystarczylo tylko tekst w nich wyrownac.
Najważniejsze wartości
block– element zaczyna nową linię i zwykle zajmuje całą dostępną szerokość.inline– element siedzi w jednej linii z tekstem.inline-block– element może stać obok innych jak inline, ale można wygodnie ustawiać mu szerokość i wysokość.none– element znika z układu strony. (czesto np w ten sposob menu jedno znika na telefonie i pojawia sie inne prostsze pod telefon jako inny element a poprzednie znika bo ma none)flex– element staje się kontenerem flexboxa.inline-flex– jak flex, ale sam kontener zachowuje się bardziej jak element liniowy.grid– element staje się kontenerem siatki.inline-grid– jak grid, ale sam kontener zachowuje się bardziej jak element liniowy.
z tym inline chodzi o to ze np inline-flex i flex to co ma w srodku tymbardziej jak dasz width i height np na 200x200 to powinnien wygladac i zachowywac sie tak samo, natomiast jesli dasz display block po block to ustawia sie pod soba w kolumnie a jak inline to obok siebie.
Domyślne zachowanie wielu elementów
div,p,section,h1zwykle zachowują się blokowo.(dlatego cala szerokosc zajmwoaly i byly pod soba)span,a,strongzwykle zachowują się liniowo. (a tutaj wlasnie span ukladal sie obok drugiego nie jak paragraph)Przy
inlineszerokość i wysokość nie działają tak wygodnie jak przyblockalboinline-block.
Przykład display: block
Przykład display: inline
Osobiscie nie uzywam tego nigdy raczej.
Przykład display: inline-block
Przykład display: none
Przykład display: flex
Jak widac standardowo ukladaja sie obok siebie ale to wiesz juz i dalej zobaczysz wiecej tu tylko przyklady.
Przykład display: inline-flex
Jak widzisz wewnatrz oba prawie tak samo sie zachowuja, na pierwszy rzut oka nawet tak samo i flex i inline-flex, roznica glowna jest poza czyli jak dasz obok siebei dwa elementy flex albo inline-flex, to flex sie ustawia pod soba a inline-flex pod soba, i ze względu na to, że to INLINE to kontener zajmuje w przypadku zwyklej wersji flex czyli jakgby grid 100%, a dla inline jakgby minimum ktore potrzebuje jak tekst typu span, ale jak dasz szerokosc i wysokosc to tak naprawde prawie tak samo.
Przykład display: grid
Przykład display: inline-grid
4.2. Flexbox: kierunek, wyrównanie i odstępy
Flexbox jest świetny do ustawiania elementów w jednym rzędzie albo jednej kolumnie. Bardzo często używa się go do kart, menu, przycisków i prostych układów sekcji.
Choc ja używam prawie zawsze bo można flexa w flexa wjebac :))
Flexbox działa na kontenerze oraz na elementach wewnątrz niego. Najpierw ustawiasz display: flex na rodzicu, a dopiero potem sterujesz kierunkiem i wyrównaniem dzieci.
Najważniejsze właściwości kontenera
display: flex– włącza flexbox.flex-direction– ustawia kierunek elementów. (standardowo to jest row)justify-content– ustawia elementy w osi głównej.align-items– ustawia elementy w osi poprzecznej.gap– odstęp między elementami.flex-wrap– pozwala elementom przechodzić do kolejnego wiersza.
Domyślne wartości
flex-direction: row– elementy idą w jednym rzędzie.justify-content: flex-start– elementy ustawiają się od początku osi głównej.align-items: stretch– elementy rozciągają się w osi poprzecznej.flex-wrap: nowrap– elementy nie zawijają się domyślnie.
Prosty start z display: flex
Przykład flex-direction: row
Przykład flex-direction: column
Przykład justify-content: flex-start
Przykład justify-content: center
Przykład justify-content: flex-end
Przykład justify-content: space-between
Przykład justify-content: space-around
Przykład justify-content: space-evenly
Przykład align-items: stretch
Przykład align-items: flex-start
Przykład align-items: center
Przykład align-items: flex-end
Przykład gap
Przykład flex-wrap: wrap
Przykład skrótu flex
Nie musisz teoretycznie używać flex: x;, sama długo nie uzywalam, tylko np dawalam ukladanie w poziomie i jednemu elementowi szerokosc 60% a drugiemu 40% i to super dziala, ale warto sie nauczyc flex: x; do poprawnego uzywania flexboxa, zwlasczza ze np mozesz dac konkretna wielkosc dla menu i reszta sie ladnie dostosuje.
Ale jak tu widac jeden element ma flex: 1; a drugi flex: 2;, wiec lacznie to daje 3 części, i jeden zajmuje jedna z nich a drugi dwie z nich, co lacznei daje cala szerokosc, wiec jeden ma jakgby 33.(3)% a drugi 66.(6)%
Na przyszłość
flex– skrócony zapis dlaflex-grow,flex-shrinkiflex-basis.align-self– pozwala wyrównać pojedynczy element inaczej niż reszta.order– zmienia kolejność elementów.flex-grow,flex-shrink,flex-basis– dokładniej kontrolują rozmiar elementów.Sama je slabo znam i musze zwykle sprawdzac jak sie je uzywa lol
4.3. Grid
Grid służy do budowania układów w wierszach i kolumnach. W przeciwieństwie do Flexboxa lepiej nadaje się do siatek, galerii, dashboardów i sekcji, w których chcesz kontrolować jednocześnie kolumny i wiersze.
Można myśleć o tym tak: Flexbox zwykle dobrze układa elementy w jednym kierunku, a Grid lepiej nadaje się do układów dwuwymiarowych.
Może to moja głupota ale zwykle zamiast grid wole użyc flexboxa, nawet do tabel
Najważniejsze właściwości kontenera
display: grid– włącza układ grid.grid-template-columns– ustawia liczbę i szerokość kolumn.grid-template-rows– ustawia wysokość wierszy.gap– odstęp między kolumnami i wierszami.column-gap– odstęp tylko między kolumnami.row-gap– odstęp tylko między wierszami.justify-items– wyrównanie elementów wewnątrz komórek w poziomie.align-items– wyrównanie elementów wewnątrz komórek w pionie.
Najczęstsze wartości
px– stały rozmiar, np.100px.auto– przeglądarka sama dobiera rozmiar.fr– część wolnego miejsca. Działa trochę podobnie do myślenia jak przyflex: 1iflex: 3.repeat(...)– skrót do powtarzania kolumn albo wierszy.minmax(...)– zakres od minimum do maksimum.
Jak czytać fr i repeat(...)
1fr 1fr– dwie równe kolumny.1fr 3fr– druga kolumna dostaje trzy razy więcej miejsca niż pierwsza.repeat(2, 1fr)– to samo co1fr 1fr.repeat(4, 1fr)– cztery równe kolumny.W
repeat(4, 1fr)pierwsza liczba oznacza liczbę powtórzeń, a druga część mówi, co dokładnie powtarzasz.
Prosty grid 2x2
Kolumny o stałej szerokości
Przykład 1fr 3fr
Przykład repeat(2, 1fr)
Przykład repeat(4, 1fr)
Przykład grid-template-rows
Przykład gap
Przykład column-gap i row-gap
Przykład grid-column: span 2
Przykład grid-row: span 2
Przykład grid-column: 1 / 3
Przykład justify-items: center
Przykład align-items: center
Przykład minmax(120px, 1fr)
minmax(120px, 1fr) oznacza, że każda kolumna ma mieć minimum 120px, ale może rosnąć aż do 1fr, czyli jednej części dostępnego miejsca. Dzięki temu kolumny nie robią się zbyt małe, ale nadal potrafią elastycznie wypełniać szerokość kontenera.
Inne przydatne właściwości
justify-content– ustawia całą siatkę w poziomie wewnątrz kontenera. Wartości:start,center,end,stretch,space-between,space-around,space-evenly.align-content– ustawia całą siatkę w pionie wewnątrz kontenera. Wartości:start,center,end,stretch,space-between,space-around,space-evenly.grid-auto-flow– decyduje, jak automatycznie układają się kolejne elementy. Wartości:row,column,dense.
Na przyszłość
grid-template-areas– budowanie układu przez nazwy obszarów.place-items– skrót dlaalign-itemsijustify-items.place-content– skrót dlaalign-contentijustify-content.auto-fitiauto-fill– bardziej elastyczne siatki.
5.1. Responsywność — o co chodzi
Responsywność oznacza, że strona dopasowuje się do różnych ekranów: telefonu, tabletu i komputera. Nie chodzi o to, żeby wyglądała identycznie wszędzie, tylko żeby była czytelna i wygodna.
Na małym ekranie masz mniej miejsca nie tylko przez sam ekran, ale też przez paddingi, marginesy, gapy, menu, paski przeglądarki i inne elementy, które zabierają przestrzeń. Dlatego układ, który wygląda dobrze na komputerze, może przestać mieścić się na telefonie.
Praktyczne rzeczy, na które trzeba uważać
Dwa elementy obok siebie mogą mieścić się na desktopie, ale już nie na telefonie.
Duży
padding, szerokiegapi sztywnewidthbardzo szybko zjadają miejsce.Responsywność to nie tylko zmiana liczby kolumn, ale też zmiana odstępów, rozmiaru tekstu i czasem ukrycie mniej ważnych elementów.
Przykład: dwa boxy na różnych szerokościach
5.2. Viewport i meta viewport
Viewport to obszar widoczny w przeglądarce. Na telefonie przeglądarka musi wiedzieć, jak interpretować szerokość strony, dlatego w <head> bardzo często dodaje się tag meta viewport.
Najważniejszy zapis
Co oznaczają części tego zapisu
name="viewport"– chodzi o obszar widoku.width=device-width– szerokość strony ma odpowiadać szerokości urządzenia.initial-scale=1.0– początkowy poziom powiększenia.
Ten tag nie naprawia złego układu sam z siebie. On tylko sprawia, że przeglądarka mobilna poprawnie interpretuje szerokość strony.
5.3. Elastyczne podstawy bez media queries
Zanim użyjesz @media, często da się zrobić sporo rzeczy dobrze już samymi elastycznymi właściwościami. To jest bardzo praktyczne, bo im mniej sztywnych rozmiarów, tym mniej problemów później.
Zwykle jak robię stronę to jest bez media query prawie responzywna, albo doslownie 5 minut potrzebuje i juz ladnie wyglada na telefonie i tablecie.
Najczęściej przydatne rzeczy
width: 100%– element chce zająć całą szerokość rodzica.max-width: 100%– element nie wyjdzie szerzej niż rodzic.height: auto– wysokość dopasowuje się naturalnie.flex-wrap: wrap– elementy mogą przejść do kolejnego wiersza.friminmax(...)– pomagają budować bardziej elastyczne siatki.
Przykład: obrazek z max-width: 100%
Przykład: kontener z width: 100% i max-width
Przykład: flex-wrap: wrap
Przykład: grid z minmax(...)
Bardzo ważna praktyczna uwaga o rozmiarach
Przy responsywności trzeba pamiętać, co liczy się do końcowego rozmiaru elementu. Jeśli element ma ustawione width, to jego końcowy rozmiar może zależeć od box-sizing.
content-box– padding i border doliczają się do szerokości.border-box– padding i border mieszczą się w zadanej szerokości.
Przykład: content-box i border-box
5.4. Co najczęściej psuje układ
Problemy z responsywnością bardzo często nie biorą się z jednej wielkiej rzeczy, tylko z kilku małych elementów naraz. Dlatego warto od razu wiedzieć, co najczęściej psuje układ.
Typowe problemy
Sztywne szerokości w
px.Za duży
paddingigap.Zbyt wiele elementów w jednym rzędzie.
Obrazki bez
max-width: 100%.Długie słowa, linki albo adresy e-mail.
Elementy ustawione na
100vw, które powodują poziomy scroll.Dodatkowe panele i menu zabierające dostępną przestrzeń.
Przykład: 100vw a 100%
Przykład: długi tekst, który może rozwalić układ
5.5. Media queries — składnia i działanie
Media query to sposób na warunkowe zmienianie stylów. W CSS zapisuje się to przez specjalną regułę @media.
Znak @ w CSS oznacza specjalną regułę. Takimi regułami są na przykład @media, @import, @keyframes albo @font-face.
Najprostsza składnia
Jak czytać ten zapis
@media– specjalna reguła CSS.(max-width: 768px)– warunek.Style w środku działają tylko wtedy, gdy warunek jest spełniony.
Przykład: zmiana kierunku flexa
5.6. max-width, min-width i zakresy
Najczęściej w media queries używa się warunków opartych o szerokość ekranu. Najważniejsze są max-width i min-width.
Najczęstsze warunki
@media (max-width: 768px)– dla ekranów do 768px.@media (min-width: 768px)– dla ekranów od 768px wzwyż.@media (min-width: 768px) and (max-width: 1024px)– dla określonego zakresu.
Przykład max-width
Przykład min-width
Przykład zakresu
Praktyczna uwaga
max-widthczęsto oznacza: popraw coś na mniejszych ekranach.min-widthczęsto oznacza: rozbuduj układ dla większych ekranów.Liczby typu
768pxczy1024pxsą częste, ale breakpoint dobiera się do projektu, a nie na ślepo.
5.7. Mobile-first
Mobile-first to podejście, w którym najpierw projektujesz styl dla małych ekranów, a potem rozszerzasz go dla większych. Dzięki temu łatwiej pilnować prostego układu i nie zapomnieć o telefonach.
Sama tak nigdy nie robie ale, robiac cos co wazniejsze jest na telefonie moze nie byc tez glupim pomyslem ale to trzeba od razu brac pod uwage albo rozne mozliwosci albo po prostu robic kompletnie oddzielne style
Jak to zwykle wygląda
Domyślnie piszesz prostszy układ dla telefonu.
Dla większych ekranów używasz zwykle
@media (min-width: ...).Zamiast „naprawiać desktop na telefon”, rozbudowujesz układ stopniowo.
Przykład mobile-first
5.8. Co zmienia się w praktyce
W responsywności bardzo często nie zmienia się wszystkiego naraz. Zwykle poprawia się kilka najważniejszych rzeczy: kierunek układu, liczbę kolumn, odstępy, szerokości i czasem rozmiar tekstu.
Najczęściej zmieniane właściwości
flex-direction– np. z rzędu na kolumnę.grid-template-columns– np. z 3 kolumn na 1.padding,margin,gap– mniejsze odstępy na małych ekranach.font-size– tekst może być trochę mniejszy albo większy zależnie od układu.display– czasem element znika albo pojawia się dopiero na większym ekranie.
Przykład: grid 3 kolumny → 1 kolumna
Przykład: mniejszy padding na małym ekranie
Przykład: zmiana rozmiaru tekstu
Nagłówek zmienia rozmiar
Przykład: ukrycie dodatkowego elementu
5.9. Przykłady responsywnych układów
Przykład: obrazek i tekst obok siebie → pod sobą
Przykład: karty z minmax(...)
Przykład: menu z zawijaniem
5.10. Typowe błędy i dobre praktyki
Responsywność najlepiej działa wtedy, gdy od początku myślisz o ograniczonej przestrzeni. Wtedy mniej rzeczy trzeba później naprawiać.
Typowe błędy
Używanie sztywnych szerokości wszędzie w
px.Testowanie strony tylko na jednej szerokości.
Brak kontroli nad obrazkami, wideo i długim tekstem.
Za duży
paddingigapna małych ekranach.Zapominanie, że sidebar, menu albo panel boczny też zabierają miejsce.
Robienie wszystkiego dopiero przez media queries zamiast najpierw budować elastyczny układ.
Dobre praktyki
Zacznij od prostego, elastycznego układu.
Używaj
max-width: 100%dla grafik i mediów.Pilnuj
box-sizing, paddingów i gapów.Testuj kilka różnych szerokości, a nie tylko jedną.
Zmieniaj tylko to, co naprawdę trzeba: układ, odstępy, wielkość tekstu albo widoczność elementów.
5.11. Na przyszłość
prefers-color-scheme– wykrywanie jasnego i ciemnego motywu.prefers-reduced-motion– ograniczanie animacji dla osób, które tego potrzebują.orientation– reagowanie na poziomy lub pionowy układ ekranu.hoveripointer– sprawdzanie rodzaju interakcji.Container queries – reagowanie na rozmiar kontenera, a nie całego viewportu.
JavaScript
Tu zaczyna się część, która daje stronie zachowanie, decyzje i logikę. HTML buduje strukturę, CSS odpowiada za wygląd, a JavaScript sprawia, że coś reaguje, liczy, sprawdza, zmienia się i działa.
1. Fundamenty i podstawy JavaScript
1.1 Czym jest JavaScript i co on robi
1.2 let i const
1.3 Typy wartości
1.4 Operatory i porównania
1.5 if / else
1.6 Pętle
1.7 Funkcje
1.8 return
1.9 Tablice
1.10 Metody tablic
1.11 Obiekty
1.12 Losowość i czas
2. Javascript i HTML
2.1 querySelector i querySelectorAll
2.2 textContent i innerHTML
2.3 value i pola formularzy
2.4 Zmiana stylu przez style
2.5 classList
2.6 addEventListener
2.7 event i target
2.8 dataset
2.9 Tworzenie elementów
2.10 Mini łączenie całości
1.1. Czym jest JavaScript i co on robi
JavaScript to język, który daje stronie zachowanie i logikę. Dzięki niemu strona może reagować na kliknięcia, coś liczyć, coś sprawdzać, zapamiętywać dane i zmieniać to, co widać.
Podział ról
HTML buduje strukturę strony.
CSS ustawia wygląd strony.
JavaScript daje zachowanie i logikę.
Co to znaczy w praktyce
po kliknięciu coś może się zmienić,
można liczyć punkty,
można sprawdzać odpowiedzi,
można losować liczbę albo ruch,
można wyświetlić komunikat o wygranej albo błędzie.
Pierwsza rzecz: console.log()
consoleto konsola przeglądarki, czyli miejsce, gdzie można podejrzeć komunikaty z JavaScript..log()oznacza: wypisz coś do konsoli.
1.2. let i const
Zmienne służą do trzymania danych. W praktyce na tym etapie prawie zawsze wystarczą let i const.
let
letużywaj wtedy, gdy wartość ma się zmieniać.To dobre np. dla punktów, liczby prób, numeru rundy albo liczby żyć.
const
constużywaj wtedy, gdy wartość ma zostać stała.To dobre np. dla nazwy gry, stałej liczby rund, nazwy gracza albo konfiguracji.
Praktyczna różnica
let– wartość można później nadpisać.const– tej zmiennej nie nadpisujesz nową wartością.
1.3. Typy wartości
W JavaScript zmienne mogą przechowywać różne rodzaje danych. Na ten etap najważniejsze są tekst, liczba i wartość logiczna.
string
stringto tekst.Przykład: nick gracza, nazwa gry, komunikat.
number
numberto liczba.Przykład: punkty, liczba prób, liczba żyć.
boolean
booleanto wartość logiczna:truealbofalse.Przykład: czy gra trwa, czy coś jest aktywne, czy odpowiedź jest poprawna.
Sprawdzanie typu przez typeof
typeofsprawdza, jakiego typu jest dana wartość.To przydaje się, gdy chcesz zobaczyć, czy coś jest tekstem, liczbą albo booleanem.
1.4. Operatory i porównania
Operatory pozwalają liczyć, porównywać wartości i budować warunki. To jest potrzebne do punktów, sprawdzania odpowiedzi i decyzji programu.
Działania arytmetyczne
+– dodawanie.-– odejmowanie.*– mnożenie./– dzielenie.%– reszta z dzielenia.
Porównanie wartości
===– sprawdza, czy wartości są równe.!==– sprawdza, czy wartości są różne.>– większe niż.<– mniejsze niż.>=– większe lub równe.<=– mniejsze lub równe.
= a == a ===
=– (Przypisanie): Nadaje wartość zmiennej. Nie służy do sprawdzania, a do ustawiania (np. x = 5).==– (Porównanie luźne): Sprawdza tylko, czy wartości są "podobne". Ignoruje typ danych, więc 5 == "5" to prawda (true).===– (Porównanie ścisłe): Sprawdza wartość oraz typ danych. Muszą być identyczne, więc 5 === "5" to fałsz (false).
Operatory logiczne
&&– i, czyli oba warunki muszą być prawdziwe.||– lub, czyli wystarczy, że jeden warunek jest prawdziwy.!– negacja, czyli odwraca wartość logiczną.
1.5. if / else
if pozwala programowi podjąć decyzję. To tutaj pojawia się logika typu: jeśli coś jest prawdą, zrób to, a jeśli nie, zrób coś innego.
Do czego to się przydaje
sprawdzanie odpowiedzi,
pokazywanie komunikatu,
sprawdzanie, czy ktoś wygrał,
sprawdzanie, czy liczba jest za duża albo za mała.
Sam if
kod w środku wykona się tylko wtedy, gdy warunek jest prawdziwy.
if i else
elseoznacza: jeśli warunek nie jest prawdziwy, wykonaj inną część kodu.
else if
else ifpozwala sprawdzać kolejny warunek, jeśli poprzedni nie był prawdziwy.
1.6. Pętle
Pętle służą do powtarzania kodu. Przydają się wtedy, gdy chcesz zrobić coś wiele razy, zamiast pisać to samo ręcznie.
Pętla for
forprzydaje się, gdy chcesz wykonać coś określoną liczbę razy.To dobra pętla np. do przechodzenia po elementach tablicy albo do liczenia rund.
Pętla while
whiledziała dopóki warunek jest prawdziwy.Na początku używa się jej rzadziej niż
for, ale warto wiedzieć, jak działa.
1.7. Funkcje
Funkcja to własny kawałek kodu, który można uruchamiać wiele razy. Dzięki funkcjom łatwiej porządkować kod i nie powtarzać tych samych rzeczy w kilku miejscach.
Prosta funkcja
funkcję najpierw tworzysz, a potem wywołujesz.
Parametry
parametry to wartości przekazywane do funkcji.
Dzięki nim jedna funkcja może działać na różnych danych.
1.8. return
return pozwala funkcji oddać wynik. To ważne, gdy funkcja ma coś policzyć albo sprawdzić i zwrócić gotową wartość.
Funkcja, która coś zwraca
bez
returnfunkcja może coś zrobić, ale nie odda wyniku do dalszego użycia,z
returnmożesz zapisać wynik do zmiennej albo od razu go wypisać.
1.9. Tablice
Tablica pozwala trzymać wiele wartości w jednym miejscu. To jeden z najważniejszych elementów w prostych programach i grach.
Tworzenie tablicy
tablica zapisuje wiele elementów w nawiasach kwadratowych.
Indeksy
elementy tablicy mają swoje pozycje.
pierwszy element ma indeks
0, drugi1, trzeci2.
Długość tablicy
lengthmówi, ile elementów ma tablica.
Zmiana elementu
można odczytać element po indeksie i można go też nadpisać.
1.10. Metody tablic
Metody tablic pomagają wygodniej pracować na większej ilości danych. Nie trzeba znać ich wszystkich, ale kilka bardzo praktycznych warto umieć od razu.
push()
dodaje element na koniec tablicy.
pop()
usuwa ostatni element tablicy.
forEach()
wykonuje coś dla każdego elementu tablicy.
includes()
sprawdza, czy dany element znajduje się w tablicy.
some()
sprawdza, czy chociaż jeden element spełnia warunek.
1.11. Obiekty
Obiekt pozwala opisać jedną rzecz bardziej szczegółowo. Zamiast trzymać tylko jedną wartość, możesz zapisać kilka powiązanych informacji razem.
Po co są obiekty
można w nich opisać użytkownika, produkt, kartę, pytanie albo dowolną inną rzecz,
każda właściwość ma nazwę i wartość.
Odczyt właściwości
do odczytu często używa się kropki, np.
gracz.nick.
Zmiana wartości w obiekcie
wartość właściwości można później zmienić.
Jak mówiłam const zapisujemy stałe, ale np w przypadku obiektów, możemy zmieniać, ponieważ nie zmieniamy samego obiektu, tylko jego właściwości. Ciągle jak niżej osoba to {}, tylko jej właściwości można zmieniać.
1.12. Losowość i czas
W prostych programach i grach często trzeba coś wylosować albo wykonać po chwili. Do tego bardzo często wystarczą Math.random(), Math.floor() i setTimeout().
Math.random()
zwraca losową liczbę od
0do prawie1.
Math.floor() z losowaniem zakresu
Math.floor()ucina część po przecinku.w połączeniu z
Math.random()pozwala losować liczby całkowite z zakresu.
setTimeout()
pozwala wykonać kod po określonym czasie.
czas podaje się w milisekundach.
1000milisekund to1sekunda.
2.1. querySelector i querySelectorAll
Żeby JavaScript mógł coś zmienić na stronie, najpierw musi znaleźć konkretny element. Najczęściej robi się to przez querySelector() albo querySelectorAll().
querySelector()
Zwraca pierwszy element pasujący do selektora CSS.
Można szukać po tagu, klasie albo
id.
querySelectorAll()
Zwraca wiele elementów pasujących do selektora.
Przydaje się np. przy kilku przyciskach, kartach albo polach.
2.2. textContent i innerHTML
Po znalezieniu elementu można zmieniać jego zawartość. Najczęściej robi się to przez textContent albo innerHTML.
textContent
Służy do czytania albo zmiany zwykłego tekstu w elemencie.
Najlepiej używać go wtedy, gdy chcesz tylko ustawić napis.
Stary tekst
Dzięki .textContent możesz wypisać też tekst w konsoli.
A żeby zmienić musisz do .textContent przypisać znakiem równa się nową wartość.
Nowy tekst
innerHTML
Pozwala wstawić HTML do środka elementu.
Przydaje się, gdy chcesz dodać np.
<b>,<span>,<br>albo kilka elementów naraz.
Dzięki .innerHTML możesz też odczytać HTML z elementu tak samo jak z textContent, tylko teraz nei sam teksta cały html czyli nawet dwadzieścia innych elementów w środku, choć w tym przypadku jest tylko tekst, więc go odczytasz.
A żeby zmienić musisz do .innerHTML przypisać znakiem równa się nową wartość tak samo jak z textContent.
Więc możesz też wsadzadzać dzięki innerHTML całe elementy HTML do środka danego elementu.
Druga linia
2.3. value i pola formularzy
Jeśli użytkownik coś wpisuje albo wybiera w formularzu, JavaScript może odczytać tę wartość. Najczęściej służy do tego value.
Input tekstowy
valuezwraca to, co znajduje się w polu.
Select
Dla listy rozwijanej
valuezwraca wartość aktualnie wybranej opcji.
2.4. Zmiana stylu przez style
JavaScript może zmieniać wygląd elementu bezpośrednio z poziomu kodu. Służy do tego właściwość style.
Zmiana jednego stylu
Można zmienić np. kolor, tło albo rozmiar tekstu.
Przykładowy tekst
Przykładowy tekst
Zmiana kilku stylów
Można ustawić kilka właściwości jedna po drugiej.
2.5. classList
Zamiast wpisywać wszystko przez style, często wygodniej jest dodawać i usuwać klasy CSS. Wtedy wygląd zostaje w CSS, a JavaScript tylko steruje stanem elementu.
classList.add()
Tekst testowy
Tekst testowy
classList.remove()
classList.toggle()
Dzięki toggle możesz przełączać klasy na elementach. Czyli jeśli klasa jest, to ją usuwa, a jeśli nie ma, to ją dodaje.
2.6. addEventListener
addEventListener() pozwala reagować na zdarzenia. Najczęściej na start będzie to kliknięcie.
Reakcja na klik
Zmiana treści po kliknięciu
Jeszcze nic się nie stało
Przycisk został kliknięty
2.7. event i target
Gdy zdarzenie się uruchamia, funkcja może dostać dodatkowe informacje o tym zdarzeniu. Te dane trafiają do obiektu event.
event.target
Pozwala sprawdzić, który element wywołał zdarzenie.
Target zwraca element podobnie jak querySelector, z czego trzeba zwrocic uwage na roznice pomiedzy currentTarget i target, czasem jesli np element klikniety, ma w sobei np. dwa divy to currentTarget(albo na odwrot) zwraca ten przycisk mimo ze event jest na elemencie powyzej.
2.8. dataset
Atrybuty data-* pozwalają przechowywać własne dane w HTML. Potem JavaScript może je odczytać przez dataset.
Po co to jest
można zapisać numer pola, typ karty, nazwę ruchu albo id elementu,
potem po kliknięciu można te dane odczytać.
2.9. Tworzenie elementów
JavaScript potrafi nie tylko zmieniać istniejące elementy, ale też tworzyć nowe i dodawać je do strony.
createElement()
Pamiętaj, że ten przykład ponizej nie wstawia elementu na stronę tylko w pamięci go ma w zmiennej
appendChild()
- Pierwszy element
- Pierwszy element
- Drugi element
2.10. Mini łączenie całości
Dwa przyklady, gdzie razem pojawiają się: pobranie elementu, kliknięcie, odczyt wartości i zmiana treści albo klasy.
Te przyklady juz dzialaja wiec mozesz wpisac cos i klikanc
Przykład 1 — pokaż wpisany nick
Tu pojawi się nick
Przykład 2 — zaznacz kliknięte pole