Le code CSS est un langage dit descriptif. Non obligatoire bien qu’essentiel sur une page web, il a pour but de mettre en forme et d’animer des balises HTML. Son but est uniquement visuel, à contrario du HTML qui a un but sémantique.
Voyons dans cet article comment disposer nos blocs HTML à l’aide du CSS
Sommaire
Disposition par défaut
Balises parents et fils
Ici, on part d’une situation avec 1 bloc section conteneur (ou parent) et 3 blocs div fils (ou enfants). Par défaut, les fils vont former un empilement de haut en bas.

<!-- Conteneur - Extrait de code HTML -->
<section>
<!-- Eléments fils -->
<div id="bloc1"> Elément 1 </div>
<div id="bloc2"> Elément 2 </div>
<div id="bloc3"> Elément 3 </div>
</section>
<!DOCTYPE html>
<html lang="fr">
<!-- Ce bloc gère l'entête de la page web -->
<head>
<meta charset="utf-8">
<title>Je positionne mes blocs</title>
<link rel="stylesheet" href="./styles.css" />
</head>
<!-- Ce bloc gère le contenu de la page web -->
<body>
<!-- Conteneur -->
<section>
<!-- Eléments fils -->
<div id="bloc1"> Elément 1 </div>
<div id="bloc2"> Elément 2 </div>
<div id="bloc3"> Elément 3 </div>
</section>
</body>
</html>/* Le fichier CSS doit être nommé styles.css et mis dans le même dossier que le fichier HTML */
section {
border: solid;
border-width: 2px;
}
#bloc1 {
background-color: rgb(255, 0, 0, 0.5);
}
#bloc2 {
background-color: rgb(0, 255, 0, 0.5);
}
#bloc3 {
background-color: rgb(0, 0, 255, 0.5);
}
Familles de balises
Il existe plusieurs familles de balises html dont les deux principales sont :
- Les balises de rendu CSS bloc (block)
- Les balises de rendu CSS en-ligne (inline)

Les balises block se placent par défaut l’une en dessous de l’autre. Elles occupent toute la longueur de l’espace du « block » parent dans lequel elles sont. Une balise « block » peut contenir d’autres balises « block » ou « inline ». On parlera ici essentiellement de ces dernières.
html, body, div, p, h1, ..., h6, ul, ol, table, pre, ...
Les balises inline se placent par défaut l’un à côté de l’autre dans le « block » dans lesquelles elles sont pour rester dans le texte. Leur taille est déterminée par le texte ou l’élément qu’elles contiennent. Une balise « inline » ne peut contenir que d’autres balises « inline »
span, em, strong, img, br, input, ...
Positionnement
Le positionnement manuel
Les propriétés CSS permettant de définir la position d’un « block » par rapport à son conteneur, la page web, ou la fenêtre du navigateur sont les suivantes :
position(défaut : position: static;) et les propriétés annexestop, left, bottom, right(défaut : top: 0; left: 0;)z-index(défaut : z-index: 0;)
La propriété CSS position dans un bloc détermine le cadre par rapport auquel il sera positionné et à partir duquel sera appliqué les propriétés annexes. La valeur de la propriété position pour positionner notre bloc fils par rapport au cadre …
- … de son conteneur est:
position: static;. Notre bloc se situe « en dessous de » la positionstaticdu bloc fils précédent ayant la valeurstaticourelative. Les propriétés annexes sont ignorées dans ce cas.position: relative;
- … de la page web :
<strong><code>position: absolute; - … de la fenêtre du navigateur est :
position: fixed;
Les propriétés annexes top, left, bottom, right indiquent la distance du bloc par rapport au cadre de référence. La propriété annexe z-index indique l’ordre d’apparition des blocs :

