html对话框鼠标事件只触发一次,javascript – 每个滚动会话只有一次鼠标滚轮事件触发...

该博客介绍了一种使用JavaScript实现页面滚动的方法,通过监听'mousewheelDOMMouseScroll'事件,结合'preventDefault'阻止默认滚动行为,并用setTimeout实现延迟效果。示例代码中展示了如何根据滚轮方向改变内容面板的滚动,适用于Chrome和Safari浏览器。
摘要由CSDN通过智能技术生成

我推荐其他方式.

您应该使用’preventDefault’并使用setTimeout延迟效果.

我在链接下面写了一个简单的原型代码.

(仅在Chrome和Safari上测试过)

[HTML]

section A

section B

section C

section D

[CSS]

body {

overflow: hidden;

height: 100%;

}

#wrap {

position: relative;

width: 100%;

height: 100%;

top: 0;

}

section {

width: 100%;

height: 600px;

}

section:nth-child(1) {

background: red;

}

section:nth-child(2) {

background: blue;

}

section:nth-child(3) {

background: green;

}

section:nth-child(4) {

background: magenta;

}

[JavaScript的]

(function() {

var currentPanel = 1;

var wrap = $('#wrap');

var panelsize = 600;

var step = 10;

var interval = 1000;

var direction = 1;

var bAnimation = false;

function animation() {

setTimeout(function() {

var currentTop = parseInt(wrap.css("top"));

if (direction < 0) {

if (currentTop <= minValue) {

setTimeout(function() {

bAnimation = false;

}, interval);

return;

}

} else {

if (currentTop >= minValue) {

setTimeout(function() {

bAnimation = false;

}, interval);

return;

}

}

wrap.css({

"top": currentTop - step

});

animation();

}, 16);

}

$(window).bind('mousewheel DOMMouseScroll', function(event) {

event.preventDefault();

if (bAnimation) return;

var currentTop = parseInt(wrap.css("top"));

if (event.originalEvent.wheelDelta < 0) {

//down scroll

minValue = currentTop - panelsize;

step = 10;

direction = -1;

} else {

//up scroll

minValue = currentTop + panelsize;

step = -10;

direction = 1;

}

console.log(minValue, bAnimation);

bAnimation = true;

animation();

});

})();

如果你引用我的代码,你应该使用’jquery animate function’或’requestAnimationframe’来表示动画逻辑.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值