Beispiel für die Implementierung von Unterstreichungseffekten mit CSS und JS

Beispiel für die Implementierung von Unterstreichungseffekten mit CSS und JS

In diesem Artikel werden hauptsächlich zwei Arten dynamischer Unterstreichungseffekte beschrieben. Der erste besteht darin, dass sich beim Schweben die X-Achse von innen nach außen ausdehnt, um den Animationseffekt zu erzielen. Der zweite ist die automatische Anzeige von links nach rechts oder von rechts nach links! !

Der Haupteffekt besteht darin, Pseudoklassen-Tags, Hover und Übergänge zu verwenden, um Animationseffekte zu erzielen.

Die x-Achse dehnt sich von innen nach außen aus

Die Animation der horizontalen Linie wird mithilfe der Bézier-Kurve realisiert. Der spezifische Code lautet wie folgt:

ul {
  Anzeige: Flex;
  Polsterung: 0;
  Rand: 0;
  Listenstiltyp: keiner;
}
ul:hover li:nicht(:hover) a {
  Deckkraft: 0,2;
}
ul li {
  Position: relativ;
  Polsterung: 30px 25px 30px 25px;
  Cursor: Zeiger;
}
ul li::nach {
  Position: absolut;
  Inhalt: "";
  oben: 100 %;
  links: 0;
  Breite: 100 %;
  Höhe: 2px;
  Hintergrund: #3498db;
  transformieren: scaleX(0);
  Übergang: 0,4 s kubisch-bézier (0,165, 0,84, 0,44, 1);
}
ul li:hover::nach, ul li.active::nach {
  transformieren: scaleX(1);
}

Animationseffekt für horizontale Unterstreichung links und rechts

Verwenden Sie hauptsächlich js, um die Position der Maus zu bestimmen, wenn sie sich wegbewegt, und zeigen Sie den Animationseffekt an, indem Sie sie nach links und rechts bewegen

Der JS-Code lautet wie folgt:

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

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

    konstante Toleranz = 5;

    Konstante links = 0;
    const right = elem.clientWidth;

    lass x = e.pageX - elem.offsetLeft;

    wenn (x - Toleranz < links) x = links;
    wenn (x + Toleranz > rechts) x = rechts;

    elem.style.setProperty('--x', `${x}px`);

  };

});

CSS verwendet Pseudoklassen-Tags, um Animationseffekte zu implementieren
Der CSS-Code lautet wie folgt:

A {
  Position: relativ;
  Schriftstärke: 600;
  Textdekoration: keine;
  Farbe: rgba(0, 0, 0, 0,4);
  Übergang: Farbe 0,3 s Leichtigkeit;
}
a::nach {
  --Skala: 0;
  Inhalt: '';
  Position: absolut;
  links: 0;
  rechts: 0;
  oben: 100 %;
  Höhe: 3px;
  Hintergrund: #4c81c9;
  -webkit-transform: MaßstabX(var(--scale));
          transformieren: scaleX(var(--scale));
  -webkit-transform-origin: var(--x) 50 %;
          Transform-Ursprung: var(--x) 50 %;
  Übergang: -webkit-transform 0,3 s cubic-bezier(0,535, 0,05, 0,355, 1);
  Übergang: Transformation 0,3 s kubisch-bézier (0,535, 0,05, 0,355, 1);
  Übergang: Transformiere 0,3 s kubisches Bézier(0,535, 0,05, 0,355, 1), -webkit-Transformiere 0,3 s kubisches Bézier(0,535, 0,05, 0,355, 1);
}
ein:schweben {
  Farbe: #4c81c9;
}
ein:hover::nach {
  --Skala: 1;
}

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

<<:  Navicat-Verbindung MySQL Fehlerbeschreibungsanalyse

>>:  Analyse der Vor- und Nachteile von festen, fließenden und flexiblen Webseiten-Layouts

Artikel empfehlen

So verstehen Sie das Ref-Attribut von React genau

Inhaltsverzeichnis Überblick 1. Erstellen eines R...

MySQL implementiert eine Lösung ähnlich der Oracle-Sequenz

MySQL implementiert Oracle-ähnliche Sequenzen Ora...

Die Implementierung der Ereignisbindung in React verweist auf drei Methoden

1. Pfeilfunktion 1. Nutzen Sie die Tatsache, dass...

Tutorial zur Installation und Kennwortkonfiguration von MySQL 5.7.21

Tutorial zur Installation und Kennworteinstellung...

Docker stellt nginx bereit und mountet Ordner und Dateioperationen

Während dieser Zeit habe ich Docker studiert und ...

So installieren Sie Jenkins mit Docker

Inhaltsverzeichnis 1. Ziehen Sie das Bild 2. Erst...

Detaillierte Erklärung der 10 häufigsten HTTP-Statuscodes

Der HTTP-Statuscode ist ein dreistelliger Code, d...

So installieren Sie Nginx in Docker und konfigurieren den Zugriff über https

1. Laden Sie das neueste Nginx-Docker-Image herun...

Beispiele für vertikale Raster und progressiven Zeilenabstand

Neue Fragen Kommen und gehen Sie in Eile. Seit de...

Eine kurze Erläuterung des Navigationsfensters in Iframe-Webseiten

Eine kurze Erläuterung des Navigationsfensters in...

Ausführliche Erklärung zum Currying von JS-Funktionen

Inhaltsverzeichnis 1. Ergänzende Wissenspunkte: i...

So führen Sie py-Dateien direkt unter Linux aus

1. Erstellen Sie zuerst die Datei (wechseln Sie p...

MySQL 5.7.19 neueste Binärinstallation

Laden Sie zunächst die Zip-Archivversion von der ...

Detaillierte Erklärung der neuen Funktion ROLE in MySQL 8

Welche Probleme löst MySQL ROLE? Wenn Sie ein DBA...