Javascript HTML-如何滚动整个部分而不在中间停止? 我需要完成的是:
我的网站由几个部分组成,每个部分占据整个页面。当用户尝试向下滚动时,我尝试完成的是:Javascript HTML-如何滚动整个部分而不在中间停止? 我需要完成的是:,javascript,html,css,sass,Javascript,Html,Css,Sass,我的网站由几个部分组成,每个部分占据整个页面。当用户尝试向下滚动时,我尝试完成的是: 在滚动达到某个速度阈值之前,页面根本不会移动 当滚动达到阈值时向下滚动整个页面 示例网站: (跳过介绍) 我尝试的是: CSSscroll snap align:此方法仅在用户停止滚动后捕捉滚动 示例代码: 第1页内容 第2页内容 这里需要注意的第一件事是不能取消滚动事件。因此,只能通过在wheel或mouseweel事件上附加事件侦听器来完成(touchmove如果还需要触摸屏支持) 通过使用这些
- (跳过介绍)
我尝试的是:
scroll snap align
:此方法仅在用户停止滚动后捕捉滚动示例代码:
第1页内容
第2页内容
这里需要注意的第一件事是不能取消
滚动
事件。因此,只能通过在wheel
或mouseweel
事件上附加事件侦听器来完成(touchmove
如果还需要触摸屏支持)
通过使用这些,我能够想出这个。这里的想法是维护一个计数器,它将在每个控制盘
事件上增加/减少其值。如果计数器达到某个阈值,将触发滚动功能。停止鼠标滚轮后,计数器将重置回0,N毫秒数
因此,为了触发滚动功能,必须转动鼠标滚轮一定次数,以在N毫秒的时间限制内达到阈值
这种方法的缺点是,body
元素被赋予了overflow:hidden
属性来隐藏滚动条。否则,用户将能够滚动页面而不产生预期效果。如果这不是问题,则可以删除溢出
属性。
此外,本例中不处理touchmove
事件,但其实现也将类似
$(文档).ready(函数(){
const COUNTER_THRESHOLD=5;//将其更改为降低/增加感光度
常数计数器重置持续时间=400;
设动画=假;
设计数器=0;
函数resetDelta(){
计数器=0
}
让deboucncedReset=debounce(重置增量,计数器重置持续时间);
函数handleScroll(事件){
//event.wheelDelta可以是正的,也可以是负的,具体取决于滚动的方向
计数器+=1*(数学符号(事件三角洲));
//若计数器值为负值且绝对值大于阈值,则向下滚动
如果(!动画&&(Math.abs(计数器)>=计数器_阈值)&&counter<0){
让targetSection=$('section.active')。下一步('section');
if(目标截面长度){
滚动部分(目标部分);
}
}
//如果计数器值为正值且绝对值大于阈值,则向上滚动
否则,如果(!动画和(Math.abs(计数器)>=计数器\u阈值)和计数器>0){
设targetSection=$('section.active').prev('section');
if(目标截面长度){
滚动部分(目标部分);
}
}
//防止鼠标滚轮的默认滚动行为
event.preventDefault()
//停止鼠标滚轮后,将计数器重置为0,400毫秒
deboucncedReset()
}
函数scrollToSection(目标){
动画=真;
$('html,body')。设置动画({
scrollTop:target.offset().top
},800,函数(){
动画=假;
$('section.active').removeClass('active');
target.addClass('active');
});
}
函数去抖动(函数,延迟){
让我们去BounceTimer
返回函数(){
const context=this
常量args=参数
clearTimeout(去BounceTimer)
脱盎司计时器
=设置超时(()=>函数应用(上下文,参数),延迟)
}
}
//对被动侦听器的测试支持
让supportsPassive=false;
试一试{
让options=Object.defineProperty({},'被动'{
get:function(){
supportsPassive=true;
}
});
addEventListener(“testPassive”,null,选项);
removeEventListener(“testPassive”,null,options);
}捕获(e){}
让wheelOptions=supportsPassive{
被动:错误
}:假;
//旧浏览器使用“鼠标滚轮”事件
在document.createElement('div')?'wheel':'mousewheel';
文件。添加的事件列表(wheelEvent、handleScroll、wheelOptions);
});代码>
正文{
溢出:隐藏;
}
#应用程序{
高度:100vh;
}
部分{
位置:相对位置;
宽度:100%;
身高:100%;
}
第一节
我的同僚们都是精英。多洛丽丝说,不应该坐在办公室里,因为这是一种自然状态,而应该是一种责任感,而不是一种责任感。官员,
什么是暂时的智慧,什么是不含铜盐的溶液?假设勃朗地提斯是一名工人,他认为这是一项具有崇高人格的职业
这是一个很好的例子,它的别名是doloribus ut quis,意思是dolorum dolores harum unde magni。共同的区别、共同的原则、共同的义务、共同的义务、共同的义务、共同的义务、共同的义务、共同的义务、共同的义务、共同的义务、共同的义务、共同的义务、共同的义务、共同的义务、共同的义务、共同的义务、共同的义务、共同的义务、共同的义务、共同的义务
第二节
Lorem ipsum dolor坐在amet Concertetur,告别精英。驱虫剂,驱虫剂,驱虫剂,驱虫剂,驱虫剂。我的脸上有一个错误!放在沃鲁帕特山沃鲁帕特山上。
暂时性的、暂时性的、暂时性的、不负责任的、不负责任的、不负责任的发明人减去多洛雷姆·莫迪·埃乌斯!不动产的差别待遇?关于eligendi的权利
圣母维塔酒店。Eius减去recusandae quaerat。福加发明人临时财产来源于官方
#app
{
height: 100vh;
}
section
{
position: relative;
width: 100%;
height: 100%;
}
<a href="#abrr">hello</a>
<p> long text </p>
<p> another section </p>
<p id="abrr"> last section where we have to go </p>