我已经创建了一个div,可以像在移动设备上一样用鼠标来滚动它,即,您单击容器,移动鼠标,元素就会被滚动。
没什么,这里是codepen的链接:https://codepen.io/kulaska/pen/xxKdRGw
这是HTML结构:
<div class="container">
<div class="child"></div>
...
<div class="child"></div>
</div>
这是JS文件的主要块:
container.addEventListener("mousemove",({clientX: newX}) => {
if (!firing) return;
let newPos = currPos - (newX - prevX);
let availableOffset = container.scrollWidth - container.clientWidth;
if (newPos > availableOffset)
newPos = availableOffset;
if (newPos < 0)
newPos = 0;
prevX = newX;
container.scrollTo(newPos,0);
currPos = newPos;
})
我使用flex容器创建一个不包装内容的容器:
.container {
display: flex;
flex-wrap: nowrap;
..
}
想象一下,该容器中有20张图像。问题是,如何使该div无限滚动,就像将其滚动到末尾一样(直到显示20号图片),然后再显示1,2,3,4等图片,因此重复所有内容。
它可以持续不断地运行,因此仅在容器中放置许多DOM节点是不可行的,因为这在性能方面会太昂贵。
我想到了一些JS解决方案,但它们的性能都相当差。您将如何解决这个问题?