際際滷

際際滷Share a Scribd company logo
Boostez vos mises en page
avec CSS3
Mathieu PARISOT
D辿veloppeur Web et Java - Formateur
http://matparisot.fr
@matparisot
https://www.google.com/+ParisotMathieu
http://humantalks.com http://brownbaglunch.fr
Boostez vos layout avec CSS3
束 Houston,
we have a problem 損
Tom Hanks Jack Swigert
CSS est arriv辿 en 1996
CSS est arriv辿 en 1996
CSS est arriv辿 en 1996
 et on bricole toujours
pour faire nos mises pages !
束 Portenawak,
moi jy arrive tr竪s bien ! 損
Un d辿veloppeur anonyme
Boostez vos layout avec CSS3
Boostez vos layout avec CSS3
Boostez vos layout avec CSS3
Boostez vos layout avec CSS3
Boostez vos layout avec CSS3
Boostez vos layout avec CSS3
Boostez vos layout avec CSS3
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>
<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;
}
<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;
}
<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;
}
Quest ce quil se passe lorsquon na 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.
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
Et si je veux changer le layout sur mobile ?
<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>
Boostez vos layout avec CSS3
CSS Columns
CSS Shapes
CSS Regions
CSS Grid Layout
FlexBox
Changer lorientation
1
2
3
1 2 3
Ligne
Colonne
Changer lordre
1 3 2
Aligner et r辿partir
1 3
2
http://www.smashingmagazine.com/2015/08/flexible-
future-for-web-design-with-flexbox/
CSS Columns
Mettre du texte sur plusieurs colonnes
<div class="columns">
Lorem ipsum dolor...
</div>
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.
.columns {
column-count: 4;
column-width: 100px;
/* ou columns: 4 100px; */
}
Boostez vos layout avec CSS3
<div class="columns">
<h1>Lorem ipsum !</h1>
Lorem ipsum dolor sit amet
<blockquote>
Aenean ut massa...
</blockquote>

