当前位置:首页 > JavaScript

js实现swiper

2026-02-01 03:36:59JavaScript

使用原生JavaScript实现Swiper

通过原生JavaScript实现滑动轮播效果,核心逻辑包括DOM操作、事件监听和CSS过渡动画。以下是一个基础实现方案:

// 获取DOM元素
const swiperContainer = document.querySelector('.swiper-container');
const slides = document.querySelectorAll('.swiper-slide');
const prevBtn = document.querySelector('.swiper-button-prev');
const nextBtn = document.querySelector('.swiper-button-next');

// 初始化变量
let currentIndex = 0;
const slideCount = slides.length;

// 设置初始位置
function updateSlidePosition() {
  slides.forEach((slide, index) => {
    slide.style.transform = `translateX(${100 * (index - currentIndex)}%)`;
  });
}

// 切换到指定幻灯片
function goToSlide(index) {
  currentIndex = (index + slideCount) % slideCount;
  updateSlidePosition();
}

// 事件监听
nextBtn.addEventListener('click', () => goToSlide(currentIndex + 1));
prevBtn.addEventListener('click', () => goToSlide(currentIndex - 1));

// 初始化
updateSlidePosition();

添加CSS样式

配合JavaScript实现,需要基础CSS样式支持:

.swiper-container {
  position: relative;
  overflow: hidden;
  width: 100%;
}

.swiper-slide {
  position: absolute;
  width: 100%;
  transition: transform 0.5s ease;
}

.swiper-button-prev,
.swiper-button-next {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  cursor: pointer;
  z-index: 10;
}

添加触摸支持

为移动端添加触摸事件支持:

let touchStartX = 0;
let touchEndX = 0;

swiperContainer.addEventListener('touchstart', (e) => {
  touchStartX = e.changedTouches[0].screenX;
});

swiperContainer.addEventListener('touchend', (e) => {
  touchEndX = e.changedTouches[0].screenX;
  handleSwipe();
});

function handleSwipe() {
  const threshold = 50;
  if (touchEndX < touchStartX - threshold) {
    goToSlide(currentIndex + 1);
  }
  if (touchEndX > touchStartX + threshold) {
    goToSlide(currentIndex - 1);
  }
}

自动轮播功能

实现定时自动切换功能:

let autoPlayInterval;

function startAutoPlay(interval = 3000) {
  autoPlayInterval = setInterval(() => {
    goToSlide(currentIndex + 1);
  }, interval);
}

function stopAutoPlay() {
  clearInterval(autoPlayInterval);
}

// 鼠标悬停时暂停
swiperContainer.addEventListener('mouseenter', stopAutoPlay);
swiperContainer.addEventListener('mouseleave', () => startAutoPlay());

使用Swiper.js库

对于更复杂的需求,推荐使用专业的Swiper.js库:

  1. 安装Swiper.js

    npm install swiper
  2. 基础实现代码

    
    import Swiper from 'swiper';
    import 'swiper/css';

const mySwiper = new Swiper('.swiper-container', { loop: true, navigation: { nextEl: '.swiper-button-next', prevEl: '.swiper-button-prev', }, pagination: { el: '.swiper-pagination', }, autoplay: { delay: 3000, }, });

js实现swiper


3. 对应HTML结构
```html
<div class="swiper-container">
  <div class="swiper-wrapper">
    <div class="swiper-slide">Slide 1</div>
    <div class="swiper-slide">Slide 2</div>
    <div class="swiper-slide">Slide 3</div>
  </div>
  <div class="swiper-pagination"></div>
  <div class="swiper-button-prev"></div>
  <div class="swiper-button-next"></div>
</div>

标签: jsswiper
分享给朋友:

相关文章

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js类实现

js类实现

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

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…