当前位置:首页 > JavaScript

js实现div循环播放

2026-03-01 18:09:23JavaScript

实现 div 循环播放的方法

使用 CSS 动画和 JavaScript 控制

通过 CSS 定义动画效果,JavaScript 控制循环逻辑。以下是实现代码:

js实现div循环播放

<style>
  .slider {
    width: 100%;
    overflow: hidden;
    position: relative;
  }
  .slider-content {
    display: flex;
    transition: transform 0.5s ease;
  }
  .slide {
    min-width: 100%;
    box-sizing: border-box;
  }
</style>

<div class="slider">
  <div class="slider-content">
    <div class="slide">Slide 1</div>
    <div class="slide">Slide 2</div>
    <div class="slide">Slide 3</div>
  </div>
</div>

<script>
  const sliderContent = document.querySelector('.slider-content');
  const slides = document.querySelectorAll('.slide');
  let currentIndex = 0;

  function nextSlide() {
    currentIndex = (currentIndex + 1) % slides.length;
    sliderContent.style.transform = `translateX(-${currentIndex * 100}%)`;
  }

  setInterval(nextSlide, 3000);
</script>

纯 JavaScript 实现

不依赖 CSS 动画,完全通过 JavaScript 控制:

js实现div循环播放

const container = document.getElementById('slider-container');
const slides = container.querySelectorAll('.slide');
let currentIndex = 0;

function showSlide(index) {
  slides.forEach((slide, i) => {
    slide.style.display = i === index ? 'block' : 'none';
  });
}

function autoRotate() {
  currentIndex = (currentIndex + 1) % slides.length;
  showSlide(currentIndex);
}

showSlide(0);
setInterval(autoRotate, 2000);

使用 requestAnimationFrame

更平滑的动画效果实现方式:

const slider = document.querySelector('.slider');
const content = document.querySelector('.slider-content');
const items = document.querySelectorAll('.slider-item');
const itemWidth = items[0].offsetWidth;
let position = 0;
let animationId;

function animate() {
  position -= 1;
  if (position < -itemWidth) {
    position = 0;
    content.appendChild(content.firstElementChild);
  }
  content.style.transform = `translateX(${position}px)`;
  animationId = requestAnimationFrame(animate);
}

function startAnimation() {
  if (!animationId) {
    animate();
  }
}

function stopAnimation() {
  cancelAnimationFrame(animationId);
  animationId = null;
}

startAnimation();

无限循环的克隆方法

通过克隆元素实现无缝循环:

const slider = document.querySelector('.slider');
const content = document.querySelector('.slider-content');
const items = document.querySelectorAll('.slider-item');

// 克隆第一个元素并添加到末尾
content.appendChild(items[0].cloneNode(true));

let currentPosition = 0;
const itemWidth = items[0].offsetWidth;

function slide() {
  currentPosition -= 1;
  content.style.transform = `translateX(${currentPosition}px)`;

  if (currentPosition <= -itemWidth) {
    currentPosition = 0;
    // 移动第一个元素到最后
    content.appendChild(content.firstElementChild);
    content.style.transform = 'translateX(0)';
  }

  requestAnimationFrame(slide);
}

slide();

每种方法适用于不同场景,CSS 动画方法简单高效,纯 JavaScript 方法兼容性更好,requestAnimationFrame 适合需要精细控制的场景,克隆方法可以实现完美的无缝循环效果。

标签: jsdiv
分享给朋友:

相关文章

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

div css网页制作

div css网页制作

HTML 结构搭建 使用语义化标签构建基础框架,如<header>、<nav>、<main>、<footer>。通过<div>划分内容区块,…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的J…

js实现 功能

js实现 功能

在 JavaScript 中实现功能通常涉及多个关键步骤,具体取决于功能需求。以下是常见功能的实现方法和示例: 基本功能实现 使用函数封装逻辑是最直接的方式。例如,实现一个计算两数之和的函数: f…

js实现排序

js实现排序

数组排序方法 JavaScript提供了内置的sort()方法用于数组排序。默认情况下,sort()将元素转换为字符串并按照Unicode码点排序。对于数字排序,需传入比较函数。 const num…