# Pytania z CSS Odpowiedzi do [Front-end Job Interview Questions - CSS Questions](https://github.com/h5bp/Front-end-Developer-Interview-Questions/blob/master/src/questions/css-questions.md). Pull requesty mile widziane, jeśli masz sugestie i poprawki! - [Czym jest specyficzność selektora CSS i jak działa?](#czym-jest-specyficzność-selektora-css-i-jak-działa) - [Jaka jest różnica pomiędzy CSS "resetting" oraz "normalizing"? Które wybrałbyś, i dlaczego?](#jaka-jest-różnica-pomiędzy-css-resetting-oraz-normalizing-które-wybrałbyś-i-dlaczego) - [Opisz `float`y i jak one działają.](#opisz-floaty-i-jak-one-działają) - [Opisz `z-index` i jak powstaje stacking context.](#opisz-z-index-i-jak-powstaje-stacking-context) - [Opisz Block Formatting Context (BFC) i jak działa.](#opisz-block-formatting-context-bfc-i-jak-działa) - [Jakie są różne techniki czyszczenia i które są odpowiednie w jakim kontekście?](#jakie-są-różne-techniki-czyszczenia-i-które-są-odpowiednie-w-jakim-kontekście) - [Wyjaśnij CSS sprites, i jak zaimplementujesz je na stronie lub witrynie.](#wyjaśnij-css-sprites-i-jak-zaimplementujesz-je-na-stronie-lub-witrynie) - [Jak podchodziłbyś do rozwiązywania problemów związanych ze stylem specyficznym dla przeglądarki?](#jak-podchodziłbyś-do-rozwiązywania-problemów-związanych-ze-stylem-specyficznym-dla-przeglądarki) - [Jak wyświetlasz swoje strony w przeglądarkach z ograniczeniami funkcji? Jakich technik/procesów używasz?](#jak-wyświetlasz-swoje-strony-w-przeglądarkach-z-ograniczeniami-funkcji-jakich-technikprocesów-używasz) - [Jakie są różne sposoby wizualnego ukrywania treści (i udostępniania jej tylko dla czytników ekranu)?](#jakie-są-różne-sposoby-wizualnego-ukrywania-treści-i-udostępniania-jej-tylko-dla-czytników-ekranu) - [Czy kiedykolwiek korzystałeś z systemu siatki (grid system), a jeśli tak, to co preferujesz?](#czy-kiedykolwiek-korzystałeś-z-systemu-siatki-grid-system-a-jeśli-tak-to-co-preferujesz) - [Czy używałeś lub implementowałeś media queries lub mobile-specific layouts/CSS?](#czy-używałeś-lub-implementowałeś-media-queries-lub-mobile-specific-layoutsCSS) - [Czy znasz stylizację SVG?](#czy-znasz-stylizację-cvg) - [Czy możesz podać przykład właściwości @media innej niż screen?](#czy-możesz-podać-przykład-właściwości-media-innej-niż-screen) - [Jakie są "tricki" do pisania wydajnego CSS?](#jakie-są-tricki-do-pisania-wydajnego-css) - [Jakie są zalety/wady korzystania z preprocesorów CSS?](#jakie-są-zaletywady-korzystania-z-preprocesorów-css) - [Opisz, co lubisz, a czego nie w preprocesorach CSS, z których korzystałeś.](#opisz-co-lubisz-a-czego-nie-w-preprocesorach-css-z-których-korzystałeś) - [Jak zaimplementowałbyś kompozycję do projektowania stron internetowych, która wykorzystuje niestandardowe czcionki?](#jak-zaimplementowałbyś-kompozycję-do-projektowania-stron-internetowych-która-wykorzystuje-niestandardowe-czcionki) - [Wyjaśnij, w jaki sposób przeglądarka określa, które elementy pasują do selektora CSS.](#wyjaśnij-w-jaki-sposób-przeglądarka-określa-które-elementy-pasują-do-selektora-css) - [Opisz pseudoelementy i omów, do czego służą.](#opisz-pseudoelementy-i-omów-do-czego-służą) - [Wyjaśnij swoje zrozumienie box model i sposób, w jaki chcesz, aby przeglądarka w CSS renderowała układ w różnych modelach pudełkowych.](#wyjaśnij-swoje-zrozumienie-box-model-i-sposób-w-jaki-chcesz-aby-przeglądarka-w-css-renderowała-układ-w-różnych-modelach-pudełkowych) - [Co robi `* { box-sizing: border-box; }`? Jakie są tego zalety?](#co-robi---box-sizing-border-box--jakie-są-tego-zalety) - [Czym jest właściwość `display` w CSS i czy możesz podać kilka przykładów jej użycia?](#czym-jest-właściwość-display-w-css-i-czy-możesz-podać-kilka-przykładów-jej-użycia) - [Jaka jest różnica pomiędzy `inline`, a `inline-block`?](#jaka-jest-różnica-pomiędzy-inline-a-inline-block) - [Jaka jest różnica między pozycjonowaniem `relative`, `fixed`, `absolute` i `static` elementu?](#jaka-jest-różnica-między-pozycjonowaniem-relative-fixed-absolute-i-static-elementu) - [Z jakich istniejących frameworków CSS korzystałeś lokalnie lub na produkcji? Jak byś je zmienił/ulepszył?](#z-jakich-istniejących-frameworków-css-korzystałeś-lokalnie-lub-na-produkcji-jak-byś-je-zmieniłulepszył) - [Czy robiłeś coś w nowej specyfikacji CSS Flexbox lub Grid?](#czy-robiłeś-coś-w-nowej-specyfikacji-css-flexbox-lub-grid) - [Czy potrafisz wyjaśnić różnicę między kodowaniem strony internetowej, aby była responsywna, a używaniem mobile-first strategy?](#czy-potrafisz-wyjaśnić-różnicę-między-kodowaniem-strony-internetowej-aby-była-responsywna-a-używaniem-mobile-first-strategy) - [Czym różni się projektowanie responsywne od projektowania adaptacyjnego?](#czym-różni-się-projektowanie-responsywne-od-projektowania-adaptacyjnego) - [Czy kiedykolwiek pracowałeś z grafiką Retina? Jeśli tak, kiedy i jakich technik użyłeś?](#czy-kiedykolwiek-pracowałeś-z-grafiką-retina-jeśli-tak-kiedy-i-jakich-technik-użyłeś) - [Czy jest jakiś powód, dla którego chciałbyś użyć `translate ()` zamiast pozycjonowania `absolute` lub odwrotnie? I dlaczego?](#czy-jest-jakiś-powód-dla-którego-chciałbyś-użyć-translate-zamiast-pozycjonowania-absolute-lub-odwrotnie-i-dlaczego) ### Czym jest specyficzność selektora CSS i jak działa? Przeglądarka określa, jakie style mają być wyświetlane w elemencie, w zależności od specyfiki reguł CSS. Zakładamy, że przeglądarka już określiła reguły, które pasują do określonego elementu. Wśród reguł dopasowania, specyfika, cztery wartości oddzielone przecinkami, `a, b, c, d` są obliczane dla każdej reguły na podstawie: 1. `a` określa, czy stosowane są style wbudowane. Jeśli deklaracja właściwości jest stylem wbudowanym w elemencie, `a` jest 1, w przeciwnym razie 0. 2. `b` jest numerem ID selektorów. 3. `c` to liczba selektorów klas, atrybutów i pseudoklas. 4. `d` to liczba znaczników i selektorów pseudoelementów. Wynikająca z tego specyficzność nie jest wynikiem, ale macierzą wartości, które można porównać kolumna po kolumnie. Porównując selektory w celu ustalenia, która ma najwyższą swoistość, spójrz od lewej do prawej i porównaj najwyższą wartość w każdej kolumnie. Tak więc wartość w kolumnie `b` zastąpi wartości w kolumnach `c` i `d`, bez względu na to, jakie mogą być. Jako taka, specyfika `0,1,0,0` byłaby większa niż jedno z `0,0,10,10`. W przypadkach o jednakowej specyficzności: najnowsza reguła się liczy. Jeśli dwukrotnie zapisałeś tę samą regułę w arkuszu stylów (niezależnie od wewnętrznego lub zewnętrznego), wówczas dolna reguła w arkuszu stylów jest bliżej elementu, który ma być stylizowany, jest uważana za bardziej szczegółową i dlatego zostanie zastosowana. Pisałbym reguły CSS o niskiej specyficzności, aby w razie potrzeby można je było łatwo zastąpić. Pisząc kod biblioteki komponentu interfejsu użytkownika CSS, ważne jest, aby miały niską specyficzność, aby użytkownicy biblioteki mogli je zastąpić bez stosowania zbyt skomplikowanych reguł CSS tylko ze względu na zwiększenie specyficzności lub uciekanie się do `!important`. ###### Bibliografia - https://www.smashingmagazine.com/2007/07/css-specificity-things-you-should-know/ - https://www.sitepoint.com/web-foundations/specificity/ [[↑] Powrót na górę](#pytania-z-css) ### Jaka jest różnica pomiędzy CSS "resetting" oraz "normalizing"? Które wybrałbyś, i dlaczego? - **Resetting** - Resetowanie ma na celu usunięcie wszystkich domyślnych stylów przeglądarki z elementów. Na przykład `margin`, `padding`, `font-size` wszystkich elementów są resetowane, aby były takie same. Będziesz musiał zmienić styl dla wspólnych elementów typograficznych. - **Normalizing** - Normalizacja zachowuje użyteczne style domyślne zamiast "unstyling" wszystkiego. Poprawia również błędy w typowych zależnościach przeglądarki. Zdecydowałbym się zresetować, gdy mam bardzo niestandardowy lub niekonwencjonalny projekt strony, tak że muszę zrobić dużo własnej stylizacji i nie muszę zachowywać żadnej domyślnej stylizacji. ###### Bibliografia - https://stackoverflow.com/questions/6887336/what-is-the-difference-between-normalize-css-and-reset-css [[↑] Powrót na górę](#pytania-z-css) ### Opisz `float`y i jak one działają. Float to właściwość pozycjonowania CSS. Elementy pływające (floated elements) pozostają częścią przepływu strony i będą wpływać na położenie innych elementów (np. tekst będzie płynął wokół elementów pływających), w przeciwieństwie do elementów `position: absolute`, które są usuwane z przepływu strony. Właściwość `clear` CSS może być użyta do pozycjonowania poniżej elementów pływających `left`/`right`/`both`. Jeśli element nadrzędny zawiera wyłącznie elementy pływające, jego wysokość zostanie zwinięta do zera. Można to naprawić, usuwając float za pływającymi elementami w kontenerze, ale przed zamknięciem kontenera. Hack `.clearfix` używa sprytnego CSS [pseudo selektora](#describe-pseudo-elements-and-discuss-what-they-are-used-for) (`:after`) do czyszczenia float'ów. Zamiast ustawiać przepełnienie dla elementu nadrzędnego, stosuje się do niego dodatkową klasę `clearfix`. Następnie stosuje ten CSS: ```css .clearfix:after { content: ' '; visibility: hidden; display: block; height: 0; clear: both; } ``` Alternatywnie, nadaj właściwość `overflow: auto` lub `overflow: hidden` elementowi nadrzędnemu, który ustanowi nowy kontekst formatowania bloku wewnątrz elementów podrzędnych i rozszerzy się, aby objąć jego elementy podrzędne. ###### Bibliografia - https://css-tricks.com/all-about-floats/ [[↑] Powrót na górę](#pytania-z-css) ### Opisz `z-index` i jak powstaje stacking context. Właściwość `z-index` w CSS kontroluje pionową kolejność układania elementów, które się nakładają. `z-index` wpływa tylko na elementy, które mają wartość `position`, która nie jest `static`. Bez żadnej wartości `z-index`, elementy układają się w kolejności, w jakiej występują w DOM (najniższy na dole na tym samym poziomie hierarchii pojawia się na górze). Elementy z pozycjonowaniem niestatycznym (i ich potomnymi) zawsze będą pojawiać się na elementach z domyślnym pozycjonowaniem statycznym, niezależnie od hierarchii HTML. Kontekst stosu to element zawierający zestaw warstw. W lokalnym kontekście stosowym wartości `z-index` jego elementów podrzędnych są ustawione względem tego elementu, a nie do katalogu głównego dokumentu. Warstwy poza tym kontekstem - np. sibling elements lokalnego kontekstu stosu - nie mogą znajdować się między warstwami w tym kontekście. Jeśli element B znajduje się na szczycie elementu A, element potomny elementu A, elementu C, nigdy nie może być wyższy niż element B, nawet jeśli element C ma wyższy `z-index`, niż element B. Każdy kontekst stosu jest samowystarczalny - po ułożeniu zawartości elementu cały element jest rozpatrywany w kolejności stosu nadrzędnego kontekstu stosu. Kilka właściwości CSS wyzwala nowy kontekst stosu, taki jak `opacity` mniejszy niż 1, `filter` który nie jest `none`, oraz `transform` który nie jest `none`. _Uwaga: To, co dokładnie kwalifikuje element do utworzenia kontekstu stosu, znajduje się w tym długim zestawie [reguł](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context#The_stacking_context)._ ###### Bibliografia - https://css-tricks.com/almanac/properties/z/z-index/ - https://philipwalton.com/articles/what-no-one-told-you-about-z-index/ - https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context [[↑] Powrót na górę](#pytania-z-css) ### Opisz Block Formatting Context (BFC) i jak działa. Block Formatting Context (BFC) jest częścią wizualnego renderowania CSS strony internetowej, na której układane są pola bloków. Float'y, elementy absolutnie pozycjonowane, `inline-blocks`, `table-cells`, `table-caption`, i elementy z `overflow` inne niż `visible` (z wyjątkiem sytuacji, gdy ta wartość została propagowana do viewport), ustal nowe konteksty formatowania bloków. Umiejętność ustanowienia kontekstu formatowania bloku jest ważna, ponieważ bez tego pole zawierające nie będzie [zawierało floated children](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context#Make_float_content_and_alongside_content_the_same_height). Jest to podobne do zwijających się marginesów, ale bardziej podstępne, ponieważ całe boxes zapadają się w dziwny sposób. BFC to box HTML, który spełnia co najmniej jeden z następujących warunków: - Wartość `float` nie jest `none`. - Wartość `position` nie jest `static` ani `relative`. - Wartość `display` jest `table-cell`, `table-caption`, `inline-block`, `flex`, lub `inline-flex`. - Wartość `overflow` nie jest `visible`. W BFC lewa zewnętrzna krawędź każdego box'a dotyka lewej krawędzi bloku zawierającego (w przypadku formatowania od prawej do lewej dotykają się prawej krawędzi). Pionowe marginesy między sąsiadującymi polami na poziomie bloku w zwinięciu BFC. Przeczytaj więcej na temat [zawijanych marginesów](https://www.sitepoint.com/web-foundations/collapsing-margins/). ###### Bibliografia - https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context - https://www.sitepoint.com/understanding-block-formatting-contexts-in-css/ [[↑] Powrót na górę](#pytania-z-css) ### Jakie są różne techniki czyszczenia i które są odpowiednie w jakim kontekście? - Pusta metoda `div` - `
`. - Metoda clearfix - nawiązując do klasy powyżej `.clearfix`. - `overflow: auto` lub metoda `overflow: hidden` - Rodzic ustanowi nowy kontekst formatowania bloku i rozszerzy się, aby zawierał elementy podrzędne. W dużych projektach napisałbym klasę użyteczności `.clearfix` i używał ich w miejscach, w których tego potrzebuję. `overflow: hidden` może podcinać children, jeśli children jest wyższy od parent i nie jest zbyt idealny. [[↑] Powrót na górę](#pytania-z-css) ### Wyjaśnij CSS sprites, i jak zaimplementujesz je na stronie lub witrynie. CSS sprites łączy wiele obrazów w jeden większy obraz. Jest to powszechnie stosowana technika ikon (Gmail ją używa). Jak ją zaimplementować: 1. Użyj generatora sprite, który pakuje wiele obrazów w jeden i generuje odpowiedni CSS do tego. 1. Każdy obraz miałby odpowiednią klasę CSS `background-image`, `background-position` i `background-size` - zdefiniowane właściwości. 1. Aby użyć tego obrazu, dodaj odpowiednią klasę do swojego elementu. **Korzyści:** - Zmniejszy liczbę żądań HTTP dla wielu obrazów (wymagane jest tylko jedno pojedyncze żądanie na spritesheet). Jednak w przypadku HTTP2 ładowanie wielu obrazów nie stanowi już większego problemu. - Pobieraj z wyprzedzeniem zasoby, które nie zostaną pobrane, dopóki nie będą potrzebne, takie jak obrazy, które pojawiają się tylko w pseudo-states `: hover`. Nie widać migania. ###### Bibliografia - https://css-tricks.com/css-sprites/ [[↑] Powrót na górę](#pytania-z-css) ### Jak podchodziłbyś do rozwiązywania problemów związanych ze stylem specyficznym dla przeglądarki? - Po zidentyfikowaniu problemu i sprawiającej kłopoty przeglądarki użyj osobnego arkusza stylów, który ładuje się tylko wtedy, gdy używana jest konkretna przeglądarka. Ta technika wymaga jednak renderowania po stronie serwera. - Używaj bibliotek takich jak Bootstrap, które już obsługują te problemy ze stylem. - Użyj `autoprefixer`, aby automatycznie dodać prefiksy dostawcy do swojego kodu. - Użyj Reset CSS lub Normalize.css. - Jeśli korzystasz z Postcss (lub podobnej biblioteki do transpilowania), mogą istnieć wtyczki, które pozwolą ci wybrać nowoczesną składnię CSS (a nawet propozycje W3C), które przekształcą te sekcje twojego kodu w odpowiedni bezpieczny kod, który będzie pracować w celach, dla których korzystałeś. [[↑] Powrót na górę](#pytania-z-css) ### Jak wyświetlasz swoje strony w przeglądarkach z ograniczeniami funkcji? Jakich technik/procesów używasz? - Wdzięczna degradacja (graceful degradation) - praktyka polegająca na tworzeniu aplikacji dla nowoczesnych przeglądarek przy jednoczesnym zapewnieniu jej funkcjonalności w starszych przeglądarkach. - Progresywne ulepszenie (progressive enhancement) - Praktyka budowania aplikacji dla podstawowego poziomu doświadczenia użytkownika, ale dodawanie ulepszeń funkcjonalnych, gdy przeglądarka ją obsługuje. - Używanie [caniuse.com](https://caniuse.com/) aby sprawdzić obsługę funkcji. - Autoprefixer do automatycznego wstawiania prefiksu dostawcy. - Wykrywanie funkcji za pomocą [Modernizr](https://modernizr.com/). - Używanie zapytań CSS Feature [@support](https://developer.mozilla.org/en-US/docs/Web/CSS/@supports) [[↑] Powrót na górę](#pytania-z-css) ### Jakie są różne sposoby wizualnego ukrywania treści (i udostępniania jej tylko dla czytników ekranu)? Te techniki są związane z dostępnością (a11y). - `width: 0; height: 0`. Spraw, aby element nie zajmował w ogóle miejsca na ekranie, co powoduje, że nie jest pokazywany. - `position: absolute; left: -99999px`. Ustaw go poza ekranem. - `text-indent: -9999px`. Działa to tylko w przypadku tekstu w elementach `block`. - Metadane. Na przykład za pomocą Schema.org, RDF i JSON-LD. - WAI-ARIA. Specyfikacja techniczna W3C określająca sposób zwiększenia dostępności stron internetowych. Nawet jeśli WAI-ARIA jest idealnym rozwiązaniem, wybrałbym podejście pozycjonowania `absolute`, ponieważ ma najmniej zastrzeżeń, działa na większość elementów i jest łatwą techniką. ###### Bibliografia - https://www.w3.org/TR/wai-aria-1.1/ - https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA - http://a11yproject.com/ [[↑] Powrót na górę](#pytania-z-css) ### Czy kiedykolwiek korzystałeś z systemu siatki (grid system), a jeśli tak, to co preferujesz? Przed tym jak Flex stał się popularny (około roku 2014), oparty na `float` grid system był najbardziej niezawodny, ponieważ nadal ma największą obsługę przeglądarek wśród alternatywnych istniejących systemów (flex, grid). Bootstrap korzystał z podejścia `float` do chwili, gdy Bootstrap 4, przełączył się na podejście oparte na `flex`. W chwili pisania (2020r.), `flex` jest zalecanym podejściem do budowania systemów gridowych i ma [przyzwoitą obsługę przeglądarki](https://caniuse.com/#search=flex). Dla odważnych, mogą zajrzeć w [CSS Grid Layout](https://css-tricks.com/snippets/css/complete-guide-grid/), który używa nowej błyszczącej właściwości `grid`; jest nawet lepszy niż `flex` do budowania układów siatki i będzie de facto sposobem na zrobienie tego w przyszłości. [[↑] Powrót na górę](#pytania-z-css) ### Czy używałeś lub implementowałeś media queries lub mobile-specific layouts/CSS? Tak. Przykładem może być przekształcenie nawigacji stacked pill w nawigację fixed-bottom tab poza pewnym breakpointem. [[↑] Powrót na górę](#pytania-z-css) ### Czy znasz stylizację SVG? Tak, istnieje kilka sposobów pokolorowania kształtów (w tym określenie atrybutów obiektu) za pomocą wbudowanego CSS, osadzonej sekcji CSS lub zewnętrznego pliku CSS. Większość plików SVG, które można znaleźć w Internecie, wykorzystuje wbudowany CSS, ale z każdym typem wiążą się wady i zalety. Podstawowe kolorowanie można wykonać, ustawiając dwa atrybuty w węźle: `fill` i `stroke`. `fill` ustawia kolor wewnątrz obiektu i `stroke` ustawia kolor linii rysowanej wokół obiektu. Możesz używać tych samych schematów nazewnictwa kolorów CSS, których używasz w HTML, niezależnie od tego, czy są to nazwy kolorów (to znaczy `red`), wartości RGB (tzn. `rgb(255,0,0)`), wartości Hex, wartości RGBA, etc. ```html`. Dla konkretnego ``, jak tylko znajdzie ` `, wie że `` dopasowane i może zatrzymać dopasowanie.
###### Bibliografia
- https://stackoverflow.com/questions/5797014/why-do-browsers-match-css-selectors-from-right-to-left
[[↑] Powrót na górę](#pytania-z-css)
### Opisz pseudoelementy i omów, do czego służą.
Pseudoelement CSS jest słowem kluczowym dodawanym do selektora, który pozwala stylizować określoną część wybranych elementów. Mogą być używane do dekoracji (`:first-line`, `:first-letter`) lub dodawać elementy do znaczników (w połączeniu z `content: ...`) bez konieczności modyfikowania znaczników (`:before`, `:after`).
- `:first-line` i `:first-letter` może służyć do ozdabiania tekstu.
- Użycie `.clearfix` jak pokazano powyżej, aby dodać element zero-space z `clear: both`.
- Trójkątne strzałki w tooltips używają `:before` i `:after`. Zachęca do rozdzielenia rzeczy, ponieważ trójkąt jest uważany za część stylizacji, a nie DOM.
###### Bibliografia
- https://css-tricks.com/almanac/selectors/a/after-and-before/
[[↑] Powrót na górę](#pytania-z-css)
### Wyjaśnij swoje zrozumienie box model i sposób, w jaki chcesz, aby przeglądarka w CSS renderowała układ w różnych modelach pudełkowych.
Model pola CSS opisuje prostokątne pola, które są generowane dla elementów w drzewie dokumentu i rozmieszczone zgodnie z wizualnym modelem formatowania. Każdy box ma pole zawartości (np. text, an image, etc.) i opcjonalne otoczenie polami `padding`, `border`, i `margin`.
Model pudełkowy CSS odpowiada za obliczenie:
- Ile miejsca zajmuje element bloku.
- Niezależnie od tego, czy granice i/lub marginesy nachodzą na siebie, czy się zawalają.
- Wymiary pudełka.
Model pudełkowy ma następujące zasady:
- Wymiary elementu bloku są obliczane przez `width`, `height`, `padding`, `border` i `margin`.
- Jeśli `height` nie jest określona, element blokowy będzie tak samo wysoki, jak zawarta w nim zawartość, plus `padding` (chyba że są to floaty, dla których patrz poniżej).
- Jeśli `width` nie jest określona, element blokowy non-floated rozszerzy się, aby dopasować się do szerokości jego rodzica minus `padding`.
- `height` elementu jest obliczany na podstawie zawartości `height`.
- `width` elementu jest obliczany na podstawie zawartości `width`.
- Domyślnie, `padding` i `border` nie są częścią `width` oraz `height` elementu.
###### Bibliografia
- https://www.smashingmagazine.com/2010/06/the-principles-of-cross-browser-css-coding/#understand-the-css-box-model
[[↑] Powrót na górę](#pytania-z-css)
### Co robi `* { box-sizing: border-box; }`? Jakie są tego zalety?
- Domyślnie, elementy mają `box-sizing: content-box` zastosowane, i uwzględniany jest tylko rozmiar contentu.
- `box-sizing: border-box` zmienia jak `width` i `height` elementów są liczone, `border` i `padding` są również uwzględniane w obliczeniach.
- `height` elementu jest teraz obliczany na podstawie zawartości `height` + pionowy `padding` + pionowa szerokość `border`.
- `width` elementu jest teraz obliczany na podstawie zawartości `width` + poziomy `padding` + pozioma szerokość `border`.
- Biorąc pod uwagę `padding` oraz `border` jako część naszego modelu pudełkowego lepiej współgra z tym, jak projektanci wyobrażają sobie treść w gridach.
###### Bibliografia
- https://www.paulirish.com/2012/box-sizing-border-box-ftw/
[[↑] Powrót na górę](#pytania-z-css)
### Czym jest właściwość `display` w CSS i czy możesz podać kilka przykładów jej użycia?
- `none`, `block`, `inline`, `inline-block`, `flex`, `grid`, `table`, `table-row`, `table-cell`, `list-item`.
| `display` | Description |
| :-- | :-- |
| `none` | Does not display an element (the elementv no longer affects the layout of the document). All child element are also no longer displayed. The document is rendered as if the element did not exist in the document tree |
| `block` | The element consumes the whole line in the block direction (which is usually horizontal) |
| `inline` | Elements can be laid out beside each other |
| `inline-block` | Similar to `inline`, but allows some `block` properties like setting `width` and `height` |
| `table` | Behaves like the `` element |
| `table-row` | Behaves like the `
` element |
| `table-cell` | Behaves like the ` ` element |
| `list-item` | Behaves like a `