自动连续水平滚动以将连续识别的元素保持在视图中心
auto continuous horizontal scroll to keep consecutively identified elements in center of view
项目:https://3milychu.github.io/criminal/
我在水平滚动父容器中有大约 6000 divs。
每一秒,我使用 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 转换可能会滞后并且可能会在某个时候不同步。
项目:https://3milychu.github.io/criminal/
我在水平滚动父容器中有大约 6000 divs。
每一秒,我使用 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 转换可能会滞后并且可能会在某个时候不同步。