jQueryを利用して、ウェブブラウザのスクロール量を取得するコードを紹介します。
概要
jQueryでスクロール量を取得する場合は以下のメソッドを利用します。
プログラム : 縦方向のみの例
コード
下記のHTMLファイルを作成します。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<meta charset="utf-8" />
<style type="text/css">
<!--
.FloatInfo {
position: fixed;
top: 16px;
right: 16px;
width: 240px;
height: 60px;
background-color: #FFFFFF;
}
-->
</style>
<script src="jquery-2.2.1.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
$(window).on('scroll', function () {
$("#infoFrame").text("ScrollY:" + $(this).scrollTop());
});
});
</script>
</head>
<body>
<div id="infoFrame" class="FloatInfo"></div>
<div>
<div style="height:120px;background-color:#808080">コンテンツ</div>
<div style="height:120px;background-color:#D0D0D0">コンテンツ</div>
<div style="height:120px;background-color:#808080">コンテンツ</div>
<div style="height:120px;background-color:#D0D0D0">コンテンツ</div>
<div style="height:120px;background-color:#808080">コンテンツ</div>
<div style="height:120px;background-color:#D0D0D0">コンテンツ</div>
<div style="height:120px;background-color:#808080">コンテンツ</div>
<div style="height:120px;background-color:#D0D0D0">コンテンツ</div>
</div>
</body>
</html>
解説
DOMツリーが構築された後で処理を開始するため、#(function(){ ... }); 内にコードを記述します。スクロール量の表示は、スクロールがされたタイミングで表示をするため、onscrollイベントハンドラに表示のコードを記述します。jQueryでは on メソッドを利用します。onメソッドの第一引数に'scroll'を第二引数にイベントハンドラの関数を与えることで、スクロールイベントを実装します。
スクロールイベントでは、id="infoFrame"の要素に対して、スクロール量を表示します。
表示結果
上記のHTMLファイルをWebブラウザで表示します。下図の画面が表示されます。
画面をスクロールします。右側の固定エリアに縦方向のスクロール量が表示されます。
逆方向にスクロールし、画面の上部まで戻ると値は0になります。
プログラム : 縦横方向の例
コード
下記のHTMLファイルを作成します。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<meta charset="utf-8" />
<style type="text/css">
<!--
.FloatInfo {
position: fixed;
top: 16px;
right: 16px;
width: 240px;
height: 60px;
background-color: #FFFFFF;
}
-->
</style>
<script src="jquery-2.2.1.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
$(window).on('scroll', function () {
$("#infoFrame").html("ScrollX:" + $(this).scrollLeft() +"<br/>"+"ScrollY:" + $(this).scrollTop());
});
});
</script>
</head>
<body>
<div id="infoFrame" class="FloatInfo"></div>
<div>
<div style="height:120px;width:1600px;background-color:#eaeaff">コンテンツ</div>
<div style="height:120px;width:1600px;background-color:#9ebeee">コンテンツ</div>
<div style="height:120px;width:1600px;background-color:#eaeaff">コンテンツ</div>
<div style="height:120px;width:1600px;background-color:#9ebeee">コンテンツ</div>
<div style="height:120px;width:1600px;background-color:#eaeaff">コンテンツ</div>
<div style="height:120px;width:1600px;background-color:#9ebeee">コンテンツ</div>
<div style="height:120px;width:1600px;background-color:#eaeaff">コンテンツ</div>
<div style="height:120px;width:1600px;background-color:#9ebeee">コンテンツ</div>
</div>
</body>
</html>
解説
コードは先のコードと同様です。横方向のスクロール量を検出するために、onscroll内で、scrollLeft()の値を取得して画面に表示すrコードを追加しています。
実行結果
上記のHTMLファイルを表示します。下図の画面が表示されます。
下方向にスクロールすると、ScrollY の値が増加します。
右方向にスクロールすると、ScrollX の値が増加します。
ページの上端までスクロールして戻ると、ScrollY の値は0になります。
同様にページの左端までスクロールして戻ると、 ScrollX の値は0になります。
著者
iPentecのプログラマー、最近はAIの積極的な活用にも取り組み中。
とっても恥ずかしがり。
最終更新日: 2024-01-06
作成日: 2016-02-22