Cet extrait de code ajoute une barre de progression de lecture à une page Web. La barre représente visuellement la progression du défilement de l'utilisateur dans la zone de contenu principale. Décomposons son fonctionnement et améliorons-le.
Le code tente de calculer la progression en fonction de la position de défilement par rapport à la hauteur totale de l'élément main
. Cependant, il présente plusieurs problèmes :
-
Code incomplet : Le code fourni est tronqué. Il manque la partie cruciale qui crée et met à jour visuellement la barre de progression. Le
div
est créé, mais aucune logique de mise à jour de style ou de progression n'est présente. -
Calcul de la hauteur incorrect : Le calcul de
totalHeight
peut être inexact en fonction de la structure de la page. L'utilisation deouterHeight(true)
inclut des marges, ce qui peut ne pas être souhaité. Il ne tient pas non plus compte du contenu dynamique susceptible de modifier la hauteur après le calcul initial. - Manque de mise à jour de la progression : Il n'y a pas de code pour mettre à jour la barre de progression lorsque l'utilisateur fait défiler. Le calcul n'est effectué qu'une seule fois lorsque le document est prêt.
-
Problème de hauteur du pied de page : La soustraction
footerHeight
peut entraîner un calcul de progression incorrect si le pied de page est corrigé ou chevauche le contenu principal.
Voici une version améliorée qui résout ces problèmes :
$(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 + '%'); }); } });
Ce code amélioré :
-
Crée une barre de progression : Il crée dynamiquement un
div
avec l'IDreading-progress
pour faire office de barre de progression. -
Utilise
height()
: Il utiliseheight()
au lieu deouterHeight(true)
pour un calcul plus précis de la hauteur du contenu principal. -
Gère les événements de défilement : Il utilise
$(window).on('scroll', ...)
pour mettre à jour en permanence la largeur de la barre de progression à mesure que l'utilisateur fait défiler. - Calcule la progression avec précision : Le calcul de la progression prend en compte la hauteur de la fenêtre visible, empêchant la barre de dépasser 100 %.
-
Ajoute du CSS (nécessaire) : Vous devrez ajouter du CSS pour styliser le
#reading-progress
div. Par exemple :
#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 */ }
N'oubliez pas d'inclure jQuery dans votre projet pour que ce code fonctionne. Ce code révisé fournit une barre de progression de lecture plus robuste et plus précise. D'autres améliorations pourraient inclure la gestion des cas extrêmes et l'ajout d'un style plus sophistiqué.
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!

Ceci est le 3ème article d'une petite série que nous avons faite sur l'accessibilité. Si vous avez manqué le deuxième article, consultez "Gestion de la mise au point des utilisateurs avec: Focus-visible". Dans

Ce tutoriel montre la création de formulaires JavaScript professionnels à l'aide du cadre Smart Forms (Remarque: non plus disponible). Bien que le cadre lui-même ne soit pas disponible, les principes et techniques restent pertinents pour d'autres constructeurs de formulaires.

Le CSS Box-Shadow et les propriétés de contour ont gagné le thème. Laissez regarder quelques exemples de la façon dont cela fonctionne dans des thèmes réels et des options que nous devons appliquer ces styles aux blocs et éléments WordPress.

Si vous avez récemment commencé à travailler avec GraphQL ou examiné ses avantages et ses inconvénients, vous avez sans aucun doute entendu des choses comme "GraphQL ne prend pas en charge la mise en cache" ou

L'API de transition Svelte fournit un moyen d'animer les composants lorsqu'ils entrent ou quittent le document, y compris les transitions Svelte personnalisées.

Dans cet article, nous plongerons dans le monde des barres de défilement. Je sais, ça ne semble pas trop glamour, mais croyez-moi, une page bien conçue va de pair

Combien de temps passez-vous à concevoir la présentation de contenu pour vos sites Web? Lorsque vous écrivez un nouveau blog ou créez une nouvelle page, pensez-vous à

Les commandes NPM exécutent diverses tâches pour vous, soit en tant que processus unique ou en cours d'exécution pour des choses comme le démarrage d'un serveur ou la compilation de code.


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

mPDF
mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

DVWA
Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel

Listes Sec
SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.
