搜尋

閱讀進度條

Jan 10, 2025 pm 06:04 PM

此程式碼片段為網頁新增閱讀進度列。 此欄直觀地表示使用者在主要內容區域中的滾動進度。讓我們分解它的工作原理並改進它。

Reading Progress Bar

程式碼嘗試根據相對於 main 元素總高度的捲動位置來計算進度。 然而,它有幾個問題:

  • 程式碼不完整:提供的程式碼已被截斷。 它缺少實際創建和更新視覺進度條的關鍵部分。 div 已創建,但不存在樣式或進度更新邏輯。
  • 高度計算不正確:根據頁面結構,totalHeight的計算可能不準確。 使用 outerHeight(true) 包含邊距,這可能是不需要的。 它也沒有考慮到在初始計算後可能改變高度的動態內容。
  • 缺乏進度更新:沒有程式碼可以在使用者捲動時更新進度條。 計算僅在文件準備好時進行一次。
  • 頁腳高度問題:如果頁腳固定或與主要內容重疊,減去footerHeight可能會導致進度計算不正確。

這是解決這些問題的改進版本:

$(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 + '%');
    });
  }
});

改進後的程式碼:

  1. 建立進度條:它會動態建立一個 ID 為 divreading-progress 作為進度條。
  2. 使用 height() 它使用 height() 而不是 outerHeight(true) 來更準確地計算主要內容高度。
  3. 處理滾動事件:它使用$(window).on('scroll', ...)在使用者滾動時不斷更新進度條的寬度。
  4. 準確計算進度:進度計算考慮了可見視窗的高度,防止進度條超過 100%。
  5. 新增 CSS(需要): 您需要新增 CSS 來設定 #reading-progress div 的樣式。 例如:
#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 */
}

請記住在您的專案中包含 jQuery 才能使此程式碼正常運作。 修改後的程式碼提供了更強大、更準確的閱讀進度條。 進一步的改進可能包括處理邊緣情況和添加更複雜的樣式。

以上是閱讀進度條的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
迭代使用樣式組件的React設計迭代使用樣式組件的React設計Apr 21, 2025 am 11:29 AM

在一個完美的世界中,我們的項目將擁有無限的資源和時間。我們的團隊將開始使用經過深思熟慮的UX設計進行編碼。

哦,製作三角形麵包絲帶的許多方法!哦,製作三角形麵包絲帶的許多方法!Apr 21, 2025 am 11:26 AM

哦,製作三角形麵包屑絲帶的許多方法

CSS指南中的SVG屬性CSS指南中的SVG屬性Apr 21, 2025 am 11:21 AM

SVG具有自己的一套元素,屬性和屬性集,以至於內聯SVG代碼可能會變得漫長而復雜。通過利用CSS和SVG 2規範的一些即將到來的功能,我們可以減少該代碼以進行清潔標記。

交叉觀察者的一些功能用途可以知道何時在元素中查看交叉觀察者的一些功能用途可以知道何時在元素中查看Apr 21, 2025 am 11:19 AM

您可能不知道這一點,但是JavaScript最近偷偷地積累了許多觀察者,而交叉觀察者是其中的一部分

恢復偏愛減少運動恢復偏愛減少運動Apr 21, 2025 am 11:18 AM

我們可能不需要扔掉所有CSS動畫。請記住,這更喜歡減少動作,而不喜歡不運動。

如何將進步的Web應用程序進入Google Play商店如何將進步的Web應用程序進入Google Play商店Apr 21, 2025 am 11:10 AM

PWA(Progressive Web應用程序)已經與我們在一起了一段時間。但是,每次我嘗試向客戶解釋它時,同樣的問題都會出現:“我的用戶會成為

處理HTML的最簡單方法包括處理HTML的最簡單方法包括Apr 21, 2025 am 11:09 AM

這對我來說非常令人驚訝,HTML從未在其中包含其他HTML文件。似乎也沒有任何東西

更改懸停在懸停的SVG的顏色更改懸停在懸停的SVG的顏色Apr 21, 2025 am 11:04 AM

使用SVG有很多不同的方法。取決於哪種方式,在不同狀態或條件下重新定制該SVG的策略 - 懸停,

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具