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

Comment obtenir un effet de glissement de soulignement en CSS

王林
王林avant
2020-04-07 09:16:072688parcourir

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);
}

(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`);

  };

});

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;
}

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer