SlideShare uma empresa Scribd logo
1 de 79
Baixar para ler offline
CSS {GRID} LAYOUT
It’s Evolution Baby
Quem?
•Front-end @ Chaordic
•Org. Front in Floripa
•Fundador do FloripaJS
•OSS & Community Lover
•Fã do Pearl Jam m/
diogomoretti
diogomoretti_
Afinal, o que é CSS Layout?
CSS Layout é o uso de CSS (!) para se
estruturar uma página web. O termo
apareceu com o CSS 1.0 e 2.1 para substituir
as famosas tabelas na criação de layouts.
Hoje é muito usado pelo W3C para nomear
novas especificações.
Não vamos
falar de
Roadmap
Table
Box Model/Tableless/Grids
Flexbox
Grid Layout
TABLE
História das tabelas
•Surgiu em 1995 com o HTML 3.0
•Ganhou força (ou seja, mais atributos)
juntamente com o HTML 3.2
•Ao contrário do que todo mundo pensa, as
tabelas nasceram para tabular dados e
TAMBÉM PARA CRIAR LAYOUTS!
https://www.w3.org/TR/REC-html32#table
Problemas das 'tables'
•Estilo e marcação misturados (cellpadding,
cellspacing, valign, colspan, rowspan…)
•Render não-incremental
•Acessibilidade
•Código de difícil manutenção e leitura
https://en.wikipedia.org/wiki/Incremental_rendering
BOX MODEL
História do Box Model
•Surgiu em 1996 com CSS 1.0
•Conceito do CSS (estilo | marcação)
•Aparição de elementos de bloco (<div>, <h1>,
<p>)
•Propriedades como margin, padding, width,
height, display, float, border, background…
Box Model – CSS 2.1
•Foco na estruturação de layouts
•Propriedades surgiram como position, max-* e
min-*
•Valores com top, left, bottom, right
•Usamos até hoje ¯_(ツ)_/¯
Tableless
•Movimento ~2002
•Proposta de deixar TABLE para tabular dados e
BOX MODEL para a criação de layouts
•Sites surgiram para apoiar a causa: CSS Zen
Garden, Tableless, Maujor…
•Gostamos até hoje ¯_(ツ)_/¯
Box Model CSS 3
•Box Sizing
content
padding
border
margin
Box Model CSS 3
•Box Sizing
content
padding
border
margin
box-sizing: border-box;
http://reference.sitepoint.com/css/ie5boxmodel
Problemas do Box Model
•Alinhar objetos verticalmente
•Posicionar divs lado-a-lado
•Se for usar float, tem que usar clearfixes
•Uma div acompanhando a altura da outra
•…e muito mais (muito mesmo)
•Ahh, problemas que temos até hoje ¯_(ツ)_/¯
Parece evoluir…
…mas a gente não
conseguia fazer isso direito:
<div> <div> <div>
…até hoje!
Divs lado-a-lado CAR%#$
GRID SYSTEM
Grids
•Nasceu para resolver problemas ao criar um
sistema de colunas
•Começou em 2007 com o Blueprint mas seu
"boom" foi em 2009 com o 960.gs
•É uma abstração do Box Model, porque por trás
é CSS 2.1 cheio de gambiarra para funcionar
Grids
•Isso agora é possível como MÁGICA!
1 2 3
<div class=“container">
<div class=“span-4”>1</div>
<div class=“span-4”>2</div>
<div class=“span-4”>3</div>
</div>
Aí em 2011…
Isso fazia sentido de 2007~2011
com CSS puro! Mas ai…
<div class="col-md-5 col-sm-5 col-xs-12">
<div class="col-md-7 col-sm-7 col-xs-7">
Isso em 2017 é inadmissível
"Grids não-semânticos
só fazem sentido com
CSS Puro"
Moretti, Diogo – 2013
Grids Semânticos
•Se você usa pré-processador, use grid semântico
•Bootstrap e Foundation já possuem versões de
seus grids de forma semântica (Ex.: SASS)
•Melhora a leitura e sua página não é desenhada
pelo html, e sim pelo CSS
•Afinal, não é isso que buscamos? Semântica e
um código manutenível
CSS LAYOUT SPECS
CSS Grid Layout Module Level 1
Especificação Atual Status
CSS Flexible Box Layout Module Level 1 2016
Candidato a
recomendação
CSS Grid Layout Module Level 1 2017
Candidato a
recomendação
CSS Template Layout Module 2015 Rascunho
CSS Multi-Column Layout Module 2011
Candidato a
recomendação
FLEXBOX
Afinal, o que é Flexbox?
A principal ideia é dar ao “container" (pai) a
habilidade de mudar o tamanho e direção
dos filhos, afim de preencher os espaços e
evitar o overflow.
https://www.w3.org/TR/css-flexbox-1/
Features do Flexbox
•Resolve quase todos os problemas do Box
Model tradicional
•Criado para layout e pequenas partes da APP
•Não possui float, overflow…
•Força o uso semântico de HTML e CSS
•Ótimo suporte (IE10+) – 98%
https://www.w3.org/TR/css-flexbox-1/
Estrutura para os exemplos
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
</div>
flex container
flex items
Sem Flexbox
1
2
3
Com Flexbox
.container {
display: flex;
}
1 2 3
Centralizar com Flexbox
.item {
margin: auto;
}
.container {
display: flex;
}
CSS GRID LAYOUT
CSS Grid Layout?
A ideia é dividir sua página em linhas e
colunas e permitir posicionar elementos
nesses “slots" criados. Também é possível
trocar a posição dos elementos usando
apenas CSS.
https://www.w3.org/TR/css-grid-1/
Em outras palavras…
Você vai “fatiar" sua
página e depois encaixar
os “macro" blocos
Suporte
10+ 52+ 57+ 10.1+ 44+
http://caniuse.com/#feat=css-grid
iOS Safari / Android Chrome e FF
Terminologia
<div class="container">
<div class="header"></div>
<div class="content"></div>
<div class=“sidebar"></div>
<div class="footer"></div>
</div>
Grid container
Grid items
DISCLAIMER
Sintaxe
.container {
display: grid;
}
Exemplo 1
.container {
display: grid;
grid-template-columns: 1fr 300px;
grid-template-rows: 200px 500px 200px;
}
WTF!???
Lines & Sizes
200px
1fr
200px
300px
500px
Line 1 Line 2 Line 3
Line 1
Line 2
Line 3
Line 4
.header {
background: red;
grid-column-start: 1;
grid-column-end: 3;
grid-row-start: 1;
grid-row-end: 2;
}
Grid Column & Grid Row
.header {
background: red;
grid-column: 1 / 3;
grid-row: 1 / 2;
}
Grid Column & Grid Row
.header
Exemplo 1: Header
.sidebar {
background: yellow;
grid-column: 2 / 3;
grid-row: 2 / 4;
}
Exemplo 1: Sidebar
.header
Exemplo 1: Sidebar
.sidebar
Exemplo 1: Final
Ahh, mas fica tudo muito
preso nessa estrutura…
.container {
display: grid;
grid-template-columns: repeat(12, 1fr);
grid-template-rows: 100vh;
grid-gap: 10px;
}
Exemplo 2
Espaçamento entre linhas e colunas.
Exemplo 2
NÃO FAÇA ISSO
Ahh, então me dá um
exemplo prático
https://dribbble.com/shots/1573896-Warehouse
header menu
tea tea-feat
rooms
shake-feat shake
<div class="container">
<div class="header"></div>
<div class="menu"></div>
<div class="tea"></div>
<div class="tea-feat"></div>
<div class="rooms"></div>
<div class="shake-feat"></div>
<div class="shake"></div>
</div>
Grid Area
Putz, agora vou ter que
decorar onde começa e
termina cada bloco…
.container {
display: grid;
grid-template-columns: 350px 1fr 350px;
grid-template-rows: 600px 200px 200px 200px;
grid-template-areas:
"header header menu"
"tea tea-feat tea-feat"
"rooms rooms rooms"
"shake shake-feat shake-feat”
}
Grid Area
.header {
grid-area: header;
background: red;
}
Grid Area
Grid Area
.header
Tá, e o responsivo como é
que fica?
.container {
display: grid;
grid-template-columns: 1fr 300px;
grid-template-rows: 200px 1fr 200px;
grid-template-areas:
“header header"
"content sidebar"
"footer footer"
}
Responsive
Responsive
.container {
grid-template-columns: 1fr;
grid-template-rows: auto 1fr auto auto;
grid-template-areas:
“header"
“content"
"sidebar"
"footer"
}
Responsive
@media (max-width: 580px) {
}
Responsive
Mais um exemplo…
O que não vimos
•Alinhamento do container (justify-items, align-
items, justify-content, align-content…) e também
dos “items" (justify-self, align-self…)
•Subgrid e inline-grid
•Propriedades novas como grid-auto-*
•Valores novos como span, auto-fill, minmax()…
•E outras aplicações…
Resources
http://jensimmons.com/post/feb-27-2017/learn-css-grid
http://gridbyexample.com
https://css-tricks.com/snippets/css/complete-guide-grid
http://cssgridgarden.com
https://github.com/simoneas02/awesome-grid-layout
http://www.griddy.io
Quem Seguir?
@jensimmons
@Una
@rachelandrew
@chriscoyier
@meyerweb
Por um mundo com
mais desenvolvedores…
…que não quebrem
a web!
THANKS!
diogo.nu

