html / javascript / cssを使用してズーム機能に取り組んでいました。タグwheel
にイベント リスナーを
追加しました。マウスでうまく動作します。は、ズームインの場合は 120 の正の倍数、それ以外の場合は負の倍数を返します。
問題はタッチパッド
にあります。ズームインジェスチャでは、一貫した値が得られません。間にいくつかの があります。このため、ズームは非常に粗いです。スムーズなズームを実現する方法、またはタッチパッドで一貫した値を取得する方法div
console.log(event.wheelDelta)
console.log
-120
wheelDelta
5062 次
3 に答える
7
event.wheelDelta
はすべてのブラウザーで定義されているわけではなく、非推奨であり、Mozilla のドキュメントによると使用すべきではありません。値event.deltaX
と を使用できますevent.deltaY
。詳細については、Mozilla wheel のドキュメントを参照してください。
Google Chrome と Mozilla Firefox で次のコードをテストしました。価値観は大きく異なります。Google Chrome は常にevent.deltaY
値100
orを返します-100
。Mozilla Firefox では、常に値3
または-3
.
document.addEventListener('wheel', function(event) {
console.log(event.deltaX, event.deltaY);
});
ホイールの値に依存するのではなく、Mozilla scroll documentationで説明されているように、スクロール イベントをリッスンします。
var lastKnownScrollPosition = 0;
var ticking = false;
function doSomething(scrollPosition) {
console.log(scrollPosition);
}
window.addEventListener('scroll', function(e) {
lastKnownScrollPosition = window.scrollY;
if(!ticking) {
window.requestAnimationFrame(function() {
doSomething(lastKnownScrollPosition);
ticking = false;
});
}
ticking = true;
});
于 2016-08-14T14:47:13.533 に答える