boostez vos layout avec css3

140
Boostez vos mises en page avec CSS3

Upload: matparisot

Post on 12-Apr-2017

1.148 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: Boostez vos layout avec CSS3

Boostez vos mises en page avec CSS3

Page 2: Boostez vos layout avec CSS3

Mathieu PARISOTDéveloppeur Web et Java - Formateur

http://matparisot.fr

@matparisot

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

http://humantalks.com http://brownbaglunch.fr

Page 3: Boostez vos layout avec CSS3
Page 4: Boostez vos layout avec CSS3

« Houston, we have a problem… »

Tom Hanks Jack Swigert

Page 5: Boostez vos layout avec CSS3

CSS est arrivé en 1996…

Page 6: Boostez vos layout avec CSS3

CSS est arrivé en 1996…

Page 7: Boostez vos layout avec CSS3

CSS est arrivé en 1996…

… et on bricole toujours pour faire nos mises pages !

Page 8: Boostez vos layout avec CSS3

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

Un développeur anonyme

Page 9: Boostez vos layout avec CSS3
Page 10: Boostez vos layout avec CSS3
Page 11: Boostez vos layout avec CSS3
Page 12: Boostez vos layout avec CSS3
Page 13: Boostez vos layout avec CSS3
Page 14: Boostez vos layout avec CSS3
Page 15: Boostez vos layout avec CSS3
Page 16: Boostez vos layout avec CSS3
Page 17: Boostez vos layout avec CSS3

<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 18: Boostez vos layout avec CSS3

<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 19: Boostez vos layout avec CSS3

<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 20: Boostez vos layout avec CSS3

<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 21: Boostez vos layout avec CSS3

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

Comment je gère les tailles des colonnes ? 

Quid du chevauchement ?

Laquelle de ces solutions je prends ?

Quels sont les effets de bords ?

Etc. 

Page 22: Boostez vos layout avec CSS3
Page 23: Boostez vos layout avec CSS3

<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 24: Boostez vos layout avec CSS3

Et si je veux changer le layout sur mobile ?

Page 25: Boostez vos layout avec CSS3

<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 26: Boostez vos layout avec CSS3
Page 27: Boostez vos layout avec CSS3

CSS Columns

CSS Shapes

CSS Regions

CSS Grid Layout

Page 28: Boostez vos layout avec CSS3

FlexBox

Page 29: Boostez vos layout avec CSS3

Changer l’orientation1

2

3

1 2 3

Ligne

Colonne

Page 30: Boostez vos layout avec CSS3

Changer l’ordre

1 3 2

Page 31: Boostez vos layout avec CSS3

Aligner et répartir

1 3

2

Page 32: Boostez vos layout avec CSS3

http://www.smashingmagazine.com/2015/08/flexible-future-for-web-design-with-flexbox/

Page 33: Boostez vos layout avec CSS3

CSS ColumnsMettre du texte sur plusieurs colonnes

Page 34: Boostez vos layout avec CSS3

<div class="columns"> Lorem ipsum dolor...</div>

Page 35: Boostez vos layout avec CSS3

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas scelerisque pharetra orci, a vulputate arcu consequat ac. Curabitur eu volutpat nulla, in pretium quam. Aliquam maximus at ipsum eget semper. Donec vehicula laoreet elit, id ultricies ipsum aliquam at. Sed turpis mauris, varius vel urna at, fermentum luctus nisi. Cras placerat mauris quis dolor maximus, ac consectetur lectus iaculis. Duis volutpat vestibulum est, non hendrerit lorem laoreet tincidunt. Quisque egestas sed eros at fermentum. Donec vitae felis lobortis eros luctus malesuada. Maecenas sem libero, egestas ac lacus ac, varius cursus nunc. Phasellus lectus est, posuere non mi ut, maximus facilisis erat. Sed in nibh ultricies, gravida tortor sit amet, sodales mauris. Integer sed lacinia nunc, sed vulputate nisi.Curabitur suscipit elementum lectus, a commodo orci ornare vitae. Vivamus vestibulum turpis quam. Quisque sagittis tellus non mollis congue. Nullam sagittis hendrerit erat, tempus suscipit arcu faucibus dapibus. Vestibulum egestas dapibus mi ac consequat. Phasellus a metus in felis lobortis suscipit id sit amet nunc. Proin eu posuere elit. In libero nisl, tempor a quam at, facilisis dignissim nisl. Nullam imperdiet vehicula tellus, id condimentum erat pretium a. Maecenas efficitur lacus in erat aliquet maximus. Phasellus ornare tellus non interdum condimentum. Nam eget ante elit. Donec vehicula non elit non pulvinar. Nam convallis tellus et tincidunt mattis.Duis semper nibh vel sollicitudin semper. In rutrum libero quis justo dictum sagittis. Sed pharetra dolor nec mi pellentesque, id tincidunt ex dignissim. Donec aliquet gravida sagittis. Suspendisse a vestibulum tellus. Fusce venenatis bibendum magna, sed sodales arcu auctor pellentesque. Praesent sed cursus augue, vitae rutrum diam. Cras id ex arcu. Vivamus malesuada nisi tortor, sed fermentum dui luctus eget.In finibus augue sed faucibus dictum. Vestibulum varius, dui ac fringilla tempus, lorem ligula accumsan orci, quis faucibus metus nisl fringilla lorem. Nunc scelerisque, tellus eget congue luctus, leo lorem mattis enim, eget pretium est elit id ante. Vestibulum lobortis tellus id ornare maximus. Phasellus gravida sollicitudin vehicula. Nulla tristique mi magna, id vulputate diam ornare ut. Duis id nisi non mauris convallis congue. Etiam accumsan nec magna eu fermentum. Praesent eget pulvinar est, a tempus odio. Proin id urna euismod, mollis velit quis, laoreet risus.

