如何禁用多个滚动功能
How to disable more than one scroll function?
我正在制作一个页面,向下滚动时,页面的左侧将向上滑动,页面的右侧将向下滑动。向上滚动时,页面左侧将向下滑动,页面右侧将向上滑动。
如果用户只滚动一次(使用鼠标滚轮),当您滚动多次(在功能完成之前,左右将继续滚动并搞砸,我就可以工作。有没有办法禁用多个滚动?
我在下面添加了我的代码和小提琴。
<div class="left">
<div id="left1" class="onLeft Side">
</div>
<div id="left2" class="onLeft Side">
</div>
<div id="left3" class="onLeft Side">
</div>
</div>
<div class="right">
<div id="right3" class="onRight Side">
</div>
<div id="right2" class="onRight Side">
</div>
<div id="right1" class="onRight Side">
</div>
</div>
$(document).ready(function(){
var wholeHeight = jQuery('.right').height();
var rightLength = jQuery('.onRight').length;
jQuery('.right').css({top:-((wholeHeight*rightLength)-wholeHeight)});
var leftHeight = jQuery('.left').height();
var leftLength = jQuery('.onLeft').length;
var tot = (leftHeight * leftLength) - leftHeight;
console.log('tot', tot)
$('body').bind('mousewheel', function(e){
var height = jQuery('.left').height();
var leftTop = jQuery('.left').position().top;
var rightTop = jQuery('.right').position().top;
if(e.originalEvent.wheelDelta /120 > 0) {
if (leftTop != 0) {
console.log('scrolling up !');
jQuery('.left').animate({top:leftTop + height});
jQuery('.right').animate({top:rightTop - height});
} else {
console.log('The up end');
}
} else {
if (leftTop != -tot) {
console.log('scrolling down !');
jQuery('.left').animate({top:leftTop - height});
jQuery('.right').animate({top:rightTop + height});
} else {
console.log('the down end')
}
}
});
});
https://jsfiddle.net/11pftj26/
谢谢
试试这个:
$(document).ready(function(){
var wholeHeight = jQuery('.right').height();
var rightLength = jQuery('.onRight').length;
jQuery('.right').css({top:-((wholeHeight*rightLength)-wholeHeight)});scrolling=false;
var leftHeight = jQuery('.left').height();
var leftLength = jQuery('.onLeft').length;
var tot = (leftHeight * leftLength) - leftHeight;
console.log('tot', tot)
$('body').bind('mousewheel', function(e){
if(scrolling)
return;
scrolling=true;
var height = jQuery('.left').height();
var leftTop = jQuery('.left').position().top;
var rightTop = jQuery('.right').position().top;
if(e.originalEvent.wheelDelta /120 > 0) {
if (leftTop != 0) {
console.log('scrolling up !');
jQuery('.left').animate({top:leftTop + height},{done:function(){scrolling=false}});
jQuery('.right').animate({top:rightTop - height},{done:function(){scrolling=false}});
} else {
console.log('The up end');
scrolling=false;
}
} else {
if (leftTop != -tot) {
console.log('scrolling down !');
jQuery('.left').animate({top:leftTop - height},{done:function(){scrolling=false}});
jQuery('.right').animate({top:rightTop + height},{done:function(){scrolling=false}});
} else {
console.log('the down end');
scrolling=false;
}
}
});
});
小提琴在行动
您可以使用 Jquery 的.one()
函数,阅读官方指南。
http://api.jquery.com/one/
当您快速滚动两次时,leftTop
和leftRight
的计算将关闭。您可以做的是将顶部计算与 DOM 状态分开:
https://jsfiddle.net/11pftj26/2/
$(document).ready(function(){
var wholeHeight = jQuery('.right').height();
var rightLength = jQuery('.onRight').length;
jQuery('.right').css({top:-((wholeHeight*rightLength)-wholeHeight)});
var leftHeight = jQuery('.left').height();
var leftLength = jQuery('.onLeft').length;
var tot = (leftHeight * leftLength) - leftHeight;
var index = 0;
function animate(index) {
jQuery('.left').stop().animate({top: -1 * index * leftHeight});
jQuery('.right').stop().animate({top: -1 * (rightLength - index - 1) * wholeHeight });
}
$('body').bind('mousewheel', function(e) {
if (e.originalEvent.wheelDelta > 0) {
index = Math.max(0, index - 1);
} else {
index = Math.min(index + 1, rightLength - 1);
}
animate(index);
});
});
相关文章:
- jQuery滚动功能只工作一次
- 向表单添加滚动功能
- jQuery触摸滑动内容滚动功能
- 滚动功能不工作
- 网络驱动程序中使用的向下滚动功能从网页的哪个部分进行搜索
- jQuery Div滚动功能:IE中的问题
- 如何使用位置获取滚动功能获取 HTML 中的元素标签
- 在iPad Web App上拖放 - 同时保留滚动功能
- 如何在PDF中放置滚动功能.js
- 如何在幻灯片中添加向上滚动功能单击1次即可向下滚动
- jquery滚动功能无法正常工作
- 删除滚动条,但保留滚动功能
- 滚动功能不工作
- 滚动功能按相反顺序工作
- 滚动功能工作方向错误
- 当滚动$(窗口)时,角度控制器未触发滚动功能
- 如何在tinyscroll插件中使用水平滚动功能
- 点击时向下滚动功能
- 如何禁用多个滚动功能
- 禁用临时滚动功能