Indépendantes de la taille d’écran et des paramètres utilisateur.
Quel problème voyez-vous ?
Elles permettent de dimensionner le texte et le contenu[1].
absolues
relatives
Indépendantes de la taille d’écran et des paramètres utilisateur.
Quel problème voyez-vous ?
.conteneur {
width: 800px; /* Largeur fixe */
margin: 20px auto;
padding: 20px;
background-color: lightgray;
}
.texte {
font-size: 18px; /* Taille fixe */
padding: 10px; /* Padding fixe */
margin: 15px; /* Marge fixe */
background-color: white;
border: 2px solid black;
}<section class="conteneur">
<p class="texte">Ce texte utilise px pour la taille de police, paddin et margin. Essaye de zoomer ou de l'afficher
sur un écran plus
petit. Ca ne s'ajustera pas !
</p>
</section>Basées sur la police de l’élément racine (<body>)
rem
Basée sur la police de l’élément conteneur
em
remUnité de mesure relative à la taille par défaut du texte (à la racine).
2rem signifie 2 fois la taille de texte par défaut.
Si la font-size au niveau du body est 16px, alors
1.5rem sera
24px (1.5 * 16)
2rem sera
32px (16 * 2)
emUnité de mesure relative à la taille courante du texte de l’élément parent.
<body style="font-size: 10px">
Le texte par défaut fait 10px.
<p style="font-size: 1.5em">
Premier paragraphe (1)
</p>
<section style="font-size: 2em">
<h2 style="font-size: 2em">
Titre de la section (2)
</h2>
<p>
Paragraphe de section (3)
</p>
<footer style="font-size: 0.5em">
Texte du pied de page de section (4)
</footer>
</section>
</body>Quelle taille de texte ?
| 1 | Premier paragraphe : (10px * 1.5 = 15px) |
| 2 | Titre de la section : (10px * 2 * 2 = 40px) |
| 3 | Paragraphe de section : (10px * 2 * = 20px) |
| 4 | Texte du pied de page de section : (10px * 2 * 0.5 = 10px) |
%Quand appliqué à du texte.
Unité de mesure relative à la taille courante du texte de l’élément parent.
<body style="font-size: 20px">
La taille du texte de base est 20px.
<p style="font-size: 150%">
Dans le paragraphe 1, (1)
les <em style="font-size: 200%">termes importants</em> (2)
sont plus gros.
</p>
<p style="font-size: 200%">
Dans le paragraphe 2, (3)
les termes <s style="font-size: 50%">qui ne sont plus pertinents </s> (4)
sont plus petits.
</p>
</body>Quelle taille de texte ?
| 1 | "Dans le paragraphe 1" : (20px * 150% = 30px) |
| 2 | "termes importants" : (20px * 150% * 200% = 60px) |
| 3 | "Dans le paragraphe 2" : (20px * 200% = 40px) |
| 4 | "qui ne sont plus pertinents" : (20px * 200% * 50% = 20px) |
em et pourcent
|
/* La taille de police est 16px par défaut, donc 1rem = 16px */
body {
font-size: 1rem; /* Ca passe à l'échelle avec les paramètres utilisateur */
line-height: 1.6;
font-family: Arial, sans-serif;
}
.conteneur {
margin: 2rem auto;
padding: 2rem;
border-radius: 10px;
background-color: lightgray;
}
h1 {
font-size: 2rem; /* 32px si la taille par défaut est 16px */
margin-bottom: 1rem;
}
p {
font-size: 1.25rem; /* 20px */
}
.bouton {
display: inline-block;
font-size: 1.5rem;
padding: 0.75rem 1.5rem;
background-color: darkblue;
color: white;
border: none;
border-radius: 5px;
cursor: pointer;
text-decoration: none;
}
.bouton:hover {
background-color: navy;
}<section class="conteneur">
<h1>Texte zoomable et accessible avec rem</h1>
<p>Ce texte s'ajuste automatiquement si l'utilisateur change leur taille de police par défaut dans les paramètres
par défaut du navigateur.</p>
<a href="#" class="bouton">Essaye d'augmenter la taille de ta police!</a>
</section> body{
font-family: Arial, sans-serif;
background-color: #F4F4F4;
text-align: center;
padding: 2rem;
}
.conteneur {
font-size: 16px; /* taille de texte de base */
background-color: white;
padding: 2rem;
border-radius: 8px;
box-shadow: 0 4px 10px rgba(0,0,0,0.1);
max-width: 400px;
margin: auto;
}
button {
font-size: 1.2em; /* 1.2 fois la taille de texte du parent (16px * 1.2 = 19.2px */
padding: 1em 2em; /* Le padding passe à l'échelle avec la taille de texte */
background-color: darkblue;
color: white;
border: none;
border-radius: 5px;
cursor: pointer;
}
.large-conteneur {
font-size: 20px; /* Maintenant le padding, texte vont passer à l'échelle */
margin-top: 1rem;
}<section class="conteneur">
<h2>Conteneur par défaut</h2>
<button>Clique moi</button>
</section>
<section class="conteneur large-conteneur">
<h2>Conteneur mis à l'échelle</h2>
<button>Clique moi</button>
</section>Certaines propriétés peuvent être raccourcies [1].
body{
margin-top: 0;
margin-right: 0;
margin-left: 0;
margin-bottom: 0;
}body{
margin: 0;
}Certains éditeurs de code/plugins vous permettent de passer d’un style à l’autre |

