だから私は次のようなdivを持っていて、<div id="scroller">...</div>
このdivの中にはたくさんのコンテンツがあり、オーバーフローは非表示に設定されています。
スムーズにスクロールする垂直方向のdivを作成しようとしています。divの上部にid='up'
ボタンがあり、下部にボタンがありますid='down'
。
今、上ボタンまたは下ボタンをクリックすると、divがスクロールしますが、約1行または2行(各クリック)しかありません。
マウスを押している間、この関数を継続的にスクロールするようにこの関数をバインドする方法を誰かに説明してもらえますか?また、スムーズなスクロールというよりは、上下のクリックのように感じます。
scrollTop()ではなく使用する必要のある別の関数はありますか?
ここにフィドルがあります
これに関するどんな助けも素晴らしいでしょう!前もって感謝します。
$(document).ready(function() {
var timeoutId = 0;
function scrollIt(amount){
$('#scroller').scrollTop($('#scroller').scrollTop()+amount);
}
$('#down').mousedown(function() {
timeoutId = setTimeout(scrollIt(5), 1000);
}).bind('mouseleave', function() {
clearTimeout(timeoutId);
});
$('#up').mousedown(function() {
timeoutId = setTimeout(scrollIt(-5), 1000);
}).bind('mouseleave', function() {
clearTimeout(timeoutId);
});
});
実用的なソリューション
$(document).ready(function() {
var timeoutId = 0;
function scrollIt(amount){
$('#scroller').scrollTop($('#scroller').scrollTop()+amount);
}
$('#down').mousedown(function() {
timeoutId = setInterval(function(){scrollIt(5)}, 20);
}).bind('mouseup mouseleave', function() {
clearInterval(timeoutId);
});
$('#up').mousedown(function() {
timeoutId = setInterval(function(){scrollIt(-5)}, 20);
}).bind('mouseup mouseleave', function() {
clearInterval(timeoutId);
});
});
HTML
<div class="scrollup" id="up"> </div>
<div id="scroller" class="scroller buttongroup">
blah blah
content blah
blah blah
content blah
</div>
<div class="scrolldown" id="down"> </div>