KWALIFIKACJA INF3 - CZERWIEC 2024 (test 2)

PYTANIE NR 27.
Na obrazie przedstawiono projekt układu bloków witryny internetowej. Zakładając, że bloki są realizowane za pomocą znaczników sekcji, ich formatowanie w CSS, oprócz ustawionych szerokości, powinno zawierać właściwość
Na obrazie widoczny jest schemat układu bloków (wireframe) strony internetowej.
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Aby bloki 1–4 ustawiły się parami obok siebie w dwóch wierszach, muszą "pływać" (float: left). Element pod nimi (blok 5) ma tworzyć stopkę na nowej linii i nie może opływać wcześniejszych elementów, więc wymaga wyczyszczenia opływania przez clear: both.

Pełne wyjaśnienie:

Układ na schemacie to klasyczny layout oparty o float: dwa elementy w pierwszym wierszu (blok 1 i 2), dwa w drugim (blok 3 i 4) oraz element kończący układ poniżej (blok 5) na pełną szerokość.

W technice float, aby elementy mogły ustawić się obok siebie, nadaje się im float: left. Dlatego bloki 1–4 powinny mieć float: left (przy założeniu, że ich szerokości są tak dobrane, by mieściły się w kontenerze po dwa w wierszu).

Problem pojawia się przy bloku 5. Jeśli blok 5 także otrzymałby float: left, stałby się elementem pływającym i mógłby próbować ustawić się obok poprzednich pływających bloków (np. obok bloku 3 lub 4, jeśli pozostałaby wolna przestrzeń). To kłóci się z intencją "stopki" zajmującej całą szerokość.

Właśnie do takiej sytuacji służy właściwość clear. Ustawienie clear: both na bloku 5 wymusza, aby jego górna krawędź znalazła się poniżej wszystkich elementów pływających (zarówno z lewej, jak i prawej strony). Dzięki temu blok 5 zaczyna się w nowej linii i może rozciągnąć się na pełną szerokość kontenera (zgodnie z nadaną szerokością).

Dlaczego pozostałe odpowiedzi są błędne?

  • "float: left dla wszystkich bloków." — błędne, bo obejmuje również blok 5; stopka nie powinna pływać, tylko zejść pod wcześniejsze floater’y.
  • "clear: both dla wszystkich bloków." — spowoduje, że każdy blok będzie zaczynał się poniżej poprzednich pływających elementów, więc bloki nie ustawią się obok siebie w wierszach.
  • "clear: both dla bloku 5 oraz float: left jedynie dla 1 i 2 bloku." — brakuje float dla bloków 3 i 4, więc nie utworzą drugiego wiersza w dwóch kolumnach.

W praktyce, przy układach float często spotyka się także technikę "clearfix" dla rodzica, ale w tym zadaniu kluczowe jest zrozumienie roli clear: both na elemencie kończącym układ.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
float powoduje "wypłynięcie" elementu w lewo lub prawo, dzięki czemu kolejne elementy mogą go opływać i ustawiać się obok niego. Stosuje się to m.in. do układów kolumnowych, gdy chcemy, aby dwa bloki były w jednym wierszu.
clear: both wymusza, aby element zaczął się poniżej wszystkich elementów pływających (zarówno po lewej, jak i po prawej). Używa się tego typowo dla stopki lub sekcji, która ma "zejść" pod kolumny zrobione za pomocą float.
Gdy stopka ma float: left, staje się elementem pływającym i może próbować ustawić się obok wcześniejszych pływających bloków, jeśli jest miejsce. Zamiast być pod kolumnami na pełną szerokość, może "przykleić się" do nich z boku.
W klasycznym podejściu ustawia się oba bloki jako pływające, np. float: left, i nadaje im takie szerokości, aby razem mieściły się w kontenerze. Trzeba też pamiętać o czyszczeniu opływania dla elementów, które mają być poniżej.
Jeżeli każdy blok ma clear: both, to każdy kolejny będzie zaczynał się poniżej poprzednich elementów pływających. W efekcie bloki nie ustawią się w dwóch kolumnach w jednym wierszu, tylko "spadną" jeden pod drugi, psując układ.
Wskazówką jest schemat, gdzie ostatni element jest poniżej wszystkich wcześniejszych i ma zajmować całą szerokość. Jeśli wcześniejsze elementy są w kolumnach (pływają), ostatni zwykle musi czyścić opływanie, aby nie próbował ustawić się obok nich.
Nie zawsze. Sama szerokość nie "przerywa" opływania. Jeśli nad stopką są elementy pływające (float), stopka bez clear może zachować się nieintuicyjnie i próbować wejść obok kolumn. clear: both gwarantuje rozpoczęcie w nowej linii.
clear: left każe elementowi zejść poniżej elementów pływających po lewej stronie, a clear: both – poniżej pływających po lewej i prawej. W układach, gdzie kolumny są pływające w lewo, najbezpieczniejsze dla stopki bywa clear: both.
Rzadziej. Dziś do layoutu częściej stosuje się Flexbox i Grid. Jednak float/clear nadal pojawia się w starszych szablonach i na egzaminach jako klasyczna technika. Warto znać zasady, bo często trzeba utrzymywać istniejący kod.
Najczęstsze są dwa: nadawanie float wszystkim elementom (w tym stopce) oraz brak clear dla elementu, który ma być poniżej kolumn. Drugi błąd to stosowanie clear na zbyt wielu blokach, co niszczy układ kolumnowy.
info

Statystycznie 45% uczniów zna prawidłową odpowiedź. trudne

Specjaliści zwracają uwagę: "Aby bloki 1–4 ustawiły się parami obok siebie w dwóch wierszach, muszą "pływać" (float: left)."

Źródła:

  • W3C, "CSS 2.1 Specification" – rozdziały o pozycjonowaniu elementów pływających i właściwości clear (Floating and Clearing), https://www.w3.org/TR/CSS21/visuren.html#floats (dostęp: 2026-02-27)
  • MDN Web Docs, "float" (CSS), https://developer.mozilla.org/en-US/docs/Web/CSS/float (dostęp: 2026-02-27)
  • MDN Web Docs, "clear" (CSS), https://developer.mozilla.org/en-US/docs/Web/CSS/clear (dostęp: 2026-02-27)

Materiały:

  • Dokumentacja MDN dotycząca float i clear (przykłady i opis zachowania w układzie)
  • Specyfikacja CSS 2.1 (sekcje o float i clear) jako źródło definicji
  • Ćwiczenia: odtworzenie układu 2x2 + stopka w HTML/CSS i testowanie wariantów clear

Aktualizacja pytania: 03.04.2026



Aktualizacja pytania: 03.04.2026
📡 Brak połączenia internetowego