このコード スニペットは、Web ページに読書進行状況バーを追加します。 バーは、メイン コンテンツ領域におけるユーザーのスクロールの進行状況を視覚的に表します。その仕組みを分析して改善してみましょう。
このコードは、main
要素の合計の高さを基準としたスクロール位置に基づいて進行状況を計算しようとします。 ただし、いくつかの問題があります:
div
は作成されますが、スタイル設定や進行状況の更新ロジックは存在しません。totalHeight
の計算は、ページ構造によっては不正確になる可能性があります。 outerHeight(true)
を使用するとマージンが含まれるため、望ましくない可能性があります。 また、最初の計算後に高さが変更される可能性がある動的コンテンツも考慮されていません。footerHeight
を減算すると進行状況の計算が正しく行われない可能性があります。これらの問題に対処した改良版は次のとおりです:
<code class="language-javascript">$(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 + '%'); }); } });</code>
この改良されたコード:
div
を持つ reading-progress
を動的に作成します。height()
: メインコンテンツの高さをより正確に計算するために、height()
の代わりに outerHeight(true)
を使用します。$(window).on('scroll', ...)
を使用して、ユーザーのスクロールに応じてプログレス バーの幅を継続的に更新します。#reading-progress
div のスタイルを設定するには CSS を追加する必要があります。 例:<code class="language-css">#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 */ }</code>
このコードを機能させるには、必ずプロジェクトに jQuery を含めてください。 この改訂されたコードは、より堅牢で正確な読み取り進行状況バーを提供します。 さらに改良するには、特殊なケースの処理や、より洗練されたスタイルの追加などが含まれる可能性があります。
以上が読書進行状況バーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。