vue3 使用swiper制作带缩略图的轮播图

效果图

实现代码
<template>
  <div class="wrap">
    <!-- 主轮播图 -->
    <swiper :style="{
      '--swiper-navigation-color': '#fff',
      '--swiper-pagination-color': '#fff',
    }" :modules="modules" :navigation="true" :thumbs="{ swiper: thumbsSwiper }">
      <SwiperSlide v-for="slide in slides" :key="slide">
        <img style="width: 300px" :src="slide" alt="main slide" />
      </SwiperSlide>
    </swiper>

    <!-- 缩略轮播图 -->
    <swiper @swiper="setThumbsSwiper"
    :spaceBetween="10"
    :slidesPerView="3"
    :freeMode="true"
    :watchSlidesProgress="true"
    :modules="modules"
    class="thumbsSwiper">
      <SwiperSlide v-for="slide in slides" :key="slide">
        <img style="width: 100px" :src="slide" alt="main slide" />
      </SwiperSlide>
    </swiper>
  </div>
</template>
<script setup>
import { ref } from 'vue';
import { Swiper, SwiperSlide } from 'swiper/vue';
import { FreeMode, Navigation, Thumbs } from 'swiper/modules';

import 'swiper/css';
import 'swiper/css/free-mode';
import 'swiper/css/navigation';
import 'swiper/css/thumbs';

const slides = ref(['https://temp.im/200x200/4CD964/fff', 'https://temp.im/200x200/999999/fff', 'https://temp.im/200x200/666666/fff', 'https://temp.im/200x200/9696ff/fff','https://temp.im/200x200/696969/fff', 'https://temp.im/200x200/333333/fff']);
const thumbsSwiper = ref(null);
const setThumbsSwiper = (swiper) => {
  thumbsSwiper.value = swiper;
};
const modules = [FreeMode, Navigation, Thumbs];
</script>

<style lang="scss" scoped>
.wrap {
  width: 300px;
  background: #000;
  position: relative;
}
.thumbsSwiper {
  .swiper-slide {
    opacity: 0.4;
  }
  .swiper-slide-thumb-active {
    opacity: 1;
  }
} 
</style>
swiper官网地址

https://swiperjs.com/vue

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值