Mais conteúdo relacionado

Semelhante a CSS {Grid} Layout: It's evolution baby

CSS com SASS e SMACSS faz BEM
CSS com SASS e SMACSS faz BEMCSS com SASS e SMACSS faz BEM
CSS com SASS e SMACSS faz BEMWellington Dutra
 
Design Responsivo com Sass
Design Responsivo com SassDesign Responsivo com Sass
Design Responsivo com SassVitor Garcia
 
Desenvolvimento Front End minicurso UNIDERP 2012
Desenvolvimento Front End minicurso UNIDERP 2012Desenvolvimento Front End minicurso UNIDERP 2012
Desenvolvimento Front End minicurso UNIDERP 2012Anderson de Castro
 
CSS - Cansei de Ser Subestimado
CSS - Cansei de Ser SubestimadoCSS - Cansei de Ser Subestimado
CSS - Cansei de Ser SubestimadoAnyssa Ferreira
 
Devmedia - Conhecendo o framework front-end Foundation
Devmedia - Conhecendo o framework front-end FoundationDevmedia - Conhecendo o framework front-end Foundation
Devmedia - Conhecendo o framework front-end FoundationDevmedia
 
Componetização de CSS com o Compass (Front in Sampa 2013)
Componetização de CSS com o Compass (Front in Sampa 2013)Componetização de CSS com o Compass (Front in Sampa 2013)
Componetização de CSS com o Compass (Front in Sampa 2013)Guilherme Serrano
 
