Javascript 鼠标滚轮上的水平滚动
在哪里可以不按住shift键,通过鼠标滚轮水平滚动div 我知道鼠标滚轮插件的方法:Javascript 鼠标滚轮上的水平滚动,javascript,jquery,mousewheel,smooth-scrolling,Javascript,Jquery,Mousewheel,Smooth Scrolling,在哪里可以不按住shift键,通过鼠标滚轮水平滚动div 我知道鼠标滚轮插件的方法: $("#test").mousewheel(function(event, delta) { var current = $(this).scrollLeft(); $(this).scrollLeft(current - (delta * 80)); }); 我试着用$(这个)滚动它。动画…,但它看起来还是很难看 我不需要在滚动时模拟浏览器内置的平滑度,因为它不是跨浏览器的方式,我需要自然滚动
$("#test").mousewheel(function(event, delta) {
var current = $(this).scrollLeft();
$(this).scrollLeft(current - (delta * 80));
});
我试着用$(这个)滚动它。动画…
,但它看起来还是很难看
我不需要在滚动时模拟浏览器内置的平滑度,因为它不是跨浏览器的方式,我需要自然滚动
也许可以在
鼠标指针
事件上模拟按住shift键?诀窍是检索表单。。。然后使用jQuery
因为增量总是33.33333 206176758
或-33.33333 206176758
。。。您可以用33
进行和除。然后,您将始终获得1
或-1
,您可以将其乘以希望在X轴上每个轮子旋转时滚动的像素量
//用于存储当前X滚动位置的变量。
无功电流=0;
//每个轮子旋转时所需的像素增量。
var ScrollX_pixelPer=40;
//事件处理程序。
$(“#测试”)。在(“鼠标滚轮”上,函数(e){
e、 预防默认值();
//获取deltaY(始终为+/-33.33333 206176758)并乘以所需的像素增量。
var delta=ScrollX_pixelPer*(parseInt(e.originalEvent.deltaY)/33);
//递增/递减电流。
电流+=增量;
//console.log(当前);
//申请新职位。
$(此)。向左滚动(当前);
});代码>
#测试{
高度:2.5em;
溢出y:滚动;
空白:nowrap;
}
.垫片{
高度:400px;
}
我的同僚坐在我身边,没有我。圣殿医生,不,我是上诉人。在任何情况下,都应使用临时性材料。不需要任何精彩的表演,也不需要任何激烈的辩论。Nihil假定的invenire ea vix。我是一个爱哭的人,我是一个爱哭的人。为mea配给法贝拉公社,为感官照明。
我知道有点晚了,但我自己也在寻找答案,在玩Louys的代码时,我发现了一些似乎更好用的东西
$(“测试”)。在(“鼠标滚轮”上,函数(e){
e、 预防默认值();
var delta=40*(parseInt(e.originalEvent.deltaY)/33);
var scto=$(this).scrollLeft()-delta;
$(此).scrollLeft(scto);
});代码>好吧,我最近一直在努力实现这一功能,我发现只要mousewheel事件似乎不再受支持,那么使用当前浏览器的最佳解决方案可能是:
$(window).on('wheel', function(e){
if ($.browser.mozilla) {
e.preventDefault();
var delta = -500*(parseInt(e.originalEvent.deltaY)/33);
var scto = $(this).scrollLeft() - delta;
$(this).scrollLeft(scto);}
else{
e.preventDefault();
var delta = -50*(parseInt(e.originalEvent.deltaY)/33);
var scto = $(this).scrollLeft() - delta;
$(this).scrollLeft(scto);}
});`
劳伊斯,谢谢你的回答。平滑呢?为什么要将当前变量移到事件之外,而不将其设置为$(this).scrollLeft()?current
变量保持滚动的位置。如果在事件处理程序中声明它,它的值将在每个轮子旋转时重置。它必须在外部以保持每次旋转之间的值。关于“窒息”。。您可以尝试使用.animate()
,但由于它意味着延迟,因此您还需要使用.setTimeout
重置计时器以“缓冲”旋转(因为它触发频率太高),并在用户完成旋转时应用最后一个值。但是我认为这样做不好。我尝试了你的代码,我注意到在console.log(current)
中,当你仍然滚动时,这个“current x”值将增加/减少,即使没有更多的内容可以滚动。有什么方法可以识别内容的边缘/结尾吗?我添加了一个条件,current
不能小于0,并计算了内容的内容宽度,所以不用担心。对于我自己的项目,我觉得向上滚动基本上应该向右滚动,但如果你想更改它,只需添加增量而不是减去它(因此,var scto=$(this).scrollLeft()+delta;)