当前位置:首页 > 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 样式 为轮播容器和列表项添加基础样式,确保隐藏非活动项:

js实现li轮播

.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();
  });
});

自动轮播功能扩展

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

js实现li轮播

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(); // 初始化执行

指示器添加

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

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 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与响应式…

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…

js实现论坛

js实现论坛

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