</div>
.columns {
column-count: 4;
column-width: 100px;
column-gap: 50px;
column-rule: 3px dashed lightgrey;
}
.columns h1 {
column-span: all;
text-align: center;
}
.columns blockquote {
column-break-before: always;
font-style: italic;
}
Boostez vos layout avec CSS3
Boostez vos layout avec CSS3
Boostez vos layout avec CSS3
Boostez vos layout avec CSS3
Boostez vos layout avec CSS3
Boostez vos layout avec CSS3
Boostez vos layout avec CSS3
CSS Shapes
Changer la forme des blocs
<div class="content">
a a a a a a a a a a a a a 
</div>
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
.content {
shape-inside: circle();
}
.content {
shape-inside: circle();
float: left;
}
.content {
shape-inside: circle();
float: left;
height: 10em;
width: 15em;
}
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>
.shape {
shape-outside: circle();
}
.shape {
shape-outside: circle();
float: left;
height: 10em;
width: 15em;
}
.shape {
shape-outside: circle();
float: left;
height: 10em;
width: 15em;
background-color:lightgrey;
}
Boostez vos layout avec CSS3
circle() ellipse() polygon()
Boostez vos layout avec CSS3
Boostez vos layout avec CSS3
禽辿馨看
Boostez vos layout avec CSS3
CSS Regions
G辿rer les 糸辿恢看姻糸艶馨艶稼岳壊
<div class="content">Lorem ipsum</div>
<div class="ads">Publicit辿s !</div>
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>
<div class="content">Lorem ipsum</div>
<div class="intro"></div>
<div class="ads">Publicit辿s !</div>
<div class="region"></div>
.content {
flow-into: myContent;
}
.content {
flow-into: myContent;
}
.intro {
height: 100px;
flow-from: myContent;
}
.content {
flow-into: myContent;
}
.intro {
height: 100px;
flow-from: myContent;
}
.region {
flow-from: myContent;
}
Intro
Ads
Region
Boostez vos layout avec CSS3
Boostez vos layout avec CSS3
Boostez vos layout avec CSS3
Boostez vos layout avec CSS3
Boostez vos layout avec CSS3
CSS Grid Layout
Le futur de vos mises en page
<table></table>
Boostez vos layout avec CSS3
FlexBox
Mais 巽a ne suffit pas !
<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
<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>
Peut-on se passer de
ces conteneurs ?
(Sans Javascript)
CSS Grid Layout
Boostez vos layout avec CSS3
Boostez vos layout avec CSS3
display: grid;
<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>
Boostez vos layout avec CSS3
.container {
display: grid;
}
.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;
}
Boostez vos layout avec CSS3
.container {
display: grid;
grid-template-columns: 200px 1fr;
grid-template-rows: 200px 200px;
}
Boostez vos layout avec CSS3
fr : fraction de lespace restant
min-content : taille de l'辿l辿ment le plus petit
max-content : taille de l'辿l辿ment le plus grand
fit-content : 辿quivalent de auto
Nouvelles unit辿s
(uniquement pour Grid Layout)
Alignements unifi辿s
(version simplifi辿e)
justify-xxx : Sens principal
align-xxx : Sens secondaire
justify-xxx : Sens principal Horizontal
align-xxx : Sens secondaire Vertical
xxx-self : Aligne un bloc dans son parent
xxx-items : Alignement par d辿faut des blocs dans la grille
xxx-content : Alignement de la grille dans son parent
center : aligne le bloc au milieu de l'axe
start : aligne le bloc au d辿but de l'axe (gauche ou haut)
end : aligne le bloc  la fin de l'axe (droite ou bas)
.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;
}
Boostez vos layout avec CSS3
grid-column: 2 / span 4;
grid-column: span 2 / 2;
.container {
display: grid;
grid-template-columns: 200px 1fr 50px;
grid-template-rows: 50px 50px;
}
.block4 {
grid-row: 2;
grid-column: 2 / span 2;
}
.container {
display: grid;
grid-template-columns: 200px 1fr 50px;
grid-template-rows: 50px 50px;
}
.block4 {
grid-row: 2;
grid-column: 2 / span 2;
}
.container {
display: grid;
grid-template-columns: 200px 1fr 50px;
grid-template-rows: 50px 50px;
}
.block4 {
grid-row: 2;
grid-column: 2 / span 2;
}
Boostez vos layout avec CSS3
Grille virtuelle
Boostez vos layout avec CSS3
La killer feature ?
.block1 {
grid-area: bloc1;
}
.block2 {
grid-area: bloc2;
}
.block3 {
grid-area: bloc3;
}
.block4 {
grid-area: bloc4;
}
.container {
dis play: grid;
grid-columns: 200px 1fr 50px;
grid-rows: 50px 50px;
grid-template-areas: "bloc1 bloc2 ."
"bloc3 bloc4 bloc4";
}
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
.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;
}
.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;
}
.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;
}
(col) 4.25fr repeat(5, (gutter) 1fr (col)) (gutter);
(col) 4.25fr repeat(5, (gutter) 1fr (col)) (gutter);
(col) 4.25fr repeat(5, (gutter) 1fr (col)) (gutter);
(col) 4.25fr repeat(5, (gutter) 1fr (col)) (gutter);
(col) 4.25fr repeat(5, (gutter) 1fr (col)) (gutter);
(col) 4.25fr repeat(5, (gutter) 1fr (col)) (gutter);
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
La conclusion
column-count: 4;
column-width: 100px;
column-gap: 50px;
column-rule: 3px dashed;
column-span: all;
shape-inside: circle();
shape-outside: polygon();
flow-into: myContent;
flow-from: myContent;
display: grid;
grid-template-columns: 100px 1fr;
grid-template-rows: 100px;
grid-column: 3;
grid-row: 2 / span 5;
Keep it Simple !
CSS a (presque) 20 ans
On arrive a faire des
choses g辿niales avec
Imaginez les possibilit辿s
avec des outils + modernes
Testez, exp辿rimentez
http://matparisot.fr/css-grid-un-controle-total-sur-votre-mise-en-page/
http://matparisot.fr/css3-column-region-shape/
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

More Related Content

Boostez vos layout avec CSS3