Exercices HTML/CSS
Exercice 1 : Sélecteurs et spécificité
1.1 Sélecteurs
- Tous les liens :
.main-nav a
- Lien actif :
.main-nav a.active
- Article featured :
article.post.featured
- Premier paragraphe :
article p:first-of-type
- Éléments pairs :
.main-nav li:nth-child(even)
1.2 Spécificité
- Ordre croissant :
p < .text < p.text < #main < #main .text p
- En cas d'égalité : C'est la dernière règle écrite dans le code qui gagne.
- Pourquoi éviter !important : Parce que cela gagne toujours, il doit être utilisé en dernier recours pour ne pas casser la cascade.
Exercice 2 : Box Model
2.1 Comprendre le Box Model
- 1/ content-box : 300px (width) + 20px+20px (padding) + 5px+5px (border) = 350px.
- 2/ border-box : Seulement la width donc 300px.
- 3/ Reset CSS universel :
box-sizing: border-box;
2.2 Centrer un élément
body {
justify-content: center;
align-items: center;
}
.box {
width: 600px;
padding: 40px;
border: 10px solid #333;
}
Exercice 3 : Flexbox & Grid
3.1 Barre de navigation
.navbar {
justify-content: space-between;
align-items: center;
padding: 0 50px;
}
3.2 Cartes de même hauteur
.cards {
grid-template-columns: repeat(3, 1fr);
}
.card {
flex-direction: column;
}
.card-link {
margin-top: auto;
}
Carte 2
Contenu beaucoup plus long pour tester l'alignement vertical des boutons.
En savoir plus
Exercice 4 : CSS Grid
4.1 Grille de cartes adaptative
.grid-cards {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 20px;
}
Carte 1
Carte 2
Carte 3
Carte 4
Carte 5
Carte 6
4.2 Layout complet avec Grid Areas
.page-layout {
display: grid;
grid-template-columns: 250px 1fr;
grid-template-rows: auto 1fr auto;
grid-template-areas:
"header header"
"sidebar main"
"footer footer";
}
Contenu principal
Exercice 5 : Responsive (Mobile First)
@media (min-width: 768px) {
.nav-menu { flex-direction: row; gap: 20px; }
.sidebar { display: block; width: 250px; }
.container { display: flex; gap: 30px; }
.content { flex: 1; }
}
Exercice 6 : Variables CSS et thèmes
hello
Exercice 7 : Transitions et animations
7.1 Bouton animé
Passe la souris ici !
7.2 Animation de chargement
Exercice 8 : Quiz de révision
- Quel sélecteur a la spécificité la plus haute ?
b) #header a
- Avec box-sizing: border-box, un élément avec width: 200px et padding: 20px a une largeur totale de :
b) 200px
- Pour centrer un élément verticalement et horizontalement avec Flexbox :
c) justify-content: center ET align-items: center
- La valeur 1fr en CSS Grid signifie :
b) 1 fraction de l'espace disponible
- L'approche "Mobile First" utilise :
b) min-width dans les media queries