ホームページ > ウェブフロントエンド > jsチュートリアル > ユーザーエクスペリエンスを向上させるために、JavaScript のスクロールを一時的に無効にするにはどうすればよいですか?

ユーザーエクスペリエンスを向上させるために、JavaScript のスクロールを一時的に無効にするにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-23 22:54:14
オリジナル
987 人が閲覧しました

How Can I Temporarily Disable Scrolling in JavaScript for a Better User Experience?

シームレスなユーザー エクスペリエンスのために Javascript でスクロールを一時的に無効にする

スクロールを一時的に停止すると、次のようなアニメーションを操作するときのユーザー エクスペリエンスが向上します。 jQueryのscrollToプラグイン。スクロールを完全に無効にするのは単純な解決策のように思えるかもしれませんが、インタラクションを防止しながらスクロールバーの表示を維持することは、より洗練されたアプローチとなります。

これを実現するには、関連するインタラクション イベントのキャンセルに焦点を当てます。マウスとタッチ スクロールの両方 (キーボード ボタンを含む)。

[作業中]デモ]

// Event Codes for Navigation Keys
var keys = {37: 1, 38: 1, 39: 1, 40: 1};

// Prevent Default Scrolling
function preventDefault(e) {
  e.preventDefault();
}

// Cancel Scrolling for Navigation Keys
function preventDefaultForScrollKeys(e) {
  if (keys[e.keyCode]) {
    preventDefault(e);
    return false;
  }
}

// Disable Scrolling
function disableScroll() {
  window.addEventListener('DOMMouseScroll', preventDefault, false); // Firefox
  window.addEventListener('wheel', preventDefault, false); // Desktop
  window.addEventListener('touchmove', preventDefault, false); // Mobile
  window.addEventListener('keydown', preventDefaultForScrollKeys, false); // Keyboard
}

// Enable Scrolling
function enableScroll() {
  window.removeEventListener('DOMMouseScroll', preventDefault, false);
  window.removeEventListener('wheel', preventDefault, false); 
  window.removeEventListener('touchmove', preventDefault, false);
  window.removeEventListener('keydown', preventDefaultForScrollKeys, false);
}
ログイン後にコピー

disableScroll() を呼び出すことで、scrollTo アニメーションの進行中のスクロールを効果的に防止します。アニメーションが完了したら、enableScroll() を使用してスクロール機能を復元できます。

更新: サポートの強化

このソリューションは、最新のモバイルでシームレスに動作するように更新されました。ブラウザと Chrome デスクトップ。パフォーマンスとユーザーの応答性を維持するために、パッシブ リスナーが組み込まれるようになりました。

以上がユーザーエクスペリエンスを向上させるために、JavaScript のスクロールを一時的に無効にするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート