Les bases du CSS
Syntaxe, sélecteurs, modèle de boîte
Ouvrir le cours
La propriété display contrôle comment un élément est affiché et détermine le type de boîte généré par l’élément.
La propriété CSS display contrôle comment un élément est affiché et détermine le type de boîte généré par l’élément.
display: block
display: inline
display: inline-block
display: flex
display: grid
display: none
Chaque élément crée un contexte qui détermine comment ses enfants sont disposés.
Block : vertical (haut en bas). Inline : horizontal (gauche à droite).
Flex et Grid définissent des règles pour le conteneur ET les éléments enfants.
display
display: ;
Testez les différentes valeurs de display : les trois éléments changent de disposition sans que leur balisage bouge.
Les deux modes d’affichage fondamentaux qui définissent le comportement de base des éléments HTML.
css
.block-element {
display: block;
width: 100%;
padding: 1rem;
margin-bottom: 0.5rem;
}
css
.inline-element {
display: inline;
padding: 0.25rem 0.5rem;
margin: 0 0.25rem;
}
css
.inline-block-element {
display: inline-block;
width: 150px;
height: 80px;
margin: 0.5rem;
vertical-align: top;
}
Un système de mise en page unidimensionnel qui offre un contrôle puissant sur l’alignement et la distribution de l’espace.
flex-direction
justify-content
align-items
flex-wrap
Aperçu en temps réel
CSS actuel
Les quatre réglages se combinent : c’est leur assemblage qui fait la mise en page, pas chacun pris à part.
css
.flex-container {
display: flex;
flex-direction: row | column;
justify-content: flex-start | center | space-between;
align-items: stretch | center | flex-start;
flex-wrap: nowrap | wrap;
gap: 1rem;
}
css
.flex-item {
flex: 1; /* grow shrink basis */
flex-grow: 1; /* peut grandir */
flex-shrink: 1; /* peut rétrécir */
flex-basis: auto; /* taille de base */
align-self: center; /* alignement individuel */
order: 2; /* ordre d'affichage */
}
Un système de mise en page bidimensionnel qui permet de créer des layouts complexes avec un contrôle précis des lignes et colonnes.
css
.grid-container {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: auto;
gap: 1rem;
}
1fr — fraction de l’espace disponible auto — selon le contenu 100px — taille fixe minmax(100px, 1fr) — taille flexible avec limites css
.layout-grid {
display: grid;
grid-template-columns: 200px 1fr 200px;
grid-template-rows: auto 1fr auto;
grid-template-areas:
"header header header"
"sidebar main aside"
"footer footer footer";
gap: 1rem;
min-height: 100vh;
}
.header { grid-area: header; }
.sidebar { grid-area: sidebar; }
css
.auto-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 1.5rem;
}
auto-fit — s’étend pour remplir l’espace auto-fill — maintient la taille minimum minmax() — taille min et max Quand utiliser block, inline, Flexbox ou Grid ? Guide pratique pour faire le bon choix selon votre contexte.
| Propriété | Cas d’usage | Dimensions | Complexité | Support |
|---|---|---|---|---|
| block | Contenu, sections, divs | 1D Vertical | Simple | Universel |
| inline | Texte, liens, spans | Flux de texte | Simple | Universel |
| inline-block | Boutons, navigation | Inline + Block | Moyen | Excellent |
| flex | Barres, alignements | 1D Flexible | Avancé | Moderne |
| grid | Layouts, grilles | 2D Complet | Expert | Récent |
Mettez en pratique vos connaissances sur les propriétés display avec ces exercices progressifs et concrets.
Créez une barre de navigation avec logo à gauche, menu au centre, et bouton connexion à droite.
Créez un layout de blog complet avec header, sidebar, contenu principal et footer en utilisant CSS Grid.
html
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Exercices Display CSS</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: Arial, sans-serif;
line-height: 1.6;
}
/* ========== EXERCICE 1 : NAVIGATION ========== */
.navbar {
/* TODO: Utilisez Flexbox pour la navigation */
background: #333;
color: white;
padding: 1rem;
}
.logo {
font-weight: bold;
font-size: 1.2rem;
}
.nav-menu {
/* TODO: Menu centré */
list-style: none;
}
.nav-menu li {
/* TODO: Items en ligne */
margin: 0 1rem;
}
.nav-menu a {
color: white;
text-decoration: none;
}
.nav-button {
background: #007bff;
color: white;
border: none;
padding: 0.5rem 1rem;
border-radius: 4px;
cursor: pointer;
}
/* ========== EXERCICE 2 : BLOG LAYOUT ========== */
.blog-layout {
/* TODO: CSS Grid avec areas */
min-height: 100vh;
}
.blog-header {
/* TODO: grid-area: header */
background: #f8f9fa;
padding: 2rem;
text-align: center;
}
.blog-sidebar {
/* TODO: grid-area: sidebar */
background: #e9ecef;
padding: 1rem;
}
.blog-main {
/* TODO: grid-area: main */
background: white;
padding: 2rem;
}
.blog-footer {
/* TODO: grid-area: footer */
background: #343a40;
color: white;
padding: 1rem;
text-align: center;
}
/* ========== RESPONSIVE ========== */
@media (max-width: 768px) {
.navbar {
/* TODO: Navigation verticale sur mobile */
}
.blog-layout {
/* TODO: 1 colonne sur mobile */
}
}
/* ========== STYLES HELPER ========== */
.article {
background: #f8f9fa;
margin-bottom: 1rem;
padding: 1rem;
border-radius: 4px;
}
.sidebar-widget {
background: white;
margin-bottom: 1rem;
padding: 1rem;
border-radius: 4px;
}
</style>
</head>
<body>
<!-- EXERCICE 1 : NAVIGATION -->
<nav class="navbar">
<div class="logo">MonSite</div>
<ul class="nav-menu">
<li><a href="#">Accueil</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">À propos</a></li>
<li><a href="#">Contact</a></li>
</ul>
<button class="nav-button">Connexion</button>
</nav>
<!-- EXERCICE 2 : BLOG LAYOUT -->
<div class="blog-layout">
<header class="blog-header">
<h1>Mon Blog Technique</h1>
<p>Découvrez les dernières tendances en développement web</p>
</header>
<aside class="blog-sidebar">
<div class="sidebar-widget">
<h3>Catégories</h3>
<ul>
<li>HTML/CSS</li>
<li>JavaScript</li>
<li>PHP</li>
<li>Frameworks</li>
</ul>
</div>
<div class="sidebar-widget">
<h3>Tags Populaires</h3>
<p>React, Vue.js, CSS Grid, Flexbox, API</p>
</div>
</aside>
<main class="blog-main">
<article class="article">
<h2>Maîtriser CSS Grid en 2024</h2>
<p>CSS Grid révolutionne la façon dont nous créons des layouts web. Dans cet article, nous explorons les techniques avancées...</p>
</article>
<article class="article">
<h2>Flexbox vs CSS Grid : Quand utiliser quoi ?</h2>
<p>Comprendre les différences entre Flexbox et CSS Grid est essentiel pour tout développeur front-end moderne...</p>
</article>
<article class="article">
<h2>Les nouvelles propriétés CSS qui changent tout</h2>
<p>Container queries, :has(), aspect-ratio... Découvrez les propriétés CSS qui transforment notre approche du design...</p>
</article>
</main>
<footer class="blog-footer">
<p>© 2024 Mon Blog Technique - Tous droits réservés</p>
</footer>
</div>
</body>
</html>
Vous savez choisir entre block, inline, inline-block, flex et grid — et surtout les combiner. Grid pour la structure de la page, Flex pour l’intérieur des composants.
Syntaxe, sélecteurs, modèle de boîte
Ouvrir le coursAligner sur un axe
Ouvrir le coursComposer en deux dimensions
Ouvrir le coursS’adapter à chaque écran
Ouvrir le cours