マウス ホイールを使用してコンテンツをスクロールする場合div
、たとえば、30px
各ステップまたは各マウス ホイール ティック w/e でスクロールするのが最適なソリューションです。
私はperformance > ease
好むjavascript > jquery
2 に答える
だから私は自分の解決策をいじりました。ここで例を見ることができますこの答えに導いてくれたTom
に
感謝します。
JS:
function wheel($div,deltaY){
var step = 30;
var pos = $div.scrollTop();
var nextPos = pos + (step*(-deltaY))
console.log("DelatY: " + deltaY + ", Step: " + step + ", nextPos: " + nextPos);
$div.scrollTop(nextPos);
}
$('#test').bind('mousewheel', function(event, delta, deltaX, deltaY) {
wheel($(this),deltaY);
event.preventDefault();
});
使用ライブラリ:
- jQuery1.8.3
- jQuery マウスホイール
ブラウザーが現在実行している (AFAIK) 3 つの異なる動作があるため、マウスホイールの詳細を自分で実装するには大きな問題があります。現在、Firefox を除くすべてがmousewheel
イベントをサポートしており、 wheelDelta
「クリック」ごとに 120 のパラメーターを渡します。Firefox にはDOMMouseScroll
イベントがあり、detail
「クリック」ごとに3(と思います)のパラメーターで、反対方向です。Apple デバイスの解像度ははるかに細かく、減速があります。そのため、Webkit ブラウザーは 2 つの軸のデルタも提供し、トラックパッドの 2 本指スクロールに「クリック」はありません。最後に、DOM Level 3 Events ドラフト標準では、「クリック」を (私が思うに) 1 と定義し、3 つの軸の可能性を提供します。そのため、コードを将来的に保証する必要があります。そのため、独自のホイール ハンドラーを実装するのはちょっと面倒です (現在、マウスホイールを使用して SVG アプリのズームを実装しているのでわかります)。
詳細については、Javascript: The Definitive Guide の 17.6 章の Mousewheel Events を参照してください。