Dieses Code-Snippet fügt einer Webseite einen Lesefortschrittsbalken hinzu. Die Leiste stellt visuell den Scroll-Fortschritt des Benutzers durch den Hauptinhaltsbereich dar. Lassen Sie uns die Funktionsweise aufschlüsseln und verbessern.
Der Code versucht, den Fortschritt basierend auf der Bildlaufposition relativ zur Gesamth?he des main
-Elements zu berechnen. Es gibt jedoch mehrere Probleme:
-
Unvollst?ndiger Code: Der bereitgestellte Code ist abgeschnitten. Es fehlt der entscheidende Teil, der den Fortschrittsbalken tats?chlich erstellt und visuell aktualisiert. Das
div
wird erstellt, aber es ist keine Styling- oder Fortschrittsaktualisierungslogik vorhanden. -
Falsche H?henberechnung: Die Berechnung von
totalHeight
kann je nach Seitenstruktur ungenau sein. Die Verwendung vonouterHeight(true)
schlie?t R?nder ein, die m?glicherweise unerwünscht sind. Es berücksichtigt auch keinen dynamischen Inhalt, der die H?he nach der ersten Berechnung ?ndern k?nnte. - Fehlende Fortschrittsaktualisierung: Es gibt keinen Code, um den Fortschrittsbalken zu aktualisieren, w?hrend der Benutzer scrollt. Die Berechnung erfolgt nur einmal, wenn das Dokument fertig ist.
-
Problem mit der Fu?zeilenh?he: Das Subtrahieren von
footerHeight
kann zu einer falschen Fortschrittsberechnung führen, wenn die Fu?zeile fest ist oder den Hauptinhalt überlappt.
Hier ist eine verbesserte Version, die diese Probleme behebt:
$(document).ready(function() { if ($('body').hasClass('single')) { const progressBar = $('<div id="reading-progress"></div>'); $('header').after(progressBar); let totalHeight = $('main').height(); // Use height() for more accurate calculation let windowHeight = $(window).height(); $(window).on('scroll', function() { let scrollTop = $(this).scrollTop(); let progress = (scrollTop / (totalHeight - windowHeight)) * 100; // Adjust for window height progress = Math.min(progress, 100); // Cap progress at 100% $('#reading-progress').css('width', progress + '%'); }); } });
Dieser verbesserte Code:
- Erstellt einen Fortschrittsbalken: Es wird dynamisch ein
div
mit der IDreading-progress
erstellt, der als Fortschrittsbalken fungiert. - Verwendet
height()
: Es verwendetheight()
anstelle vonouterHeight(true)
für eine genauere Berechnung der Hauptinhaltsh?he. - Verarbeitet Scroll-Ereignisse: Es verwendet
$(window).on('scroll', ...)
, um die Breite des Fortschrittsbalkens kontinuierlich zu aktualisieren, w?hrend der Benutzer scrollt. - Berechnet den Fortschritt genau: Die Fortschrittsberechnung berücksichtigt die sichtbare Fensterh?he und verhindert, dass der Balken 100 % überschreitet.
- Fügt CSS hinzu (erforderlich): Sie müssen CSS hinzufügen, um das
#reading-progress
-Div zu formatieren. Zum Beispiel:
#reading-progress { height: 5px; /* Adjust height as needed */ background-color: #007bff; /* Adjust color as needed */ position: fixed; top: 0; left: 0; width: 0; /* Initially 0% width */ z-index: 1000; /* Ensure it's on top */ }
Denken Sie daran, jQuery in Ihr Projekt einzubinden, damit dieser Code funktioniert. Dieser überarbeitete Code bietet einen robusteren und genaueren Lesefortschrittsbalken. Weitere Verfeinerungen k?nnten die Handhabung von Randgeh?usen und das Hinzufügen eines anspruchsvolleren Designs umfassen.
Das obige ist der detaillierte Inhalt vonLesefortschrittsbalken. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

Es gibt drei M?glichkeiten, CSS auf einer bestimmten Seite selektiv aufzunehmen: 1. Inline -CSS, geeignet für Seiten, auf die nicht h?ufig zugegriffen wird oder einzigartige Stile erfordern. 2. Laden Sie externe CSS -Dateien mit JavaScript -Bedingungen, die für Situationen geeignet sind, in denen Flexibilit?t erforderlich ist. 3. Containment auf der Serverseite, geeignet für Szenarien mit serverseitigen Sprachen. Dieser Ansatz kann die Leistung und die Wartbarkeit der Website optimieren, erfordert jedoch ein Gleichgewicht zwischen Modularit?t und Leistung.

FlexBoxisidealForone-dimensionAllayouts, w?hrend GridSuitStwo-dimensional, komplexeLayouts.seflexBoxForAnGingItemsinasingleaxisandGridForPreciseControloverrowsandColumnSininTridrideseseseses-Signs.

Das HTML-Popover-Attribut verwandelt Elemente in Top-Layer-Elemente, die mit einer Taste oder einem JavaScript ge?ffnet und geschlossen werden k?nnen. Popovers k?nnen auf eine Reihe von M?glichkeiten abgewiesen werden, aber es gibt keine M?glichkeit, sie automatisch einzuschlie?en. Preethi hat eine Technik, die Sie k?nnen

CSS -Bl?cke Seitenrenderung, da Browser inline und externe CSS standardm??ig als wichtige Ressourcen anzeigen, insbesondere mit importierten Stylesheets, Header gro?er Mengen an Inline -CSS und nicht optimierten Medienfragestilen. 1. extrahieren kritische CSS und einbetten Sie es in HTML ein; 2. Verz?gerung des Ladens nichtkritischer CSS durch JavaScript; 3.. Verwenden Sie Medienattribute, um das Laden wie Druckstile zu optimieren. 4. Komprimieren und verschmelzen CSS, um Anfragen zu reduzieren. Es wird empfohlen, Tools zum Extrahieren von Schlüssel -CSS zu verwenden, REL = "Vorspannung" zu kombinieren, und verwenden Sie die asynchrone Belastung und verwenden Sie die Medienverz?gerungsladeverletzung, um eine überm??ige Aufteilung und eine komplexe Skriptsteuerung zu vermeiden.

Im folgenden Tutorial werde ich Ihnen zeigen, wie Sie Lottie -Animationen in Figma erstellen. Wir werden zwei farbenfrohe Designs verwenden, um zu veranlassen, wie Sie in Figma animieren k?nnen, und dann werde ich Ihnen zeigen, wie Sie von Figma zu Lottie -Animationen wechseln. Alles was Sie brauchen ist eine kostenlose Feige

Wir haben es auf die Probe gestellt und es stellt sich heraus, dass Sass JavaScript zumindest bei Logik und Puzzle-Verhalten auf niedriger Ebene ersetzen kann. Mit nichts als Karten, Mixins, Funktionen und einer Menge Mathematik haben wir es geschafft, unser Tangram -R?tsel zum Leben zu erwecken, nein J

ThebestApproachforcssDependsonTheProject'Sspecificneeds.forlargerProjects, externalcssisbetterDuetomaintainability;
