当前位置:首页 > JavaScript

js实现li轮播

2026-01-30 18:32:28JavaScript

实现 LI 轮播的 JavaScript 方法

HTML 结构 确保轮播内容包裹在 ulol 列表结构中,并为容器添加类名以便选择:

<div class="carousel-container">
  <ul class="carousel-list">
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
  </ul>
  <button class="prev-btn">Previous</button>
  <button class="next-btn">Next</button>
</div>

CSS 样式 为轮播容器和列表项添加基础样式,确保隐藏非活动项:

.carousel-container {
  position: relative;
  overflow: hidden;
  width: 300px;
}
.carousel-list {
  display: flex;
  list-style: none;
  padding: 0;
  margin: 0;
  transition: transform 0.5s ease;
}
.carousel-list li {
  min-width: 100%;
  padding: 20px;
  box-sizing: border-box;
}

JavaScript 逻辑 通过修改 transform 属性实现平滑滑动效果:

document.addEventListener('DOMContentLoaded', () => {
  const list = document.querySelector('.carousel-list');
  const items = document.querySelectorAll('.carousel-list li');
  const prevBtn = document.querySelector('.prev-btn');
  const nextBtn = document.querySelector('.next-btn');
  let currentIndex = 0;

  function updateCarousel() {
    list.style.transform = `translateX(-${currentIndex * 100}%)`;
  }

  nextBtn.addEventListener('click', () => {
    currentIndex = (currentIndex + 1) % items.length;
    updateCarousel();
  });

  prevBtn.addEventListener('click', () => {
    currentIndex = (currentIndex - 1 + items.length) % items.length;
    updateCarousel();
  });
});

自动轮播功能扩展

添加定时器实现自动播放,并优化鼠标交互时的暂停:

let autoPlayInterval = setInterval(() => {
  currentIndex = (currentIndex + 1) % items.length;
  updateCarousel();
}, 3000);

// 鼠标悬停时暂停轮播
document.querySelector('.carousel-container').addEventListener('mouseenter', () => {
  clearInterval(autoPlayInterval);
});

// 鼠标离开时恢复轮播
document.querySelector('.carousel-container').addEventListener('mouseleave', () => {
  autoPlayInterval = setInterval(() => {
    currentIndex = (currentIndex + 1) % items.length;
    updateCarousel();
  }, 3000);
});

响应式处理

通过监听窗口大小变化调整轮播布局:

function handleResize() {
  const containerWidth = document.querySelector('.carousel-container').offsetWidth;
  document.querySelectorAll('.carousel-list li').forEach(item => {
    item.style.minWidth = `${containerWidth}px`;
  });
  updateCarousel();
}

window.addEventListener('resize', handleResize);
handleResize(); // 初始化执行

指示器添加

创建动态指示点以增强用户体验:

js实现li轮播

const indicators = document.createElement('div');
indicators.className = 'carousel-indicators';
document.querySelector('.carousel-container').appendChild(indicators);

items.forEach((_, index) => {
  const dot = document.createElement('span');
  dot.addEventListener('click', () => {
    currentIndex = index;
    updateCarousel();
    updateIndicators();
  });
  indicators.appendChild(dot);
});

function updateIndicators() {
  const dots = document.querySelectorAll('.carousel-indicators span');
  dots.forEach((dot, index) => {
    dot.classList.toggle('active', index === currentIndex);
  });
}

标签: jsli
分享给朋友:

相关文章

js实现轮播

js实现轮播

实现基础轮播效果 使用HTML结构创建轮播容器和图片元素: <div class="carousel"> <div class="carousel-inner">…

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现继承

js实现继承

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

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…

js实现按钮点击

js实现按钮点击

实现按钮点击的JavaScript方法 HTML按钮元素 在HTML中创建按钮元素,为其添加id或class以便JavaScript选择: <button id="myButton">点…