Centrage vertical et horizontal en CSS
Pour capter l'attention, certaines pages Web affichent un contenu centré horizontalement et verticalement : un cadre publicitaire, une image agrandie, un formulaire de connexion, un effet lightbox, etc.
En partant de ce code HTML :
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="fond">
<div class="centre"></div>
</div>
</body>
</html>
Voici deux variantes CSS pour centrer un <div class="centre"> :
Propriétés CSS top, left et transform: translate
Les propriétés top: 50% et left: 50% positionnent un carré bleu à partir du centre vertical et horizontal de la fenêtre du navigateur. Pour obtenir un centrage parfait, la propriété CSS translate le remonte de la moitié de la hauteur du carré et le recule de la moitié de sa largeur (soit 200 pixels).
.fond {
position: fixed;
z-index: 10;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
background-color: rgba(0, 0, 0, 0.4);
}
.centre {
width: 400px;
height: 400px;
background-color: #2b303b;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
La propriété CSS position: fixed immobilise le carré au centre, même si l'utilisateur fait défiler le contenu de la page.
Propriétés CSS display: flex, align-items: center et justify-content: center
Ce deuxième code utilise la propriété display: flex appliqué au bloc parent <div class="fond">.
.fond {
position: fixed;
top: 0;
left: 0;
z-index: 10;
width: 100vw;
height: 100vh;
background-color: rgba(0, 0, 0, 0.4);
display: flex;
align-items: center;
justify-content: center;
}
.centre {
width: 400px;
height: 400px;
background-color: #2b303b;
}
Dans cet exemple, la propriété align-items permet de centrer verticalement et la propriété justify-content permet de centrer horizontalement. On obtient alors ceci :
Un exemple d'utilisation du centrage de la connexion chez Facebook :
Ci-dessous, une réduction centrée sur un site de vente en ligne :
Je vous félicite pour vos différents tutos, ils sont parfaits.
Cordialement
Michel_AUBINEAU