You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现同一行三个div的平滑滑动轮播,支持左右按钮控制

三列div平滑循环滑动轮播实现方案

实现思路

  • 用外层容器控制可视区域,隐藏超出部分
  • 内层滑动轨道承载所有div,通过修改transform属性实现位移,配合CSStransition属性实现平滑过渡
  • 用索引变量记录当前滑动位置,点击按钮时更新索引,到达边界值时自动重置实现循环效果

1. 基础HTML结构

<!-- 轮播外层容器 -->
<div class="carousel-wrap">
  <!-- 滑动轨道 -->
  <div class="slide-track">
    <div class="slide-item">内容1</div>
    <div class="slide-item">内容2</div>
    <div class="slide-item">内容3</div>
  </div>
  <!-- 控制按钮 -->
  <button id="left">左滑</button>
  <button id="right">右滑</button>
</div>

2. 核心CSS样式

.carousel-wrap {
  /* 单格宽300px的话,三个总宽度为900px,可按需调整 */
  width: 900px;
  overflow: hidden;
  position: relative;
}
.slide-track {
  display: flex;
  /* 平滑过渡效果,时长可自行调整 */
  transition: transform 0.4s ease;
}
.slide-item {
  width: 300px;
  height: 200px;
  flex-shrink: 0;
}
/* 按钮固定在轮播两侧 */
#left, #right {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  cursor: pointer;
}
#left { left: 10px; }
#right { right: 10px; }

3. 交互逻辑JS代码

const track = document.querySelector('.slide-track');
const items = document.querySelectorAll('.slide-item');
const leftBtn = document.querySelector('#left');
const rightBtn = document.querySelector('#right');

// 单个滑动项宽度
const itemWidth = items[0].offsetWidth;
// 当前滑动索引,初始为0
let currentIndex = 0;
// 总滑动项数
const totalItems = items.length;

// 右滑事件
rightBtn.addEventListener('click', () => {
  currentIndex++;
  // 滑到最后一项后重置到第一项
  if (currentIndex >= totalItems) {
    currentIndex = 0;
  }
  updateSlide();
});

// 左滑事件
leftBtn.addEventListener('click', () => {
  currentIndex--;
  // 滑到第一项之前重置到最后一项
  if (currentIndex < 0) {
    currentIndex = totalItems - 1;
  }
  updateSlide();
});

// 更新滑动位置
function updateSlide() {
  track.style.transform = `translateX(-${currentIndex * itemWidth}px)`;
}

如果需要实现完全无缝的滑动效果,避免从最后一项跳回第一项的突兀感,可以把前两项滑动项复制追加到轨道末尾,滑动到复制项时瞬间切回对应真实项的位置即可。


内容的提问来源于stack exchange,提问作者Mohammad Hasan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 06:57:04