Le soulignement de liens est un style très courant. J'ai récemment créé un effet visuel très simple, qui est très bon. Consultez le code complet.
<!DOCTYPE html> <html> <head> <meta charset="gb2312"> <meta name="viewport" content="width=device-width"> <title>JS Bin</title> <style> body{ background-color: #000; } h2{ text-align: center; margin-top: 100px; } h2 > a { position: relative; color: #FFF; text-decoration: none; padding-bottom: 5px; } h2 > a:hover { color: #FFF; } h2 > a:before { content: ""; position: absolute; width: 100%; height: 2px; bottom: 0; left: 0; background-color: #FFF; visibility: hidden; -webkit-transform: scaleX(0); transform: scaleX(0); -webkit-transition: all 0.3s ease-in-out 0s; transition: all 0.3s ease-in-out 0s; } h2 > a:hover:before { visibility: visible; -webkit-transform: scaleX(1); transform: scaleX(1); } </style> </head> <body> <h2> <a href="/">悬停在我上面</a> </h2> </body> </html>
La création de cet effet est très simple. Il n'est pas nécessaire d'ajouter des éléments DOM supplémentaires au HTML, mais vous devez prendre en compte les problèmes de compatibilité des navigateurs dans les anciens navigateurs. apparaîtra simplement comme un simple soulignement.
D'accord, maintenant ça commence officiellement. La première chose que nous devons faire est de supprimer la décoration du texte et de définir le lien sur un positionnement relatif. Nous devons nous assurer que le lien ne change pas de couleur lors du survol. Ici, nous prenons h2 comme exemple :
h2 > a { position: relative; color: #000; text-decoration: none; } h2 > a:hover { color: #000; }
Ensuite, nous devons ajouter une bordure et la masquer par transformation. . Insérez un :before et définissez son scaleX (0). Pour être conservateur, si le navigateur ne le supporte pas, nous le masquons avec visible : caché.
h2 > a:before { content: ""; position: absolute; width: 100%; height: 2px; bottombottom: 0; left: 0; background-color: #000; visibility: hidden; -webkit-transform: scaleX(0); transform: scaleX(0); -webkit-transition: all 0.3s ease-in-out 0s; transition: all 0.3s ease-in-out 0s; }
Enfin, réglez le temps d'animation sur 0,3 s. Il ne nous reste plus qu'à définir l'élément à afficher en survol et scaleX(1) :
h2 > a:hover:before { visibility: visible; -webkit-transform: scaleX(1); transform: scaleX(1); }