De l’extérieur vers l’intérieur
margin : marge externe
border : bordure
padding : remplissage
contenu
Le contenu "réel" de l’élément
Dimensions
largeur width du contenu
hauteur height du contenu

padding - Zone de remplissagePropriétés padding-* [1]
padding-top
padding-bottom
padding-left
padding-right
padding : propriété raccourcie
Expérimental (basé sur la direction du texte)
padding-block-start, padding-block-end
padding-block [2]
padding-inline-start, padding-inline-end
padding-inline [2]
section {
padding-top: 1px;
padding-right: 2px;
padding-bottom: 3px;
padding-left: 4px;
padding: 1px 2px 3px 4px;
}section {
padding-top: 2rem;
padding-right: 3rem;
padding-bottom: 2rem;
padding-left: 3rem;
padding: 2rem 3rem;
}section {
padding-top: 3rem;
padding-right: 3rem;
padding-bottom: 3rem;
padding-left: 3rem;
padding: 3rem;
}border - Zone de bordurePropriétés border-*-width [1]
border-top-width
border-bottom-width
border-left-width
border-right-width
border : propriété raccourcie
Autres propriétés de bordure [2]
border-*-style
border-*-color
border-radius (pour arrondir)
section{
/* style */
border: solid;
/* largeur | style */
border: 2px dotted;
/* style | couleur */
border: outset #f33;
/* largeur | style | couleur */
border: medium dashed green;
/* Valeurs globales */
border: inherit;
border: initial;
border: unset;
border-radius: 1rem;
}border-*-width - Valeurs/* Valeurs avec un mot-clé */
border-width: thin;
border-width: medium;
border-width: thick;
/* Une largeur pour chaque côté */
/* Valeur de type <length> */
border-width: 5px;
/* côtés haut et bas | côtés gauche et droit */
border-width: 2px 1.5em;
/* côté haut | côtés gauche et droit | côté bas */
border-width: 1px 2em 1.5cm;
/* haut | droite | bas | gauche */
border-width: 1px 2em 0 4rem;
/* Valeurs globales */
border-width: inherit;
border-width: initial;
border-width: unset;margin - Zone de margePropriétés margin-* [1]
margin-top
margin-bottom
margin-left
margin-right
margin : propriété raccourcie
Basé sur la direction du texte
margin-block-start, margin-block-end
margin-block [2]
margin-inline-start, margin-inline-end
margin-inline [2]
/* La propriété s'applique aux quatre côtés */
margin: 1em;
/* vertical | horizontal */
margin: 5% auto;
/* haut | horizontal | bas */
margin: 1em auto 2em;
/* haut | droit | bas | gauche */
margin: 2px 1em 0 auto;
/* Valeurs globales */
margin: inherit;
margin: initial;
margin: unset;Une méthode traditionnelle pour aligner du contenu en bloc (on verra d’autres méthodes avec flexbox par la suite).
Pour un élément de bloc avec une largeur fixe
Appliquer margin-left: auto alignera le bloc à droite [1]
Appliquer margin-right: auto alignera le bloc à droite [2]
Appliquer margin-left: auto et margin-right: auto alignera le bloc au centre [3]
section{
border: 1px solid;
max-width: 15rem;
margin-top:1rem;
margin-bottom:1rem;
}
.align-left{
margin-right: auto;
}
.align-right{
margin-left: auto;
}
.align-center{
margin-left: auto;
margin-right: auto;
}<body>
<section class="align-left">Section A</section>
<section class="align-right">Section B</section>
<section class="align-center">Section C</section>
</body>
Dans certains cas les marges verticales sont fusionnées [1].

