」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 實現平滑滾動以獲得更好的用戶體驗。

實現平滑滾動以獲得更好的用戶體驗。

發佈於2024-11-08
瀏覽:882

平滑滾動是一項現代微動畫功能,可透過允許在頁面各部分之間輕鬆導航來增強使用者體驗。平滑滾動不是立即跳到各個部分,而是創造流暢、引人入勝的過渡。這是一種保持用戶參與度的好方法,而又不會因為突然的跳轉而讓他們不知所措。

在本文中,我們將探討兩種實現平滑滾動的方法:

  • 使用 CSS
  • 使用 JavaScript

讓我們先深入了解如何使用 CSS 實現平滑滾動。

為什麼要用 CSS 實現平滑滾動?

CSS是實現平滑滾動最簡單、最首選的方法。由於無需加載額外的 JavaScript,因此它可以提高頁面效能,從而使其更快、更輕。讓我們繼續在我們的專案中實現這一點。

第 1 步:建立導覽列

首先,讓我們建立一個簡單的導覽列來儲存導覽連結。這些連結將帶用戶到頁面上的特定部分。

Implementing Smooth Scrolling for a Better User Experience.

確保導航連結是錨標記,因為它們允許我們輕鬆跳到頁面的特定部分。

第 2 步:創建部分
現在我們有了導航鏈接,讓我們建立相應的部分。

Implementing Smooth Scrolling for a Better User Experience.

我們為每個導航連結創建了部分。

第 3 步:新增可捲動內容
為了平滑滾動,您的頁面需要足夠的內容來滾動。讓我們添加一些虛擬文字以使頁面可滾動。

Implementing Smooth Scrolling for a Better User Experience.

最後我們有足夠的內容使我們的頁面可以滾動。

第 4 步:將導航連結到部分
我們將使用錨標記的 href 屬性來引用我們想要滾動到的部分。只需新增 # 後面跟著對應的部分 ID。

Implementing Smooth Scrolling for a Better User Experience.

因此,我們基本上在上圖中所做的是使用 href 屬性來引用我們希望導航連結轉到的部分。

第 5 步:將適當的識別碼 (id) 指派給適當的部分

Implementing Smooth Scrolling for a Better User Experience.

因此,我們現在所做的只是使用 href 屬性和 Id 將每個連結分配到適當的部分。因此,href 為 #section-one 的導航連結將與 id section-one

的部分匹配

現在,當我們點擊導航連結時,我們將進入該部分。
但我們注意到有一點,不太流暢,頁面跳到該部分,體驗不太好。

第6步:使用CSS加入平滑滾動
若要實現平滑捲動,請在 html 元素中新增單一 CSS 屬性。

Implementing Smooth Scrolling for a Better User Experience.

當我們在html中加入scroll-behavior屬性時,我們可以在點擊導航連結時看到平滑的滾動效果。

運作原理

在幕後,錨標記中的 href 屬性傳統上用於導航到外部頁面或 URL。但是,當與 # 後面跟著部分 ID 配對時,錨標記會「尋找」目前頁面並捲動到對應的部分。透過加入滾動行為:平滑; CSS 屬性,我們在部分之間創造流暢的過渡,增強整體使用者體驗。

實現平滑滾動的另一種方法是使用JAVASCRIPT來處理它。
我們也可以透過幾個步驟來實現這一點:

注意:每個部分仍會像以前一樣具有指定的 id。

第1步:建立scrollIntoView函數

我們可以在 javascript 中建立一個函數,該函數將使用scrollIntoView 方法來實現相同的結果。像這樣:

Implementing Smooth Scrolling for a Better User Experience.

第 2 步:點選連結時嵌入功能

我們將在附加到每個導航連結的事件偵聽器中嵌入scrollIntoView 函數。這樣,當單擊連結時,頁面會平滑地滾動到引用的部分。

Implementing Smooth Scrolling for a Better User Experience.

這也可以根據您用於開發的框架進行重構。

