javascript - 自动连续水平滚动以将连续识别的元素保持在视图中心
问题描述
项目:https ://3milychu.github.io/criminal/
我在水平滚动父容器中有大约 6000 个 div。
每一秒,我使用 scrollTo 方法滚动到下一个 div,使用行为:'smooth'
这会导致突然的运动,在每个 div 处停止,然后再继续下一个。
有没有办法让父容器以一致的速度连续滚动而不会停止,同时将目标 div 保持在视口中心的每一秒?
function sonify(data){
var counter = -1;
setInterval(function() {
if(counter<6172){
counter++
container = document.querySelector('#track1')
person = document.querySelector('#person'+counter)
hover(person)
target=person.offsetLeft - window.innerWidth/2;
container.scrollTo({
left: target,
behavior: 'smooth'
});
playVerdict(data,counter)
playPriors(data, counter)
playFelonies(data,counter)
playFemale(data,counter)
}
},808)
}
解决方案
对于这样的事情,你最好的选择是自己滚动requestAnimationFrame
并手动设置每帧的容器偏移量。基本上想到了一个很简单的游戏引擎循环。由于看起来您正在与音频同步,因此您需要高精度,并且 css 转换可能会滞后并且可能会在某些时候不同步。
推荐阅读
- laravel - 默认插槽内的组件
- typo3 - 我们如何在 TYPO3 的用户设置中的新选项卡中添加新字段
- python - 用四元数找到向量的端点
- r - 如何从数据库中抓取循环?
- ruby-on-rails - ActionController::RoutingError: 没有路由匹配 [POST] "/seekers"
- java - Spring Security - 检索当前尝试登录的用户的用户名
- angular - 如何将Child附加到角度的按钮
- python - 基于“!”的食品评论情感分析 并向 wordcloud 添加标点符号?
- c++ - 根据类型参数自动化类模板的大小参数
- python - 在 Pandas DataFrame 中动态选择多个列