javascript - 如何在 Javascript 中使图像无休止地重复滚动?
问题描述
我做一个网页只是为了一点乐趣。我希望在第一次加载页面时背景图像无休止地向左滚动。图像在 CSS 中设置为 repeat-x,并且在端到端放置时是无缝的。我写的这段代码是否朝着正确的方向发展?
我希望保留 JS vanilla 只是为了简单起见,但如果 JQuery、CSS 或其他库能更好地处理这个问题,我会全力以赴。
我将非常感谢您的帮助!
我已经在一个简单的 HTML 文档中尝试了一些普通的 JavaScript 代码。到目前为止,我的努力根本没有使图像移动。
document.addEventListener("DOMContentLoaded", function() {
var y = 0;
while (true) {
y -= 1;
document.getElementById("bgImg").left = y;
}
})
#bgImg {
background-image: url("img1.jpg");
background-repeat: repeat-x;
width: 100%;
height: 660px;
display: inline;
}
<div id="bgImg">
</div>
这只会冻结我的浏览器并且根本不滚动。可能要感谢“while(true)”。
解决方案
这最好通过CSS 动画而不是 JavaScript 来完成。while
CSS 关键帧动画旨在以最小的内存开销(并且没有同步循环:P)在预设属性状态之间循环平滑过渡。
您需要包含的唯一附加信息是图像的宽度。如果将此值用作动画状态中的 x 坐标,background-position
则to
背景一旦经过那么多像素,就会跳回该from
位置。如果您正确设置了宽度,则此跳转对查看者是不可见的。
#bg {
background: url('https://www.gravatar.com/avatar/e47523b278f15afd925a473e2ac0b966?s=120&d=identicon&r=PG&f=1');
background-repeat: repeat-x;
width: 240px;
height: 120px;
animation: bgScrollLeft 5s linear infinite;
}
@keyframes bgScrollLeft {
from {
background-position: 0 0;
}
to {
background-position: -120px 0;
}
}
<div id="bg"></div>
推荐阅读
- xamarin.forms - Arduino ESP32 通过 BLE 接收文件(用于 OTA 更新)
- c++ - 寻找递归阿克曼函数的值
- node.js - 为节点运行的节点项目创建引导脚本
- ios - GCMouse.mice() 总是空的,尽管我的鼠标工作
- python - Python / Pandas for loop..为什么我的这么慢?
- android - 有没有一种方法可以在多个集合中搜索文档而不必全部阅读?火库
- python - 从 Pandas 中的季度/月度数据创建年度总和列
- typescript - 结合 RN 和 ts-node 时,`Cannot use import statement outside a module`
- list - 第一:球拍/打印出列表程序组合的方案中的合同违规错误
- javascript - 将“事件”与另一个参数一起使用