Bonjour à tous, aujourd’hui j’aimerais vous présenter un article sur le CSS3 et plus précisément les menus ! On va prendre deux exemples de menu classique mais efficace.
Commençons par la structure html car elle ne variera pas pour les deux exemples que l’on va prendre. Il n’y a rien de compliqué, on a une liste non ordonnée qui va contenir des liens.
<!DOCTYPE html> <html lang="fr-FR"> <head> <title>Effets Css</title> <link rel="stylesheet" href="css/main.css" /> <meta charset="UTF-8"> </head> <body> <ul> <li><a href="#">Home</a></li> <li><a href="#">About</a></li> <li><a href="#">Portfolio</a></li> <li><a href="#">Contact</a></li> </ul> </body> </html>
Menu horizontal
Nous allons donc voir notre premier exemple, un menu horizontal :
ul { width: 800px; margin: 40px auto; text-align: center; font-size: 35px; } ul li{ list-style:none; display:inline-block; padding:15px; } a{ color: #15F3CF; text-decoration:none; position:relative; padding:6px 0; -webkit-transition: all 0.8s; -o-transition: all 0.8s; transition: all 0.8s; } a:after{ content:''; width:0%; margin-left:50%; height:2px; bottom:0; left:0; -webkit-border-radius: 40%; -moz-border-radius: 40%; border-radius:40%; -webkit-transition: all 0.5s; -o-transition: all 0.5s; transition:all 0.5s; position:absolute; -webkit-transition: all 0.5s; -o-transition: all 0.5s; transition:all 0.5s; } a:hover:after { background-color: #15F3CF; width:60%; margin-left:20%; -moz-box-shadow: 0px 0px 10px #22A9E8; -webkit-box-shadow: 0px 0px 10px #22A9E8; -o-box-shadow: 0px 0px 10px #22A9E8; box-shadow:0px 0px 10px #22A9E8; }
Voyons en détail le css :
- Pour chaque li, on lui retire son aspect par défaut grâce au liste-style: none et on précise qu’ils doivent s’afficher en ligne avec le display-inline: block.
- Pour chaque lien, on les positionne en position: relative afin de pouvoir ensuite tracé le trait grâce au sélecteur a:after. On donne un effet de transition pour le hover.
- Sur le sélecteur a:after, on le positionne en absolute, en bas à gauche, on le déplace grâce au margin-left de 50%. Enfin, on lui associe une bordure arrondie et on lui donne encore une transition
- Enfin, au hover sur le sélecteur a:after, on lui donne une taille de 60% et on lui donne une ombre grâce à la propriété box-shadow.
Menu vertical
Voyons maintenant, le cas du menu vertical :
.ul { width: 350px; margin: 40px auto; list-style: none; padding: 5px; background: #F2F2F2; } .ul li, .ul li a{ display: block; text-align: center; } .ul li a { margin: 1px 0; padding: 8px 20px; color: #666; background: #FFF; text-decoration: none; -webkit-transition: all .3s; -moz-transition: all .3s; transition: all .3s; } .ul li a:hover, .ul li a:focus { background: #22A9E8; color: #FFF; -ms-transform: rotate(1.1); -webkit-transform: rotate(1.1); transform: scale(1.1); }
Explications :
- Sur le ul, on donne un fond gris autour du menu, qu’on voit grâce au padding.
- On force les li et les liens à s’afficher en display: block, afin qu’ils prennent toute la largeur disponible.
- On précise que les liens ne doivent pas avoir leur comportement par défaut.
- Au hover, on change le fond du li, la couleur du texte et surtout on donne un effet de zoom grâce à la propriété transform: scale(1.1).
Et voilà, rien de bien compliqué, amusez-vous bien !
Merci pour cette information !