- 更新日: 2015年3月6日
- jQuery & JavaScript
JavaScriptでスクロールを一時的に止める
スポンサーリンク
JavaScript で何かしらのイベントをきっかけに、一時的にブラウザのスクロールを停止させたい場合の処理方法を調べました。以下のページで紹介してあった方法がかしこい。
JavaScriptで一時的にスクロールを無効化する | monoの開発ブログ
Lightboxっぽいもののデモ
【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
スポンサーリンク
CSS と jquery の scrollTop(), scrollLeft() で実現
詳しい解説は、上記ページを参考。上下スクロールに加え、左右スクロールが発生する場合に対処するために、scrollLeft の処理を追加しました。
css
1 2 3 4 5 6 7 8 9 |
body { width: 100%; } body.noscroll { position: fixed; overflow-x: scroll; overflow-y: scroll; } |
javascript
以下のように、stopScroll(), resumeScroll() 関数を定義して、適宜クリックなどのイベント発生時にこれらを呼び出すように登録。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
var scrollTop = 0; var scrollLeft = 0; function stopScroll() { scrollTop = $(window).scrollTop(); scrollLeft = $(window).scrollLeft(); $('body').addClass('noscroll').css('top', (-scrollTop) + 'px').css('left', (-scrollLeft) + 'px'); } function resumeScroll() { $('body').removeClass('noscroll'); $(window).scrollTop(scrollTop); $(window).scrollLeft(scrollLeft); } |
一応、この方針の実装で動くには動いたのですが、ちょっと条件によっては使いどころが難しそう…。実験したところ、レスポンシブなデザインとの相性が悪いのか、挙動が安定しない現象が発生しました。もう少し調査します。
スポンサーリンク
オライリーのJavaScritp本(通称サイ本)は、昔かなり読み込みました。
>> 次の記事 : JavaScript/jQueryでDOM要素が存在するか確認する方法
<< 前の記事 : JavaScriptでcapitalize、アルファベット一文字目を大文字にする
- jQuery & JavaScript の関連記事
- React.js用にESLintをインストールして設定、JavaScriptコードを楽に検証しよう
- JavaScriptでHTMLコメント要素を取得する
- YahooのJavaScriptマップAPI(YOLP)で地図を描画
- HTML5のGeolocation APIで現在地の位置情報(緯度/経度)を取得するJavaScriptコード
- JavaScriptでキャメルケースを単語に分割
- Browserify + GulpでクライアントのJavaScript / CoffeeScriptでrequire
- JavaScript/jQueryでDOM要素が存在するか確認する方法
- JavaScriptでcapitalize、アルファベット一文字目を大文字にする
- JavaScriptでrangeオブジェクトから座標を取得するコード
- CoffeeScript入門、クラス継承とメソッドのオーバーライド
Leave Your Message!