SlideShare a Scribd company logo
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Ę!

More Related Content

More from The Software House

Uszanowanko Podsumowanko
Uszanowanko PodsumowankoUszanowanko Podsumowanko
Uszanowanko Podsumowanko
The Software House
 
Jak efektywnie podejść do certyfikacji w AWS?
Jak efektywnie podejść do certyfikacji w AWS?Jak efektywnie podejść do certyfikacji w AWS?
Jak efektywnie podejść do certyfikacji w AWS?
The Software House
 
O co chodzi z tą dostępnością cyfrową?
O co chodzi z tą dostępnością cyfrową?O co chodzi z tą dostępnością cyfrową?
O co chodzi z tą dostępnością cyfrową?
The Software House
 
Chat tekstowy z użyciem Amazon Chime
Chat tekstowy z użyciem Amazon ChimeChat tekstowy z użyciem Amazon Chime
Chat tekstowy z użyciem Amazon Chime
The Software House
 
Migracje danych serverless
Migracje danych serverlessMigracje danych serverless
Migracje danych serverless
The Software House
 
Jak nie zwariować z architekturą Serverless?
Jak nie zwariować z architekturą Serverless?Jak nie zwariować z architekturą Serverless?
Jak nie zwariować z architekturą Serverless?
The Software House
 
Analiza semantyczna artykułów prasowych w 5 sprintów z użyciem AWS
Analiza semantyczna artykułów prasowych w 5 sprintów z użyciem AWSAnaliza semantyczna artykułów prasowych w 5 sprintów z użyciem AWS
Analiza semantyczna artykułów prasowych w 5 sprintów z użyciem AWS
The Software House
 
Feature flags na ratunek projektu w JavaScript
Feature flags na ratunek projektu w JavaScriptFeature flags na ratunek projektu w JavaScript
Feature flags na ratunek projektu w JavaScript
The Software House
 
Typowanie nominalne w TypeScript
Typowanie nominalne w TypeScriptTypowanie nominalne w TypeScript
Typowanie nominalne w TypeScript
The Software House
 
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQL
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQLAutomatyzacja tworzenia frontendu z wykorzystaniem GraphQL
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQL
The Software House
 
Serverless Compose vs hurtownia danych
Serverless Compose vs hurtownia danychServerless Compose vs hurtownia danych
Serverless Compose vs hurtownia danych
The Software House
 
Testy API: połączenie z bazą danych czy implementacja w pamięci
Testy API: połączenie z bazą danych czy implementacja w pamięciTesty API: połączenie z bazą danych czy implementacja w pamięci
Testy API: połączenie z bazą danych czy implementacja w pamięci
The Software House
 
Jak skutecznie read model. Case study
Jak skutecznie read model. Case studyJak skutecznie read model. Case study
Jak skutecznie read model. Case study
The Software House
 
Firestore czyli ognista baza od giganta z Doliny Krzemowej
Firestore czyli ognista baza od giganta z Doliny KrzemowejFirestore czyli ognista baza od giganta z Doliny Krzemowej
Firestore czyli ognista baza od giganta z Doliny Krzemowej
The Software House
 
Jak utrzymać stado Lambd w ryzach
Jak utrzymać stado Lambd w ryzachJak utrzymać stado Lambd w ryzach
Jak utrzymać stado Lambd w ryzach
The Software House
 
Jak poskromić AWS?
Jak poskromić AWS?Jak poskromić AWS?
Jak poskromić AWS?
The Software House
 
O łączeniu Storyblok i Next.js
O łączeniu Storyblok i Next.jsO łączeniu Storyblok i Next.js
O łączeniu Storyblok i Next.js
The Software House
 
Amazon Step Functions. Sposób na implementację procesów w chmurze
Amazon Step Functions. Sposób na implementację procesów w chmurzeAmazon Step Functions. Sposób na implementację procesów w chmurze
Amazon Step Functions. Sposób na implementację procesów w chmurze
The Software House
 
Od Figmy do gotowej aplikacji bez linijki kodu
Od Figmy do gotowej aplikacji bez linijki koduOd Figmy do gotowej aplikacji bez linijki kodu
Od Figmy do gotowej aplikacji bez linijki kodu
The Software House
 
Co QA może i czego nie powinien się bać?
Co QA może i czego nie powinien się bać?Co QA może i czego nie powinien się bać?
Co QA może i czego nie powinien się bać?
The Software House
 

More from The Software House (20)

Uszanowanko Podsumowanko
Uszanowanko PodsumowankoUszanowanko Podsumowanko
Uszanowanko Podsumowanko
 
Jak efektywnie podejść do certyfikacji w AWS?
Jak efektywnie podejść do certyfikacji w AWS?Jak efektywnie podejść do certyfikacji w AWS?
Jak efektywnie podejść do certyfikacji w AWS?
 
O co chodzi z tą dostępnością cyfrową?
O co chodzi z tą dostępnością cyfrową?O co chodzi z tą dostępnością cyfrową?
O co chodzi z tą dostępnością cyfrową?
 
Chat tekstowy z użyciem Amazon Chime
Chat tekstowy z użyciem Amazon ChimeChat tekstowy z użyciem Amazon Chime
Chat tekstowy z użyciem Amazon Chime
 
Migracje danych serverless
Migracje danych serverlessMigracje danych serverless
Migracje danych serverless
 
Jak nie zwariować z architekturą Serverless?
Jak nie zwariować z architekturą Serverless?Jak nie zwariować z architekturą Serverless?
Jak nie zwariować z architekturą Serverless?
 
Analiza semantyczna artykułów prasowych w 5 sprintów z użyciem AWS
Analiza semantyczna artykułów prasowych w 5 sprintów z użyciem AWSAnaliza semantyczna artykułów prasowych w 5 sprintów z użyciem AWS
Analiza semantyczna artykułów prasowych w 5 sprintów z użyciem AWS
 
Feature flags na ratunek projektu w JavaScript
Feature flags na ratunek projektu w JavaScriptFeature flags na ratunek projektu w JavaScript
Feature flags na ratunek projektu w JavaScript
 
Typowanie nominalne w TypeScript
Typowanie nominalne w TypeScriptTypowanie nominalne w TypeScript
Typowanie nominalne w TypeScript
 
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQL
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQLAutomatyzacja tworzenia frontendu z wykorzystaniem GraphQL
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQL
 
Serverless Compose vs hurtownia danych
Serverless Compose vs hurtownia danychServerless Compose vs hurtownia danych
Serverless Compose vs hurtownia danych
 
Testy API: połączenie z bazą danych czy implementacja w pamięci
Testy API: połączenie z bazą danych czy implementacja w pamięciTesty API: połączenie z bazą danych czy implementacja w pamięci
Testy API: połączenie z bazą danych czy implementacja w pamięci
 
Jak skutecznie read model. Case study
Jak skutecznie read model. Case studyJak skutecznie read model. Case study
Jak skutecznie read model. Case study
 
Firestore czyli ognista baza od giganta z Doliny Krzemowej
Firestore czyli ognista baza od giganta z Doliny KrzemowejFirestore czyli ognista baza od giganta z Doliny Krzemowej
Firestore czyli ognista baza od giganta z Doliny Krzemowej
 
Jak utrzymać stado Lambd w ryzach
Jak utrzymać stado Lambd w ryzachJak utrzymać stado Lambd w ryzach
Jak utrzymać stado Lambd w ryzach
 
Jak poskromić AWS?
Jak poskromić AWS?Jak poskromić AWS?
Jak poskromić AWS?
 
O łączeniu Storyblok i Next.js
O łączeniu Storyblok i Next.jsO łączeniu Storyblok i Next.js
O łączeniu Storyblok i Next.js
 
Amazon Step Functions. Sposób na implementację procesów w chmurze
Amazon Step Functions. Sposób na implementację procesów w chmurzeAmazon Step Functions. Sposób na implementację procesów w chmurze
Amazon Step Functions. Sposób na implementację procesów w chmurze
 
Od Figmy do gotowej aplikacji bez linijki kodu
Od Figmy do gotowej aplikacji bez linijki koduOd Figmy do gotowej aplikacji bez linijki kodu
Od Figmy do gotowej aplikacji bez linijki kodu
 
Co QA może i czego nie powinien się bać?
Co QA może i czego nie powinien się bać?Co QA może i czego nie powinien się bać?
Co QA może i czego nie powinien się bać?
 

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