Page 36: Boostez vos layout avec CSS3

.columns { column-count: 4; column-width: 100px; /* ou columns: 4 100px; */}

Page 37: Boostez vos layout avec CSS3
Page 38: Boostez vos layout avec CSS3

<div class="columns"> <h1>Lorem ipsum !</h1> Lorem ipsum dolor sit amet…

<blockquote> Aenean ut massa... </blockquote> …</div>

Page 39: Boostez vos layout avec CSS3

.columns { column-count: 4; column-width: 100px; column-gap: 50px; column-rule: 3px dashed lightgrey;}

Page 40: Boostez vos layout avec CSS3

.columns h1 { column-span: all; text-align: center;}

Page 41: Boostez vos layout avec CSS3

.columns blockquote { column-break-before: always; font-style: italic;}

Page 42: Boostez vos layout avec CSS3
Page 43: Boostez vos layout avec CSS3
Page 44: Boostez vos layout avec CSS3
Page 45: Boostez vos layout avec CSS3
Page 46: Boostez vos layout avec CSS3
Page 47: Boostez vos layout avec CSS3
Page 48: Boostez vos layout avec CSS3
Page 49: Boostez vos layout avec CSS3

CSS ShapesChanger la forme des blocs

Page 50: Boostez vos layout avec CSS3

<div class="content"> a a a a a a a a a a a a a …</div>

Page 51: Boostez vos layout avec CSS3

a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 

Page 52: Boostez vos layout avec CSS3

.content { shape-inside: circle();

}

Page 53: Boostez vos layout avec CSS3

.content { shape-inside: circle(); float: left;

}

Page 54: Boostez vos layout avec CSS3

.content { shape-inside: circle(); float: left; height: 10em; width: 15em;}

Page 55: Boostez vos layout avec CSS3
Page 56: Boostez vos layout avec CSS3

<div class="shape"></div><div class="content"> a a a a a a a a a a a a a …</div>

Page 57: Boostez vos layout avec CSS3

.shape { shape-outside: circle();

}

Page 58: Boostez vos layout avec CSS3

.shape { shape-outside: circle(); float: left; height: 10em; width: 15em;

}

Page 59: Boostez vos layout avec CSS3

.shape { shape-outside: circle(); float: left; height: 10em; width: 15em; background-color:lightgrey;}

Page 60: Boostez vos layout avec CSS3
Page 61: Boostez vos layout avec CSS3

circle() ellipse() polygon()

Page 62: Boostez vos layout avec CSS3
Page 63: Boostez vos layout avec CSS3
Page 65: Boostez vos layout avec CSS3
Page 66: Boostez vos layout avec CSS3

CSS RegionsGérer les débordements

Page 67: Boostez vos layout avec CSS3

<div class="content">Lorem ipsum…</div><div class="ads">Publicités !</div>

Page 68: Boostez vos layout avec CSS3
Page 69: Boostez vos layout avec CSS3

<div class="content">Lorem ipsum…</div><div class="intro"></div><div class="ads">Publicités !</div><div class="region"></div>

Page 70: Boostez vos layout avec CSS3

<div class="content">Lorem ipsum…</div><div class="intro"></div><div class="ads">Publicités !</div><div class="region"></div>

Page 71: Boostez vos layout avec CSS3

.content { flow-into: myContent;}

Page 72: Boostez vos layout avec CSS3

.content { flow-into: myContent;}

.intro { height: 100px; flow-from: myContent;}

Page 73: Boostez vos layout avec CSS3

.content { flow-into: myContent;}

.intro { height: 100px; flow-from: myContent;}

.region { flow-from: myContent;}

Page 74: Boostez vos layout avec CSS3

