在香草javascript中在鼠标滚轮上平滑垂直滚动?
我是vanilla javascript的超级粉丝,目前我正在做一个项目,需要在鼠标滚轮上实现平滑滚动。我想用vanilla JS实现这一点。 我在做一些研究时发现了一个jQuery代码片段,如下所示在香草javascript中在鼠标滚轮上平滑垂直滚动?,javascript,mouseevent,mouselistener,mousewheel,Javascript,Mouseevent,Mouselistener,Mousewheel,我是vanilla javascript的超级粉丝,目前我正在做一个项目,需要在鼠标滚轮上实现平滑滚动。我想用vanilla JS实现这一点。 我在做一些研究时发现了一个jQuery代码片段,如下所示 $(window).on('mousewheel DOMMouseScroll', function(e) { var dir, amt = 100; e.preventDefault(); if(e.type === 'mousewheel') { dir =
$(window).on('mousewheel DOMMouseScroll', function(e) {
var dir,
amt = 100;
e.preventDefault();
if(e.type === 'mousewheel') {
dir = e.originalEvent.wheelDelta > 0 ? '-=' : '+=';
}
else {
dir = e.originalEvent.detail < 0 ? '-=' : '+=';
}
$('html, body').stop().animate({
scrollTop: dir + amt
},500, 'linear');
});
$(窗口).on('mousewheel-DOMMouseScroll',函数(e){
var dir,
金额=100;
e、 预防默认值();
如果(e.type==='mouseweel'){
dir=e.originalEvent.wheelDelta>0?'-=':'+=';
}
否则{
dir=e.originalEvent.detail<0?'-=':'+=';
}
$('html,body').stop().animate({
滚动顶部:直接+金额
},500,'线性';
});
有谁能帮助我实现平滑滚动而不使用jQuery或任何其他库之类的帮助程序库吗
人们在jQuery中完成了许多实现。但我想要一个在vanilla JS中可以实现的最佳实现。它可以在React、Angular和Vue anywhere中的任何位置实现。您发布的代码几乎都是普通的js。只是一些调整 如果你有时间看一看 这里的新功能是动画功能
//代码在这里
document.addEventListener('wheel',函数(事件){
//仅垂直滚动
如果(event.deltaY>0)
{
event.preventDefault();
smoothScroll(document.documentElement,1001000)
}
})
功能平滑滚动(多面元素、像素、延迟)
{
const intervalToRepeat=25;
常数步长=(间隔重复*像素)/延迟;
如果(步进<像素)
{
doElement.scrollTop+=步长;
setTimeout(函数(){
平滑滚动(DomeElement,像素-步长,延迟)
},间期重复);
}
}
你好,普朗克!
lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些
一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些
lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些
lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些
一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识
lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些
一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些
lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些
lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些
lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些
一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些
lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些
lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些
一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识
lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些
一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些
lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些
lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些
一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识
lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些
一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些
lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些
lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些
一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识,一些常识
lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些
一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些
lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些
lorem ipsum一些lorem ipsum一些lorem ipsum一些lorem ipsum一些
纯JavaScriptonscroll
事件将起作用:
var container = document.getElementById('myScrollingSurface');
var lastY = 0;
container.onscroll = function () {
doSomethingCool(container.scrollTop - lastY);
lastY = container.scrollTop;
};
这个怎么样:
函数init(){
新的平滑滚动(文档,120,12)
}
功能平滑滚动(目标、速度、平滑){
如果(目标===文档)
目标=(document.scrollingElement
||document.documentElement
||document.body.parentNode
||document.body)//跨浏览器支持文档滚动
var=false
var pos=target.scrollTop
var frame=target==document.body
&&document.documentElement
?document.documentElement
:target//safari是新的IE
addEventListener('mousewheel',滚动,{passive:false})
addEventListener('DOMMouseScroll',滚动,{passive:false})
函数滚动(e){
e、 preventDefault();//禁用默认滚动
var delta=正常化的delta(e)
pos+=-delta*速度
pos=数学最大值(0,数学最小值(pos,target.s