section {
width: 160px;
height: 80px;
padding: 20px;
border: 8px solid red;
background: yellow;
}
.content-box {
box-sizing: content-box;
/* Largeur totale : 160px + (2 * 20px) + (2 * 8px) = 216px
Hauteur totale : 80px + (2 * 20px) + (2 * 8px) = 136px
Largeur de la boîte de contenu : 160px
Hauteur de la boîte de contenu : 80px */
}<section class="content-box">Content box</section>
box-sizing: content-box; est la valeur par défaut.
section {
width: 160px;
height: 80px;
padding: 20px;
border: 8px solid red;
background: yellow;
}
.border-box {
box-sizing: border-box;
/* Largeur totale : 160px
Hauteur totale : 80px
Largeur de la boîte de contenu : 160px - (2 * 20px) - (2 * 8px) = 104px
Hauteur de la boîte de contenu : 80px - (2 * 20px) - (2 * 8px) = 24px */
}<section class="border-box">Border box</section>
Il est souvent utile de définir box-sizing à border-box aux éléments de mise en page. |
displaydisplay [1] [2]définit le type d’affichage de l’élément
none : le contenu n’apparait pas
block : force l’élément à devenir un élément de bloc (ex. comme un <div>)
inline : force l’élément à devenir un élement en ligne (ex. comme un <span>)
inline-block : donne les propriétés de inline tout en permettant de définir
flex / inline-flex : l’élement devient un conteneur de boîte flexible (flexbox) [3]
grid / inline-grid: l’élément devien un conteneur de grille [3]

Un débordement a lieu (overflow) quand la taille du contenu dépasse [1] [2] celle du contenant (par ex. si des barres de défilement apparaissent).
Propriétés
overflow-x : dépassement sur l’axe horizontal
overflow-y : dépassement sur l’axe vertical
overflow : raccourcie (combine x et y)
Valeurs les plus courantes
visible : (défaut) le contenu qui dépasse de la boite peut s’afficher en dehors de celle-ci
scroll: affiche toujours une barre de défilement
auto : (geré par le navigateur) le plus souvent, affiche une barre de défilement seulement si le contenu dépasse de la boîte
hidden : le contenu qui dépasse n’est pas visible (pas de barre de défilement)
Propriétés déterminant l’arrière-plan d’un élément (couleur, image, origine, taille, répétition, etc.).
background-color : couleur de l’arrière-plan
background-image : image de l’arrière-plan (utilisé avec la fonction css url())
background-origin : orgine de l’arrière-plan dans le modèle de boîte
background-attachment : détermine si l’image d’arrière-plan est fixée ou non
background-clip : la façon dont l’arrière-plan s’étend dans le modèle de boîte
background-position : position des images d’arrière-plan relative à l’origine
background-repeat : si et comment l’image d’arrière-plan se répète
background-size : taille des images d’arrière-plan