2 つの div があるとします。
<div id="control"></div>
<div id="view">(A scrollable list)</div>
#control
そして、カーソルが中に駐車され、マウスホイールがスクロールさ#view
れると、代わりにスクロールされるようにしたいと思います。とにかくこれを達成するには?
2 つの div があるとします。
<div id="control"></div>
<div id="view">(A scrollable list)</div>
#control
そして、カーソルが中に駐車され、マウスホイールがスクロールさ#view
れると、代わりにスクロールされるようにしたいと思います。とにかくこれを達成するには?
Okay, quick fix that worked for me. Even though the fixed div is not scrollable, as it has no content to overflow its bounds, you can still detect mousewheel
events. mousewheel
events contain deltas for the x/y dimensions scrolled.
Note: This works for mice or track-pads, and will give you the proper direction (-/+), regardless of inverted Y-Axis settings (read: Apple's (un)natural scrolling)
Therefore, you can do something like this:
var fixedDiv = document.querySelector('.my-fixed-div');
var scrollableDiv = document.querySelector('.my-scrollable-list');
fixedDiv.addEventListener('mousewheel', function (e) {
e.preventDefault();
scrollableDiv.scrollTop += e.deltaY;
});
これをテストしましたが、要素でイベントを達成できる唯一の方法はonscroll
、「フローティング」するアクティブなスクロールバーを使用することです。フロートの説明 : 位置は上から 100px で、スクロールしたときに上下したかどうかを確認してから、元の位置に戻します。そのため、アクティブなスクロール バーが必要であることを覚えておいてください (要素の内部コンテンツはそれ自体よりも高くする必要があります。複数使用することもできます<br>
...)。
Javascript コード:
<script type="text/javascript">
var defaultScrollTop = 100; /* testing value */
window.onload = function() {
var div1 = document.getElementById("div1");
var div2 = document.getElementById("div2");
div1.scrollTop = defaultScrollTop; // Initialize to float
div1.onscroll = function(event) {
if (defaultScrollTop < div1.scrollTop) {
div2.scrollTop += 100; //scrollDown
} else if (defaultScrollTop > div1.scrollTop) {
div2.scrollTop -= 100; //scrollUp
}
div1.scrollTop = defaultScrollTop;
}
}
</script>
CSS:
<style>
#div1, #div2 {
max-height: 100px; /* For testing */
overflow-y: scroll;
}
</style>
したがって、内部をスクロールdiv1
すると、上下にスクロールされたかどうかがチェックされ、上下にスクロールされ、 div2
div1 がデフォルトのスクロール値に設定されます。このトリックが役立つことを願っています。
PS:調査を行うと、スクロールバーを非表示にすることができます(overflow:hidden
アクティブなスクロールバーがないため機能しません)
これはあなたを助けるかもしれません:
ドキュメントには、その機能 onscroll があります。
document.onscroll=moveSetting;
スクロールdiv1
すると、マウスポインターが にあるはずdiv2
です。したがって、マウスが div2 にある場合にのみ
実行する必要があります。scFunc()
これを達成するには
function moveSetting(evt)
{ var div2Obj=document.getElementById('div2');
var width=div2Obj.style.width;
var border=div2Obj.style.border;
var x=evt.pageX,y=evt.pageY,
var leftChk=div2Obj.offsetLeft;
var topChk=div2Obj.offsetTop;
if(x>=leftChk && x<=(leftChk+width+border*2) && y>=topChk && y<=(topChk+width+border*2)) {
scrollFunc();
}
}
var i,j;
function scrollFunc() {
var i=document.getElementById('div1').scrollTop;
i++;
i=j-1;
document.getElementById('div1').scrollTop=i;
/* manage your code yourself to scroll div1 from here */
}
最後の例を見てください -->