滚动时间,如何判断 scollTop 到一定高度只执行一次

2015-09-26 20:34:55 +08:00
 cc7756789
返回顶部按钮渐进渐出的显示出来,可问题是,如果只执行一次!如果判断大于小于,动一下就来一个事件。不想用 jQuery 等第三方库。

```javascript
function progressiveDisplayBack2Top(){
var needDisp = document.getElementById('back-to-top');

function setProgressive(leftNum, interval, upORdown) {
if (Boolean(upORdown)) {
var leftNum = leftNum + 0.01;
if (leftNum > 1) return true;
needDisp.style.opacity = leftNum;
} else {
var leftNum = leftNum - 0.01;
if (leftNum < 0) return true;
needDisp.style.opacity = leftNum;
}
setTimeout(function() {
setProgressive(leftNum, interval, upORdown);
}, interval);
}

if (document.body.scrollTop > 700){
setProgressive(0.01, 10, true);
}

if (document.body.scrollTop < 700){
setProgressive(1, 10, false);
}
}


addOnloader(function() {
addOnScrollEvent(progressiveDisplayBack2Top);
});

```
3027 次点击
所在节点    JavaScript
3 条回复
Septembers
2015-09-26 20:59:06 +08:00
有个概念叫"去抖动"
lixia625
2015-09-26 21:14:23 +08:00
最简单的 难道不是一个 boolean 的事?
emric
2015-09-26 21:39:49 +08:00
函数节流, 函数去抖. 同时对楼主谴责, 连续提 3 个搜索能够得到答案的问题.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/223914

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX