Félicitations ! Vous avez parcouru les bases essentielles du développement web front-end. Cette septième séance est dédiée à la synthèse de tous les concepts que nous avons explorés jusqu'à présent. L'objectif est de vous aider à relier les points, à comprendre comment ces outils fonctionnent ensemble, et à renforcer votre capacité à construire des interfaces web complètes et responsives.
Nous allons passer en revue les éléments clés de la structure HTML, des sélecteurs CSS, du modèle de boîte, des propriétés de display, des systèmes de mise en page Flexbox et Grid, et des différentes méthodes de positionnement.
<header>, <nav>, <main>, <footer>, <section>, <article>, etc.)..ma-classe), d'ID (#mon-id), et les sélecteurs combinés.content, padding, border et margin. L'importance de box-sizing: border-box;.display: block;, inline; et inline-block;.display: grid;.grid-template-columns, grid-template-rows, gap, et grid-area pour le placement précis.display: flex;.flex-direction, justify-content, align-items, flex-wrap, et les propriétés des éléments flex (flex-grow, flex-shrink, flex-basis).position: static, relative, absolute, fixed, et sticky.z-index pour gérer l'ordre d'empilement des éléments qui se chevauchent.Rappelez-vous que tout élément HTML s'inscrit dans un flux normal par défaut. Le positionnement et les modèles de boîte modifient ce flux. Flexbox et Grid sont des outils puissants pour réorganiser ce flux de manière structurée.
Il est crucial de comprendre que Grid et Flexbox ne sont pas des alternatives l'un à l'autre, mais des compléments. Utilisez Grid pour la mise en page globale (macro-layout) de votre page, définissant les grandes zones (en-tête, contenu principal, barres latérales, pied de page). Utilisez Flexbox à l'intérieur de ces zones pour organiser le contenu de manière unidimensionnelle (micro-layout), comme les éléments d'une barre de navigation, les cartes d'une galerie, ou les champs d'un formulaire.
/* Exemple de combinaison Grid et Flexbox */
.page-layout { /* Conteneur principal avec Grid */
display: grid;
grid-template-columns: 1fr 3fr;
grid-template-areas: "nav main";
}
.main-content { /* Une zone de la grille, qui est elle-même un conteneur Flex */
grid-area: main;
display: flex;
flex-wrap: wrap;
gap: 20px;
}
.card { /* Élément Flex à l'intérieur du contenu principal */
flex: 1 1 250px;
border: 1px solid #A5B4FC;
padding: 15px;
}
N'oubliez pas que toutes ces techniques doivent être utilisées en gardant à l'esprit le Responsive Design. Les Media Queries vous permettent d'adapter votre mise en page et vos styles à différentes tailles d'écran, garantissant une expérience utilisateur optimale sur tous les appareils. La philosophie Mobile-First est une excellente approche pour commencer.
/* Styles Mobile-First par défaut */
.page-layout {
grid-template-columns: 1fr; /* Une seule colonne pour mobile */
grid-template-areas: "header" "main" "nav" "footer";
}
@media screen and (min-width: 768px) {
.page-layout {
grid-template-columns: 200px 1fr; /* Deux colonnes pour desktop */
grid-template-areas: "header header" "nav main" "footer footer";
}
}
Les propriétés de positionnement (relative, absolute, fixed, sticky) sont parfaites pour les ajustements fins ou les éléments qui doivent se superposer au contenu (comme les icônes, les badges, les modales, les barres de notification). N'oubliez pas le rôle de z-index pour gérer l'ordre des couches.
/* Exemple de positionnement absolu pour un badge */
.card {
position: relative; /* Le parent doit être positionné */
}
.badge {
position: absolute;
top: -10px;
right: -10px;
background-color: #DC2626; /* red-600 */
color: white;
padding: 5px 10px;
border-radius: 9999px; /* rounded-full */
z-index: 10;
}
Pour ce TP final de synthèse, vous allez combiner tous les concepts appris pour construire une page web complète et responsive, en utilisant notre Design System.
Construire une page web responsive avec une structure de base (en-tête, navigation, contenu principal, pied de page) en utilisant CSS Grid, et en organisant le contenu interne du corps principal avec Flexbox. Intégrez un élément positionné de manière absolue et une barre fixe ou sticky, le tout en respectant notre Design System.
tp-seance7-synthese avec index.html et styles.css.index.html, en utilisant des balises sémantiques pour la structure.styles.css :
box-sizing: border-box; universellement.styles.css global (ex: var(--color-primary), var(--space-4), var(--font-size-base), var(--shadow-md)).display: grid; sur le <body> (ou un conteneur principal) pour définir les zones de l'en-tête, du contenu principal et du pied de page.grid-template-rows et grid-template-areas appropriés.<nav>, utilisez display: flex; pour organiser les liens horizontalement.justify-content pour espacer les liens.<main>, utilisez display: flex; et flex-wrap: wrap; pour afficher des "cartes" de contenu.<div class="card">) devrait avoir un flex-basis pour une largeur de base et un flex-grow.flex-direction: column; pour empiler le titre, l'image et le texte.position: fixed; dans le coin inférieur droit de la fenêtre d'affichage.z-index élevé.@media queries pour adapter le layout Grid et le comportement Flexbox des cartes pour les écrans mobiles (ex: une seule colonne pour Grid, les cartes prennent toute la largeur).index.html dans le navigateur. Testez la réactivité en redimensionnant la fenêtre. Vérifiez que tous les éléments sont bien positionnés et que les différents concepts de mise en page interagissent correctement.