javascript - 如何使用 SetTimeOut 函数在 javascript 中平滑滚动
问题描述
我使用setTimeOut函数来平滑滚动
但
我的功能无法正常工作。
它工作但不顺利
有人可以帮助我!
const handleScroll = () => {
const pageCards_div = document.getElementsByClassName('page-cards')
for (let i = 0; i < 235; i++) {
setTimeout(() => {
pageCards_div[0].scrollLeft += 1
}, 1000)
}
}
解决方案
您的for
循环安排了对动画函数的 235 次调用,这些调用将在 1 秒后开始一个接一个地立即调用。
如果您想迈出一步,等待 1 秒,再迈出一步,再等待 1 秒,等等 - 您可以执行以下操作:
const handleScroll = () => {
const pageCards_div = document.getElementsByClassName('page-cards')
let func;
func = (remaining) => {
if (remaining == 0) {
return;
}
pageCards_div[0].scrollLeft += 1;
setTimeout(() => {
func(remaining - 1);
}, 1000);
};
func(235);
推荐阅读
- android - 如何在反应原生中解决(无法初始化类 org.codehaus.groovy.reflection.ReflectionCache)问题
- django - 循环 Django 对象
- javascript - 在javascript中过滤三级嵌套数组
- java - 如何解决 IllegalArgumentException 错误?
- swift - 如何根据标签文本快速制作tableview行和标签高度?
- vue.js - 为什么textmate在关闭选项卡后会修改文件mtime?
- ios - UIWebview 不推荐使用的 API 使用
- javascript - jestjs 将错误抛出为`TypeError:_App.default 不是构造函数`
- bash - Shell 脚本模式在特定关键字之前的字符串变量中插入逗号
- java - for循环中的代码没有执行