前端开发社区前端开发社区
    • 首页
    • VUE.js
    • React.js
    • HTML
    • CSS
    • JavaScript
    • PHP
    • jquery
    • Java
    • MySQL
    • uniapp
    前端开发社区
    当前位置:首页 > JavaScript

    js实现li轮播

    2026-04-04 10:16:10JavaScript

    实现基础轮播结构

    HTML部分需创建一个包含轮播项的ul列表和导航按钮:

    <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样式

    通过CSS设置横向排列和隐藏溢出内容:

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

    JavaScript轮播逻辑

    使用变量跟踪当前索引,并通过事件监听器切换显示项:

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

    响应式调整

    通过监听窗口变化动态计算轮播项宽度:

    js实现li轮播

    function handleResize() {
      items.forEach(item => {
        item.style.minWidth = `${list.offsetWidth}px`;
      });
      updateCarousel();
    }
    
    window.addEventListener('resize', handleResize);
    handleResize(); // 初始化

    标签: jsli
    分享给朋友:

    相关文章

    vue.js实现轮播

    vue.js实现轮播

    Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swipe…

    js 实现倒计时

    js 实现倒计时

    实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval 实…

    js类实现

    js类实现

    使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

    js实现目录

    js实现目录

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

    js实现交换

    js实现交换

    交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…

    节流js实现

    节流js实现

    节流(Throttle)的实现原理 节流是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。适用于高频触发事件(如滚动、输入、窗口调整等)的场景。 基础实现方式 使用时间戳判断是否执…

    最新文章
    • js实现验证码刷新

      2026-04-04 11:48:41

    • js实现全选和反选

      2026-04-04 11:45:44

    • js实现滑块验证码

      2026-04-04 11:39:16

    • js实现图片选中效果

      2026-04-04 11:27:03

    • js实现div自动滚动

      2026-04-04 11:21:47

    标签列表
    • vue (13931)
    • 原理 (626)
    • 分页 (603)
    • 跳转 (582)
    • 页面 (1094)
    • 路由 (650)
    • 列表 (473)
    • 功能 (1256)
    • 文件 (456)
    • 项目 (532)
    • 菜单 (444)
    • 组件 (1026)
    • 表格 (673)
    • 数据 (497)
    • 图片 (790)
    • js (4916)
    • 如何实现 (1693)
    • 效果 (625)
    • react (3311)
    • jquery (2238)
    • css (2728)
    • php (4572)
    • java (3021)
    • uniapp (1363)
    • elementui (828)

    陕ICP备2023000799号  网站地图

    Powered By Z-BlogPHP. Theme by TOYEAN.