Básico em (X)HTML e CSS
Básico em (X)HTML e CSSBásico em (X)HTML e CSS
Básico em (X)HTML e CSSKako Botasso
 
Smacss e-css-faz-bem
Smacss e-css-faz-bemSmacss e-css-faz-bem
Smacss e-css-faz-bemJust Digital
 
Introdução ao CSS - Desenvolvimento web
Introdução ao CSS - Desenvolvimento webIntrodução ao CSS - Desenvolvimento web
Introdução ao CSS - Desenvolvimento webCarlos Eduardo Kadu
 
Caelum html-css-javascript-php
Caelum html-css-javascript-phpCaelum html-css-javascript-php
Caelum html-css-javascript-phpLindomar ...
 
2. Introdução ao CSSpptx.pdf
2. Introdução ao CSSpptx.pdf2. Introdução ao CSSpptx.pdf
2. Introdução ao CSSpptx.pdfRubenManhia
 
Oficina de Planejamento Corte: Seu layout virando código - 15 EDTED
Oficina de Planejamento Corte: Seu layout virando código  - 15 EDTEDOficina de Planejamento Corte: Seu layout virando código  - 15 EDTED
Oficina de Planejamento Corte: Seu layout virando código - 15 EDTEDBunee.io - Hiring with Intelligence
 

Semelhante a CSS {Grid} Layout: It's evolution baby (20)

CSS com SASS e SMACSS faz BEM
CSS com SASS e SMACSS faz BEMCSS com SASS e SMACSS faz BEM
CSS com SASS e SMACSS faz BEM
 
Design Responsivo com Sass
Design Responsivo com SassDesign Responsivo com Sass
Design Responsivo com Sass
 
Web em grande estilo com CSS 3
Web em grande estilo com CSS 3Web em grande estilo com CSS 3
Web em grande estilo com CSS 3
 
Desenvolvimento Front End minicurso UNIDERP 2012
Desenvolvimento Front End minicurso UNIDERP 2012Desenvolvimento Front End minicurso UNIDERP 2012
Desenvolvimento Front End minicurso UNIDERP 2012
 
CSS - Cansei de Ser Subestimado
CSS - Cansei de Ser SubestimadoCSS - Cansei de Ser Subestimado
CSS - Cansei de Ser Subestimado
 
Modular CSS - Projetando CSS para aplicativos
Modular CSS - Projetando CSS para aplicativosModular CSS - Projetando CSS para aplicativos
Modular CSS - Projetando CSS para aplicativos
 
Devmedia - Conhecendo o framework front-end Foundation
Devmedia - Conhecendo o framework front-end FoundationDevmedia - Conhecendo o framework front-end Foundation
Devmedia - Conhecendo o framework front-end Foundation
 
CSS Modules
CSS ModulesCSS Modules
CSS Modules
 
Componetização de CSS com o Compass (Front in Sampa 2013)
Componetização de CSS com o Compass (Front in Sampa 2013)Componetização de CSS com o Compass (Front in Sampa 2013)
Componetização de CSS com o Compass (Front in Sampa 2013)
 
GBD Pattern
GBD PatternGBD Pattern
GBD Pattern
 
Mini-curso Twitter Boostrap 3.3.5
Mini-curso Twitter Boostrap 3.3.5Mini-curso Twitter Boostrap 3.3.5
Mini-curso Twitter Boostrap 3.3.5
 
Web design responsivo e adaptativo - HTML5/CSS3
Web design responsivo e adaptativo - HTML5/CSS3Web design responsivo e adaptativo - HTML5/CSS3
Web design responsivo e adaptativo - HTML5/CSS3
 
Básico em (X)HTML e CSS
Básico em (X)HTML e CSSBásico em (X)HTML e CSS
Básico em (X)HTML e CSS
 
Smacss e-css-faz-bem
Smacss e-css-faz-bemSmacss e-css-faz-bem
Smacss e-css-faz-bem
 
Introdução ao CSS - Desenvolvimento web
Introdução ao CSS - Desenvolvimento webIntrodução ao CSS - Desenvolvimento web
Introdução ao CSS - Desenvolvimento web
 
Caelum html-css-javascript-php
Caelum html-css-javascript-phpCaelum html-css-javascript-php
Caelum html-css-javascript-php
 
2006 - CURSOINTRODUÇÃOADOTNET.ppt
2006 - CURSOINTRODUÇÃOADOTNET.ppt2006 - CURSOINTRODUÇÃOADOTNET.ppt
2006 - CURSOINTRODUÇÃOADOTNET.ppt
 
SVG Essencial
SVG EssencialSVG Essencial
SVG Essencial
 
2. Introdução ao CSSpptx.pdf
2. Introdução ao CSSpptx.pdf2. Introdução ao CSSpptx.pdf
2. Introdução ao CSSpptx.pdf
 
Oficina de Planejamento Corte: Seu layout virando código - 15 EDTED
Oficina de Planejamento Corte: Seu layout virando código  - 15 EDTEDOficina de Planejamento Corte: Seu layout virando código  - 15 EDTED
Oficina de Planejamento Corte: Seu layout virando código - 15 EDTED
 

Mais de Criciúma Dev

Gustavo Pantuza / Automatizando deploys de ACLs no datacenter da Globo.com - ...
Gustavo Pantuza / Automatizando deploys de ACLs no datacenter da Globo.com - ...Gustavo Pantuza / Automatizando deploys de ACLs no datacenter da Globo.com - ...
Gustavo Pantuza / Automatizando deploys de ACLs no datacenter da Globo.com - ...Criciúma Dev
 
Como ser um bom dev FrontEnd em 2017
Como ser um bom dev FrontEnd em 2017Como ser um bom dev FrontEnd em 2017
Como ser um bom dev FrontEnd em 2017Criciúma Dev
 
UX Design para desenvolvedores
UX Design para desenvolvedoresUX Design para desenvolvedores
UX Design para desenvolvedoresCriciúma Dev
 
Escalando aplicações no front-end com ReactJS
Escalando aplicações no front-end com ReactJSEscalando aplicações no front-end com ReactJS
Escalando aplicações no front-end com ReactJSCriciúma Dev
 
Reduzindo complexidade
Reduzindo complexidadeReduzindo complexidade
Reduzindo complexidadeCriciúma Dev
 
Aspectos de segurança em bancos de dados para web
Aspectos de segurança em bancos de dados para webAspectos de segurança em bancos de dados para web
Aspectos de segurança em bancos de dados para webCriciúma Dev
 
