Mon titre
Alléchant
<html>
, <head>
, <body>
, <section>
, …)Deux cycles vont s’enchaîner :
Attention, chaque TP étant basé sur le précédent,
veillez à ne pas accumuler le retard.
Le Cascading Style Sheets est un langage :
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="style1.css">
<link rel="stylesheet" href="style2.css">
<title>Ma page</title>
</head>
<body> ... </body>
</html>
index.html
<link>
dans l’entête de la page.selecteur1 {
proprieteA: valeur;
proprieteB: valeur;
}
selecteur2,
selecteur3 {
...
}
...
style1.css
h1 {
color: red;
font-size: 20px;
}
article,
section {
border: 1px solid black;
}
...
style1.css
<section>
<article>
<h3>Mon titre</h3>
<p> Alléchant </p>
</article>
<aside>
<h3> Mon autre titre </h3>
<p> Bazinga </p>
</aside>
</section>
section {}
Alléchant
section { color: red; }
Alléchant
section { color: red; }
article { color: blue; }
Alléchant
section { color: red; }
article { color: blue; }
p { color: green; }
Alléchant
La notion de cascade fait référence aux propriétés CSS qui, lorsqu’elles sont appliquées à un élément HTML, le sont aussi sur tous les enfants par héritage.
Pour appliquer une propriété à tous les éléments d’un même type, on indique le nom de l’élément :
/* Appliqué à tous les éléments <p> de la page */
p {
propriete: valeur;
}
Pour appliquer une propriété à tous les éléments d’une même classe, on indique le nom de la classe avec un point :
/* Appliqué à tous les éléments
de classe "recent" */
.recent {
propriete: valeur;
}
/* Appliqué à tous les articles
de classe "recent" */
article.recent {
propriete: valeur;
}
Pour appliquer une propriété à un élément avec un id
spécifique, on indique cet identifiant avec un dièse :
/* Appliqué à l'élément d'identifiant "monId" */
#monId {
propriete: valeur;
}
Note : un identifiant doit être unique
Pour appliquer une propriété aux élément possédant un attribut donné, on indique son attribut entre crochets :
/* Appliqué aux éléments <p> possédant l'attribut "id" */
p[id] {
propriete: valeur;
}
Pour appliquer des propriétés à tous les descendants B d’un élément A, on utilise la syntaxe A B
:
/* Appliqué aux éléments <p> qui sont descendants de <body> */
body p {
propriete: valeur;
}
Pour appliquer des propriétés aux enfants directs d’un élément, on indique le nom de l’élément et de ses enfants, séparés par un >
:
/* Appliqué aux éléments <p> qui sont enfants directs du <body> */
body > p {
propriete: valeur;
}
Pour appliquer des propriétés aux éléments B qui sont voisins directs d’éléments A, on utilise la syntaxe A + B
:
/* Appliqué aux éléments <p> qui suivent directement un <a> */
a + p {
propriete: valeur;
}
Pour appliquer des propriété aux éléments B qui sont voisins successeurs d’éléments A, on utilise la syntaxe A ~ B
:
/* Appliqué aux éléments <p> qui sont voisins en aval d'un <a> */
a ~ p {
propriete: valeur;
}
Pour appliquer une propriété à des éléments premier enfant de leur parent, on suffixe le nom de l’enfant avec :first-child
:
/* Appliqué à tous les éléments <p> qui sont 1er enfant de leur parent */
p:first-child {
propriete: valeur;
}
Note : on en déduit le fonctionnement de :last-child
.
Pour appliquer une propriété à des éléments premier enfant d’un type donné, on suffixe le nom de l’enfant avec :first-of-type
:
/* Appliqué à tous les éléments <p> qui sont le 1er enfant de ce type */
p:first-of-type {
propriete: valeur;
}
Note : on en déduit le fonctionnement de :last-of-type
.
Les sélecteurs sont nombreux et les combinaisons infinies. Pour avoir une liste complète des possibilités de sélection offertes par CSS, vous pouvez vous référer à cette doc de Mozilla.
Vous y trouverez entre autre les pseudo-classe ::before
et :hover
qui seront à utiliser en TP…
p {
font-family: Arial, sans-serif;
}
Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte.
p {
font-family: "Times New Roman", sans-serif;
}
Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte.
font-family
indique la police de caractères à utiliser.p {
font-family: Arial, sans-serif;
font-size: 22px;
}
Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte.
p {
font-family: Arial, sans-serif;
font-size: 12px;
}
Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte.
font-size
permet de modifier la taille du texte.p {
font-family: Arial, sans-serif;
font-size: 27px;
}
Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte.
font-size
permet de modifier la taille du texte.p {
font-family: Arial, sans-serif;
font-size: 22px;
font-style: normal;
}
Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte.
p {
font-family: Arial, sans-serif;
font-size: 22px;
font-style: italic;
}
Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte.
font-style
modifie l’inclinaison de la police.normal
.p {
font-family: Arial, sans-serif;
font-size: 22px;
font-style: normal;
font-weight: normal;
}
Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte.
p {
font-family: Arial, sans-serif;
font-size: 22px;
font-style: normal;
font-weight: bold;
}
Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte.
font-weight
modifie l’épaisseur de la police.normal
.1
à 1000
.p {
font-family: Arial, sans-serif;
font-size: 22px;
font-style: normal;
font-weight: normal;
text-decoration: none;
}
Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte.
p {
font-family: Arial, sans-serif;
font-size: 22px;
font-style: normal;
font-weight: normal;
text-decoration: underline;
}
Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte.
text-decoration
permet de décorer le texte avec une ligne.none
.overline
ou line-through
.p {
font-family: Arial, sans-serif;
font-size: 22px;
font-style: normal;
font-weight: normal;
text-decoration: none;
text-align: left;
}
Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte.
p {
font-family: Arial, sans-serif;
font-size: 22px;
font-style: normal;
font-weight: normal;
text-decoration: none;
text-align: right;
}
Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte.
text-align
permet de positionner le texte.left
.p {
font-family: Arial, sans-serif;
font-size: 22px;
font-style: normal;
font-weight: normal;
text-decoration: none;
text-align: center;
}
Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte.
text-align
permet de positionner le texte.left
.p {
font-family: Arial, sans-serif;
font-size: 22px;
font-style: normal;
font-weight: normal;
text-decoration: none;
text-align: justify;
}
Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte.
text-align
permet de positionner le texte.left
.p {
font-family: Arial, sans-serif;
font-size: 22px;
font-style: normal;
font-weight: normal;
text-decoration: none;
text-align: left;
line-height: 1;
}
Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte.
p {
font-family: Arial, sans-serif;
font-size: 22px;
font-style: normal;
font-weight: normal;
text-decoration: none;
text-align: left;
line-height: 1.5;
}
Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte.
line-height
permet de modifier l’espacement entre les lignes.1
.p {
font-family: Arial, sans-serif;
font-size: 22px;
font-style: normal;
font-weight: normal;
text-decoration: none;
text-align: left;
line-height: .5;
}
Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte.
line-height
permet de modifier l’espacement entre les lignes.1
.p {
font-family: Arial, sans-serif;
font-size: 22px;
font-style: normal;
font-weight: normal;
text-decoration: none;
text-align: left;
line-height: 1;
color: black;
}
Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte.
p {
font-family: Arial, sans-serif;
font-size: 22px;
font-style: normal;
font-weight: normal;
text-decoration: none;
text-align: left;
line-height: 1;
color: green;
}
Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte.
color
permet de modifier la couleur du textep {
font-family: Arial, sans-serif;
font-size: 22px;
font-style: normal;
font-weight: normal;
text-decoration: none;
text-align: left;
line-height: 1;
color: #7605ee;
}
Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte.
color
permet de modifier la couleur du textep {
font-family: Arial, sans-serif;
font-size: 22px;
font-style: normal;
font-weight: normal;
text-decoration: none;
text-align: left;
line-height: 1;
color: rgb(255,0,190);
}
Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte.
color
permet de modifier la couleur du textep {
border: 4px solid black;
}
Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte.
p {
border: 4px dotted red;
}
Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte.
p {
border: 4px dashed #27E;
}
Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte.
p {
border-top: 4px dashed #27E;
border-bottom: 4px dashed #27E;
}
Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte.
p {
background-color: none;
}
Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte.
p {
background-color: red;
}
Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte.
p {
background-image: url('img/icone_CSS.svg');
}
Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte.
p {
background-image: url('img/icone_CSS.svg');
background-repeat: no-repeat;
}
Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte.
p {
background-image: url('img/icone_CSS.svg');
background-repeat: no-repeat;
background-position: bottom center;
}
Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte, Ceci est un paragraphe de texte.
background-color
background-image
et peut être :
background-repeat
border-position
<section>
<p> Pas mal </p>
<p> Surprenant </p>
<p> Cool </p>
<p> Génial </p>
</section>
p {
display: block;
border: 2px solid black;
}
Pas mal
Surprenant
Cool
Génial
p {
display: block;
border: 2px solid black;
width: 200px;
}
Pas mal
Surprenant
Cool
Génial
Un élément avec la propriété display: block
:
Quelques éléments HTML de type block
par défaut : <p>
, <section>
, <article>
, <header>
, <nav>
….
<section>
<p> Pas mal </p>
<p> Surprenant </p>
<p> Cool </p>
<p> Génial </p>
</section>
p {
display: inline;
border: 2px solid black;
width: 200px;
}
Pas mal
Surprenant
Cool
Génial
Un élément avec la propriété display: inline
:
Quelques éléments HTML de type inline
par défaut : <a>
, <span>
, <img>
, <input>
, <textarea>
…
<section>
<p> Pas mal </p>
<p> Surprenant </p>
<p> Cool </p>
<p> Génial </p>
</section>
p {
display: inline-block;
border: 2px solid black;
width: 200px;
}
Pas mal
Surprenant
Cool
Génial
Un élément avec la propriété display: inline-block
:
inline
)inline
)block
)Il n’existe aucun élément HTML de type inline-block
par défaut.
<section>
<p> Pas mal </p>
<p> Surprenant </p>
<p> Cool </p>
<p> Génial </p>
</section>
p {
border: 2px solid black;
}
Pas mal
Surprenant
Cool
Génial
p {
border: 2px solid black;
padding: 5px;
}
Pas mal
Surprenant
Cool
Génial
p {
border: 2px solid black;
padding: 5px 0; /* vertical horizontal */
}
Pas mal
Surprenant
Cool
Génial
p {
border: 2px solid black;
padding: 5px 0 10px 30px; /*haut droite bas gauche*/
}
Pas mal
Surprenant
Cool
Génial
La propriété padding
définie l’espacement entre le contenu et la bordure d’un bloc.
<section>
<p> Pas mal </p>
<p> Surprenant </p>
<p> Cool </p>
<p> Génial </p>
</section>
section { border: 1px solid black; }
p {
border: 2px solid black;
}
Pas mal
Surprenant
Cool
Génial
section { border: 1px solid black; }
p {
border: 2px solid black;
margin: 10px;
}
Pas mal
Surprenant
Cool
Génial
section { border: 1px solid black; }
p {
border: 2px solid black;
margin: 10px 0; /* vertical horizontal */
}
Pas mal
Surprenant
Cool
Génial
section { border: 1px solid black; }
p {
border: 2px solid black;
margin: 10px 0 5px 30px; /*haut droite bas gauche*/
}
Pas mal
Surprenant
Cool
Génial
La propriété margin
définie l’espacement minimal entre un bloc et son parent/ses voisins.
Attention : les marges se superposent !
En CSS, les tailles peuvent être exprimées en :
px
cm
in
em
<html>
: rem
vmin
/vmax
Toujours privilégier les tailles relatives.
body { font-size: 20px; }
article { font-size: 2em; } /* 20px * 2 = 40px */
article p { font-size: .25em; } /* 40px * 0.25 = 10px */
article a { font-size: 2rem; } /* 20px * 2 = 40px */
article h3 { font-size: 1.5em; } /* 40px * 1.5 60px */
display
:
conteneur {
display: flex;
}
Note : Les slides suivantes se basent sur le guide de css-tricks.
Avec Flex, on considère un élément HTML parent, le conteneur, et tous ses enfants directs, les items.
<article class="conteneur">
<p> Alléchant </p>
<p> Bazinga </p>
<p> Cool </p>
<p> Dément </p>
</article>
.conteneur {
display: flex;
flex-direction: row;
}
Alléchant
Bazinga
Cool
Dément
.conteneur {
display: flex;
flex-direction: row-reverse;
}
Alléchant
Bazinga
Cool
Dément
.conteneur {
display: flex;
flex-direction: column;
}
Alléchant
Bazinga
Cool
Dément
.conteneur {
display: flex;
flex-direction: column-reverse;
}
Alléchant
Bazinga
Cool
Dément
On spécifie la direction des items avec flex-direction
:
row
/column
pour les avoir en ligne/en colonne.row-reverse
/column-reverse
pour les avoir en ligne/colonne en ordre inverse.<article class="conteneur">
<p> Alléchant </p>
<p> Bazinga </p>
<p> Cool </p>
<p> Dément </p>
<p> Excellent </p>
<p> Fantastique </p>
</article>
.conteneur {
display: flex;
flex-wrap: no-wrap;
}
Alléchant
Bazinga
Cool
Dément
Excellent
Fantastique
.conteneur {
display: flex;
flex-wrap: wrap;
}
Alléchant
Bazinga
Cool
Dément
Excellent
Fantastique
.conteneur {
display: flex;
flex-wrap: wrap-reverse;
}
Alléchant
Bazinga
Cool
Dément
Excellent
Fantastique
On décide du comportement en cas de dépassement avec la propriété flex-wrap
:
no-wrap
pour conserver le dépassement.wrap
pour un retour à la ligne vers le bas.wrap-reverse
pour un retour à la ligne vers le haut.<article class="conteneur">
<p> Alléchant </p>
<p> Bazinga </p>
<p> Cool </p>
<p> Dément </p>
</article>
.conteneur {
display: flex;
justify-content: flex-start;
}
Alléchant
Bazinga
Cool
Dément
.conteneur {
display: flex;
justify-content: flex-end;
}
Alléchant
Bazinga
Cool
Dément
.conteneur {
display: flex;
justify-content: center;
}
Alléchant
Bazinga
Cool
Dément
.conteneur {
display: flex;
justify-content: space-around;
}
Alléchant
Bazinga
Cool
Dément
.conteneur {
display: flex;
justify-content: space-between;
}
Alléchant
Bazinga
Cool
Dément
.conteneur {
display: flex;
justify-content: space-evenly;
}
Alléchant
Bazinga
Cool
Dément
On répartit l’espace libre dans le conteneur avec justify-content
:
flex-start
/flex-end
\(\rightarrow\) tout au début/à la fin.center
\(\rightarrow\) divisé entre début et fin.space-around
\(\rightarrow\) autant avant/après chaque élément.space-between
\(\rightarrow\) répartition entre les éléments (pas début/fin).space-evenly
\(\rightarrow\) répartition entre les éléments + début/fin.<article class="conteneur">
<p> Alléchant <br> Allaise </p>
<p> Bazinga </p>
<p> Cool <br> Chanmé </p>
<p> Dément </p>
</article>
.conteneur {
display: flex;
align-items: flex-start;
}
Alléchant
Allaise
Bazinga
Cool
Chanmé
Dément
.conteneur {
display: flex;
align-items: flex-end;
}
Alléchant
Allaise
Bazinga
Cool
Chanmé
Dément
.conteneur {
display: flex;
align-items: center;
}
Alléchant
Allaise
Bazinga
Cool
Chanmé
Dément
.conteneur {
display: flex;
align-items: stretch;
}
Alléchant
Allaise
Bazinga
Cool
Chanmé
Dément
.conteneur {
display: flex;
align-items: baseline;
}
Alléchant
Allaise
Bazinga
Cool
Chanmé
Dément
On aligne les items dans la direction secondaire avec align-items
:
flex-start
/flex-end
\(\rightarrow\) selon le début/la fin des itemscenter
\(\rightarrow\) selon le centre des items.stretch
\(\rightarrow\) pour étier au maximum les items.baseline
\(\rightarrow\) selon le texte contenu dans les items.<article class="conteneur">
<p> 1 - Alléchant </p>
<p> 2 - Bazinga </p>
<p> 3 - Cool </p>
<p> 4 - Dément </p>
</article>
.conteneur p:first-child { order: 1; }
.conteneur p:nth-child(2) { order: 2; }
.conteneur p:nth-child(3) { order: 20; }
.conteneur p:last-child { order: 99; }
1 - Alléchant
2 - Bazinga
3 - Cool
4 - Dément
.conteneur p:first-child { order: 3; }
.conteneur p:nth-child(2) { order: 1; }
.conteneur p:nth-child(3) { order: 4; }
.conteneur p:last-child { order: 2; }
1 - Alléchant
2 - Bazinga
3 - Cool
4 - Dément
.conteneur p:first-child { order: 0; }
.conteneur p:nth-child(2) { order: 1; }
.conteneur p:nth-child(3) { order: 0; }
.conteneur p:last-child { order: -1; }
1 - Alléchant
2 - Bazinga
3 - Cool
4 - Dément
L’ordre des item peut être modifié en associant un numéro aux items avec la propriété order
:
0
.<article class="conteneur">
<p>Alléchant </p>
<p>Bazinga </p>
<p>Cool </p>
<p>Dément </p>
</article>
.conteneur p:first-child { flex-grow: 0; }
.conteneur p:nth-child(2) { flex-grow: 0; }
.conteneur p:nth-child(3) { flex-grow: 0; }
.conteneur p:last-child { flex-grow: 0; }
Alléchant
Bazinga
Cool
Dément
.conteneur p:first-child { flex-grow: 1; }
.conteneur p:nth-child(2) { flex-grow: 0; }
.conteneur p:nth-child(3) { flex-grow: 0; }
.conteneur p:last-child { flex-grow: 0; }
Alléchant
Bazinga
Cool
Dément
.conteneur p:first-child { flex-grow: 1; }
.conteneur p:nth-child(2) { flex-grow: 0; }
.conteneur p:nth-child(3) { flex-grow: 0; }
.conteneur p:last-child { flex-grow: 1; }
Alléchant
Bazinga
Cool
Dément
.conteneur p:first-child { flex-grow: 1; }
.conteneur p:nth-child(2) { flex-grow: 1; }
.conteneur p:nth-child(3) { flex-grow: 1; }
.conteneur p:last-child { flex-grow: 1; }
Alléchant
Bazinga
Cool
Dément
.conteneur p:first-child { flex-grow: 3; }
.conteneur p:nth-child(2) { flex-grow: 1; }
.conteneur p:nth-child(3) { flex-grow: 1; }
.conteneur p:last-child { flex-grow: 1; }
Alléchant
Bazinga
Cool
Dément
La capacité d’un item à s’élargir est contrôlée avec flex-grow
:
0
, un item ne s’élargit pas.flex-grow
divisée par la somme de tous les flex-grow
.<article class="conteneur">
<p> A l l é c h a n t </p>
<p> B a z i n g a </p>
<p> C o o l </p>
<p> D é m e n t </p>
<p> E x c e l l e n t </p>
</article>
.conteneur p:first-child { flex-shrink: 0; }
.conteneur p:nth-child(2) { flex-shrink: 0; }
.conteneur p:nth-child(3) { flex-shrink: 0; }
.conteneur p:nth-child(4) { flex-shrink: 0; }
.conteneur p:last-child { flex-shrink: 0; }
A l l é c h a n t
B a z i n g a
C o o l
D é m e n t
E x c e l l e n t
.conteneur p:first-child { flex-shrink: 1; }
.conteneur p:nth-child(2) { flex-shrink: 1; }
.conteneur p:nth-child(3) { flex-shrink: 0; }
.conteneur p:nth-child(3) { flex-shrink: 0; }
.conteneur p:last-child { flex-shrink: 0; }
A l l é c h a n t
B a z i n g a
C o o l
D é m e n t
E x c e l l e n t
.conteneur p:first-child { flex-shrink: 1; }
.conteneur p:nth-child(2) { flex-shrink: 1; }
.conteneur p:nth-child(3) { flex-shrink: 0; }
.conteneur p:nth-child(4) { flex-shrink: 0; }
.conteneur p:last-child { flex-shrink: 1; }
A l l é c h a n t
B a z i n g a
C o o l
D é m e n t
E x c e l l e n t
.conteneur p:first-child { flex-shrink: 1; }
.conteneur p:nth-child(2) { flex-shrink: 1; }
.conteneur p:nth-child(3) { flex-shrink: 1; }
.conteneur p:nth-child(4) { flex-shrink: 1; }
.conteneur p:last-child { flex-shrink: 1; }
A l l é c h a n t
B a z i n g a
C o o l
D é m e n t
E x c e l l e n t
La capacité d’un item à se contracter est contrôlée avec flex-shrink
:
1
, un item se contracte s’il le peut.0
indique que l’item ne se contractera pas : il dépassera.<article class="conteneur">
<p> Alléchant <br> Allaise </p>
<p> Bazinga </p>
<p> Cool <br> Chanmé </p>
<p> Dément </p>
</article>
.conteneur { align-items: flex-start; }
.conteneur p:first-child { align-self: flex-start; }
.conteneur p:nth-child(2) { align-self: flex-start; }
.conteneur p:nth-child(3) { align-self: flex-start; }
.conteneur p:last-child { align-self: flex-start; }
Alléchant
Allaise
Bazinga
Cool
Chanmé
Dément
.conteneur { align-items: flex-start; }
.conteneur p:first-child { align-self: flex-start; }
.conteneur p:nth-child(2) { align-self: flex-start; }
.conteneur p:nth-child(3) { align-self: flex-start; }
.conteneur p:last-child { align-self: flex-end; }
Alléchant
Allaise
Bazinga
Cool
Chanmé
Dément
.conteneur { align-items: flex-start; }
.conteneur p:first-child { align-self: flex-start; }
.conteneur p:nth-child(2) { align-self: flex-start; }
.conteneur p:nth-child(3) { align-self: flex-start; }
.conteneur p:last-child { align-self: center; }
Alléchant
Allaise
Bazinga
Cool
Chanmé
Dément
.conteneur { align-items: flex-start; }
.conteneur p:first-child { align-self: flex-start; }
.conteneur p:nth-child(2) { align-self: flex-start; }
.conteneur p:nth-child(3) { align-self: flex-start; }
.conteneur p:last-child { align-self: baseline; }
Alléchant
Allaise
Bazinga
Cool
Chanmé
Dément
.conteneur { align-items: flex-start; }
.conteneur p:first-child { align-self: flex-start; }
.conteneur p:nth-child(2) { align-self: flex-start; }
.conteneur p:nth-child(3) { align-self: flex-start; }
.conteneur p:last-child { align-self: stretch; }
Alléchant
Allaise
Bazinga
Cool
Chanmé
Dément
align-items
de son conteneur, on utilise align-self
.align-items
.