Revolutioniere deine Webseite mit Scroll Spy! Automatische Navigation, die sich dem Nutzer anpasst, und ein reibungsloses Scrollen durch deine Inhalte. Einfach integrierbar, sofort beeindruckend. Bringe deine Webseite zum Leben – mit Scroll Spy!
HTML-Grundgerüsst
Als erstes erstellen wir uns ein HTML-Grundgerüsst
Dieser Code erstellt eine einfache Webseite mit einem Navigationsmenü, das die Scroll Spy-Technik verwendet. Lass uns die Struktur und Funktionalität des Codes durchgehen:
HTML-Struktur:
header: Hier kann der Inhalt des Headers eingefügt werden.
div#Nav: Enthält das Navigationsmenü.
nav#Anchor: Das Hauptnavigationsmenü mit einer speziellen Klasse anchor und einem data-anchor-Attribut mit dem Wert "2".
ul.anchor_nav: Die ungeordnete Liste für die Navigationslinks.
li.nav_item: Ein einzelner Navigationspunkt.
a.nav_link.js-scroll: Ein anklickbarer Navigationslink mit einer speziellen Klasse js-scroll und einem data-scroll-Attribut, das den Zielabschnitt angibt.
span.nav_title: Der sichtbare Text des Navigationslinks.
main: Der Hauptinhalt der Seite mit drei Abschnitten, jeweils mit den IDs "Basis", "Navigation" und "jqueryScript".
div#Basis, div#Navigation, div#jqueryScript: Die verschiedenen Abschnitte der Seite, die durch das Navigationsmenü verlinkt sind.
script: Ein Link zu einer externen JavaScript-Datei namens application.js, die die Scroll Spy-Funktionalität bereitstellt.
Insgesamt handelt es sich um eine grundlegende Struktur für eine Webseite mit einer festen Navigation, die beim Scrollen automatisch die aktiven Abschnitte hervorhebt. Der tatsächliche Effekt und das Verhalten werden durch die JavaScript-Datei definiert, die die Scroll Spy-Logik enthält.
Die folgende CSS-Datei definiert das visuelle Erscheinungsbild einer Webseite, die das Konzept des Scroll Spy implementiert. Durch die gezielte Anwendung von Stilen und Layouts werden eine ansprechende Navigation, ein durchscheinender Hintergrund und weitere Designelemente geschaffen, um eine benutzerfreundliche und ästhetische Benutzererfahrung zu gewährleisten.
Globale Einstellungen:
body {
margin: 0;
margin-top: 8rem;
}
Setzt den Außenabstand des gesamten Dokuments auf null.
Legt den oberen Außenabstand des Body-Elements auf 8rem fest.
Header-Styling:
header p {
margin: auto;
max-width: 1024px;
}
Zentriert den Text im Header.
Setzt die maximale Breite des Textes auf 1024px.
Hauptabschnitts-Styling:
main div {
margin: auto;
margin-bottom: 1rem;
max-width: 1024px;
}
Zentriert die Hauptabschnitte und setzt den unteren Außenabstand auf 1rem.
Für Bildschirmbreiten über 64rem wird ein Hover-Effekt für das Pseudo-Element hinzugefügt.
Justiert die Ausrichtung der Navigationselemente für größere Bildschirme.
Das sind die grundlegenden Stile in der CSS-Datei. Jeder Abschnitt dient dazu, die Darstellung und das Verhalten der verschiedenen Elemente auf der Seite zu steuern, insbesondere der Navigation.
JavaScript-Code
Dieser JavaScript-Code implementiert eine Funktion für ein sogenanntes "Scroll Spy"-Verhalten. "Scroll Spy" wird verwendet, um automatisch die Navigation zu aktualisieren, wenn der Benutzer auf der Seite nach unten scrollt und verschiedene Abschnitte erreicht. Hier ist eine schrittweise Erklärung:
Eventlistener für das DOMContentLoaded-Ereignis:
document.addEventListener("DOMContentLoaded", function () {
Diese Zeile sorgt dafür, dass der Code ausgeführt wird, sobald der HTML-Dokumentbaum vollständig geladen ist.
Auswahl aller Navigationslinks:
var navLinks = document.querySelectorAll("a.nav_link");
Der Code wählt alle Anker-Elemente aus, die die Klasse "nav_link" haben. Diese Elemente werden als Navigationslinks betrachtet.
Eventlistener für das Scroll-Ereignis:
window.addEventListener("scroll", function () {
Hier wird ein Eventlistener für das Scroll-Ereignis hinzugefügt, um Änderungen beim Scrollen zu überwachen.
Iteration über alle Navigationslinks:
navLinks.forEach(function (link) {
Eine Schleife durchläuft alle ausgewählten Navigationslinks.
Verhindern des Standardverhaltens eines Links:
event.preventDefault();
Dieser Code verhindert das Standardverhalten von Links, um zu verhindern, dass die Seite beim Klicken auf einen Link neu geladen wird.
Abrufen des Attributs "data-scroll" des Links:
var container = link.getAttribute("data-scroll");
Hier wird der Wert des "data-scroll"-Attributs des aktuellen Links abgerufen. Dieser Wert entspricht dem Ziel-Container, zu dem der Link scrollt.
Überprüfung, ob der Container existiert:
if (container !== null) {
Es wird überprüft, ob der "data-scroll"-Wert existiert. Wenn ja, wird der entsprechende Container abgerufen.
Berechnung von Position und Größe des Containers:
var containerOffset = containerElement.offsetTop - 44;
var containerHeight = containerElement.offsetHeight;
var containerBottom = containerOffset + containerHeight;
Hier werden die Position und Größe des Ziel-Containers berechnet.
Hinzufügen/Entfernen der "is-active"-Klasse basierend auf Scroll-Position:
Die "is-active"-Klasse wird dem Navigationslink hinzugefügt, wenn der Benutzer sich im Bereich des Ziel-Containers befindet. Andernfalls wird die Klasse entfernt.
Der gesamte Code
Der gesamte Code überwacht das Scrollen und passt die Klasse der Navigationslinks an, um anzuzeigen, welcher Abschnitt auf der Seite gerade sichtbar ist. Hier nochmal der gesamte code:
document.addEventListener("DOMContentLoaded", function () {
var navLinks = document.querySelectorAll("a.nav_link");
window.addEventListener("scroll", function () {
var scrollPosition = window.scrollY;
navLinks.forEach(function (link) {
event.preventDefault();
var container = link.getAttribute("data-scroll");
if (container !== null) {
var containerElement = document.getElementById(container);
if (containerElement) {
var containerOffset = containerElement.offsetTop - 44;
var containerHeight = containerElement.offsetHeight;
var containerBottom = containerOffset + containerHeight;
if (
scrollPosition < containerBottom - 20 &&
scrollPosition >= containerOffset - 45
) {
link.classList.add("is-active");
} else {
link.classList.remove("is-active");
}
}
}
});
});
});
Wir verwenden Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten
zu können und die Zugriffe auf unsere Website zu analysieren.
Sie akzeptieren unsere Cookies, wenn Sie fortfahren diese Webseite zu nutzen.
Datenschutzerklärung.