Webpack packing it all
Webpack packing it allWebpack packing it all
Webpack packing it allCriciúma Dev
 
Microserviços na vida real
Microserviços na vida realMicroserviços na vida real
Microserviços na vida realCriciúma Dev
 
DevOps Culture: Como implementar métodos ágeis em infraestrutura como código
DevOps Culture: Como implementar métodos ágeis em infraestrutura como códigoDevOps Culture: Como implementar métodos ágeis em infraestrutura como código
DevOps Culture: Como implementar métodos ágeis em infraestrutura como códigoCriciúma Dev
 
Simplificando UX e Códigos para Conteúdos Complexos
Simplificando UX e Códigos para Conteúdos ComplexosSimplificando UX e Códigos para Conteúdos Complexos
Simplificando UX e Códigos para Conteúdos ComplexosCriciúma Dev
 
Metodologias interativas
Metodologias interativasMetodologias interativas
Metodologias interativasCriciúma Dev
 
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Criciúma Dev
 
Venha para o lado livre da força. O que você pode fazer pelo software livre e...
Venha para o lado livre da força. O que você pode fazer pelo software livre e...Venha para o lado livre da força. O que você pode fazer pelo software livre e...
Venha para o lado livre da força. O que você pode fazer pelo software livre e...Criciúma Dev
 
Começando na área de desenvolvimento mobile. O que preciso saber?
Começando na área de desenvolvimento mobile. O que preciso saber?Começando na área de desenvolvimento mobile. O que preciso saber?
Começando na área de desenvolvimento mobile. O que preciso saber?Criciúma Dev
 

Mais de Criciúma Dev (15)

Gustavo Pantuza / Automatizando deploys de ACLs no datacenter da Globo.com - ...
Gustavo Pantuza / Automatizando deploys de ACLs no datacenter da Globo.com - ...Gustavo Pantuza / Automatizando deploys de ACLs no datacenter da Globo.com - ...
Gustavo Pantuza / Automatizando deploys de ACLs no datacenter da Globo.com - ...
 
Como ser um bom dev FrontEnd em 2017
Como ser um bom dev FrontEnd em 2017Como ser um bom dev FrontEnd em 2017
Como ser um bom dev FrontEnd em 2017
 
UX Design para desenvolvedores
UX Design para desenvolvedoresUX Design para desenvolvedores
UX Design para desenvolvedores
 
Escalando aplicações no front-end com ReactJS
Escalando aplicações no front-end com ReactJSEscalando aplicações no front-end com ReactJS
Escalando aplicações no front-end com ReactJS
 
Reduzindo complexidade
Reduzindo complexidadeReduzindo complexidade
Reduzindo complexidade
 
Javascript, porque?
Javascript, porque?Javascript, porque?
Javascript, porque?
 
Aspectos de segurança em bancos de dados para web
Aspectos de segurança em bancos de dados para webAspectos de segurança em bancos de dados para web
Aspectos de segurança em bancos de dados para web
 
Webpack packing it all
Webpack packing it allWebpack packing it all
Webpack packing it all
 
Microserviços na vida real
Microserviços na vida realMicroserviços na vida real
Microserviços na vida real
 
DevOps Culture: Como implementar métodos ágeis em infraestrutura como código
DevOps Culture: Como implementar métodos ágeis em infraestrutura como códigoDevOps Culture: Como implementar métodos ágeis em infraestrutura como código
DevOps Culture: Como implementar métodos ágeis em infraestrutura como código
 
Simplificando UX e Códigos para Conteúdos Complexos
Simplificando UX e Códigos para Conteúdos ComplexosSimplificando UX e Códigos para Conteúdos Complexos
Simplificando UX e Códigos para Conteúdos Complexos
 
Metodologias interativas
Metodologias interativasMetodologias interativas
Metodologias interativas
 
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
 
Venha para o lado livre da força. O que você pode fazer pelo software livre e...
Venha para o lado livre da força. O que você pode fazer pelo software livre e...Venha para o lado livre da força. O que você pode fazer pelo software livre e...
Venha para o lado livre da força. O que você pode fazer pelo software livre e...
 
Começando na área de desenvolvimento mobile. O que preciso saber?
Começando na área de desenvolvimento mobile. O que preciso saber?Começando na área de desenvolvimento mobile. O que preciso saber?
Começando na área de desenvolvimento mobile. O que preciso saber?
 

CSS {Grid} Layout: It's evolution baby