首頁 >web前端 >js教程 >如何在 jQuery 動畫期間暫時停用視窗滾動?

如何在 jQuery 動畫期間暫時停用視窗滾動?

Barbara Streisand
Barbara Streisand原創
2024-12-17 16:55:11349瀏覽

How to Temporarily Disable Window Scrolling During jQuery Animations?

暫時停用視窗捲動

使用scrollTo jQuery 外掛時,防止動畫期間不必要的捲動對於無縫用戶體驗至關重要。雖然一種選擇是切換正文溢出,但更精細的方法是在保持其可見性的同時停用捲軸。

解決方案:取消捲動互動

捲動事件本身無法取消。相反,請考慮防止觸發滾動的特定交互,包括:

  • 滑鼠和觸控滾動(適用於行動裝置)
  • 與滾動相關的鍵盤按鈕(例如箭頭鍵、向上翻頁/ down, home, end)

實作

以下JavaScript程式碼實現這一點:

// Prevent scroll events
function disableScroll() {
  // Add event listeners for various scroll interactions
  window.addEventListener('DOMMouseScroll', preventDefault, false); // Older Firefox
  window.addEventListener('wheel', preventDefault, { passive: false }); // Modern desktop
  window.addEventListener('touchmove', preventDefault, { passive: false }); // Mobile
  window.addEventListener('keydown', preventDefaultForScrollKeys, false); // Keyboard
}

// Re-enable scroll events
function enableScroll() {
  // Remove event listeners for scroll interactions
  window.removeEventListener('DOMMouseScroll', preventDefault, false);
  window.removeEventListener('wheel', preventDefault, { passive: false });
  window.removeEventListener('touchmove', preventDefault, { passive: false });
  window.removeEventListener('keydown', preventDefaultForScrollKeys, false);
}

// Function to prevent event default action
function preventDefault(e) {
  e.preventDefault();
}

// Function to prevent default for specific keyboard scroll keys
function preventDefaultForScrollKeys(e) {
  const scrollKeys = [37, 38, 39, 40]; // Arrow keys
  if (scrollKeys.includes(e.keyCode)) {
    e.preventDefault();
  }
}

要停用滾動,請呼叫disableScroll();要重新啟用它,請呼叫enableScroll()。

以上是如何在 jQuery 動畫期間暫時停用視窗滾動?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn