首页
学习
活动
专区
圈层
工具
发布

图片上下循环滚动js代码

要实现图片上下循环滚动的效果,可以使用JavaScript结合CSS动画来完成。以下是一个简单的示例代码,展示了如何实现这一效果:

HTML结构

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>图片上下循环滚动</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <div class="scroll-container">
        <div class="scroll-content">
            <img src="image1.jpg" alt="Image 1">
            <img src="image2.jpg" alt="Image 2">
            <img src="image3.jpg" alt="Image 3">
            <!-- 可以添加更多图片 -->
        </div>
    </div>
    <script src="script.js"></script>
</body>
</html>

CSS样式

代码语言:txt
复制
/* styles.css */
body {
    margin: 0;
    padding: 0;
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
    background-color: #f0f0f0;
}

.scroll-container {
    width: 80%;
    height: 300px;
    overflow: hidden;
    position: relative;
}

.scroll-content {
    display: flex;
    flex-direction: column;
    animation: scroll 10s linear infinite;
}

.scroll-content img {
    width: 100%;
    height: auto;
}

@keyframes scroll {
    0% {
        transform: translateY(0);
    }
    100% {
        transform: translateY(-100%);
    }
}

JavaScript代码

代码语言:txt
复制
// script.js
document.addEventListener("DOMContentLoaded", function() {
    const scrollContent = document.querySelector('.scroll-content');
    const images = scrollContent.querySelectorAll('img');

    // 复制第一张图片到最后,实现无缝循环
    const firstImage = images[0].cloneNode(true);
    scrollContent.appendChild(firstImage);

    // 调整动画时间以适应图片数量
    const imageHeight = images[0].clientHeight;
    const totalHeight = imageHeight * images.length;
    const duration = (totalHeight / imageHeight) * 10; // 每张图片显示10秒

    scrollContent.style.animationDuration = `${duration}s`;
});

解释

  1. HTML结构:创建一个容器 .scroll-container 和一个包含图片的 .scroll-content
  2. CSS样式
    • 使用 @keyframes 定义了一个名为 scroll 的动画,使内容从下向上滚动。
    • 设置 .scroll-contentanimation 属性来应用这个动画。
  • JavaScript代码
    • 在文档加载完成后,复制第一张图片并添加到内容的末尾,以实现无缝循环。
    • 根据图片的数量和高度动态调整动画的持续时间,确保每张图片都能完整显示。

应用场景

  • 广告轮播:在网站顶部或底部展示广告。
  • 新闻滚动:实时更新的新闻标题或摘要。
  • 社交媒体动态:展示用户的最新动态或帖子。

可能遇到的问题及解决方法

  1. 动画卡顿
    • 确保图片大小适中,避免过大导致加载缓慢。
    • 使用浏览器开发者工具检查是否有性能瓶颈。
  • 图片加载失败
    • 确保图片路径正确,并且图片文件存在。
    • 使用 onerror 事件处理程序来处理加载失败的图片。
  • 动画不流畅
    • 使用 will-change 属性优化动画性能:
    • 使用 will-change 属性优化动画性能:

通过以上步骤,你可以实现一个简单且高效的图片上下循环滚动效果。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的视频

领券