vue中实现带缩略图得轮播图(swiper)

记录一下vue实现带缩略图得轮播图

swiper版本一定要对,高了或者低了都可能会出问题

1.引入swiper和vue-awesome-swiper插件

npm install swiper@4 --save
npm install vue-awesome-swiper@3 --save

2.在main.js中引入:

import VueAwesomeSwiper from 'vue-awesome-swiper'
import 'swiper/dist/css/swiper.css'
Vue.use(VueAwesomeSwiper)

3.使用:
template:布局

<div class="swiper_box">
	<swiper :options="swiperOptionTop" class="gallery-top" ref="swiperTop">
		<swiper-slide class="slide-1" v-for="(item,index) in bigImg" :key="index">
			<img :src="item" style="height:100%;width:100%" alt="">
		</swiper-slide>
	</swiper>
	<swiper style="margin-top:30px;" :options="swiperOptionThumbs" class="gallery-thumbs" ref="swiperThumbs">
		<swiper-slide class="slide" style="width:100px;height:100px;" v-for="(item,index) in bigImg" :key="index">
			<!-- <div class="imgItem"> -->
				<img style="width:100px;height:100px;" :src="item" alt="">
			<!-- </div> -->
		</swiper-slide>
	</swiper>
</div>

data中配置:
在这里插入图片描述

bigImg: [
	'https://t7.baidu.com/it/u=3165657288,4248157545&fm=193&f=GIF',
	'https://t7.baidu.com/it/u=2942499027,2479446682&fm=193&f=GIF',
	'https://t7.baidu.com/it/u=2610975262,3538281461&fm=193&f=GIF',
	'https://t7.baidu.com/it/u=4138158235,3956816634&fm=193&f=GIF',
	'https://t7.baidu.com/it/u=2942499027,2479446682&fm=193&f=GIF',
	'https://t7.baidu.com/it/u=2610975262,3538281461&fm=193&f=GIF',
],
swiperOptionTop:{
	// spaceBetween:10,
	effect:'fade',
	loop:true,
	loopedSlides:4,
	// zoom: true,//双击放大
	// navigation: {
		// nextEl: '.swiper-button-next',
		// prevEl: '.swiper-button-prev'
	// },
	observer: true,
	observeParents: true,
	grabCursor: true // 抓手
},
swiperOptionThumbs:{
	loop:true,    //开启无限轮播  
	slidesPerView: 4,    //显示几个图片
	spaceBetween: 10,	//小图之间得距离 
	direction: 'horizontal',	
	// centeredSlides: true, // 设置活动块居中
	grabCursor: true, // 抓手,
	slideToClickedSlide: true,	
	watchSlidesVisibility: true // 防止不可点击
},	

4.最后添加控制器实现双向控制(要在updated中添加,在mounted中添加会underfind)

updated() {
	this.$nextTick(() => {
		// 实现swiper双向控制
		const swiperTop = this.$refs.swiperTop.swiper
		const swiperThumbs = this.$refs.swiperThumbs.swiper
		swiperTop.controller.control = swiperThumbs
		swiperThumbs.controller.control = swiperTop
	})
},

还有其他问题欢迎提问

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现略图的轮,可以使用 Vue.js 和一些现成的轮组件库,比如 `vue-awesome-swiper`。 以下是一个基本的实现步骤: 1. 安装 `vue-awesome-swiper`: ```bash npm install vue-awesome-swiper --save ``` 2. 在 Vue 组件引入 `vue-awesome-swiper`: ```javascript import { swiper, swiperSlide } from 'vue-awesome-swiper' export default { components: { swiper, swiperSlide }, data() { return { swiperOption: { // 设置轮的配置项 }, // 略图片数组 thumbnailList: [ { src: 'thumbnail-1.jpg', alt: 'thumbnail-1' }, { src: 'thumbnail-2.jpg', alt: 'thumbnail-2' }, { src: 'thumbnail-3.jpg', alt: 'thumbnail-3' } ] } } } ``` 3. 在 Vue 模板使用 `vue-awesome-swiper`: ```html <swiper :options="swiperOption"> <swiper-slide> <img src="slide-1.jpg" alt="slide-1"> </swiper-slide> <swiper-slide> <img src="slide-2.jpg" alt="slide-2"> </swiper-slide> <swiper-slide> <img src="slide-3.jpg" alt="slide-3"> </swiper-slide> ... </swiper> <!-- 略图 --> <div class="thumbnail-list"> <div v-for="(item, index) in thumbnailList" :key="index" class="thumbnail-item"> <img :src="item.src" :alt="item.alt" @click="goToSlide(index)"> </div> </div> ``` 4. 在 Vue 组件定义 `goToSlide` 方法来实现略图与轮的联动: ```javascript methods: { goToSlide(index) { // 使用 $refs 获取到 swiper 实例 this.$refs.mySwiper.swiper.slideTo(index) } } ``` 完整的代码示例: ```html <template> <div class="carousel-container"> <swiper ref="mySwiper" :options="swiperOption"> <swiper-slide> <img src="slide-1.jpg" alt="slide-1"> </swiper-slide> <swiper-slide> <img src="slide-2.jpg" alt="slide-2"> </swiper-slide> <swiper-slide> <img src="slide-3.jpg" alt="slide-3"> </swiper-slide> ... </swiper> <!-- 略图 --> <div class="thumbnail-list"> <div v-for="(item, index) in thumbnailList" :key="index" class="thumbnail-item"> <img :src="item.src" :alt="item.alt" @click="goToSlide(index)"> </div> </div> </div> </template> <script> import { swiper, swiperSlide } from 'vue-awesome-swiper' export default { components: { swiper, swiperSlide }, data() { return { swiperOption: { // 设置轮的配置项 }, // 略图片数组 thumbnailList: [ { src: 'thumbnail-1.jpg', alt: 'thumbnail-1' }, { src: 'thumbnail-2.jpg', alt: 'thumbnail-2' }, { src: 'thumbnail-3.jpg', alt: 'thumbnail-3' } ] } }, methods: { goToSlide(index) { // 使用 $refs 获取到 swiper 实例 this.$refs.mySwiper.swiper.slideTo(index) } } } </script> <style> .carousel-container { position: relative; width: 100%; height: 100%; } .thumbnail-list { position: absolute; bottom: 0; width: 100%; display: flex; justify-content: center; } .thumbnail-item { margin: 0 10px; cursor: pointer; } </style> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值