這是我們在建立直覺網頁時實現平滑滾動的兩種簡單方法。

如果您有問題或回饋,請發表評論。

版本聲明 本文轉載於:https://dev.to/unegbuclinton/implementing-smooth-scrolling-for-a-better-user-experience-3819?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 如何在 PHP 中有效率地計算兩個日期之間的月份數?
    如何在 PHP 中有效率地計算兩個日期之間的月份數?
    有效找出日期之間的月份計數一個常見的程式設計挑戰是確定兩個日期之間的月份數。在 PHP 中,有許多方法可以解決這個問題。 使用 DateTime 類別 (PHP >= 5.3):PHP 5.3 中引入的 DateTime 類別提供了方便的方法用於日期操作。計算月份差異:$d1 = new DateT...
    程式設計 發佈於2024-11-08
  • Bootstrap:建立和自訂導覽列
    Bootstrap:建立和自訂導覽列
    介紹 Bootstrap 是一個開源框架,廣泛用於 Web 開發,用於建立響應式且適合行動裝置的網站。 Bootstrap 的關鍵元件之一是導覽欄,它是一個水平導覽欄,用於組織和導覽網站的內容。在本文中,我們將討論使用 Bootstrap 建立和自訂導覽列的優點和缺點及其功能。 ...
    程式設計 發佈於2024-11-08
  • 將 WebSocket 與 Python 結合使用
    將 WebSocket 與 Python 結合使用
    什麼是 WebSocket? WebSocket 是一種支援瀏覽器和伺服器之間即時、雙向通訊的協定。傳統的 HTTP 通訊涉及客戶端發送請求和伺服器回應以交換資料。相較之下,使用 WebSocket,一旦建立了初始連接,客戶端和伺服器都可以相互發送和接收訊息,而無需重複建立新連接。...
    程式設計 發佈於2024-11-08
  • 如何在 PHP 中從子網域中提取網域?
    如何在 PHP 中從子網域中提取網域?
    在PHP 中從子域中提取域名在當代Web 開發中,必須解析和檢索域名,甚至是從子域中解析和檢索網域名稱。一個簡單的範例可能包括諸如“here.example.com”或“example.org”之類的網域。為了滿足這一需求,我們提出了一個全面的 PHP 函數,旨在從任何給定的輸入中提取根域名。 結合...
    程式設計 發佈於2024-11-08
  • 如何在多執行緒程式設計中連接向量以獲得最佳效率?
    如何在多執行緒程式設計中連接向量以獲得最佳效率?
    連結向量:深入分析在多執行緒程式設計中,合併結果是一個常見的挑戰。這通常涉及將多個向量組合成單一綜合向量。讓我們探索連接向量以獲得最大效率的最佳方法。 最佳連接方法為了高效的向量連接,最佳實踐是利用保留和插入方法:AB.reserve(A.size() B.size()); // Preallo...
    程式設計 發佈於2024-11-08
  • 如何優化FastAPI以實現高效的JSON資料回傳?
    如何優化FastAPI以實現高效的JSON資料回傳?
    FastAPI 傳回大型 JSON 資料的最佳化透過 FastAPI 傳回大量 JSON 資料集可能是一項耗時的任務。為了解決這個瓶頸,我們探索提高效能的替代方法。 識別瓶頸:使用 json.dumps 將 Parquet 檔案解析為 JSON 的初始方法( ) 和 json.loads() 效率低...
    程式設計 發佈於2024-11-08
  • React:狀態 X 派生狀態
    React:狀態 X 派生狀態
    什麼是派生狀態?考慮文字的一種狀態,然後考慮大寫文字的另一種狀態。 匯出狀態 function Foo() { const [text, setText] = useState('hello, za warudo!'); const [uppercaseText, ...
    程式設計 發佈於2024-11-08
  • 如何使用自訂使用者類型將 PostgreSQL JSON 欄位對應到 Hibernate 實體?
    如何使用自訂使用者類型將 PostgreSQL JSON 欄位對應到 Hibernate 實體?
    將 PostgreSQL JSON 欄位對應到 Hibernate 實體使用 PostgreSQL 資料庫時,常常會遇到以 JSON 格式儲存資料的資料列。為了使用 Hibernate 有效地將這些欄位對應到 Java 實體,選擇適當的資料類型至關重要。 在這種情況下,目前的問題圍繞著將 Postg...
    程式設計 發佈於2024-11-08
  • 確保整個團隊的 Node.js 版本一致
    確保整個團隊的 Node.js 版本一致
    .nvmrc 和 package.json 綜合指南 在現今動態的開發環境中,跨不同專案管理多個 Node.js 版本通常是一項複雜且容易出錯的任務。 Node.js 版本不一致可能會導致許多問題,從意外行為到應用程式完全失敗。 利用 .nvmrc 檔案進行版本控制 在專案中保持一...
    程式設計 發佈於2024-11-08
  • 何時在 JavaScript Promise 中使用 Promise.reject 與 Throw?
    何時在 JavaScript Promise 中使用 Promise.reject 與 Throw?
    JavaScript Promise:Reject 與Throw 之謎使用JavaScript Promise 時,開發人員經常面臨一個困境:他們是否應該使用Promise . reject 或者只是拋出一個錯誤?雖然這兩種方法具有相似的目的,但關於它們的差異和潛在優勢仍然存在混淆。 探索相似之處最...
    程式設計 發佈於2024-11-08
  • 建立 Chrome 擴充功能:快速概述
    建立 Chrome 擴充功能:快速概述
    模组——修改? 如果您喜欢游戏,您就会知道没有什么比玩模组游戏更好的了。这是您最喜欢的游戏,但具有额外的功能、功能和乐趣。现在,想象一下为您的网络浏览体验带来同样的兴奋。这正是浏览器扩展的作用——它们就像浏览器的模组,以您从未想过的方式增强浏览器的功能。 通过 Chrome 扩展程序,您可以调整浏览...
    程式設計 發佈於2024-11-08
  • 如何使用 CSS 設定表格列寬?
    如何使用 CSS 設定表格列寬?
    設定表格列寬表格通常用於呈現表格數據,但調整列寬對於確保可讀性和正確性至關重要結盟。在本文中,我們將探討如何使用 CSS 設定表格列的寬度。 使用 CSS 寬度屬性的方法表格列的寬度可以使用 col 元素的 width 屬性進行設定。寬度值可以以像素為單位指定(例如 width: 200px;),也...
    程式設計 發佈於2024-11-08
  • 如何從 Python 中的巢狀函數存取非局部變數?
    如何從 Python 中的巢狀函數存取非局部變數?
    存取嵌套函數作用域中的非局部變數在Python 中,嵌套函數作用域提供對封閉作用域的訪問。但是,嘗試修改巢狀函數內封閉範圍內的變數可能會導致 UnboundLocalError。 要解決此問題,您有多種選擇:1。使用 'nonlocal' 關鍵字 (Python 3 ):對於 Pyt...
    程式設計 發佈於2024-11-08
  • 使用 CSS 將漸層應用於文字。
    使用 CSS 將漸層應用於文字。
    文字漸變 現在你可以在很多地方看到像文字漸變這樣的好技巧......但是呢?你有沒有想過它們是如何製作的?今天就讓我來教你。 .text-gradient { background: linear-gradient(-25deg, #5662f6 0%, #7fffd4 10...
    程式設計 發佈於2024-11-08
  • 如何在Python中執行自訂區間舍入?
    如何在Python中執行自訂區間舍入?
    Python 中捨入為自訂間隔在 Python 中,內建 round() 函數通常用於對數值進行舍入。然而,它採用以 10 為基數的捨入方案,這可能並不總是適合特定要求。例如,如果您想將數字四捨五入到最接近的 5 倍數,則標準 round() 函數不合適。 要解決此問題,可以建立自訂函數,將數值四捨...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3