スクロールの位置(量)を取得・設定
要素のスクロールの位置(量)を取得・設定するには、element.scrollTop
プロパティとelement.scrollLeft
プロパティを使用します。
ウィンドウのスクロールの位置(量)を取得・設定する場合、 Webkit系(Safari, Chrome, iOS)・IE5はdocument.bodyオブジェクト(body要素)、IE(6以上)・Firefox・Operaはdocument.documentElementオブジェクト(html要素)でそれぞれ取得・設定します。
- ※ IE8以下では、ブラウザ自身(ウィンドウ)のスクロール以外の要素は対応していません。
構文
取得
// 上からの位置
var getTopPosition = element.scrollTop;
// 左からの位置
var getLeftPosition = element.scrollLeft;
設定
// 上からの位置
element.scrollTop = setTopPosition;
// 左からの位置
element.scrollLeft = setLeftPosition;
戻り値
scrollTopプロパティは上からのスクロールの位置、scrollLeftプロパティは左からのスクロールの位置を返します。
サンプルコード
取得
JavaScript
var sampleElement = document.getElementById('sample'),
outputElement = document.getElementById('output'),
documentElement = null,
positionTop = 0,
positionLeft = 0;
if (navigator.userAgent.toLowerCase().match(/webkit|msie 5/)) {
// Webkit系(Safari, Chrome, iOS)、IE5はbody要素
documentElement = document.body;
} else {
// IE(6以上)、Firefox、Operaはhtml要素
documentElement = document.documentElement;
}
// 指定要素のスクロール量取得
sampleElement.onscroll = function() {
positionTop = this.scrollTop;
positionLeft = this.scrollLeft;
outputElement.innerHTML = 'div : [ top ] =' + positionTop + ', [ left ] =' + positionLeft + '
' + outputElement.innerHTML;
};
// ウィンドウのスクロール量取得
window.onscroll = function() {
positionTop = documentElement.scrollTop;
positionLeft = documentElement.scrollLeft;
outputElement.innerHTML = documentElement.tagName + ' : [ top ] =' + positionTop + ', [ left ] =' + positionLeft + '
' + outputElement.innerHTML;
};
設定
JavaScript
var sampleElement = document.getElementById('sample'),
documentElement = null;
if (navigator.userAgent.toLowerCase().match(/webkit/)) {
// Webkit系(Safari, Chrome, iOS)はbody要素
documentElement = document.body;
} else {
// IE, Firefox, Opera
documentElement = document.documentElement;
}
// 指定要素のスクロール量を設定
sampleElement.scrollTop = 100;
// ウィンドウのスクロール量を設定
window.scrollTop = 200;