Bâtir une Card avec Flexbox
Voici la procédure complète, du plus petit élément au plus global, afin d’obtenir la structure finale de la carte. L’idée est de partir des contenus internes et d’enrichir progressivement la mise en page à l’aide de Flexbox en indiquant clairement les étapes et l’organisation.
N’hésitez pas à mettre des couleurs de fond pour vous repérer. Le Design Graphique réel sera fait uniquement à la fin pour ne pas venir perturber la construction de la structure responsive.
En bas de l’article, vous trouvez de l’aide. Mais essayer dans un premier temps de ne pas vous en servir.
Rappel : n’utilisez ChatGPT que pour corriger des balises pas fermées ou des détails. Ne demandez pas à ChatGPT de bâtir le HTML ou le CSS. Cela serait contre productif. Ce n’est pas l’objectif de l’exercice !
Travailler sur CodePen vous permettra de sauvegarder votre CARD comme un PEN.

RESPONSIVE




FlexBox s’occupe de tout. Il n’y a qu’un seul mediaqueries [@media (max-width: 768px) qui fait passer en colonne et aligne les nom des archis au milieu en texte-align center], tout le reste est élastique.
Structure HTML
Chaque encadré est un conteneur. L’ancêtre est une section, les autres sont des DIV.

Voici la liste des classes ordonnées du plus petit enfant vers l’ancêtre, en suivant l’ordre de droite à gauche :
conteneur-photo-archiconteneur-nom-archiconteneur-archiconteneur-3archisconteneur-titreconteneur-phrasedroite
conteneur-photogauche
conteneur-cardcard-section
Plan d’action sommaire
- Commencer par les éléments « Archi » (les plus internes)
- Créer une division pour la photo de l’archi, par exemple
.conteneur-photo-archi.- Lui attribuer une couleur de fond ou une image et ajuster sa taille.
- Créer une division pour le nom de l’archi, par exemple
.conteneur-nom-archi.- Lui donner une couleur de fond, un padding, et organiser le texte (le nom de l’archi).
- Créer une division pour la photo de l’archi, par exemple
- Assembler l’archi complet dans
.conteneur-archi- Créer une division
.conteneur-archiqui contient.conteneur-photo-archiet.conteneur-nom-archi. - Transformer
.conteneur-archien conteneur Flexbox.- Décider de l’axe principal (horizontal ou vertical),
- Autoriser, si besoin, le retour à la ligne (
flex-wrap) pour s’assurer que le contenu s’adapte, - Ajuster l’alignement (
justify-content,align-items) pour centrer la photo et le nom, ou pour répartir l’espace entre eux.
- Créer une division
- Créer
.conteneur-3archispour regrouper plusieurs.conteneur-archi- Placer trois
.conteneur-archià l’intérieur d’une division.conteneur-3archis. - Donner un fond différent à
.conteneur-3archispour bien la distinguer. - Transformer
.conteneur-3archisen conteneur Flex.- Utiliser
justify-content: space-aroundou une autre valeur appropriée pour répartir l’espace entre chaque archi. - Ainsi, les trois archis s’alignent côte à côte de manière équilibrée.
- Utiliser
- Placer trois
- Ajouter le titre et la phrase dans la colonne de droite (
.droite)- Dans la partie droite de la carte, créer une division
.droitequi contiendra :- Une division
.conteneur-titrepour accueillir le titre, - La division
.conteneur-3archiscréée précédemment, - Une division
.conteneur-phrasepour accueillir le texte explicatif.
- Une division
- Transformer
.droiteen conteneur Flex en mode colonne (flex-direction: column).- Répartir verticalement l’espace entre le titre, la section des archis et la phrase, par exemple avec
justify-content: space-aroundpour un espacement équilibré. - Autoriser le
flex-wrapsi nécessaire, pour s’adapter à différentes largeurs d’écran.
- Répartir verticalement l’espace entre le titre, la section des archis et la phrase, par exemple avec
- Dans la partie droite de la carte, créer une division
- Gérer la colonne de gauche (
.gauche) avec la photo de conférence- Créer une division
.gauchepour accueillir.conteneur-photo. - Placer l’image de la salle de conférence en fond (
background-image,background-size: cover, etc.) dans.conteneur-photo. .gauchepeut rester un conteneur simple ou être un flex si besoin, mais l’important est de lui donner des dimensions minimales (min-width,min-height) pour afficher correctement l’image.
- Créer une division
- Assembler
.gaucheet.droitedans.conteneur-card- Créer une division
.conteneur-cardqui contiendra.gaucheet.droite. - Transformer
.conteneur-carden conteneur Flex.- Les deux colonnes (gauche et droite) s’alignent côte à côte.
- Laisser
.droiteprendre toute la place restante (inserer : flex-grow: 1;) afin que la colonne de droite s’adapte à l’espace disponible. - Définir une largeur maximale (
max-width) pour contrôler la taille de l’ensemble (.conteneur-card)
- Créer une division
- Centrer
.conteneur-cardau sein de.card-section- Créer une section
.card-sectionqui contiendra.conteneur-card. - Transformer
.card-sectionen conteneur Flex.- Utiliser
justify-content: centerpour centrer la carte horizontalement dans la page.
- Utiliser
- Ajouter un
display: flexà.card-sectionpermet à la carte de se positionner au centre de l’écran, quels que soient les éléments environnants.
- Créer une section
- Ajouter le responsive (media queries)
- Pour les petits écrans, utiliser une media query afin que
.conteneur-cardpasse en flex-direction colonne, ce qui place.gaucheau-dessus de.droite. - Ajuster éventuellement le texte du titre ou la taille des images pour qu’ils restent lisibles sur mobile.
- Pour les petits écrans, utiliser une media query afin que
Aide
Bloqué ? voici la structure HTML – N’utilisez ce bouton qu’en cas de blocage ! ou pour vérifier votre structure.
Bloqué ? voici la structure HTML et son contenu- N’utilisez ce bouton qu’en cas de blocage ! ou pour vérifier votre code.
Aide
Bloqué ? voici quelques CSS
.gauche {
min-width: 300px;
min-height: 200px;
}
.img-rounded {
border-radius: 50%; /* Transformation en cercle parfait */
width: 100px; /* Fixe la largeur */
height: 100px; /* Fixe la hauteur pour un cercle parfait */
object-fit: cover; /* Facultatif : s'assure que l'image remplit bien le cercle */
}.conteneur-photo {
background-image: url('https://placehold.co/300x300?text=PhotoSalleDeConference'); /* Lien de l'image */
background-position: center center; /* Centre l'image horizontalement et verticalement */
background-repeat: no-repeat; /* Désactive la répétition de l'image */
background-size: cover; /* Adapte l'image pour couvrir toute la zone */
height: 100%;
}.conteneur-card {
max-width: 1120px;
display: flex;
}.droite {
flex-grow: 1;
display: flex;
flex-direction: column;
justify-content: space-around; /* Espace égal entre les enfants */
flex-wrap: wrap; /* Autorise le passage à la ligne si nécessaire */
}
Bloqué avec le CSS ?
Aide
Le corrigé complet est accessible ici :