.NET開発者のためのブログメディア
【jQueryのスクロールイベント】Webページのスクロール位置を取得するプログラム
公開日時: 更新日時:

jQueryには画面をスクロールするとイベントが発生する「スクロールイベント」という要素があります。最近はWebサイトで使われていることが多く、画面をスクロールすると、「トップに戻る」ボタンや画像が表示されるのもスクロールイベントの例です。ここでは、今流行のスクロールイベントについて実際の使用例も交えながら解説していきます。参考にしていただければ幸いです。
- SE
- スクロールイベントは色々なサイトで使われているけど、どうやって実装しているのか疑問だったんですよね。
- PM
- 難しそうなイメージがありますが、jQueryを使えばたった数行で実装できますよ。
目次
jQueryのスクロールイベントとは?
冒頭でも少し申し上げましたが、スクロールイベントとは、画面をスクロールしたときに呼ばれる動作です。これだけでは内容が分かりにくいため、例を挙げたいと思います。
<例>
訪問者がWebサイト上部にいるときは何も表示しないが、画面をスクロールしてWebサイトの中部まで来たら見出しの文字や画像を表示したいとき。
訪問者がWebサイト上部にいるときは何も表示しないが、画面をスクロールしてWebサイトの中部まで来たら見出しの文字や画像を表示したいとき。
このような状況、何となくイメージできたでしょうか。
あらかじめ「見出しの文字や画像を表示する」という動作を作成しておき、「Webサイトの中部まで来たらこの動作を呼び出す」という処理を書けば、簡単に実装することができるのです。
スクロールイベントのjQuery使用例
スクロールイベントについて何となく理解できたところで、実際の使用例を見ていきましょう。下記は、一番基本的な「scrollTop」を使ったスクロール位置を確認するプログラムです。
プログラムの下には実行結果が表示されています。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
</head>
<body>
<p>位置:<span id="position">0px</span></p>
<div id="box">
<div id="contents">スクロールしてください</div>
</div>
</body>
<!--CSS-->
<style>
#box {
overflow: scroll;
height: 200px;
border: 3px solid gray;
}
#contents {
height: 500px;
}
</style>
<!--jQuery-->
<script>
$('#box').scroll(function() {
$('#position').text($(this).scrollTop() + 'px');
});
</script>
</html>
|
位置:0px
スクロールしてください
スクロールすればするほど、HTMLで用意した「position」の値が変わる仕様になっています。上記は単に現在のスクロール位置を取得するプログラムですが、これを応用すれば「スクロール位置が〇pxのときに指定の文字や画像を表示する」ということも可能です。
- SE
- スクロールイベントってとても便利な機能ですね!他にはどんなことができるんですか?
- PM
- 紹介したコードを応用すれば、「トップに戻る」ボタンなどを用意して、ボタン押下時に指定のスクロール位置まで戻ることもできますよ。試してみてくださいね。
スクロールイベントはWebサイトにメリハリをつける便利な要素
スクロールイベントを用いるとWebサイトにメリハリが出ます。見ている方も楽しいスクロールイベントですが、使いすぎるとサイトが重くなってサクサクと動作しなくなるため、適度に活用しWebサイトを充実させてみてください。
Search キーワード検索
Popular 人気の記事
-
【VB.NET入門】DataGridViewの使い方まとめ
公開: 更新:
reccomended おすすめ記事
-
【.NETが統合】.NET 5の概要と今後のリリース予定
公開: 更新:
Categories 連載一覧
Tags タグ一覧
Jobs 新着案件
-
開発エンジニア/東京都品川区/【WEB面談可】/在宅ワーク
月給29万~30万円東京都品川区(大崎駅) -
遠隔テストサービス機能改修/JavaScript/東京都港区/【WEB面談可】/テレワーク
月給45万~60万円東京都港区(六本木駅) -
病院内システムの不具合対応、保守/東京都豊島区/【WEB面談可】/テレワーク
月給30万~30万円東京都豊島区(池袋駅) -
開発/JavaScript/東京都豊島区/【WEB面談可】/テレワーク
月給50万~50万円東京都豊島区(大塚駅) -
債権債務システム追加開発/東京都文京区/【WEB面談可】/在宅勤務
月給62万~67万円東京都文京区(後楽園駅)