要素にoverflow: auto;を指定してスクロールバーを表示したときに、スクロールの位置を取得する方法で少し迷ったので、実装方法をメモしておきます。
サンプルコード
通常スクロールの位置を取得するときは$(window).scrollTop()と指定しますが、要素内のスクロール位置を取得するときも同様に、$(要素名).scrollTop()のようにします。
HTML
<div class="scroll-area"> <div class="scroll-inner"> <p>テスト</p> </div> </div> スクロール位置<span id="scrollPos">0</span> <button id="scrollMove">500pxの位置へ移動</button>
CSS
.scroll-area {
width: 600px;
height: 300px;
overflow: auto;
}
.scroll-inner {
height: 1000px;
}
JavaScript
$(function() {
// スクロール位置の取得
$('.scroll-area').on('scroll', function() {
var scrollPos = $('.scroll-area').scrollTop();
$('#scrollPos').text(scrollPos);
});
// 指定位置へ移動
$('#scrollMove').on('click', function() {
$('.scroll-area').animate({
scrollTop: 500
});
});
});
コメントが承認されるまで時間がかかります。