Egzamin zawodowy INF.03 (Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych) sprawdza wiedzę z HTML i CSS na dwóch płaszczyznach:
- Teoretycznej (test 40 pytań jednokrotnego wyboru) – szczegółowa znajomość specyfikacji, właściwości CSS, semantyki, selektorów, formatów plików i standardów W3C.
- Praktycznej (zadanie przy komputerze) – odwzorowanie makiety z arkusza egzaminacyjnego, implementacja semantycznego szkieletu HTML5, poprawne podpięcie arkusza stylów, ostylowanie bloków, formularzy, tabel i multimediów zgodnie z drobiazgowymi wytycznymi w kluczu oceniania CKE.
Poniższy wpis stanowi wyczerpujące zestawienie wszystkich zagadnień, reguł, pułapek i wzorców projektowych wymaganych na egzaminie.
1. Kluczowe pułapki i różnice pojęciowe (Pewniaki testowe CKE)
Zanim przejdziesz do szczegółów, opanuj zestawienie pojęć, na których najczęściej konstruowane są pytania podchwytliwe w części pisemnej:
| Pojęcie A | Pojęcie B | Kluczowa różnica na egzaminie |
|---|---|---|
colspan="n" |
rowspan="n" |
colspan łączy kolumny (w poziomie). rowspan łączy wiersze (w pionie). |
display: none; |
visibility: hidden; |
display: none całkowicie usuwa element z przepływu strony (przestrzeń po nim się zapada). visibility: hidden ukrywa element wizualnie, ale pozostawia pustą przestrzeń o jego wymiarach. |
alt w <img> |
title w <img> |
alt to tekst alternatywny dla czytników i przy braku załadowania (obowiązkowy w HTML5). title to dymek podpowiedzi (tooltip) po najechaniu myszą. |
id |
class |
id (w CSS: #) musi być unikalny w całym dokumencie. class (w CSS: .) może być przypisana do wielu elementów. |
em |
rem |
em zależy od wielkości fontu elementu nadrzędnego (rodzica). rem (root em) zależy wyłącznie od fontu elementu głównego <html> (domyślnie 16px). |
radio |
checkbox |
radio pozwala wybrać tylko jedną opcję z grupy (wymaga identycznego atrybutu name dla wszystkich opcji!). checkbox to pole wielokrotnego wyboru. |
GET |
POST |
GET przekazuje dane jawnie w adresie URL (długość ograniczona, zapis w historii przeglądarki). POST przekazuje dane w ciele żądania HTTP (bezpieczny dla haseł, brak limitu rozmiaru, obsługa plików). |
Potomek (A B) |
Dziecko (A > B) |
A B wybiera każdy element B wewnątrz A (nawet na dnie drzewa DOM). A > B wybiera wyłącznie element B będący bezpośrednim dzieckiem A. |
2. HTML – Semantyka, struktura i znaczniki
2.1. Szkielet dokumentu i sekcja <head>
Każdy arkusz egzaminacyjny weryfikuje poprawność szkieletu dokumentu. Brak deklaracji typu dokumentu lub kodowania znaków skutkuje utratą punktów za walidację.
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Opis strony do wyszukiwarki">
<meta name="keywords" content="portal, wiadomości, kurs">
<meta name="author" content="Egzaminator">
<title>Strona główna - INF.03</title>
<!-- Dołączenie zewnętrznego arkusza stylów -->
<link rel="stylesheet" href="styl.css">
<!-- Dołączenie ikony witryny (favicon) -->
<link rel="icon" href="favicon.ico" type="image/x-icon">
</head>
<body>
<!-- Treść strony -->
<script src="skrypt.js"></script>
</body>
</html>
<!DOCTYPE html>– informuje silnik przeglądarki, że strona została napisana w standardzie HTML5. Zapobiega wejściu przeglądarki w tryb zgodności wstecznej (quirks mode).<meta charset="UTF-8">– definiuje standard kodowania znaków obejmujący polskie znaki diakrytyczne.<meta name="viewport" ...>– włącza poprawne skalowanie strony na urządzeniach mobilnych (kluczowy element RWD).
2.2. Semantyka HTML5 (Struktura strony)
W kluczach egzaminacyjnych CKE za zastosowanie znaczników semantycznych zamiast uniwersalnych znaczników <div> przyznawane są dedykowane punkty.
+-------------------------------------------------------------+
| <header> |
+-------------------------------------------------------------+
| <nav> |
+------------------------------+------------------------------+
| <main> | <aside> |
| +------------------------+ | (panel boczny, reklamy, |
| | <section> | | linki, informacje dodatkowe)|
| | +------------------+ | | |
| | | <article> | | | |
| | +------------------+ | | |
| +------------------------+ | |
+------------------------------+------------------------------+
| <footer> |
+-------------------------------------------------------------+
<header>– nagłówek witryny lub sekcji; zawiera zazwyczaj logo, nazwę serwisu, hasło przewodnie.<nav>– blok nawigacyjny; zawiera menu główne, odsyłacze do podstron lub spis treści.<main>– unikalna, główna treść dokumentu. W danym dokumencie może wystąpić tylko jeden znacznik<main>nieukryty atrybutemhidden.<section>– tematyczna sekcja dokumentu; z reguły powinna posiadać własny nagłówek (<h2>-<h6>).<article>– niezależna, samodzielna kompozycja, nadająca się do ponownego wykorzystania lub dystrybucji (np. wpis na blogu, artykuł prasowy, post na forum, karta produktu).<aside>– sekcja zawierająca treści poboczne względem treści głównej (pasek boczny, powiązane odnośniki, banery reklamowe).<footer>– stopka dokumentu lub sekcji; zawiera informacje o prawach autorskich, autorze, linki do regulaminu.<figure>i<figcaption>– kontener na grafikę/diagram wraz z powiązanym podpisem:
<figure>
<img src="schemat.png" alt="Schemat sieci LAN">
<figcaption>Rysunek 1. Topologia gwiazdy.</figcaption>
</figure>
2.3. Tabele danych i scalanie komórek
Tabele na egzaminie INF.03 służą do prezentacji danych pobranych z bazy MySQL lub do statycznych zestawień.
Tagi strukturalne tabeli:
<table>– kontener główny tabeli.<caption>– tytuł tabeli umieszczany bezpośrednio pod tagiem<table>.<thead>– nagłówek tabeli.<tbody>– ciało tabeli z danymi.<tfoot>– podsumowanie tabeli.<tr>– wiersz tabeli (table row).<th>– komórka nagłówkowa (table header) – domyślnie pogrubiona i wyśrodkowana.<td>– standardowa komórka danych (table data).
Scalanie komórek – schemat działania:
<table border="1">
<thead>
<tr>
<!-- Scalenie dwóch kolumn w poziomie -->
<th colspan="2">Dane osobowe</th>
<th>Rola</th>
</tr>
</thead>
<tbody>
<tr>
<!-- Scalenie dwóch wierszy w pionie -->
<td rowspan="2">Jan Kowalski</td>
<td>Programista</td>
<td>Admin</td>
</tr>
<tr>
<td>Tester</td>
<td>Użytkownik</td>
</tr>
</tbody>
</table>
Zasada liczenia komórek w wierszu: Jeśli w pierwszym wierszu użyjesz
<td rowspan="2">, komórka ta zajmuje miejsce w wierszu pierwszym oraz w wierszu bezpośrednio pod nim. W drugim wierszu musisz zdefiniować o jedną komórkę<td>mniej!
2.4. Formularze i kontrolki wejściowe
Formularze to stały element każdego zadania praktycznego, stanowiący bramę do skryptów PHP lub JS.
<form action="rejestracja.php" method="POST" enctype="multipart/form-data">
<!-- Etykieta powiązana z polem przez atrybut for == id -->
<label for="nazwisko">Nazwisko:</label>
<input type="text" id="nazwisko" name="nazwisko" required placeholder="np. Nowak" maxlength="40">
<label for="haslo">Hasło:</label>
<input type="password" id="haslo" name="haslo" pattern=".{8,}" title="Minimum 8 znaków">
<label for="wiek">Wiek:</label>
<input type="number" id="wiek" name="wiek" min="18" max="99" step="1" value="18">
<label for="poziom">Ocena (suwak):</label>
<input type="range" id="poziom" name="poziom" min="0" max="10">
<label for="kolor">Wybierz kolor:</label>
<input type="color" id="kolor" name="kolor" value="#ff0000">
<!-- Grupa Radio - ten sam name="plec" wymusza pojedynczy wybór -->
<p>Płeć:</p>
<input type="radio" id="k" name="plec" value="k" checked>
<label for="k">Kobieta</label>
<input type="radio" id="m" name="plec" value="m">
<label for="m">Mężczyzna</label>
<!-- Pola wyboru Checkbox -->
<p>Zgody:</p>
<input type="checkbox" id="regulamin" name="regulamin" required>
<label for="regulamin">Akceptuję regulamin</label>
<!-- Lista rozwijana Select -->
<label for="woj">Województwo:</label>
<select id="woj" name="wojewodztwo">
<optgroup label="Północ">
<option value="pom">Pomorskie</option>
</optgroup>
<optgroup label="Południe">
<option value="mlp" selected>Małopolskie</option>
<option value="sl">Śląskie</option>
</optgroup>
</select>
<!-- Obszar tekstowy Textarea -->
<label for="uwagi">Uwagi:</label>
<textarea id="uwagi" name="uwagi" rows="4" cols="30"></textarea>
<!-- Przyciski formularza -->
<button type="submit">Zapisz dane</button>
<button type="reset">Wyczyść formularz</button>
</form>
Kluczowe atrybuty kontrolek formularza:
required– pole staje się wymagane (blokuje wysłanie formularza przy pustej wartości).disabled– wyłącza kontrolkę (wartość nie jest przesyłana do serwera).readonly– pole tylko do odczytu (wartość jest przesyłana do serwera).placeholder– tekst podpowiedzi wewnątrz pola, znikający po rozpoczęciu pisania.pattern– walidacja danych za pomocą wyrażenia regularnego (RegEx).enctype="multipart/form-data"– wymagane, gdy formularz zawiera pole<input type="file">do przesyłania plików na serwer.
2.5. Listy i formatowanie tekstu
1. Listy
- Nieuporządkowana:
<ul>→ elementy<li>. - Uporządkowana (numerowana):
<ol>→ elementy<li>.type="1"(liczby arabskie – domyślne)type="a"/type="A"(litery alfabetu)type="i"/type="I"(cyfry rzymskie)start="10"(rozpoczęcie od określonej liczby)reversed(odliczanie wstecz)
- Definicji:
<dl>(lista),<dt>(definition term – termin),<dd>(definition description – opis).
2. Znaczniki tekstu (Semantyka vs Wygląd)
<strong>vs<b>– oba pogrubiają tekst, ale<strong>nadaje znaczenie semantyczne (ważna informacja, odczytywana z naciskiem przez czytniki).<em>vs<i>– oba dają kursywę, ale<em>nadaje semantyczny nacisk (emphasis).<mark>– żółte wyróżnienie tekstu (zakreślacz).<del>– tekst przekreślony (usunięty z dokumentu).<ins>– tekst podkreślony (wstawiony do dokumentu).<sub>– indeks dolny (H2O).<sup>– indeks górny (E = mc2).<code>– kod komputerowy (font o stałej szerokości znaków – monospace).<pre>– tekst preformatowany (zachowuje wszystkie spacje, tabulatory i entery).<abbr title="Polski Związek Piłki Nożnej">PZPN</abbr>– skrótowiec z rozwinięciem w dymku.<blockquote>– dłuższy cytat blokowy.
3. Odsyłacze (Linki)
<a href="https://cke.gov.pl" target="_blank">Odwiedź CKE</a>–target="_blank"otwiera stronę w nowej karcie.<a href="mailto:[email protected]">Napisz e-mail</a>– wywołuje domyślnego klienta poczty.<a href="tel:+48123456789">Zadzwoń</a>– połączenie telefoniczne na urządzeniach mobilnych.- Kotwice (nawigacja wewnątrzstronowa):
- Cel:
<section id="kontakt">...</section> - Link:
<a href="#kontakt">Przejdź do kontaktu</a>
- Cel:
2.6. Multimedia i formaty plików graficznych
Osadzanie audio i wideo (HTML5):
<video width="640" height="360" controls poster="okladka.jpg">
<source src="film.mp4" type="video/mp4">
<source src="film.webm" type="video/webm">
Twoja przeglądarka nie obsługuje znacznika wideo.
</video>
<audio controls loop>
<source src="dzwiek.mp3" type="audio/mpeg">
<source src="dzwiek.ogg" type="audio/ogg">
</audio>
controls– wyświetla panel sterowania odtwarzaczem (play, pauza, głośność).autoplay– uruchamia odtwarzanie automatycznie po załadowaniu strony (w nowożytnych przeglądarkach wymaga atrybutumuted).loop– zapętla odtwarzanie.poster– miniatura wideo wyświetlana przed uruchomieniem filmu.
Porównanie formatów graficznych (Pytania z teorii INF.03):
| Format | Typ grafiki | Kompresja | Obsługa przezroczystości | Zastosowanie |
|---|---|---|---|---|
| JPEG / JPG | Rastrowa | Stratna | Brak | Zdjęcia, bogate przejścia tonalne, krajobrazy |
| PNG | Rastrowa | Bezstratna | Tak (pełny kanał alfa 8-bit) | Logotypy, ikony, grafiki wymagające idealnych krawędzi i przezroczystości |
| GIF | Rastrowa | Bezstratna (max 256 kolorów) | Tak (indeksowana 1-bit: 0 lub 100%) | Proste animacje, bardzo proste piktogramy |
| SVG | Wektorowa (XML) | Bezstratna (kod matematyczny) | Tak | Ikony, wykresy, logo – skalowanie bez utraty jakości |
| WebP | Rastrowa | Stratna lub bezstratna | Tak | Nowoczesny format internetowy łączący zalety JPG i PNG |
3. CSS – Kaskadowość, selektory, właściwości i układ
3.1. Sposoby dołączania i specyficzność (waga selektorów)
1. Metody dołączania stylów:
- Zewnętrzny arkusz stylów (rekomendowany na egzaminie praktycznym):
<link rel="stylesheet" href="styl.css"> - Wewnętrzny arkusz stylów (w sekcji
<head>):<style> body { background-color: #f0f0f0; } </style> - Styl lokalny / liniowy (inline):
<h1 style="color: red; font-size: 20px;">Tytuł</h1> - Import wewnątrz pliku CSS:
@import url("dodatkowe.css");
2. Kaskada i obliczanie specyficzności selektorów:
Gdy do jednego elementu odnosi się kilka sprzecznych reguł CSS, przeglądarka oblicza wagę reguły na podstawie 4 liczb (A, B, C, D):
- A (
1,0,0,0) – Styl liniowy w atrybuciestyle="...". - B (
0,1,0,0) – Liczba selektorów identyfikatorów (#id). - C (
0,0,1,0) – Liczba selektorów klas (.klasa), pseudoklas (:hover,:nth-child) oraz selektorów atrybutów ([type="text"]). - D (
0,0,0,1) – Liczba selektorów znaczników (p,div) oraz pseudoelementów (::after).
Reguła
!importantnadpisuje wszystkie powyższe wagi, o ile nie napotka innego!importanto wyższej specyficzności.
Przykład obliczeniowy:
/* Waga: 0,0,0,1 */
p { color: black; }
/* Waga: 0,0,1,1 (klasa + znacznik) */
p.wazny { color: blue; }
/* Waga: 0,1,0,0 (identyfikator) */
#komunikat { color: green; }
/* Waga: 0,1,1,2 (#id + .klasa + 2 znaczniki) */
div#glowny ul li.element { color: orange; }
Dla elementu <p id="komunikat" class="wazny"> tekst będzie zielony, ponieważ #komunikat ma wagę (0,1,0,0), a p.wazny ma (0,0,1,1).
3.2. Pełny przegląd selektorów i kombinatorów
| Selektor | Typ selektora | Działanie |
|---|---|---|
* |
Uniwersalny | Wybiera absolutnie każdy element w dokumencie |
p |
Elementu (typu) | Wybiera wszystkie akapity <p> |
.klasa |
Klasy | Wybiera elementy posiadające atrybut class="klasa" |
#identyfikator |
Identyfikatora | Wybiera element z id="identyfikator" |
div p |
Potomka (spacja) | Wybiera wszystkie <p> leżące wewnątrz <div> (na dowolnym poziomie zagnieżdżenia) |
div > p |
Dziecka (>) |
Wybiera tylko te <p>, które są bezpośrednimi dziećmi <div> |
h2 + p |
Sąsiedni (przyległy) (+) |
Wybiera pierwszy <p> występujący bezpośrednio po znaczniku <h2> |
h2 ~ p |
Rodzeństwa (~) |
Wybiera wszystkie elementy <p> występujące po <h2> na tym samym poziomie rodzica |
input[type="text"] |
Atrybutu dokładnego | Elementy <input> z atrybutem type równym dokładnie "text" |
a[href^="https"] |
Początku atrybutu (^=) |
Linki, których atrybut href zaczyna się od ciągu "https" |
a[href$=".pdf"] |
Końca atrybutu ($=) |
Linki, których atrybut href kończy się na ".pdf" |
a[href*="szkola"] |
Zawierania fragmentu (*=) |
Linki, których atrybut href zawiera ciąg "szkola" w dowolnym miejscu |
3.3. Pseudoklasy i pseudoelementy
Pseudoklasy (stan elementu lub relacja w strukturze – jeden dwukropek :):
:hover– stan, gdy wskaźnik myszy znajduje się nad elementem.:focus– stan aktywacji kontrolki formularza (np. kursor w polu tekstowym).:active– stan w trakcie klikania myszą (wciśnięty klawisz).:disabled/:checked– kontrolki wyłączone lub zaznaczone.:first-child/:last-child– pierwszy lub ostatni element w obrębie danego rodzica.:nth-child(n)– n-te dziecko rodzica:tr:nth-child(even)– co drugi, parzysty wiersz tabeli (kolorowanie naprzemienne).tr:nth-child(odd)– wiersze nieparzyste.li:nth-child(3n)– co trzeci element listy.
:not(selektor)– negacja (wybiera elementy niespełniające podanego kryterium), np.input:not([type="submit"]).
Pseudoelementy (tworzenie wirtualnych fragmentów – dwa dwukropki ::):
::before– wstawia wirtualny element przed zawartością znacznika (wymaga właściwościcontent: "";).::after– wstawia wirtualny element po zawartości znacznika (wymaga właściwościcontent: "";).::first-letter– formatuje wyłącznie pierwszą literę bloku tekstu (np. inicjał).::first-line– formatuje wyłącznie pierwszy wiersz tekstu akapitu.::placeholder– stylizuje tekst zastępczy w polach formularzy.
/* Wstawienie ikony lub znaku przed linkiem */
a.pobierz::before {
content: "📁 ";
}
/* Wstawienie kropki czyszczącej floaty (tzw. clearfix) */
.clearfix::after {
content: "";
display: block;
clear: both;
}
3.4. Model pudełkowy (Box Model) i jednostki
Każdy prostokątny element w CSS opisywany jest przez cztery warstwy:
+-------------------------------------------------+
| MARGIN (margines zewn.) |
| +-------------------------------------------+ |
| | BORDER (obramowanie) | |
| | +-------------------------------------+ | |
| | | PADDING (dopełnienie) | | |
| | | +-------------------------------+ | | |
| | | | CONTENT (zawartość) | | | |
| | | | szerokość / wysokość | | | |
| | | +-------------------------------+ | | |
| | +-------------------------------------+ | |
| +-------------------------------------------+ |
+-------------------------------------------------+
Właściwość box-sizing:
box-sizing: content-box;(domyślny w przeglądarkach):- Deklaracja:
width: 300px; padding: 20px; border: 5px solid black; - Rzeczywista szerokość elementu na ekranie to: 300px + (2 × 20px) + (2 × 5px) = 350px
- Deklaracja:
box-sizing: border-box;(standard w nowoczesnym projektowaniu):- Przy tych samych właściwościach szerokość całkowita na ekranie wynosi dokładnie 300px. Padding i border są „wchłaniane” do wnętrza pudełka, pomniejszając obszar treści.
Jednostki w CSS:
- Bezwzględne:
px– piksele ekranowe.pt– punkty typograficzne (1 pt = 1/72 cala).cm,mm– centymetry, milimetry (używane w stylach wydruku@media print).
- Względne:
%– procent wartości odpowiedniej cechy rodzica.em– mnożnik bieżącego rozmiaru fontu (2em= 2 razy większa czcionka niż u rodzica).rem– mnożnik fontu znacznika bazowegohtml(zapewnia spójną skalę w całym projekcie).vw(viewport width) – 1vw = 1% szerokości okna przeglądarki.vh(viewport height) – 1vh = 1% wysokości okna przeglądarki.
3.5. Typy wyświetlania (display) i pozycjonowanie (position)
Typy wyświetlania (display):
display: block;– element zajmuje całą szerokość wiersza, zaczyna się od nowej linii, przyjmujewidth,height,margin,padding.display: inline;– układa się w tekście, zajmuje szerokość wynikającą z treści. Ignorujewidth,heightoraz pionowe marginesy/paddingi.display: inline-block;– układa się w jednym wierszu jak element liniowy, ale pozwala na ustalenie szerokości (width), wysokości (height) i pełnych marginesów.display: flex;– włącza elastyczny model układu elementów potomnych.display: none;– usuwa element z widoku i przepływu dokumentu.
Pozycjonowanie (position):
static– pozycja domyślna. Element układa się naturalnie w dokumencie. Właściwościtop,bottom,left,rightorazz-indexnie działają.relative(względne) – element przesuwany jest o zadane wartości (top,leftitp.) względem swojego pierwotnego położenia. Przestrzeń, którą pierwotnie zajmował, pozostaje nienaruszona.absolute(bezwzględne) – element zostaje całkowicie wyrwany z przepływu dokumentu. Pozycjonuje się względem najbliższego pozycjonowanego przodka (rodzica, który mapositionustawione narelative,absolutelubfixed). Jeśli takiego brak – pozycjonuje się względem krawędzi okna przeglądarki (body).fixed(stałe) – element pozycjonuje się bezpośrednio względem okna przeglądarki (viewportu). Nie przewija się wraz z treścią strony (często stosowane do stałych pasków menu lub przycisków „Wróć na górę”).sticky(lepkie) – hybrydarelativeifixed. Element zachowuje się jakrelativedo momentu osiągnięcia określonej pozycji przewinięcia ekranu (np.top: 0), po czym „przykleja się” do krawędzi ekranu.z-index– decyduje o kolejności nakładania warstw (oś Z w głąb ekranu). Wartości wyższe przykrywają niższe. Działa wyłącznie dla elementów z pozycjonowaniem innym niż static.
3.6. Flexbox w zadaniach praktycznych
Od kilku sesji egzaminacyjnych CKE dopuszcza i promuje Flexbox jako nowoczesną alternatywę dla przestarzałych floatów (float: left).
.kontener-flex {
display: flex;
/* Kierunek układu: row (poziomo) lub column (pionowo) */
flex-direction: row;
/* Wyrównanie wzdłuż OSI GŁÓWNEJ (poziomej przy row): */
justify-content: space-between; /* flex-start | flex-end | center | space-between | space-around */
/* Wyrównanie wzdłuż OSI POPRZECZNEJ (pionowej przy row): */
align-items: center; /* flex-start | flex-end | center | stretch */
/* Zawijanie do nowego wiersza, gdy brak miejsca */
flex-wrap: wrap;
/* Nowoczesny odstęp między elementami */
gap: 20px;
}
.element-dziecko {
flex: 1; /* Równomierne rozciąganie elementów */
}
3.7. Typografia, kolory, tła i responsywność (RWD)
1. Typografia
font-family: Arial, Helvetica, sans-serif;– rodzina krojów (zawsze kończona rodziną generyczną:sans-serif,serif,monospace,cursive).font-size: 14px;– wielkość liter.font-weight: bold;lub wartości numeryczne400(normalny),700(pogrubiony).font-style: italic;– kursywa.text-align: left | right | center | justify;– wyrównanie tekstu.text-decoration: none;– usuwa domyślne podkreślenie odsyłaczy (underline– włącza podkreślenie,line-through– przekreślenie).text-transform: uppercase | lowercase | capitalize;– zamiana na wielkie litery, małe litery lub kapitalizacja pierwszej litery każdego wyrazu.line-height: 1.5;– interlinia (odstęp między wierszami tekstu).letter-spacing: 2px;– odstęp między literami.
2. Formaty zapisu kolorów w zadaniach CKE
- Nazwy słowne:
red,navy,gold. - Format szesnastkowy (Hex):
#RRGGBB– np.#00FF00(zielony),#FFFFFF(biały),#000000(czarny).- Skrócony
#RGB– np.#F00to to samo co#FF0000.
- Format RGB:
rgb(255, 0, 0)(zakres 0–255 dla każdego kanału). - Format RGBA (z kanałem alfa):
rgba(0, 0, 0, 0.5)– czarny z 50% przezroczystością. - Format HSL:
hsl(hue, saturation, lightness)– barwa (0–360), nasycenie (0–100%), jasność (0–100%).
3. Właściwości tła
body {
background-color: #2c3e50;
background-image: url("tlo.png");
background-repeat: no-repeat; /* repeat | repeat-x | repeat-y | no-repeat */
background-position: center top;
background-size: cover; /* cover (wypełnia cały kontener) | contain (mieści cały obrazek) */
background-attachment: fixed; /* tło nieruchome podczas przewijania */
}
4. Responsywne projektowanie (RWD) i Media Queries
Reguły @media pozwalają dostosować wygląd strony do wielkości ekranu urządzenia:
/* Domyślny styl dla komputerów */
.kolumna {
width: 50%;
float: left;
}
/* Reguła dla ekranów o szerokości 768px i mniejszych (tablety i telefony) */
@media screen and (max-width: 768px) {
.kolumna {
width: 100%;
float: none;
}
nav {
display: flex;
flex-direction: column;
}
}
4. Wzorzec zadania praktycznego INF.03 (Gotowy szablon)
Na egzaminie praktycznym arkusz zazwyczaj zawiera schemat blokowy układu strony. Poniższy kod przedstawia klasyczny, wzorcowy układ strony typu Baner + Panel Lewy + Panel Prawy + Stopka, zrealizowany w pełnej semantyce HTML5 i ostylowany zgodnie z częstymi wymaganiami klucza egzaminacyjnego.
Plik: index.html
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Portal informacyjny</title>
<link rel="stylesheet" href="styl.css">
</head>
<body>
<header>
<h1>Witamy w portalu informatycznym</h1>
</header>
<nav>
<a href="index.html">Strona główna</a>
<a href="uslugi.html">Usługi</a>
<a href="kontakt.html">Kontakt</a>
</nav>
<div id="kontener">
<aside id="lewy">
<h2>Nawigacja boczna</h2>
<ul>
<li>Sprzęt komputerowy</li>
<li>Oprogramowanie</li>
<li>Bazy danych</li>
</ul>
</aside>
<main id="prawy">
<h2>Rejestracja użytkownika</h2>
<form action="index.html" method="POST">
<label for="login">Login:</label><br>
<input type="text" id="login" name="login" required><br>
<label for="haslo">Hasło:</label><br>
<input type="password" id="haslo" name="haslo" required><br>
<label for="kurs">Wybierz kurs:</label><br>
<select id="kurs" name="kurs">
<option value="html">HTML i CSS</option>
<option value="js">JavaScript</option>
<option value="php">PHP i MySQL</option>
</select><br><br>
<input type="submit" value="Zarejestruj">
</form>
</main>
</div>
<footer>
<p>Autor strony: <strong>PESEL_ZDAJACEGO</strong></p>
</footer>
</body>
</html>
Plik: styl.css
/* Reset marginesów i dopełnień dla całego dokumentu */
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-family: Arial, Helvetica, sans-serif;
background-color: #FAFAFA;
color: #333333;
}
/* Baner główny */
header {
background-color: #2E4053;
color: white;
text-align: center;
padding: 30px;
}
/* Pasek nawigacji */
nav {
background-color: #34495E;
text-align: center;
padding: 10px;
}
nav a {
color: #ECF0F1;
text-decoration: none;
padding: 10px 20px;
display: inline-block;
}
nav a:hover {
background-color: #1ABC9C;
color: white;
}
/* Układ dwukolumnowy z wykorzystaniem Flexbox */
#kontener {
display: flex;
min-height: 500px;
}
#lewy {
background-color: #D5D8DC;
width: 30%;
padding: 20px;
}
#lewy ul {
margin-left: 20px;
margin-top: 10px;
}
#prawy {
background-color: #EAEDED;
width: 70%;
padding: 20px;
}
/* Stylizacja formularza */
form {
margin-top: 15px;
background-color: white;
padding: 20px;
border: 1px solid #BDC3C7;
border-radius: 5px;
max-width: 400px;
}
input[type="text"],
input[type="password"],
select {
width: 100%;
padding: 8px;
margin-top: 5px;
margin-bottom: 15px;
border: 1px solid #BDC3C7;
border-radius: 4px;
}
input[type="submit"] {
background-color: #2E4053;
color: white;
border: none;
padding: 10px 20px;
cursor: pointer;
border-radius: 4px;
}
input[type="submit"]:hover {
background-color: #1ABC9C;
}
/* Stopka */
footer {
background-color: #2E4053;
color: white;
text-align: center;
padding: 15px;
clear: both;
}
Wskazówka egzaminacyjna: Jeśli arkusz narzuca zastosowanie właściwości opływania zamiast Flexboxa: Dla
#lewystosujeszfloat: left; width: 30%;, dla#prawystosujeszfloat: left; width: 70%;, a w selektorzefooterbezwzględnie dopisujesz regułęclear: both;!
5. Przykładowe pytania testowe z wyjaśnieniem
Pytanie 1 (Selektory rodzeństwa):
Jaki fragment tekstu zostanie objęty kolorem czerwonym po zastosowaniu reguły:
h2 + p { color: red; }
A) Wszystkie akapity w dokumencie.
B) Wszystkie akapity znajdujące się wewnątrz znacznika <h2>.
C) Wyłącznie pierwszy akapit występujący bezpośrednio po dowolnym znaczniku <h2>.
D) Wszystkie akapity występujące po znacznikach <h2>.
Prawidłowa odpowiedź: C
Wyjaśnienie: Znak+to selektor sąsiedztwa bezpośredniego. Oznacza dokładnie jeden element wskazanego typu leżący bezpośrednio za elementem poprzedzającym na tym samym poziomie drzewa DOM.
Pytanie 2 (Wymiary i Model Pudełkowy):
Dla elementu zdefiniowano:
div.pudelko {
width: 250px;
padding: 15px;
border: 5px solid red;
margin: 20px;
box-sizing: content-box;
}
Całkowita szerokość zajmowana przez to pudełko w oknie przeglądarki (bez marginesów) wynosi:
A) 250 px
B) 290 px
C) 330 px
D) 270 px
Prawidłowa odpowiedź: B
Wyjaśnienie: Przybox-sizing: content-boxdo szerokości treści dodajemy obustronny padding oraz obustronne obramowanie:
250px + (2 × 15px) + (2 × 5px) = 250 + 30 + 10 = 290px.
Margines (margin: 20px) tworzy zewnętrzny odstęp wokół pudełka i nie wlicza się w wymiary samego elementu.
Pytanie 3 (Semantyka HTML5):
Który znacznik jest najbardziej odpowiedni do wydzielenia niezależnego komentarza użytkownika na forum internetowym?
A) <aside>
B) <article>
C) <section>
D) <div>
Prawidłowa odpowiedź: B
Wyjaśnienie: Zgodnie ze specyfikacją W3C, znacznik<article>służy do oznaczania samodzielnych, kompletnych treści, które mogą funkcjonować niezależnie od reszty strony – w tym komentarzy użytkowników, postów czy wpisów blogowych.
Pytanie 4 (Obsługa formularzy):
W jaki sposób należy zmodyfikować znacznik formularza, aby umożliwić przesyłanie plików graficznych na serwer za pomocą kontrolki <input type="file">?
A) Dodać atrybut method="GET".
B) Dodać atrybut enctype="multipart/form-data" oraz method="POST".
C) Dodać atrybut type="file-upload".
D) Dodać atrybut action="upload.xml".
Prawidłowa odpowiedź: B
Wyjaśnienie: Przesyłanie plików binarnych wymaga metodyPOSToraz typu kodowaniamultipart/form-data, który dzieli dane na części z osobnymi nagłówkami MIME.
6. Checklista zdającego INF.03
Przed oddaniem pracy na egzaminie praktycznym:
- Szkielet: Sprawdź, czy na samej górze pliku HTML znajduje się deklaracja
<!DOCTYPE html>oraz czy w<head>ustawiono<meta charset="UTF-8">. - Podpięcie CSS: Sprawdź ścieżkę do pliku CSS w tagu
<link>. Upewnij się, że plik nazywa się dokładnie tak, jak w treści zadania (np.styl.css, a niestyle.css!). - Znaczniki w CSS: Upewnij się, że w zewnętrznym pliku
.cssnie ma znaczników<style>ani</style>. - Atrybuty obrazów: Każdy znacznik
<img>musi posiadać atrybutysrcorazalt. - Atrybut name w formularzu: Sprawdź, czy pola formularza, z których dane mają być przetwarzane w PHP/JS, mają zdefiniowany atrybut
name. - Radio buttons: Upewnij się, że przyciski radiowe z jednej grupy mają identyczny
name. - Scalanie tabel: Sprawdź, czy
colspanrozciąga w poziomie, arowspanw pionie, oraz czy suma komórek w każdym wierszu tabeli się zgadza. - Kolory z arkusza: Zwróć uwagę na dokładne wartości kolorów podane w arkuszu (np. wartości szesnastkowe
#123456) – egzaminatorzy sprawdzają je w kluczu co do znaku. - Czyszczenie floatów: Jeśli w zadaniu użyto opływania (
float: left/float: right), upewnij się, że stopka lub element poniżej ma ustawioneclear: both;. - Podpis w stopce: Pamiętaj o wpisaniu swojego numeru PESEL w stopce lub w wyznaczonym przez treść zadania miejscu.