JavaScript技巧之禁止頁面滾動

一、禁止頁面滾動是哪些場景下需要用到?

在某些場景下,我們需要禁止頁面的滾動效果,比如彈出一個對話窗口或者是展示一個新的頁面元素等。如果不禁止頁面滾動,則可能會影響用戶的體驗,導致頁面元素的錯亂等問題。

那麼禁止頁面滾動的場景主要包含以下兩種:

1. 在頁面上展示一個新的元素,例如彈窗提示、輪播圖等,為了防止用戶在元素展示過程中會誤操作、造成卡頓等情況發生,需要禁止頁面滾動;

2. 移動端頁面在滾動到某一元素時,元素的 fixed 定位可能會受到影響,出現錯位等問題,為了避免這種情況的出現,需要禁止頁面滾動,確保元素的正常展現。

二、如何禁止頁面滾動

在JavaScript中,我們可以通過以下兩種方法來禁止頁面的滾動效果:

1. 阻止默認行為


window.addEventListener('touchmove', function (e) {
  e.preventDefault();
}, { passive: false });

上述代碼中,我們使用addEventListener()方法為’touchmove’事件添加了一個事件監聽函數,該函數中使用preventDefault()方法阻止了當前事件的默認行為,從而避免了頁面滾動的情況。

2. 控制overflow


document.body.style.overflow = 'hidden'

使用上述代碼可以通過控制頁面的 ‘overflow’ 屬性來禁止頁面的滾動效果,其中 ‘hidden’ 表示隱藏滾動條。需要注意的是,該代碼只適用於PC端,對於移動端則需要另行處理。

三、如何還原頁面滾動

在完成了需要禁止頁面滾動的操作後,如果需要恢復頁面的滾動效果,我們可以通過以下方式實現:

1. 恢復默認行為


window.removeEventListener('touchmove', function (e) {
  e.preventDefault();
}, { passive: false });

使用addEventListener()方法添加的事件監聽函數,我們可以使用removeEventListener()方法進行移除,從而實現恢復默認行為的目的。

2. 控制overflow


document.body.style.overflow = 'auto'

通過將 ‘overflow’ 屬性重新設置為 ‘auto’,我們可以實現頁面滾動的恢復。同樣需要注意的是,該代碼只適用於PC端,對於移動端則需要另行處理。

四、注意事項

在使用上述方法來禁止頁面滾動時,我們需要格外注意以下幾點:

1. 注意兼容性,尤其是在移動端;

2. 在禁止頁面滾動之後,需要及時恢復頁面滾動,以免對用戶體驗造成影響;

3. 在添加和移除監聽函數時,需要向對應的方法中傳遞同一個具有唯一標識的函數引用。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/256970.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 12:43
下一篇 2024-12-15 12:43

相關推薦

  • 使用vscode建立UML圖的實踐和技巧

    本文將重點介紹在使用vscode在軟體開發中如何建立UML圖,並且給出操作交互和技巧的指導。 一、概述 在軟體開發中,UML圖是必不可少的重要工具之一。它為軟體架構和各種設計模式的…

    編程 2025-04-29
  • 打包後頁面空白的解決方案

    當我們在調試階段時,我們的app可能看起來完美無缺,但當我們進行打包時,在運行app時,我們可能會遇到白屏或空白的問題。在這篇文章中,我們將探討如何解決這種問題。 一、檢查文件路徑…

    編程 2025-04-29
  • 優秀周記1000字的撰寫思路與技巧

    優秀周記是每個編程開發工程師記錄自己工作生活的最佳方式之一。本篇文章將從周記的重要性、撰寫思路、撰寫技巧以及周記的示例代碼等角度進行闡述。 一、周記的重要性 作為一名編程開發工程師…

    編程 2025-04-28
  • Python操作Web頁面

    本文將從多個方面詳細介紹Python操作Web頁面的技巧、方法和注意事項。 一、安裝必要的庫 在Python中操作Web頁面,需要用到一些第三方庫。 pip install req…

    編程 2025-04-28
  • 使用JavaScript日期函數掌握時間

    在本文中,我們將深入探討JavaScript日期函數,並且從多個視角介紹其應用方法和重要性。 一、日期的基本表示與獲取 在JavaScript中,使用Date對象來表示日期和時間,…

    編程 2025-04-28
  • JavaScript中使用new Date轉換為YYYYMMDD格式

    在JavaScript中,我們通常會使用Date對象來表示日期和時間。當我們需要在網站上顯示日期時,很多情況下需要將Date對象轉換成YYYYMMDD格式的字元串。下面我們來詳細了…

    編程 2025-04-27
  • 堆疊圖配色技巧分享

    堆疊圖是數據可視化中常用的一種表現形式,而配色則是影響堆疊圖觀感和傳達信息的重要因素之一。本文將分享一些堆疊圖配色的技巧,幫助你創造更好的數據可視化。 一、色彩搭配原則 色彩是我們…

    編程 2025-04-27
  • 使用uring_cmd提高開發效率的技巧

    對於編程開發工程師來說,提高效率一直是致力追求的目標。本文將深度解析如何使用uring_cmd,提升工作效率。 一、常用命令 uring_cmd是一個非常強大的命令行工具,但是大部…

    編程 2025-04-27
  • 通信專業Python和Java的開發技巧

    本文旨在介紹通信專業Python和Java的開發技巧,為讀者提供實用且可操作的思路和方法。 一、Python在通信領域中的應用 Python是一種優秀的程序設計語言,因其易學易用、…

    編程 2025-04-27
  • 前端引用字體的實現方法和技巧

    對於前端開發人員而言,字體關系著網站的整體美觀度和用戶體驗。為了滿足客戶,開發人員經常需要引用特定的字體。在這篇文章中,我們將會詳細解決前端引用字體的實現方法和技巧。 一、字體引用…

    編程 2025-04-27

發表回復

登錄後才能評論