18
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

jQuery:子要素をスクロールしている間は、ページ全体のスクロール無効化する

Last updated at Posted at 2016-01-07

子要素をスクロールできるUIで、その要素をスクロールすると勢いづいて、ページ全体までスクロールしてしまうことがある。

たとえばこんな感じに…

子要素をスクロールしているときは、ページ全体のスクロールを無効にする方法はいろいろ考えられるが、今回はjQueryで対応する方法を紹介する。

(function () {
    var timer = null;
    $(".prevent-window-scroll").on("mousewheel", function () {
        $("body").css({overflow: "hidden"});
        clearTimeout(timer);
        timer = setTimeout(function () {
            $("body").css({overflow: "inherit"});
        }, 200);
    });
})();

デモ: jQuery - 子要素をスクロールするときは、ウィンドウをスクロールしないようにする例

スニペットの内容を簡単に説明すると、子要素.prevent-window-scrollmousewheelイベントにかんで、マウスホイールが回ったときに一旦<body>のCSSにoverflow:hiddenをセットすることでページ全体のスクロールを無効化する。その後、200ミリ秒経過したら、<body>overflow:hiddenを取ってやるようにしている。

18
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?