70
CSS Grid Layout Le futur de vos mises en pages !

CSS Grid Layout, le futur de vos mises en page

Embed Size (px)

Citation preview

Page 1: CSS Grid Layout, le futur de vos mises en page

CSS Grid LayoutLe futur de vos mises en pages !

Page 2: CSS Grid Layout, le futur de vos mises en page

Mathieu PARISOTDéveloppeur Web et Java - Formateur

http://matparisot.fr

@matparisot

https://www.google.com/+ParisotMathieu

Page 3: CSS Grid Layout, le futur de vos mises en page
Page 4: CSS Grid Layout, le futur de vos mises en page

« Houston, we have a problem… »

Tom Hanks Jack Swigert

Page 5: CSS Grid Layout, le futur de vos mises en page

CSS est arrivé en 1996…

Page 6: CSS Grid Layout, le futur de vos mises en page

CSS est arrivé en 1996…

Page 7: CSS Grid Layout, le futur de vos mises en page

CSS est arrivé en 1996…

… et on bricole toujours pour faire nos mises pages !

Page 8: CSS Grid Layout, le futur de vos mises en page

« Portenawak, moi j’y arrive très bien ! »

Un développeur anonyme

Page 9: CSS Grid Layout, le futur de vos mises en page
Page 10: CSS Grid Layout, le futur de vos mises en page
Page 11: CSS Grid Layout, le futur de vos mises en page
Page 12: CSS Grid Layout, le futur de vos mises en page
Page 13: CSS Grid Layout, le futur de vos mises en page
Page 14: CSS Grid Layout, le futur de vos mises en page

<table> <tr> <td colspan="2"></td> <td style="width:33%;"></td> <td style="width:50%;"></td> </tr> <tr> <td></td> <td></td> <td></td> <td></td> </tr></table>

Page 15: CSS Grid Layout, le futur de vos mises en page

<div class="grid"> <div class="row"> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> </div> <div class="row"> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> </div></div>

.table { display: table;}.row { display: table-row;}.cell { display: table-cell;}

Page 16: CSS Grid Layout, le futur de vos mises en page

<div class="container"> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div></div><div class="container"> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div></div>

.cell { float: left;}/* clearfix... */.container:after { visibility: hidden; display: block; font-size: 0; content: " "; clear: both; height: 0;}

Page 17: CSS Grid Layout, le futur de vos mises en page

<div class="container"> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div></div><div class="container"> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div></div>

.cell { display: inline-block;}

Page 18: CSS Grid Layout, le futur de vos mises en page

Qu’est ce qu’il se passe lorsqu’on n’a plus de place ?

Comment je gère les tailles des colonnes ? 

Quid du colspan et rowspan ?

Laquelle de ces solutions je prends ?

Quels sont les effets de bords ?

Etc. 

Page 19: CSS Grid Layout, le futur de vos mises en page
Page 20: CSS Grid Layout, le futur de vos mises en page

<div class="row"> <div class="col-3"></div> <div class="col-3"></div> <div class="col-3"></div> <div class="col-3"></div></div><div class="row"> <div class="col-6"></div> <div class="col-3"></div> <div class="col-3"></div></div>

+ de 600 lignes de CSS…

Page 21: CSS Grid Layout, le futur de vos mises en page

Et si je veux changer le layout sur mobile ?

Page 22: CSS Grid Layout, le futur de vos mises en page

<div class="row"> <div class="col-xs-6 col-md-4 col-sm-12"></div> <div class="col-xs-3 col-md-4 col-sm-12"></div> <div class="col-xs-3 col-md-4 col-sm-12"></div></div>

Page 23: CSS Grid Layout, le futur de vos mises en page
Page 24: CSS Grid Layout, le futur de vos mises en page

FlexBox

Page 25: CSS Grid Layout, le futur de vos mises en page

Mais ça ne suffit pas !

Page 26: CSS Grid Layout, le futur de vos mises en page

