CSS GRID & FLEXBOX
Łatwość tworzenia
responsywnych stron internetowych
Tomasz Kajtoch
O MNIE
Frontend Developer

w The Software House
Najpopularniejsze imię w firmie, Wow!
Mój koteł
O CZYM BĘDĘ MÓWIĆ?
DLACZEGO
TO TAKIE ISTOTNE?
BUDOWA STRON
INTERNETOWYCH W 2017
Floaty

i clear: both
display: inline-block
Frameworki i gridyTabelki
2017 JEST PRZEŁOMOWYM
ROKIEM DLA CSS
#1
FLEXBOX LAYOUT
FLEXBOX
JEST JEDNOWYMIAROWY
POZIOMO PIONOWO
ZALETY
- Wygodne użycie w responsywnych widokach

- Pozwala zmieniać kolejność elementów bez
wpływu na DOM

- Zmniejsza ilość kodu potrzebnego do
osiągnięcia pożądanego układu
WADY
"O nie! Muszę się nauczyć

tych wszystkich nowych właściwości :(("
Jego implementacja w niektórych

przeglądarkach jest niewydajna.

I'm looking at you, Internet Explorer
WSPARCIE PRZEGLĄDAREK
Edge
12+
07.2015
Firefox
28+
03.2014
Chrome
21+
06.2012
Safari
6.1+
10.2013
Opera
12.1+
11.2012
Android Browser
4.4+
12.2013
Internet Explorer
11+
10.2013
"Partial support in IE refers to supporting
an older version of the specification."
PODZIAŁ NA KONTENERY
I ELEMENTY
KONTENER FLEXBOX
display: flex
display: inline-flex
To ja przechowuję wszystkie elementy
FLEX-DIRECTION
flex-directon: row
1 2
flex-directon: row-reverse
2
flex-directon: column
1
2
flex-directon: column-reverse
112
Kierunek układania elementów wewnątrz kontenera.
A.k.a. R.I.P. floats
FLEX-WRAP
flex-wrap: wrap
1 2 3
4 5
Zezwól na złamanie ułożenia elementów,
gdy jest to konieczne
WYRÓWNANIE ELEMENTÓW
WEWNĄTRZ KONTENERA
justify-content: flex-start
1 2 3
WZDŁÓŻ GŁÓWNEJ OSI
justify-content: flex-end
1 2 3
WZDŁÓŻ GŁÓWNEJ OSI
justify-content: center
1 2 3
WZDŁÓŻ GŁÓWNEJ OSI
justify-content: space-between
1 2 3
WZDŁÓŻ GŁÓWNEJ OSI
justify-content: space-around
1 2 3
WZDŁÓŻ GŁÓWNEJ OSI
WZDŁÓŻ OSI POPRZECZNEJ
align-content: flex-start
WZDŁÓŻ OSI POPRZECZNEJ
align-content: flex-end
WZDŁÓŻ OSI POPRZECZNEJ
align-content: center
WZDŁÓŻ OSI POPRZECZNEJ
align-content: stretch
WZDŁÓŻ OSI POPRZECZNEJ
align-content: space-between
WZDŁÓŻ OSI POPRZECZNEJ
align-content: space-around
align-items: flex-start
1
2
3
UŁOŻENIE WZDŁÓŻ
OSI POPRZECZNEJ
align-items: flex-end
1
2
3
UŁOŻENIE WZDŁÓŻ
OSI POPRZECZNEJ
align-items: center
1 2 3
UŁOŻENIE WZDŁÓŻ
OSI POPRZECZNEJ
align-items: stretch
1 2 3
UŁOŻENIE WZDŁÓŻ
OSI POPRZECZNEJ
KOLEJNOŚĆ ELEMENTÓW
WEWNĄTRZ KONTENERA
order: <number>
<div class="items">
<div class="first"></div>
<div class="second"></div>
<div class="third"></div>
</div>
.first .second .third
.items { display: flex; }
.first { order: 2; }
.second { order: 1; }
.third { order: 3; }
.first.second .third
NADPISANIE DOMYŚLNEGO
UŁOŻENIA POJEDYNCZEGO
ELEMENTU W KONTENERZE
align-self: <flex-start|flex-end|center|
baseline|stretch>
align-items: flex-start;
align-self: center;
(nie ustawiony)
align-self: center
align-self: flex-end
DEMO
#2
CSS GRID LAYOUT
WSPARCIE PRZEGLĄDAREK
Edge
16+
it works...
Firefox
52+
03.2017
Chrome
57+
03.2017
Safari
10.1+
03.2017
Opera
44+
03.2017
Android Browser
56+
02.2017
Internet Explorer
11+
10.2013
"Partial support in IE refers to supporting
an older version of the specification."
CSS GRID JEST
DWUWYMIAROWY
NAZEWNICTWO ELEMENTÓW
W CSS GRID
1. CONTAINER
1. GRID LINE
21
1. GRID TRACK
1
2
3
1. GRID CELL
1. GRID AREA
1 2 3 4
2
KONTENER CSS GRID
display: <grid|inline-grid|subgrid>
GRID-TEMPLATE
grid-template-rows
grid-template-columns
GRID-TEMPLATE
grid-template-rows: 1fr 1fr
grid-template-columns: 1fr 1fr 1fr 1fr
GRID-TEMPLATE
grid-template-rows: repeat(2, 1fr)
grid-template-columns: repeat(4, 1fr)
PROBLEM:
NUMERY SĄ
NIECZYTELNE
ROZWIĄZANIE:
ASCII-ART!!1
heder heder heder
kontent kontent sajdbar
stopka stopka stopka
SERIO.
GRID-TEMPLATE-AREAS
grid-template-columns: repeat(3, 1fr);
grid-template-areas: "header header header"
"sidebar content content"
"sidebar footer footer";
Header Header Header
Sidebar Content Content
Sidebar Footer Footer
Header
Sidebar
Content
Footer
DEMO
GRID-GAP
grid-row-gap: <number>
grid-column-gap: <number>
JUSTIFY-ITEMS
justify-items: <start|end|center|stretch>
justify-items: start
JUSTIFY-ITEMS
justify-items: center
JUSTIFY-ITEMS
GRID-COLUMN
GRID-ROW
grid-column: <number>
grid-row: <number>
DEMO
ZAGRAJ
I NAUCZ SIĘ CSS GRID
cssgridgarden.com
PYTANIA?
DZIĘKUJĘ!

CSS Grid Layout & Flexbox. Łatwość tworzenia responsywnych stron internetowych