Javascript 平滑滚动

Javascript 平滑滚动,javascript,css,scroll,linear-interpolation,Javascript,Css,Scroll,Linear Interpolation,一段时间以来,我一直想用vanilla JS实现平滑滚动,但找不到任何合适的实现或方法。然而,我最近遇到了线性插值(LERP)的概念,这似乎与其他方法不同 虽然关于LERP平滑滚动的内容在web上似乎很少,但我刚刚发现了两篇关于LERP的优秀文章(,),以及一篇关于LERP在codepen上用于平滑滚动的文章 值得注意的是,由于嵌套容器的数量似乎不必要,因此该示例似乎不必要地复杂,因此我创建了一个示例,如下所示。最低版本似乎正在运行,但我仍然有一些顾虑和问题 const b=文件正文, m=d

一段时间以来,我一直想用vanilla JS实现平滑滚动,但找不到任何合适的实现或方法。然而,我最近遇到了线性插值(LERP)的概念,这似乎与其他方法不同

虽然关于LERP平滑滚动的内容在web上似乎很少,但我刚刚发现了两篇关于LERP的优秀文章(,),以及一篇关于LERP在codepen上用于平滑滚动的文章

值得注意的是,由于嵌套容器的数量似乎不必要,因此该示例似乎不必要地复杂,因此我创建了一个示例,如下所示。最低版本似乎正在运行,但我仍然有一些顾虑和问题

const
b=文件正文,
m=document.querySelector('main'),
p=document.querySelector('p')
让
状态={
滚动:{
高度:0,,
偏移量:0,
速度:0.075,
}
},
方向
document.addEventListener('DOMContentLoaded',()=>{
state.scroll.height=m.getBoundingClientRect().height
b、 style.height=`${Math.floor(state.scroll.height)}px`
})
b、 addEventListener('wheel',(e)=>{
方向=e.deltaY>0?'scrollDown':'scrollUp'
//renderLoop()
})
函数renderLoop(){
//常数
//差异='scrollDown'?pageYOffset-state.scroll.offset:state.scroll.offset-pageYOffset
state.scroll.offset+=Math.floor((pageYOffset-state.scroll.offset)*state.scroll.speed)
m、 style.transform=`translateY(-${state.scroll.offset}px)`
//如果(差异>20)requestAnimationFrame(renderLoop)
requestAnimationFrame(renderLoop)
}
renderLoop()
html,正文{
宽度:100%;
身高:100%;
保证金:0;
字体大小:48px;
}
主要{
宽度:100%;
位置:固定;
左:0;
排名:0;
边框:纯绿3px;框尺寸:边框框;
}
p{
宽度:100%;
最大宽度:500px;
位置:相对位置;
左:50%;
转化:translateX(-50%);
保证金:0;
边框:纯红3px;框尺寸:边框框;
}

其中一位是一位杰出人士。错误解决方案,如阿迪皮西,多洛雷,尼西等。维尼安,苏西比特?不动产或不动产。Lorem ipsum dolor sit amet,奉献精英。劳动实习是一项长期性的工作,是否有必要对劳动的必要性进行解释,并对劳动选择权进行评价,假设劳动选择权是非劳动选择权?我的同僚们都是精英。艾米特发明者,伏尔蒂·伊洛阻止了它。根据共和国主体的最大限度,临时性铅是一种临时性铜。维尼安·乌拉姆·雷拉姆

两个同龄人坐在一起,告别精英。错误解决方案,如阿迪皮西,多洛雷,尼西等。维尼安,苏西比特?不动产或不动产。Lorem ipsum dolor sit amet,奉献精英。劳动实习是一项长期性的工作,是否有必要对劳动的必要性进行解释,并对劳动选择权进行评价,假设劳动选择权是非劳动选择权?我的同僚们都是精英。艾米特发明者,伏尔蒂·伊洛阻止了它。根据共和国主体的最大限度,临时性铅是一种临时性铜。维尼安·乌拉姆·雷拉姆

三个人都是精英。错误解决方案,如阿迪皮西,多洛雷,尼西等。维尼安,苏西比特?不动产或不动产。Lorem ipsum dolor sit amet,奉献精英。劳动实习是一项长期性的工作,是否有必要对劳动的必要性进行解释,并对劳动选择权进行评价,假设劳动选择权是非劳动选择权?我的同僚们都是精英。艾米特发明者,伏尔蒂·伊洛阻止了它。根据共和国主体的最大限度,临时性铅是一种临时性铜。维尼安·乌拉姆·雷拉姆