Intro

Ads

Region

Page 75: Boostez vos layout avec CSS3
Page 76: Boostez vos layout avec CSS3
Page 77: Boostez vos layout avec CSS3
Page 78: Boostez vos layout avec CSS3
Page 79: Boostez vos layout avec CSS3
Page 80: Boostez vos layout avec CSS3

CSS Grid LayoutLe futur de vos mises en page

Page 81: Boostez vos layout avec CSS3

<table></table>

Page 82: Boostez vos layout avec CSS3
Page 83: Boostez vos layout avec CSS3

FlexBox

Page 84: Boostez vos layout avec CSS3

Mais ça ne suffit pas !

Page 85: Boostez vos layout avec CSS3

<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 86: Boostez vos layout avec CSS3

<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 87: Boostez vos layout avec CSS3

Peut-on se passer de ces conteneurs ?

(Sans Javascript…)

Page 88: Boostez vos layout avec CSS3

CSS Grid Layout

Page 89: Boostez vos layout avec CSS3
Page 90: Boostez vos layout avec CSS3
Page 91: Boostez vos layout avec CSS3

display: grid;

Page 92: Boostez vos layout avec CSS3

<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 93: Boostez vos layout avec CSS3
Page 94: Boostez vos layout avec CSS3

.container { display: grid;}

Page 95: Boostez vos layout avec CSS3

.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 96: Boostez vos layout avec CSS3
Page 97: Boostez vos layout avec CSS3

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

Page 98: Boostez vos layout avec CSS3
Page 99: Boostez vos layout avec CSS3

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 100: Boostez vos layout avec CSS3

Alignements unifiés(version simplifiée…)

Page 101: Boostez vos layout avec CSS3

justify-xxx : Sens principalalign-xxx : Sens secondaire

Page 102: Boostez vos layout avec CSS3

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

Page 103: Boostez vos layout avec CSS3

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 104: Boostez vos layout avec CSS3

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 105: Boostez vos layout avec CSS3

.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 106: Boostez vos layout avec CSS3
Page 107: Boostez vos layout avec CSS3

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

Page 108: Boostez vos layout avec CSS3

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

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

Page 109: Boostez vos layout avec CSS3

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

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

Page 110: Boostez vos layout avec CSS3

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

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

Page 111: Boostez vos layout avec CSS3
Page 112: Boostez vos layout avec CSS3

Grille virtuelle

Page 113: Boostez vos layout avec CSS3
Page 114: Boostez vos layout avec CSS3

La killer feature ?

Page 115: Boostez vos layout avec CSS3

.block1 { grid-area: bloc1;}

.block2 { grid-area: bloc2;}

.block3 { grid-area: bloc3;}

.block4 { grid-area: bloc4;}

Page 116: Boostez vos layout avec CSS3

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

Page 117: Boostez vos layout avec CSS3
Page 118: Boostez vos layout avec CSS3

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 119: Boostez vos layout avec CSS3

.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 120: Boostez vos layout avec CSS3

.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 121: Boostez vos layout avec CSS3

.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 122: Boostez vos layout avec CSS3

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

Page 123: Boostez vos layout avec CSS3

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

Page 124: Boostez vos layout avec CSS3

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

Page 125: Boostez vos layout avec CSS3

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

Page 126: Boostez vos layout avec CSS3

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

Page 127: Boostez vos layout avec CSS3

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

Page 128: Boostez vos layout avec CSS3

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 129: Boostez vos layout avec CSS3

La conclusion

Page 130: Boostez vos layout avec CSS3

column-count: 4;column-width: 100px;column-gap: 50px;column-rule: 3px dashed; column-span: all;

Page 131: Boostez vos layout avec CSS3

shape-inside: circle();shape-outside: polygon();

Page 132: Boostez vos layout avec CSS3

flow-into: myContent;flow-from: myContent;

Page 133: Boostez vos layout avec CSS3

display: grid;grid-template-columns: 100px 1fr;grid-template-rows: 100px;grid-column: 3;grid-row: 2 / span 5;

Page 134: Boostez vos layout avec CSS3

Keep it Simple !

Page 135: Boostez vos layout avec CSS3

CSS a (presque) 20 ans…

Page 136: Boostez vos layout avec CSS3

On arrive a faire des choses géniales avec…

Page 137: Boostez vos layout avec CSS3

Imaginez les possibilités avec des outils + modernes…

Page 138: Boostez vos layout avec CSS3

Testez, expérimentez…

Page 139: Boostez vos layout avec CSS3

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

http://matparisot.fr/css3-column-region-shape/

Page 140: Boostez vos layout avec CSS3

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

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

http://matparisot.fr/css3-column-region-shape/

http://humantalks.com http://brownbaglunch.fr