Maison > interface Web > tutoriel CSS > Comment obtenir un effet de glissement de soulignement en CSS

Comment obtenir un effet de glissement de soulignement en CSS

王林
Libérer: 2020-04-07 09:16:07
avant
2852 Les gens l'ont consulté

Comment obtenir un effet de glissement de soulignement en CSS

Cet article parle principalement de deux effets d'animation de soulignement. Le premier consiste à étendre l'axe X de l'intérieur vers l'extérieur lors du survol pour obtenir l'effet d'animation. pour afficher automatiquement la gauche et la droite, de gauche à droite ou de droite à gauche.

Le principal effet obtenu est d'utiliser des balises de pseudo-classe, du survol et de la transfromm trition pour obtenir des effets d'animation.

L'axe des x s'agrandit de l'intérieur vers l'extérieur

Comment obtenir un effet de glissement de soulignement en CSS

Utilisez la courbe de Bézier pour réaliser l'animation de lignes horizontales. Le code spécifique est le suivant :

ul {
  display: flex;
  padding: 0;
  margin: 0;
  list-style-type: none;
}
ul:hover li:not(:hover) a {
  opacity: 0.2;
}
ul li {
  position: relative;
  padding: 30px 25px 30px 25px;
  cursor: pointer;
}
ul li::after {
  position: absolute;
  content: "";
  top: 100%;
  left: 0;
  width: 100%;
  height: 2px;
  background: #3498db;
  transform: scaleX(0);
  transition: 0.4s cubic-bezier(0.165, 0.84, 0.44, 1);
}
ul li:hover::after, ul li.active::after {
  transform: scaleX(1);
}
Copier après la connexion

(Tutoriel recommandé : Tutoriel CSS)

Effets d'animation de soulignement horizontal gauche et droit

Comment obtenir un effet de glissement de soulignement en CSS

Utiliser principalement js pour déterminez la position de la souris lorsqu'elle est éloignée, déplacez l'effet d'animation vers la gauche et la droite pour afficher

le code js est le suivant :

document.querySelectorAll('a').forEach(elem => {

  elem.onmouseenter =
  elem.onmouseleave = e => {

    const tolerance = 5;

    const left = 0;
    const right = elem.clientWidth;

    let x = e.pageX - elem.offsetLeft;

    if (x - tolerance < left) x = left;
    if (x + tolerance > right) x = right;

    elem.style.setProperty(&#39;--x&#39;, `${x}px`);

  };

});
Copier après la connexion

css Utiliser pseudo- balises de classe pour réaliser l'effet d'animation

le code CSS est le suivant :

a {
  position: relative;
  font-weight: 600;
  text-decoration: none;
  color: rgba(0, 0, 0, 0.4);
  transition: color .3s ease;
}
a::after {
  --scale: 0;
  content: &#39;&#39;;
  position: absolute;
  left: 0;
  right: 0;
  top: 100%;
  height: 3px;
  background: #4c81c9;
  -webkit-transform: scaleX(var(--scale));
          transform: scaleX(var(--scale));
  -webkit-transform-origin: var(--x) 50%;
          transform-origin: var(--x) 50%;
  transition: -webkit-transform 0.3s cubic-bezier(0.535, 0.05, 0.355, 1);
  transition: transform 0.3s cubic-bezier(0.535, 0.05, 0.355, 1);
  transition: transform 0.3s cubic-bezier(0.535, 0.05, 0.355, 1), -webkit-transform 0.3s cubic-bezier(0.535, 0.05, 0.355, 1);
}
a:hover {
  color: #4c81c9;
}
a:hover::after {
  --scale: 1;
}
Copier après la connexion

Tutoriels associés recommandés : tutoriel vidéo CSS

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:jb51.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal