Selecteurs
*selecteur universelpbalise specifique.classeclasse reutilisable#idelement uniquediv > penfant directdiv pdescendantp + spanfrere immediatp ~ spanfreres generaux
Aide-memoire
Les bases essentielles pour styliser une interface claire, responsive et facile a maintenir.
*selecteur universelpbalise specifique.classeclasse reutilisable#idelement uniquediv > penfant directdiv pdescendantp + spanfrere immediatp ~ spanfreres generauxdiv {
box-sizing: border-box;
width: min(100%, 720px);
padding: 1rem;
border: 1px solid #d8dee9;
margin-inline: auto;
} Ajoute box-sizing: border-box pour compter le padding et la bordure dans la largeur totale.
.toolbar {
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
gap: .75rem;
}justify-contentaxe principalalign-itemsaxe secondairegapespacement propre entre les elements.cards {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 1rem;
}grid-template-columnsstructure les colonnesgrid-areaplace un bloc dans une zone nommeeplace-itemscentre vite dans les deux axes@media (max-width: 768px) {
.layout {
grid-template-columns: 1fr;
}
} Combine les unites relatives (rem, %, clamp()) avec des grilles fluides.
:hoversurvol:focus-visiblenavigation clavier:nth-child()selection par position::beforecontenu decoratif avant::aftercontenu decoratif apres.button {
transition:
transform .2s ease,
background-color .2s ease;
}
.button:hover {
transform: translateY(-2px);
}@keyframes slide-in {
from {
opacity: 0;
transform: translateY(12px);
}
to {
opacity: 1;
transform: translateY(0);
}
}.button {
display: inline-flex;
align-items: center;
justify-content: center;
min-height: 44px;
padding: .7rem 1rem;
border: 0;
border-radius: 8px;
background: #0f766e;
color: #fff;
font-weight: 700;
cursor: pointer;
}
.button:hover {
background: #115e59;
}
.button:focus-visible {
outline: 3px solid #99f6e4;
outline-offset: 3px;
}
.button:disabled {
opacity: .55;
cursor: not-allowed;
} Le min-height: 44px garde une zone de clic confortable, notamment sur mobile.
.card-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
gap: 1rem;
}
.card {
min-width: 0;
padding: 1rem;
border: 1px solid #d8dee9;
border-radius: 8px;
background: #fff;
}Pratique pour portfolio, tarifs, articles, produits ou liste de ressources.
.media {
aspect-ratio: 16 / 9;
overflow: hidden;
border-radius: 8px;
}
.media img {
width: 100%;
height: 100%;
display: block;
object-fit: cover;
}.centered {
display: grid;
min-height: 100vh;
place-items: center;
padding: 1rem;
}Utile pour une page de connexion, un message de confirmation ou une erreur 404.
.field {
display: grid;
gap: .4rem;
}
.field label {
font-weight: 700;
}
.field input,
.field textarea {
width: 100%;
padding: .75rem .85rem;
border: 1px solid #cbd5e1;
border-radius: 8px;
font: inherit;
}
.field input:focus,
.field textarea:focus {
border-color: #0f766e;
outline: 3px solid #ccfbf1;
}body {
min-height: 100vh;
display: flex;
flex-direction: column;
}
main {
flex: 1;
} Le footer reste en bas quand la page a peu de contenu, sans position: fixed.
:hover, :focus-visible et disabled.:hover, :focus-visible et disabled.