🎓
Le navigateur dessine les éléments HTML sous forme de "boîtes".
Quatre zones composent chaque boîte : content, padding, border et margin.
.box {
box-sizing: content-box;
}valeur par défaut
Les valeurs de width et height s'appliquent Ă la zone de contenu.
Donc la "vraie" largeur de la boite :
width + padding + border
.box {
box-sizing: border-box;
}Les valeurs de width et height s'appliquent Ă la zone de bordure.
Donc la largeur totale de la boite :
width
Ă mettre dans tout fichier Reset CSS
*,
*::before,
*::after {
box-sizing: border-box;
}pour se réveiller en douceur !
display
display
Il existe deux types de boîtes :
Flux :
Taille par défaut :
Exemples (HTML) :
<div>, <p>, <h1>... <h6>, <ul>, <li>, <form>, <header>, <footer>, etc.
Exemples (CSS) :
display: block | flex | grid | table | list-item, etc.
⚠️ ParticularitĂ© : on ne peut pas appliquer de dimensions (width, height) Ă un Ă©lĂ©ment en display: inlineÂ
Flux :
Taille par défaut :
Exemples (HTML) :
<span>, <a>, <strong>, <em>, <img>, <input>, <button>, etc.
Exemples (CSS) :
display: inline | inline-block | inline-flex | inline-grid | inline-table, etc.
"une question de taille"
a {
width: 100px;
height: 100%;
padding: 5px;
}l'élément <a> est un élément "inline" donc ni width ni height ne s'appliquent 🤷‍♂️
a {
width: 100px;
height: 100%;
padding: 5px;
}p {
width: 100px;
padding: 5px;
}width + padding Ă droite + padding Ă gauche
p {
width: 100px;
padding: 5px;
}p {
width: 100px;
padding: 5px;
border: 1px;
margin: 10px;
}width + padding à droite + padding à gauche + border à droite + border à gauche (les margin sont à l'extérieur de la boîte)
p {
width: 100px;
padding: 5px;
border: 1px;
margin: 10px;
}p {
width: 100px;
padding: 10%;
border: 1em;
}difficile de calculer avec des unités différentes
p {
width: 100px;
padding: 10%;
border: 1em;
}p {
width: 100px;
padding: 10%;
border: 1em;
box-sizing: border-box;
}avec border-box, la largeur de la boîte correspond simplement à la valeur de width
p {
width: 100px;
padding: 10%;
border: 1em;
box-sizing: border-box;
}<div class="parent">
<h1>Je suis le titre</h1>
<p>Je suis un paragraphe</p>
</div>.parent
Je suis le titre
Je suis un paragraphe
h1 {background: pink;}
p {background: chocolate;}Je me place le plus haut possible à gauche dans mon parent, à la suite de l'élément précédent (et en plus je prends toute la largeur car je suis de type Bloc)
<div class="parent">
<h1>Je suis le titre</h1>
<p>Je suis un <span>paragraphe</span></p>
</div>.parent
Je suis le titre
h1 {background: pink;}
p {background: chocolate;}
span {background: lightgreen;}Je suis de type Inline donc ma taille est celle de mon contenu et je m'affiche à côté des éléments précédents
Je suis un paragraphe
<div class="parent">
<h1>Je suis le titre</h1>
<p>Je suis un <span>paragraphe</span>
<strong>important</strong>
</p>
</div>.parent
Je suis le titre
h1 {background: pink;}
p {background: chocolate;}
span {background: lightgreen;}
strong {background: yellow;}Je suis de type Inline donc ma taille est celle de mon contenu et je m'affiche à côté des éléments précédents
Je suis un paragraphe important
Le Flux d'un document décrit le comportement naturel d'affichage des éléments
(selon l'ordre d'apparition dans le HTML)
display
<div class="parent">
<div class="salade">salade</div>
<div class="tomate">tomate</div>
<div class="oignons">oignons frits et…</div>
<div class="choucroute">choucroute</div>
</div>.parent
salade
tomate
oignons frits etÂ
petits lardons
choucroute
....parent
salade
tomate
oignons frits etÂ
petits lardons
choucroute
Pour le moment, tous les éléments sont placés naturellement dans le Flux les uns sous les autres puisque ce sont des <div> (donc de type Bloc)
.tomate {
position: absolute;
}.parent
salade
tomate
oignons frits etÂ
petits lardons
choucroute
L'élément .tomate passe en position absolute
exemple : positionnement absolu
.tomate {
position: absolute;
top: 0;
}.parent
salade
tomate
oignons frits etÂ
petits lardons
choucroute
L'Ă©lĂ©ment .tomate passe en position absolute,Â
placé en coordonnée top: 0
exemple : positionnement absolu
.parent {
position: relative;
/* je suis référent de tomate */
}
.tomate {
position: absolute;
top: 0;
}.parent
salade
tomate
oignons frits etÂ
petits lardons
choucroute
L'Ă©lĂ©ment .tomate passe en position absolute,Â
placé en coordonnée top: 0... de son référent .parent
exemple : positionnement absolu
position: absolute
top , right , bottom et left
position: relative (pour simplifier)du positionnement Absolu
propriétés : display et position
Fil rouge