Créer un menu qui s'étend sur toute la page avec CSS

Il nous arrive de temps en temps de devoir demander à notre visiteur sur quelle page il veut aller, en lui affichant les principales sections de notre site internet. Ce menu n'est pas souvent très agréable à utiliser, découvrons ensemble dans cet article comment faire pour le rendre beaucoup plus moderne avec de belles animations qui donneront à vos passants l'envie de visiter votre site !
1ère étape
Débutons avec le code HTML.
<ul>
<li><a href="#" data-text="Accueil">Accueil</a></li>
<li><a href="#" data-text="A propos">A propos</a></li>
<li><a href="#" data-text="Services">Services</a></li>
<li><a href="#" data-text="Contact">Contact</a></li>
</ul>
Rien de bien compliqué ici : nous avons juste besoin d’une liste à puces.
Notez que nous utilisons un attribut data-text
, c’est original mais vous allez rapidement comprendre pour quelle raison !
2ème étape
Stylisons la balise body
.
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
background-color: #111;
height: 100vh;
}
3ème étape
Stylisons maintenant notre liste à puces pour la rendre plus sympa.
ul {
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
list-style-type: none;
}
Ici, nous centrons notre menu au centre de la page : verticalement et horizontalement, grâce à Flexbox.
4ème étape
Travaillons sur les liens.
a {
text-transform: uppercase;
font-size: 3em;
color: white;
text-decoration: none;
font-family: sans-serif;
display: inline-block;
margin: 25px 0;
}
5ème étape
Créons maintenant l'élément before.
a::before {
content: attr(data-text);
text-align: center; line-height: 100vh;
position: absolute;
top: 0; left: 0;
width: 100%;
height: 100%;
z-index: -1; transform: scale(0);
font-size: 10rem;
transition: all 0.3s;
color: rgba(0, 0, 0, 0.1);
}
Dans l’étape précedente, nous créons le fond qui est affiché lorsque nous sélectionnons un lien de notre menu.
Lorsque nous utilisons la propriété content, nous écrivons cette fois-ci attr(data-text)
.
Cette valeur nous permet de reprendre le texte entré à l’intérieur de l’attribut data-text
de la balise <a>
automatiquement.
6ème étape
Détectons le survol du lien.
li:hover a::before{
transform: scale(1);
}
li:nth-child(1) a::before{
background-color: #da4747;
}
li:nth-child(2) a::before{
background-color: #303960;
}
li:nth-child(3) a::before{
background-color: #dd7631;
}
li:nth-child(4) a::before{
background-color: #95389e;
}
Le sélecteur nth-child est une pseudo-classe désigné par la syntaxe :nth-child(n)
qui permet de cibler chaque élément qui est le n-ième enfant de son parent.