Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Tworzenie stron WWW Systemy CMS i narzędzia webowe

Słowa kluczowe: CSS CSS clear CSS float

Witryna internetowa ma mieć przedstawioną strukturę bloków. Aby uzyskać ten układ, należy znacznikom sekcji przypisać właściwości w następujący sposób:

Ilustracja do pytania z kwalifikacji INF.03
A. float tylko dla bloków: 3, 4; clear dla bloku 5
B. float tylko dla bloków: 2, 3, 4; clear dla bloku 5
C. float tylko dla bloku 5; clear dla bloku 2
D. float tylko dla bloku 2; clear dla bloków: 3, 4

Pytanie z egzaminu CKE, styczeń 2020 (arkusz EE.09-SG-20.01).

Ten układ wynika z klasycznego działania opływania elementów w CSS. Blok 1 zostaje zwykłym elementem blokowym na całą szerokość, więc tworzy nagłówek. Następnie bloki 2, 3 i 4 trzeba wyjąć z normalnego przepływu dokumentu przez float, najczęściej float: left, aby mogły ustawić się obok siebie w jednym pasie strony. Blok 2 zajmuje lewą kolumnę, a bloki 3 i 4 tworzą prawą kolumnę, przy czym mają tak dobrane szerokości i wysokości, żeby blok 4 znalazł się pod blokiem 3. Ważny jest blok 5: on ma być stopką na całą szerokość pod częścią pływającą, więc musi dostać clear, zwykle clear: both. Bez tego stopka mogłaby wejść obok elementów pływających albo przykleić się w dziwnym miejscu. Z mojego doświadczenia to jeden z typowych momentów, gdzie widać różnicę między normalnym układem blokowym a układem opartym o float. W praktyce dziś częściej używa się flexboxa lub CSS Grid, bo są czytelniejsze i bardziej przewidywalne, ale znajomość float i clear nadal jest potrzebna przy starszych szablonach oraz na egzaminach zawodowych. Dobra praktyka jest taka: float stosujemy tylko tam, gdzie elementy mają się ustawić obok siebie, a clear tam, gdzie następny fragment strony ma zacząć się poniżej tych pływających elementów.
W tym zadaniu łatwo pomylić samo położenie elementu na rysunku z mechanizmem, który w CSS je tworzy. Jeżeli float zostałby przypisany tylko blokowi 5, to stopka zaczęłaby zachowywać się jak element pływający, a to jest odwrotność potrzebnego efektu. Blok 5 ma zamykać układ i wejść pod wszystkie pływające kolumny, dlatego potrzebuje clear, a nie float. Równie problematyczne jest ustawienie clear dla bloku 2. Ten blok nie ma zaczynać się pod wcześniejszymi pływającymi elementami, tylko ma stanowić lewą część środkowego obszaru, więc powinien uczestniczyć w układzie kolumnowym. Jeśli float dostaną tylko bloki 3 i 4, a blok 2 pozostanie zwykłym elementem blokowym, przeglądarka potraktuje go jako element zajmujący domyślnie całą dostępną szerokość. Wtedy prawa kolumna nie ułoży się poprawnie obok niego, albo układ zacznie zależeć od przypadkowych wymiarów i kolejności w kodzie. Clear na bloku 5 jest akurat dobrym kierunkiem, ale nie wystarczy, jeśli wcześniej nie zostały prawidłowo ustawione wszystkie elementy kolumnowe. Błędne jest też myślenie, że wystarczy nadać float tylko blokowi 2, a bloki 3 i 4 wyczyścić przez clear. Clear powoduje zejście poniżej elementów pływających, więc bloki 3 i 4 nie stworzyłyby prawej kolumny obok bloku 2, tylko zostałyby wypchnięte niżej. Moim zdaniem najważniejsza zasada do zapamiętania jest prosta: elementy stojące obok siebie w danym poziomie zwykle muszą pływać razem, a element kończący taki fragment strony powinien wyczyścić opływanie. W nowoczesnym CSS zrobiłbym taki układ przez grid-template-areas, ale przy float właściwa logika to float dla bloków 2, 3 i 4 oraz clear dla bloku 5.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.