KWALIFIKACJA AUD5 - TEST WIEDZY NR 5

PYTANIE NR 31.
Rozważ następujący fragment kodu CSS:
#logo {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}
Co osiągniesz za pomocą tego kodu?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Połączenie top: 50% i left: 50% ustawia lewy górny róg elementu w środku obszaru odniesienia. Następnie transform: translate(-50%, -50%) przesuwa element w górę i w lewo o połowę jego własnej szerokości i wysokości. Efektem jest idealne wyśrodkowanie w pionie i poziomie.

Pełne wyjaśnienie:

Ten fragment CSS realizuje klasyczną technikę centrowania elementu w dwóch osiach.

  • position: absolute wyłącza element z normalnego przepływu dokumentu i pozwala ustawić go współrzędnymi top i left względem obszaru odniesienia (najczęściej najbliższego przodka z pozycjonowaniem, a gdy go brak – względem viewportu).
  • top: 50% oraz left: 50% ustawiają punkt zaczepienia elementu (domyślnie lewy górny róg) w połowie wysokości i szerokości obszaru odniesienia. Na tym etapie nie jest wyśrodkowany środek, tylko róg.
  • transform: translate(-50%, -50%) przesuwa element o wartości zależne od jego własnych wymiarów: -50% w osi X oznacza "w lewo o połowę własnej szerokości", a -50% w osi Y "w górę o połowę własnej wysokości". Dzięki temu środek elementu pokrywa się ze środkiem kontenera.

Dlatego odpowiedź "Logo będzie wyśrodkowane na stronie zarówno w pionie, jak i w poziomie." jest poprawna.

Pozostałe odpowiedzi opisują typowe pomyłki: stwierdzenie o przesunięciu "w dół i w prawo" ignoruje ujemne wartości w translate() (znak minus oznacza ruch w górę i w lewo). Wariant "50px" myli procenty z pikselami – tutaj przesunięcie jest proporcjonalne do rozmiaru elementu, a nie stałe. Odpowiedź o obrocie jest błędna, bo obrót realizuje rotate(), natomiast translate() służy wyłącznie do przesuwania.

W praktyce ta metoda jest często używana do centrowania logotypów, modali i nakładek, zwłaszcza gdy rozmiar elementu jest zmienny (responsywny).

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Ustawia punkt zaczepienia elementu (zwykle lewy górny róg) w połowie szerokości i wysokości obszaru odniesienia. Samo to nie centruje środka elementu, tylko jego róg, dlatego często dodaje się jeszcze transform: translate(...).
Bo translate(-50%, -50%) cofa element o połowę jego własnej szerokości i wysokości. Dzięki temu, gdy róg elementu trafi w środek kontenera (top/left 50%), środek elementu zostaje dopasowany do środka kontenera.
Procenty w translate() odnoszą się do wymiarów przesuwanego elementu, a nie do rodzica. To ważne rozróżnienie: top/left: 50% liczy się od rodzica, a translate(-50%, -50%) liczy się od rozmiaru elementu.
Gdy rodzic (lub inny przodek) ma ustawione pozycjonowanie (np. position: relative), wtedy element absolutny pozycjonuje się względem niego. Jeśli brak takiego przodka, pozycjonowanie odbywa się względem obszaru strony/viewportu.
Najczęstsze błędy to: brak pozycjonowanego kontenera (centruje się nie tam, gdzie trzeba), użycie tylko top/left bez translate (centruje się róg), pomylenie procentów z pikselami oraz nieuwzględnienie znaku minus w translate(-50%, -50%).
Nie. Ujemne wartości w translate() oznaczają przesunięcie w lewo (oś X) i w górę (oś Y). Przesunięcie w dół i w prawo uzyskałbyś przy dodatnich wartościach, np. translate(50%, 50%).
translate() przesuwa element w osi X/Y (zmienia jego położenie), a rotate() obraca element wokół punktu obrotu. Obie funkcje są używane w właściwości transform, ale dają zupełnie inne efekty wizualne.
Alternatywy to m.in. flexbox i grid. Dla flexbox: ustaw kontener jako display: flex, a następnie użyj justify-content: center i align-items: center. To często prostsze, gdy element ma pozostać w normalnym układzie strony.
Tak, to jedna z jej zalet. Ponieważ przesunięcie w translate(-50%, -50%) liczy się jako procent od własnych wymiarów elementu, centrowanie pozostaje poprawne nawet wtedy, gdy logo zmienia rozmiar (np. w responsywnym projekcie).
Szukaj wzorca: position: absolute (lub fixed), następnie top: 50% i left: 50%, a potem korekta przez transform: translate(-50%, -50%). Ten zestaw niemal zawsze oznacza centrowanie w pionie i poziomie.
info

To pytanie poprawnie rozwiązuje 54% zdających egzamin. trudne

W praktyce zawodowej kluczowe jest to, że połączenie top: 50% i left: 50% ustawia lewy górny róg elementu w środku obszaru odniesienia.

Źródła:

  • MDN Web Docs: "position" (CSS) – https://developer.mozilla.org/en-US/docs/Web/CSS/position (dostęp: 2026-03-01)
  • MDN Web Docs: "top" (CSS) – https://developer.mozilla.org/en-US/docs/Web/CSS/top (dostęp: 2026-03-01)
  • MDN Web Docs: "transform" (CSS) – https://developer.mozilla.org/en-US/docs/Web/CSS/transform (dostęp: 2026-03-01)

Materiały:

  • Dokumentacja MDN: position (CSS)
  • Dokumentacja MDN: transform (CSS)
  • Dokumentacja MDN: translate()

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego