gpt4 book ai didi

javascript - 如何创建无限滚动图库

转载 作者:行者123 更新时间:2023-12-03 08:28:32 25 4
gpt4 key购买 nike

我正在尝试找出一种方法,让多个图像在同一行上延伸超过 div 继续向左滚动,直到它超出 View ,此时它将移动到图像库的末尾并继续再次滚动,即使它在 View 之外。 The black is the web page and the blue is the div containing the images.(Coded to be pushed to the bottom of the page.) Lastly the red is said images.

这是我到目前为止的代码。我在类里面对图像进行游戏,因为我觉得这会有所帮助,但我还不确定如何。

html, body {
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
margin: 0px;
padding: 0px;
overflow: hidden;
}
*, *::before, *::after {
box-sizing: border-box;
}
body {
background-color: black;
}
#permas {
height: 150px;
bottom: 0;
background: blue;
position: absolute;
overflow:hidden;
overflow-y: hidden;
white-space:nowrap;
}
#permas img {
height: 100%;
}
<html>
<head>
<title>Test site
</title>
<link rel="stylesheet" type="text/css" href="main.css">
</head>
<body>
<div id="permas">
<img class="scroller" src="https://i.imgur.com/wURYltS.jpg">
<img class="scroller" src="https://i.imgur.com/wURYltS.jpg">
<img class="scroller" src="https://i.imgur.com/wURYltS.jpg">
<img class="scroller" src="https://i.imgur.com/wURYltS.jpg">
<img class="scroller" src="https://i.imgur.com/wURYltS.jpg">
<img class="scroller" src="https://i.imgur.com/wURYltS.jpg">
<img class="scroller" src="https://i.imgur.com/wURYltS.jpg">
<img class="scroller" src="https://i.imgur.com/wURYltS.jpg">
<img class="scroller" src="https://i.imgur.com/wURYltS.jpg">
<img class="scroller" src="https://i.imgur.com/wURYltS.jpg">
</div>
<script src="main.js"></script>
</body>
</html>

最佳答案

由于图像可以具有不同的宽高比,因此一次仅将一张图像移动到队列后面会非常困惑,并且需要 JavaScript 干预。

类似的方法是拥有图像的两个副本,对 permas div 元素进行动画处理,使其向左移动其宽度的 50%,即将所有 10 个图像移到左侧,并让视口(viewport)在第二组开始时填充。

然后让 permas 回到最初的位置并重复。

评论中有人担心需要做太多工作。我测试了 10 个不同大小和不同内容的图像以及问题中给出的图像,发现在我的 Windows 10 笔记本电脑上,GPU 使用率相当稳定,约为 20%。当然,如果有更多图像(可能有些图像的自然尺寸非常大,尽管我没有测试过),可能需要更多的处理器时间。

我没有看到任何生涩现象。您必须确信这 10 张图像将不仅仅覆盖视口(viewport)宽度 - 但问题中也做出了这一假设。

这是带有原始图像的片段:

html, body {
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
margin: 0px;
padding: 0px;
overflow: hidden;
overflow: scroll;
}
*, *::before, *::after {
box-sizing: border-box;
}
body {
background-color: black;
}
#permas {
height: 150px;
bottom: 0;
background: blue;
position: absolute;
overflow:hidden;
overflow-y: hidden;
white-space:nowrap;

/* added */
left: 0;
animation-name: scroll;
animation-duration: 10s;
animation-iteration-count: infinite;
animation-timing-function: linear;
}
#permas img {
height: 100%;
}
@keyframes scroll {
0% {
transform: translateX(0);
}
100% {
transform: translateX(-50%);
}
}
<div id="permas">
<img class="scroller" src="https://i.imgur.com/wURYltS.jpg">
<img class="scroller" src="https://i.imgur.com/wURYltS.jpg">
<img class="scroller" src="https://i.imgur.com/wURYltS.jpg">
<img class="scroller" src="https://i.imgur.com/wURYltS.jpg">
<img class="scroller" src="https://i.imgur.com/wURYltS.jpg">
<img class="scroller" src="https://i.imgur.com/wURYltS.jpg">
<img class="scroller" src="https://i.imgur.com/wURYltS.jpg">
<img class="scroller" src="https://i.imgur.com/wURYltS.jpg">
<img class="scroller" src="https://i.imgur.com/wURYltS.jpg">
<img class="scroller" src="https://i.imgur.com/wURYltS.jpg">

<img class="scroller" src="https://i.imgur.com/wURYltS.jpg">
<img class="scroller" src="https://i.imgur.com/wURYltS.jpg">
<img class="scroller" src="https://i.imgur.com/wURYltS.jpg">
<img class="scroller" src="https://i.imgur.com/wURYltS.jpg">
<img class="scroller" src="https://i.imgur.com/wURYltS.jpg">
<img class="scroller" src="https://i.imgur.com/wURYltS.jpg">
<img class="scroller" src="https://i.imgur.com/wURYltS.jpg">
<img class="scroller" src="https://i.imgur.com/wURYltS.jpg">
<img class="scroller" src="https://i.imgur.com/wURYltS.jpg">
<img class="scroller" src="https://i.imgur.com/wURYltS.jpg">
</div>

关于javascript - 如何创建无限滚动图库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65908655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com