<div class="row"> <div class="col-3"></div> <div class="col-3"></div> <div class="col-3"></div> <div class="col-3"></div></div><div class="row"> <div class="col-6"></div> <div class="col-3"></div> <div class="col-3"></div></div>

Chaque ligne est dans un conteneur…

Page 27: CSS Grid Layout, le futur de vos mises en page

<div class="row"> <div class="col-3"></div> <div class="col-3"></div> <div class="col-3"></div> <div class="col-3"></div></div><div class="row"> <div class="col-6"></div> <div class="col-3"></div> <div class="col-3"></div></div>

Page 28: CSS Grid Layout, le futur de vos mises en page

Peut-on se passer de ces conteneurs ?

(Sans Javascript…)

Page 29: CSS Grid Layout, le futur de vos mises en page

CSS Grid Layout

Page 30: CSS Grid Layout, le futur de vos mises en page
Page 31: CSS Grid Layout, le futur de vos mises en page
Page 32: CSS Grid Layout, le futur de vos mises en page

display: grid;

Page 33: CSS Grid Layout, le futur de vos mises en page

<div class="container"> <div class="block1">Bloc 1</div> <div class="block2">Bloc 2</div> <div class="block3">Bloc 3</div> <div class="block4">Bloc 4</div></div>

Page 34: CSS Grid Layout, le futur de vos mises en page
Page 35: CSS Grid Layout, le futur de vos mises en page

.container { display: grid;}

Page 36: CSS Grid Layout, le futur de vos mises en page

.block1 { grid-row: 1; grid-column: 1;}

.block2 { grid-row: 1; grid-column: 2;}

.block3 { grid-row: 2; grid-column: 1;}

.block4 { grid-row: 2; grid-column: 2;}

Page 37: CSS Grid Layout, le futur de vos mises en page
Page 38: CSS Grid Layout, le futur de vos mises en page

.container { display: grid; grid-template-columns: 200px 1fr; grid-template-rows: 200px 200px;}

Page 39: CSS Grid Layout, le futur de vos mises en page
Page 40: CSS Grid Layout, le futur de vos mises en page

fr : fraction de l’espace restantmin-content : taille de l'élément le plus petitmax-content : taille de l'élément le plus grandfit-content : équivalent de “auto”

Nouvelles unités (uniquement pour Grid Layout)

Page 41: CSS Grid Layout, le futur de vos mises en page

Alignements unifiés(version simplifiée…)

Page 42: CSS Grid Layout, le futur de vos mises en page

justify-xxx : Sens principalalign-xxx : Sens secondaire

Page 43: CSS Grid Layout, le futur de vos mises en page

justify-xxx : Sens principal Horizontalalign-xxx : Sens secondaire Vertical

Page 44: CSS Grid Layout, le futur de vos mises en page

xxx-self : Aligne un bloc dans son parentxxx-items : Alignement par défaut des blocs dans la grillexxx-content : Alignement de la grille dans son parent

Page 45: CSS Grid Layout, le futur de vos mises en page

center : aligne le bloc au milieu de l'axestart : aligne le bloc au début de l'axe (gauche ou haut)end : aligne le bloc à la fin de l'axe (droite ou bas)

Page 46: CSS Grid Layout, le futur de vos mises en page

.block1 { grid-row: 1; grid-column: 1; justify-self: center; align-self: center;}

.block2 { grid-row: 1; grid-column: 2; justify-self: end; align-self: end;}

Page 47: CSS Grid Layout, le futur de vos mises en page
Page 48: CSS Grid Layout, le futur de vos mises en page

grid-column: 2 / span 4;grid-column: span 1 / 2;

Page 49: CSS Grid Layout, le futur de vos mises en page

.container { display: grid; grid-template-columns: 200px 1fr 50px; grid-template-rows: 50px 50px;}

.block4 { grid-row: 2; grid-column: 2 / span 2;}

Page 50: CSS Grid Layout, le futur de vos mises en page

.container { display: grid; grid-template-columns: 200px 1fr 50px; grid-template-rows: 50px 50px;}

