Deuxième article
Contenu...
Survolez les règles CSS pour voir les éléments correspondants s'illuminer.
Contenu...
Contenu...
1. Sélectionnez tous les liens dans la navigation :
nav.main-nav a
2. Sélectionnez uniquement le lien actif :
nav.main-nav a.active
3. Sélectionnez l'article qui a la classe 'featured' :
article.featured
4. Sélectionnez le premier paragraphe de chaque article :
article p:first-of-type
5. Sélectionnez les éléments de liste (li) impairs :
li:nth-child(odd)
6. Sélectionnez les éléments de liste (li) pairs :
li:nth-child(even)
p, .text,
#main, p.text, #main .text p
p < .text < p.text < #main .text
< #main .text p
La dernière règle déclarée gagne.
!important ?
Car il rend le code difficile à maintenir et à déboguer.
.box {
width: 300px;
padding: 20px;
border: 5px solid #333;
margin: 15px;
}
box-sizing: content-box (défaut), quelle est la largeur totale visible de
.box ?
width + padding + border = 300px + 20px*2 + 5px*2 = 350px
box-sizing: border-box, quelle est la largeur totale visible ?
width = 300px
box-sizing
* { box-sizing: border-box; }
Centrez horizontalement un élément <div> de 600px de large, puis centrez-le aussi
verticalement
dans la
page.
Créez une barre de navigation horizontale avec un logo à gauche et des liens à droite :
Créez 3 cartes côte à côte avec un footer qui reste toujours en bas :
Créez une grille de cartes qui s'adapte automatiquement au nombre de colonnes :
Créez une mise en page complète : header, sidebar, main, footer.
Transformez cette page pour qu'elle soit responsive (mobile first) :
/* Base mobile */
.container {
width: 100%;
padding: 15px;
}
.nav-menu {
display: flex;
flex-direction: column;
gap: 5px;
}
.content {
display: block;
}
.sidebar {
display: none;
}
Solution :
/* Tablette (à partir de 600px) */
@media (min-width: 600px) {
.container {
max-width: 900px;
}
.nav-menu {
flex-direction: row;
justify-content: space-between;
}
.content {
display: grid;
grid-template-columns: 2fr 1fr;
gap: 20px;
}
.sidebar {
display: block;
}
}
/* Desktop (à partir de 768px) */
@media (min-width: 768px) {
.container {
max-width: 1200px;
margin: 0 auto;
}
.nav-menu {
flex-direction: row;
justify-content: space-between;
}
.content {
display: grid;
grid-template-columns: 2fr 1fr;
gap: 20px;
}
.sidebar {
display: block;
}
}
Créez un système de variables CSS pour un thème clair et sombre :
/* Thème clair */
:root {
--bg-color: #ffffff;
--text-color: #333333;
--primary-color: #007bff;
}
/* Thème sombre */
[data-theme="dark"] {
--bg-color: #333333;
--text-color: #ffffff;
--primary-color: #007bff;
}
Créez un bouton avec des transitions au survol :
Créez un spinner de chargement avec @keyframes :
.header .nav a#header aheader nav aa.activebox-sizing: border-box, un élément avec width: 200px et
padding: 20px a une largeur totale de :
justify-content: centeralign-items: centerjustify-content: center ET align-items: centertext-align: center1fr en CSS Grid signifie :
max-width dans les media queriesmin-width dans les media queriesdevice-widthorientation