Le positionnement automatique
Un site web peut contenir beaucoup de blocs. Aussi, il peut être intéressant dans certains cas de demander un positionnement automatique. Aussi, la propriété CSS display sur un bloc détermine à la fois :
- l’affichage du bloc
- l’affichage de ses blocs fils
Par défaut, la propriété display sur une balise …
- … block a une valeur
display: block; - … inline a une valeur
display: inline; - … non visible (comme la balise
script) a une valeurdisplay: none;
La valeur display: flex sur un conteneur pour agencer ses fils intègre énormément de possibilités (merci au travail d’openclassroom). Aussi, on va se centrer sur cette valeur, ignorer toutes les autres, et utiliser les propriétés annexes :
flex-direction: Sélection de l’axe d’alignement prioritaire (ligne ou colonne)flex-wrap: Activation du retour à l’axe secondaire des filsjustify-content: Répartition des fils sur l’axe prioritairealign-content: Répartition des fils sur l’axe secondaire
On va également regarder deux propriétés avec leur valeur qu’il est possible d’appliquer sur les fils du conteneur :
order: n;: réagencement de l’ordre des blocs filsflex: n: Ordre d’occupation de l’espace par le bloc fils
La propriété CSS flex-direction laisse le choix de l’axe principal d’alignement. Elle permet d’aligner les fils en ligne ou en colonne. Elle accepte les valeurs suivantes.
row: agencement des fils en ligne (par défaut),column: agencement des fils en colonne,row-reverse: agencement des fils inversé en ligne,column-reverse: agencement des fils inversé en colonne,
Exemple de modification du code de départ :

section {
border: solid;
border-width: 2px;
display: flex;
flex-direction: row;
}La propriété CSS flex-wrap autorise les fils à aller à la ligne / colonne suivante s’il n’y a plus de place sur la ligne / colonne actuelle. Elle accepte les valeurs suivantes :
nowrap: pas de retour à la ligne (par défaut)wrap: les fils vont à la ligne / colonne suivante si besoinwrap-reverse: les fils vont à la ligne / colonne précédente si besoin
Exemple de modification du code de départ :

section {
border: solid;
border-width: 2px;
display: flex;
flex-direction: row;
flex-wrap: wrap;
}La propriété CSS justify-content gère l’espacement entre les fils sur l’axe principal (dans l’exemple ci-dessous la ligne). Elle accepte les valeurs suivantes :
flex-start: Les fils sont collés et alignés au début (par défaut)flex-end: Les fils sont collés et alignés à la fincenter: Les fils sont collés et alignés au centrespace-between: les fils sont espacés jusqu’au bords des axesspace-around: les fils sont espacés sur l’axe
Exemple de modification du code de départ (pour le dernier cas) :

section {
border: solid;
border-width: 2px;
display: flex;
flex-direction: row;
justify-content: space-around;
}La propriété CSS align-items est similaire à justify-content sur l’axe secondaire. Cependant, les valeurs qu’elle accepte, bien que de même nom, ont un fonctionnement légèrement différents :
flex-start: Les fils sont espacés et alignés au début (par défaut)flex-end: Les fils sont espacés et alignés à la fincenter: Les fils sont espacés et alignés au centrestretch: les fils sont étirés sur tout l’axe
Taille et bordures
Les dimensions
Les propriétés CSS width, height décrivent respectivement la largeur et la hauteur du bloc. Les valeurs acceptées sont des tailles.
Les bordures et les marges d’un bloc

Les propriétés CSS margin, border, padding définissent les marges et la bordure d’un bloc :
margindonne la taille de la marge extérieur (à la bordure). Elle englobe les propriétés suivantes :margin-bottom: taille de la marge en basmargin-left: taille de la marge à gauchemargin-right: taille de la marge à droitemargin-top: taille de la marge en hautmargin: taille global de la marge
paddingdonne la taille de la marge intérieur (entre la bordure et le contenu). Elle englobe les propriétés suivantes :padding-bottom: taille de la marge en bas
padding-left: taille de la marge à gauchepadding-right: taille de la marge à droitepadding-top: taille de la marge en haut
borderdonne le style et la taille de la bordure. Elle englobe les propriétés suivantes :border-width: taille global de la bordureborder-color: couleur de la bordureborder-style: Style de la bordure. Elle accepte les valeurs :none,solid,dotted,dashed,double,groove,ridge,inset,outset

border-style)Note :
border-style: none; signifie « pas de bordures »