当前位置:首页 > VUE

vue实现轮训图

2026-02-17 16:19:23VUE

使用Swiper实现轮播图

安装Swiper依赖

npm install swiper vue-awesome-swiper --save

引入Swiper组件

import { Swiper, SwiperSlide } from 'swiper/vue'
import 'swiper/css'
import 'swiper/css/pagination'
import 'swiper/css/navigation'

基本模板结构

<template>
  <swiper
    :slidesPerView="1"
    :spaceBetween="30"
    :loop="true"
    :pagination="{
      clickable: true,
    }"
    :navigation="true"
    :autoplay="{
      delay: 2500,
      disableOnInteraction: false,
    }"
    class="mySwiper"
  >
    <swiper-slide v-for="(item, index) in slides" :key="index">
      <img :src="item.image" />
    </swiper-slide>
  </swiper>
</template>

数据定义

data() {
  return {
    slides: [
      { image: require('@/assets/slide1.jpg') },
      { image: require('@/assets/slide2.jpg') },
      { image: require('@/assets/slide3.jpg') }
    ]
  }
}

纯CSS实现轮播图

HTML结构

vue实现轮训图

<div class="slider">
  <div class="slides">
    <div v-for="(item, index) in slides" 
         :key="index" 
         :class="['slide', { active: currentIndex === index }]">
      <img :src="item.image" />
    </div>
  </div>
  <div class="dots">
    <span v-for="(item, index) in slides" 
          :key="index" 
          :class="{ active: currentIndex === index }"
          @click="currentIndex = index"></span>
  </div>
</div>

CSS样式

.slider {
  position: relative;
  width: 100%;
  height: 400px;
  overflow: hidden;
}

.slides {
  display: flex;
  width: 100%;
  height: 100%;
  transition: transform 0.5s ease;
}

.slide {
  min-width: 100%;
  height: 100%;
  position: relative;
  opacity: 0;
  transition: opacity 0.5s ease;
}

.slide.active {
  opacity: 1;
}

.dots {
  position: absolute;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
}

.dots span {
  width: 12px;
  height: 12px;
  margin: 0 5px;
  border-radius: 50%;
  background: rgba(255,255,255,0.5);
  cursor: pointer;
}

.dots span.active {
  background: white;
}

JavaScript逻辑

data() {
  return {
    currentIndex: 0,
    slides: [
      { image: require('@/assets/slide1.jpg') },
      { image: require('@/assets/slide2.jpg') },
      { image: require('@/assets/slide3.jpg') }
    ],
    interval: null
  }
},
mounted() {
  this.startAutoPlay()
},
methods: {
  startAutoPlay() {
    this.interval = setInterval(() => {
      this.currentIndex = (this.currentIndex + 1) % this.slides.length
    }, 3000)
  },
  stopAutoPlay() {
    clearInterval(this.interval)
  }
},
beforeDestroy() {
  this.stopAutoPlay()
}

响应式轮播图实现

添加响应式断点

vue实现轮训图

const breakpoints = {
  640: {
    slidesPerView: 1
  },
  768: {
    slidesPerView: 2
  },
  1024: {
    slidesPerView: 3
  }
}

在Swiper配置中添加

:breakpoints="breakpoints"

带缩略图的轮播图

添加缩略图Swiper

<swiper
  @swiper="setThumbsSwiper"
  :spaceBetween="10"
  :slidesPerView="4"
  :freeMode="true"
  :watchSlidesProgress="true"
  class="thumbSwiper"
>
  <swiper-slide v-for="(item, index) in slides" :key="index">
    <img :src="item.image" />
  </swiper-slide>
</swiper>

JavaScript关联

methods: {
  setThumbsSwiper(swiper) {
    this.thumbsSwiper = swiper
  }
}

主Swiper添加配置

:thumbs="{ swiper: thumbsSwiper }"

标签: vue
分享给朋友:

相关文章

vue自己实现下拉导航

vue自己实现下拉导航

实现下拉导航的基本思路 在Vue中实现下拉导航,可以通过结合Vue的响应式数据和事件绑定特性来完成。主要思路是利用v-show或v-if控制下拉菜单的显示与隐藏,并通过鼠标事件或点击事件触发状态变化。…

vue 实现pdf

vue 实现pdf

在Vue中实现PDF功能 在Vue项目中实现PDF功能通常涉及PDF生成、预览或下载。以下是几种常见实现方式: 使用vue-pdf库预览PDF 安装依赖: npm install vue-…

实现 vue 框架

实现 vue 框架

Vue 框架的基本实现 Vue 是一个渐进式 JavaScript 框架,用于构建用户界面。以下是实现 Vue 框架的基本步骤和核心概念。 核心概念 响应式数据绑定 Vue 的核心特性之一是响应式…

vue diff实现

vue diff实现

Vue Diff 算法实现原理 Vue 的虚拟 DOM Diff 算法(即 patch 过程)是其高效渲染的核心,主要通过对比新旧虚拟节点的差异,最小化 DOM 操作。以下是关键实现要点: 同层级比…

vue实现 单选

vue实现 单选

实现 Vue 单选功能 在 Vue 中实现单选功能可以通过多种方式完成,以下是几种常见的方法: 使用 v-model 绑定单选按钮 通过 v-model 可以轻松实现单选功能,将单选按钮的值绑定到…

vue实现选择

vue实现选择

Vue 实现选择功能的方法 在 Vue 中实现选择功能可以通过多种方式完成,以下介绍几种常见的实现方法。 使用 v-model 绑定单选 通过 v-model 可以轻松实现单选功能。以下是一个简单的…