Pytania rekrutacyjne CSS
62 pytań — 20 odpowiedzi dostępnych od razu
Podstawowe pojęcia
Czym jest CSS i dlaczego się go używa?
CSS (ang. Cascading Style Sheets) to język arkuszy stylów, który służy do opisywania sposobu prezentacji elementów HTML na stronie internetowej. Umożliwia on oddzielenie warstwy stylu od warstwy struktury, co ułatwia utrzymanie i rozwijanie kodu. Dzięki CSS można kontrolować m.in. kolory, rozmiary, rozmieszczenie czy animacje elementów, co pozwala na poprawę wyglądu oraz dostępności strony.
Materiały:
Na czym polega różnica między elementami typu inline, inline-block i block-level?
- Inline – elementy zajmują tylko tyle miejsca, ile wynika z ich zawartości, a nie rozpoczynają nowej linii. Przykładowo, element
<span>jest elementem typu inline. - Inline-block – podobnie jak elementy inline, nie zajmują całej szerokości rodzica, ale można im nadawać wymiary (wysokość i szerokość), tak jak elementom blokowym.
- Block-level (blokowe) – elementy zajmują całą dostępną szerokość rodzica i zaczynają nową linię. Przykładem jest
<div>czy<p>.
Materiały:
Czym różni się margin od padding?
- Margin (margines) – to zewnętrzny odstęp wokół elementu, wpływający na odległość między sąsiadującymi elementami. Marginesy nakładają się (collapse) między elementami blokowymi.
- Padding (dopełnienie) – to wewnętrzny odstęp między obramowaniem (border) a zawartością elementu. Padding zwiększa obszar tła elementu, ale nie wpływa bezpośrednio na przestrzeń zewnętrzną.
Materiały:
- [MDN Web Docs (PL) – Margin i Padding](https://developer.mozilla.org/pl/docs/Web/CSS/margin oraz https://developer.mozilla.org/pl/docs/Web/CSS/padding)
Co reprezentuje model pudełkowy (box model) w CSS?
Model pudełkowy (box model) określa sposób obliczania rozmiarów i rozmieszczenia elementów. Każdy element w CSS jest rozpatrywany jako prostokąt, składający się z:
- Content (zawartość) – główna treść elementu, np. tekst czy obrazek.
- Padding – przestrzeń między obramowaniem a zawartością.
- Border – obramowanie elementu.
- Margin – zewnętrzny odstęp między elementem a otaczającymi go elementami.
Materiały:
Jak można zdefiniować kolory w CSS (np. formaty hex, RGB, RGBA, HSL)?
- HEX (np.
#FF5733) – notacja szesnastkowa, gdzie parametry koloru oznaczają wartości czerwonej, zielonej i niebieskiej części składowej. - RGB (np.
rgb(255, 255, 51)) – definiowanie koloru przez trzy wartości liczbowe (czerwień, zieleń, niebieski) w zakresie 0–255. - RGBA (np.
rgba(255, 255, 51, 0.8)) – rozszerzona wersja RGB, która dodatkowo zawiera kanał przezroczystości (alpha). - HSL (np.
hsl(120, 100%, 50%)) – definiowanie koloru przez barwę (hue), nasycenie (saturation) i jasność (lightness).
Materiały:
Jaki jest cel stosowania resetu lub normalize w CSS?
Reset i normalize to pliki CSS, które służą do ujednolicenia lub zminimalizowania domyślnych styli przeglądarek. Pozwala to uniknąć niespójności wyświetlania strony w różnych przeglądarkach i stać się punktem wyjścia do dalszego stylowania.
- Reset CSS – usuwa większość domyślnych styli, co daje zupełnie czyste pole do popisu, ale może powodować konieczność dodania niektórych styli od nowa.
- Normalize CSS – nie tyle usuwa, co harmonizuje domyślne style w przeglądarkach, pozostawiając je tam, gdzie są one użyteczne, i standaryzując ich sposób działania.
Materiały:
Selektory i specyficzność
Jakie istnieją rodzaje selektorów CSS i kiedy należy ich używać?
W CSS wyróżnia się kilka podstawowych typów selektorów:
- Selektory tagów (elementów) – np.
p,div,span. Stosuje się je do formatowania wszystkich elementów określonego typu. - Selektory klas – np.
.nazwa-klasy. Używane w sytuacjach, gdy chcemy zestylizować grupę elementów o tej samej klasie. - Selektory identyfikatorów – np.
#nazwa-id. Używa się ich do zaznaczenia unikalnego elementu na stronie (występuje tylko raz). - Selektory atrybutów – np.
input[type="text"]. Pozwalają uzależnić styl od konkretnego atrybutu lub jego wartości. - Selektory złożone (kombinatory) – np. z użyciem (descendant),
>(child),+(sibling) i~(general sibling). Służą do bardziej precyzyjnego powiązania elementów względem ich położenia w strukturze DOM. - Pseudoklasy i pseudoelementy – np.
:hover,:before,:after. Są wykorzystywane do stylowania stanów i części elementów.
Kiedy ich używać?
- Tagi (element) – gdy chcemy ustawić globalne reguły, np. domyślne marginesy czy czcionki.
- Klasy – gdy potrzebujemy wielokrotnie użyć tych samych stylów w różnych sekcjach kodu.
- ID – wyłącznie w przypadkach, w których stylowany element jest unikalny w dokumencie.
- Atrybuty – jeśli styl zależy od atrybutu, np. typ pola
input. - Kombinatory – gdy zależy nam na kontekście w drzewie DOM (relacji rodzic–dziecko lub rodzeństwo).
- Pseudoklasy i pseudoelementy – by nadać styl interaktywnym stanom elementów (np. najazd kursorem) lub wstawić dodatkową zawartość (np.
::before,::after).
Źródła:
Jak działa kaskadowość (cascade) i specyficzność (specificity) w CSS?
Kaskadowość to mechanizm nakładania stylów z różnych arkuszy (i różnych miejsc w kodzie) na element. Im dalej w drzewie, tym styl jest bardziej szczegółowy. W przypadku konfliktu, styl zdefiniowany “niżej” (np. w pliku importowanym na końcu) ma wyższy priorytet, o ile specyficzność i ważność reguł nie narzucają innych zasad. Specyficzność określa, która reguła ma większą moc w przypadku konfliktu:
- Najniższa waga: selektor tagu (np.
div) - Wyższa waga: selektor klasy (np.
.klasa) - Jeszcze wyższa waga: selektor ID (np.
#id-elementu) - Najwyższa waga: reguły
!importantoraz style wbudowane (atrybutstyle="")
Przykładowo, jeśli mamy konflikt między #footer p a .main p, zwycięży #footer p ze względu na wyższą specyficzność wynikającą z selektora ID.
Źródła:
- MDN Web Docs: Kaskadowość i specyficzność (PL)
- Polska dokumentacja CSS (NaStykuKodu) (jeśli dany rozdział o specyficzności jest dostępny)
Do czego służą pseudoklasy i pseudoelementy? Podaj przykłady.
- Pseudoklasy (np.
:hover,:active,:focus,:first-child) służą do stylowania elementów w określonych stanach (np. po najechaniu myszką). Również umożliwiają dopasowanie elementu na podstawie jego otoczenia w drzewie DOM (np. pierwszy element dziecka).
a:hover {
color: red;
}
- Pseudoelementy (np.
::before,::after,::first-line,::selection) służą do celowego generowania i stylowania wirtualnych elementów, które nie istnieją w strukturze HTML. Na przykład::beforepozwala dodać zawartość przed wybranym elementem, np. ikonę lub ozdobnik.
.button::before {
content: "→ ";
margin-right: 4px;
}
Źródła:
Jak zidentyfikować element na podstawie stanu jego rodzica lub rodzeństwa?
Można to zrobić za pomocą kombinatorów i pseudoklas:
- Selektor dziecka rodzica: na przykład
div.parent > p.child. Styl zostanie zastosowany tylko do elementówpbędących bezpośrednimi dziećmi.parent. - Selektor rodzeństwa (+): np.
.first + .second, gdzie.secondto następny element rodzeństwa po.first. - Selektor rodzeństwa (~): np.
.first ~ .siblings, gdzie.siblingsto wszystkie następne elementy rodzeństwa po.first. - Pseudoklasa stanu rodzica: nie ma uniwersalnego pseudoklasowego selektora, który styluje dziecko w zależności od stanu rodzica, jednak często można osiągnąć podobny efekt poprzez stylowanie właściwości potomka w ramach stanu rodzica (np. togglowany stan w JavaScript lub popularne biblioteki CSS-in-JS, czy React–JSX). Natomiast w stricte czystym CSS można korzystać z kombinatorów oraz reguły
:has()(wspieranej w najnowszych przeglądarkach), np..parent:has(.active) .child { ... }.
Źródła:
Czym różni się selektor > (child) od (descendant)?
- Selektor
>(child) dopasowuje wyłącznie bezpośrednie dzieci wskazanego rodzica.
.container > p {
/* Styl dotyczy TYLKO bezpośrednich dziecior */
}
- Selektor spacji " " (descendant) dopasowuje wszystkich potomków (na dowolnym poziomie zagnieżdżenia).
.container p {
/* Styl dotyczy wszystkich potomków typu <p> wewnątrz .container */
}
Źródła:
- MDN Web Docs: Child combinator (>) (PL)
- MDN Web Docs: Descendant combinator (PL)
Układ i pozycjonowanie
Jakie są tryby pozycjonowania elementów (static, relative, absolute, fixed, sticky)?
- static – domyślne pozycjonowanie elementów, które nie jest w żaden sposób modyfikowane. Elementy pojawiają się w kolejności przepływu dokumentu (tzw. flow).
- relative – element jest pozycjonowany względnie względem swojego pierwotnego położenia w normalnym przepływie. Przesunięcia za pomocą właściwości
top,left,rightczybottomodnoszą się do oryginalnej pozycji elementu. - absolute – element jest usuwany z normalnego przepływu i pozycjonowany względem najbliższego przodka, który ma zdefiniowaną pozycję inną niż
static. Brak takiego przodka oznacza pozycjonowanie względem okna przeglądarki. - fixed – element jest pozycjonowany względem okna przeglądarki, co powoduje, że pozostaje w niezmienionym położeniu nawet podczas przewijania strony.
- sticky – łączy cechy
relativeifixed. Element zachowuje się jakrelativedo momentu, aż osiągnie określony próg przewijania, po czym przykleja się do krawędzi okna.
Polecane źródła:
Na czym polega działanie float i jakie są sposoby czyszczenia (clear) pływających elementów?
- float – właściwość pozwalająca wyłączyć element z normalnego przepływu dokumentu i przesunąć go do lewej (
float: left) lub prawej (float: right) krawędzi kontenera. Najczęściej była wykorzystywana do tworzenia layoutów w starszych wersjach stron. - Czyszczenie (clear) – zapobiega zawijaniu się elementów wokół pływających bloków.
- Dodanie elementu z właściwością clear (np. div z
clear: both) po pływających elementach. - Użycie techniki clearfix – dodanie pseudo-elementu
::afterz właściwościącontent: ""idisplay: block; clear: both;do rodzica elementów pływających.
- Dodanie elementu z właściwością clear (np. div z
Polecane źródła:
Jaka jest różnica między display: block, display: inline a display: inline-block?
- display: block – element zajmuje całą dostępną szerokość kontenera, zaczyna się od nowej linii i może mieć zdefiniowane marginesy oraz wymiary wysokości i szerokości.
- display: inline – element zajmuje tylko tyle miejsca, ile potrzebuje jego treść (nie przenosi się do nowej linii). Nie można bezpośrednio ustawiać szerokości i wysokości (poza niektórymi wyjątkami, np.
inline-block+box-sizing). - display: inline-block – element zachowuje się w linii, podobnie jak
inline, ale można mu ustawiać szerokość, wysokość i marginesy pionowe.
Polecane źródła:
Czym różni się width: auto od width: 100%?
- width: auto – szerokość elementu jest wyliczana automatycznie przez przeglądarkę na podstawie zawartości i reguł zewnętrznych (np. margin, padding, inne style).
- width: 100% – element wypełnia całą dostępną szerokość kontenera nadrzędnego (oczywiście z uwzględnieniem box modelu, czyli marginesów, obramowań itd.).
Polecane źródła:
W jaki sposób wycentrować element w poziomie i w pionie z wykorzystaniem nowoczesnych podejść (np. Flexbox, CSS Grid)?
Flexbox
.container {
display: flex;
justify-content: center; /* wyrównanie w poziomie */
align-items: center; /* wyrównanie w pionie */
height: 100vh; /* przykład pełnego ekranu */
}
CSS Grid
.container {
display: grid;
place-items: center; /* wyrównanie w pionie i poziomie */
height: 100vh;
}
Obydwa podejścia są dużo wygodniejsze i bardziej elastyczne od starszych technik (np. margin: 0 auto razem z inline-block lub manipulacje przy użyciu position i przeliczeń transform).
Polecane źródła:
Jakie są główne koncepcje i właściwości Flexboxa?
- Pojęcie osi głównej (main axis) i osi poprzecznej (cross axis) –
flex-directionpozwala ustawić kierunek układu (np. wiersz lub kolumny). - Justify-content, align-items, align-content – umożliwiają kontrolę rozmieszczenia elementów i odstępów na osi głównej i poprzecznej.
- Flex-wrap – decyduje, czy elementy mogą się zawijać w kolejne wiersze/kolumny.
- Order – pozwala zmieniać kolejność elementów bez modyfikowania HTML.
- Flex-grow, flex-shrink, flex-basis – kontrolują wzrost, kurczenie i bazowy rozmiar elementów.
Polecane źródła:
Czym się różni CSS Grid od Flexboxa i w jakich sytuacjach każdy z nich sprawdza się lepiej?
- CSS Grid – przeznaczony do tworzenia dwuwymiarowych układów (zarówno wiersze, jak i kolumny). Jest szczególnie przydatny przy tworzeniu kompleksowych struktur layoutu, gdzie zależy nam na rozbudowanej siatce i precyzyjnym zdefiniowaniu obszarów.
- Flexbox – najlepiej sprawdza się w jednowymiarowych układach (szczególnie rozmieszczenie elementów w jednym wierszu lub kolumnie). Nadaje się znakomicie do prostych i elastycznych układów, list czy pasków nawigacji.
Polecane źródła:
- MDN: Różnice między CSS Grid i Flexbox (po angielsku)
- CSS-Tricks: A Complete Guide to Flexbox (angielski)
- CSS-Tricks: A Complete Guide to Grid (angielski)
Dodatkowe materiały w języku polskim
Projektowanie responsywne
Czym są media queries i jak się je stosuje, aby tworzyć responsywne projekty?
Media queries to funkcjonalność w CSS, która pozwala na określenie reguł stylów w zależności od cech urządzenia (np. szerokości ekranu czy orientacji). Dzięki temu można dostosować układ elementów strony, kolory czy rozmiary czcionek do różnych rozdzielczości i urządzeń.
Stosowanie media queries polega na definiowaniu bloków kodu w pliku CSS z użyciem dyrektywy @media. Przykładowo:
@media (max-width: 768px) {
.container {
width: 100%;
padding: 10px;
}
}
Powyższy przykład sprawi, że na ekranach o szerokości do 768px element .container będzie miał szerokość 100% i wewnętrzne wcięcie 10px.
Polecane źródła:
Jak można tworzyć responsywną typografię?
Responsywna typografia polega na skalowaniu rozmiaru i odstępów w tekście w zależności od wielkości ekranu, tak aby treść pozostała czytelna na każdym urządzeniu. Można to osiągnąć m.in. poprzez:
- Używanie jednostek elastycznych (np.
em,rem,vw,vh) – Pozwala to na skalowanie czcionki w zależności od wymiarów rodzica lub okna przeglądarki. - Mechanizm
clamp()w CSS – Umożliwia określenie minimalnego, preferowanego i maksymalnego rozmiaru czcionki, np.:
h1 {
font-size: clamp(1.5rem, 5vw, 3rem);
}
- Media queries – Definiowanie różnych rozmiarów czcionek w zależności od szerokości ekranu.
Polecane źródła:
Odpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziOdpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziOdpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziZaawansowane selektory i techniki
Odpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedzi:nth-child, :nth-of-type i pokrewnych?
Odpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedzi::before a ::after?
Odpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziclip-path, border-radius)?
Odpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziOdpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziOdpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziPreprocesory, metodologie i architektura
Odpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziOdpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziOdpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziOdpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziWydajność i optymalizacja
Odpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziOdpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziOdpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziOdpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziOdpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziKompatybilność z przeglądarkami i narzędzia
Odpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedzi-webkit-, -moz-)?
Odpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziOdpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziOdpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziCSS we współczesnym ekosystemie front-end
Odpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziOdpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziOdpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziOdpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziZaawansowane funkcje i zmienne
Odpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedzicalc() i kiedy warto z niej skorzystać?
Odpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziOdpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziaspect-ratio, scroll-snap, subgrid)?
Odpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziRozwiązywanie problemów i wzorce projektowe
Odpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziOdpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziOdpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziOdpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziNowoczesne funkcje CSS (2023-2025)
:has() i dlaczego nazywany jest „selektorem rodzica"?
Odpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziOdpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziOdpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziOdpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedzi:is() i :where() i jak wpływają na specyficzność?
Odpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziOdpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedziOdpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedzicolor-mix() i nowoczesnych przestrzeni kolorów (oklch, lab)?
Odpowiedź dostępna w pełnej wersji. Odblokuj 42 pozostałych odpowiedzi i ucz się z pełnego zestawu.
Odblokuj odpowiedzi