.block4 { grid-row: 2; grid-column: 2 / span 2;}

Page 51: CSS Grid Layout, le futur de vos mises en page

.container { display: grid; grid-template-columns: 200px 1fr 50px; grid-template-rows: 50px 50px;}

.block4 { grid-row: 2; grid-column: 2 / span 2;}

Page 52: CSS Grid Layout, le futur de vos mises en page
Page 53: CSS Grid Layout, le futur de vos mises en page

Grille virtuelle

Page 54: CSS Grid Layout, le futur de vos mises en page
Page 55: CSS Grid Layout, le futur de vos mises en page

La killer feature ?

Page 56: CSS Grid Layout, le futur de vos mises en page

.block1 { grid-area: bloc1;}

.block2 { grid-area: bloc2;}

.block3 { grid-area: bloc3;}

.block4 { grid-area: bloc4;}

Page 57: CSS Grid Layout, le futur de vos mises en page

.container { dis play: grid; grid-columns: 200px 1fr 50px; grid-rows: 50px 50px; grid-template-areas: "bloc1 bloc2 ." "bloc3 bloc4 bloc4";}

Page 58: CSS Grid Layout, le futur de vos mises en page
Page 59: CSS Grid Layout, le futur de vos mises en page

Implémentation dans Firefox (et nouvelles syntaxe dans Edge ?)

Sous-grilles imbriquées avec syntaxe simplifiée

Répéter des configuration de Cellules

Cellules nomées

Page 60: CSS Grid Layout, le futur de vos mises en page

.container { display: grid; grid-template-columns: (col) 4.25fr repeat(5, (gutter) 1fr (col) ) (gutter); grid-template-rows: repeat(5, 100px);}

.block { grid-column: 3; grid-row: 2 / span 5; display: grid; grid: subgrid;}

Page 61: CSS Grid Layout, le futur de vos mises en page

.container { display: grid; grid-template-columns: (col) 4.25fr repeat(5, (gutter) 1fr (col) ) (gutter); grid-template-rows: repeat(5, 100px);}

.block { grid-column: 3; grid-row: 2 / span 5; display: grid; grid: subgrid;}

Page 62: CSS Grid Layout, le futur de vos mises en page

.container { display: grid; grid-template-columns: (col) 4.25fr repeat(5, (gutter) 1fr (col)) (gutter); grid-template-rows: repeat(5, 100px);}

.block { grid-column: 3; grid-row: 2 / span 5; display: grid; grid: subgrid;}

Page 63: CSS Grid Layout, le futur de vos mises en page

(col) 4.25fr repeat(5, (gutter) 1fr (col)) (gutter);

Page 64: CSS Grid Layout, le futur de vos mises en page

(col) 4.25fr repeat(5, (gutter) 1fr (col)) (gutter);

Page 65: CSS Grid Layout, le futur de vos mises en page

(col) 4.25fr repeat(5, (gutter) 1fr (col)) (gutter);

Page 66: CSS Grid Layout, le futur de vos mises en page

(col) 4.25fr repeat(5, (gutter) 1fr (col)) (gutter);

Page 67: CSS Grid Layout, le futur de vos mises en page

(col) 4.25fr repeat(5, (gutter) 1fr (col)) (gutter);

Page 68: CSS Grid Layout, le futur de vos mises en page

(col) 4.25fr repeat(5, (gutter) 1fr (col)) (gutter);

Page 69: CSS Grid Layout, le futur de vos mises en page

Syntaxe de base super simple (une fois les alignements compris…)

Syntaxe avancée très puissante

Un seul conteneur global

Facile de ré-agencer les blocs

Nouvelles unités de tailles super pratiques

Page 70: CSS Grid Layout, le futur de vos mises en page

Merci !@matparisot - http://matparisot.fr

http://matparisot.fr/css-grid-un-controle-total-sur-votre-mise-en-page/

http://gridbyexample.com/examples/

http://www.w3.org/TR/css-grid-1/