当前位置:首页 > JavaScript

js实现div循环播放

2026-03-01 18:09:23JavaScript

实现 div 循环播放的方法

使用 CSS 动画和 JavaScript 控制

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

<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 控制:

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 适合需要精细控制的场景,克隆方法可以实现完美的无缝循环效果。

js实现div循环播放

标签: jsdiv
分享给朋友:

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https:/…

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Paren…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:CSS…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 /…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…