Mise en page Holy Grail
Fait partie de la section Practical Frontend du Journey HTML de Coddy — leçon 26 sur 35.
La mise en page du Saint Graal est un modèle de conception web classique avec un en-tête en haut, un pied de page en bas et trois colonnes au milieu :
- Barre latérale gauche (navigation ou liens)
- Contenu principal (centre)
- Barre latérale droite (infos supplémentaires, publicités ou widgets)
On l'appelle le « Saint Graal » car il maintient le contenu principal au centre et il est très courant dans les blogs, les sites d'actualités et les tableaux de bord.
Comment ça fonctionne :
- Construit avec CSS Flexbox ou Grid.
- Le contenu principal s'agrandit pour remplir l'espace, tandis que les barres latérales ont des largeurs fixes ou plus petites.
- Sur les petits écrans, les barres latérales s'empilent au-dessus ou en dessous du contenu principal pour une meilleure lisibilité.
Exemple utilisant CSS Grid (simplifié)
HTML :
<div class="container">
<header>Header</header>
<nav>Navigation</nav>
<main>Main Content</main>
<aside>Sidebar</aside>
<footer>Footer</footer>
</div>CSS :
.container {
display: grid;
grid-template-areas:
"header header header"
"nav main aside"
"footer footer footer";
grid-template-columns: 200px 1fr 200px;
}
header { grid-area: header; }
nav { grid-area: nav; }
main { grid-area: main; }
aside { grid-area: aside; }
footer { grid-area: footer; }Défi
FacileCréez une mise en page Holy Grail avec les exigences suivantes :
- Utilisez une variable CSS appelée
--main-colorpour la couleur d'arrière-plan du header et du footer. - Définissez les valeurs grid-area pour
header,footer,nav,mainetaside. - Centrez le texte à l'intérieur du header et du footer.
Aide-mémoire
Le Holy Grail Layout (mise en page du Graal) est un modèle de conception web classique comprenant un en-tête, un pied de page et trois colonnes : une barre latérale gauche (navigation), le contenu principal (centre) et une barre latérale droite.
Structure :
<div class="container">
<header>Header</header>
<nav>Navigation</nav>
<main>Main Content</main>
<aside>Sidebar</aside>
<footer>Footer</footer>
</div>Implémentation avec CSS Grid :
.container {
display: grid;
grid-template-areas:
"header header header"
"nav main aside"
"footer footer footer";
grid-template-columns: 200px 1fr 200px;
}
header { grid-area: header; }
nav { grid-area: nav; }
main { grid-area: main; }
aside { grid-area: aside; }
footer { grid-area: footer; }Le contenu principal s'étend pour remplir l'espace disponible (1fr) tandis que les barres latérales ont des largeurs fixes. Sur les petits écrans, les barres latérales s'empilent généralement pour une meilleure lisibilité.
Essayez vous-même
<!DOCTYPE html>
<html>
<head>
<title>Holy Grail Layout</title>
<style>
:root {
--main-color: rgb(76, 175, 239); /* header/footer */
--accent-color: #ff9800; /* highlights */
--text-color: #333;
--heading-color: #222;
}
body {
margin: 0;
font-family: "Segoe UI", Arial, sans-serif;
background: #a9eef3;
color: var(--text-color);
}
.container {
display: grid;
grid-template-areas:
"header header header"
"nav main aside"
"footer footer footer";
grid-template-columns: 160px 1fr 180px;
min-height: 100vh;
gap: 1rem;
}
header {
color: white;
padding: 1.5rem;
}
footer {
color: white;
padding: 1rem;
}
nav {
background: #f4f4f4;
padding: 1rem;
border-radius: 8px;
box-shadow: 0 2px 6px rgba(0,0,0,0.1);
}
nav h3 {
margin-top: 0;
color: var(--heading-color);
}
nav ul {
list-style: none;
padding: 0;
}
nav li {
margin: 0.5rem 0;
}
nav a {
text-decoration: none;
color: var(--text-color);
padding: 0.3rem 0.5rem;
border-radius: 4px;
transition: background 0.2s;
}
nav a:hover {
background: var(--accent-color);
color: white;
}
main {
padding: 1.5rem;
background: #fff;
border-radius: 10px;
box-shadow: 0 2px 10px rgba(0,0,0,0.08);
}
main h2 {
margin-top: 0;
color: var(--heading-color);
}
aside {
background: #fff7e6;
padding: 1rem;
border-radius: 8px;
box-shadow: 0 2px 6px rgba(0,0,0,0.08);
}
aside h3 {
margin-top: 0;
color: var(--accent-color);
}
</style>
</head>
<body>
<div class="container">
<header>
<h1>Travel Adventures</h1>
<p>Explore the world, one journey at a time</p>
</header>
<nav>
<h3>Navigation</h3>
<ul>
<li><a href="#">Destinations</a></li>
<li><a href="#">Travel Tips</a></li>
<li><a href="#">Photo Gallery</a></li>
</ul>
</nav>
<main>
<h2>Featured Destination: Japan</h2>
<p>
Japan is a country where ancient traditions meet modern innovation.
From the serene temples of Kyoto to the bustling streets of Tokyo,
there’s something for every traveler.
</p>
<p>
Don’t forget to try sushi, explore cherry blossoms in spring,
and relax in an onsen hot spring bath.
</p>
</main>
<aside>
<h3>Quick Facts</h3>
<ul>
<li>Capital: Tokyo</li>
<li>Language: Japanese</li>
<li>Currency: Yen</li>
</ul>
</aside>
<footer>
<p>© 2025 Travel Adventures Blog</p>
</footer>
</div>
</body>
</html>
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Practical Frontend
3Thèmes et styles visuels
Les thèmes en CSSLes bases du mode sombre/clairCouleurs d'accentuation et mise en évidenceThématisation de la typographieDéfi récapitulatif6Modèles Responsive
Mise en page Holy GrailGrille de cartesMise en page Barre latérale + ContenuMise en page Écran scindéEn-tête / Pied de page StickyDéfi récapitulatif