给uniapp的swiper添加左右翻页按钮

<swiper class="swiper" :current="curDot" @change="swiperChange">
	<swiper-item v-for="(item, index) in list" :key="index">
		<view class="swiper-item uni-bg-red">{{item}}</view>
	</swiper-item>
</swiper>

首先个swiper绑定 :current="curDot" @change="swiperChange"这两个属性

current表示当前所在滑块的 index

current 改变时会触发 change 事件,event.detail = {current: current, source: source}

然后在data中初始curDot: 0,再添加swierChange事件

swiperChange(e) {
	this.curDot = e.detail.current;
},

然后再给页面添加左右按钮

<view class="left-right">
	<view class="left-back" @click.stop="leftImg">
		<text class="icon-back"></text>
	</view>
	<view class="right-forword" @click.stop="rightImg">
		<text class="icon-right"></text>
	</view>
</view>

然后在添加前进后退事件

leftImg(){
	let num = this.list.length - 1
	if (this.curDot <= 0) {
		this.curDot = num
	} else {
		this.curDot--
	}
},
rightImg(){
	let num = this.list.length - 1
	if (this.curDot >= num) {
		this.curDot = 0
	} else {
		this.curDot++
	}
}

这样就完成了。

方法完善 

上述方法在swiper中没有添加 :circular='true' 属性,造成的结果是在第一张图片向左切换到最后一张图片,或者最后一张图片向右切换到第一张图片时。图片向相反方向滑动了整个数组的长度,实际体验并不好。

如果直接添加:circular='true'属性,会造成除第一张和第二张外,其余图片向左切换时,会向右滑动一个数组长度。

最终解决方法,动态控制 circular 的属性值

<swiper class="swiper" :current="curDot" @change="swiperChange" :circular='circular'>
	<swiper-item v-for="(item, index) in list" :key="index">
		<view class="swiper-item uni-bg-red">{{item}}</view>
	</swiper-item>
</swiper>

 在data中初始化 circular: true,

左右切换方法中动态修改circular的值,说明:向左切换时,circular设为false,当第一张切最后一张时设为true。

leftImg(){

    this.circular = false

	let num = this.list.length - 1
	if (this.curDot <= 0) {

        this.circular = true

		this.curDot = num
	} else {
		this.curDot--
	}
},
rightImg(){

    this.circular = true

	let num = this.list.length - 1
	if (this.curDot >= num) {
		this.curDot = 0
	} else {
		this.curDot++
	}
}

  • 17
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
Uniapp中的swiper组件是一种非常常用的组件,可以实现轮播图、图片滑动等效果。在使用swiper组件时,可以通过引入swiper组件来开始使用。在引入swiper组件后,可以根据实际需求调整属性,例如autoplay、interval、circular、indicator-dots、indicator-color、indicator-active-color等,以实现自动播放、衔接滑动、指示点等效果。在代码中,可以使用swiper标签来循环rotation,并在swiper-item标签中使用v-for指令来遍历rotation数组,以动态生成swiper-item。在swiper-item中,可以使用image标签来展示图片。通过以上的操作,就可以在Uniapp中使用swiper组件来实现swiper效果。希望这些信息对你有所帮助。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [uni-app开发教程之swiper组件使用教程](https://blog.csdn.net/qq_36901092/article/details/130885916)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [uni-app轮播图实现之swiper](https://blog.csdn.net/weixin_45966674/article/details/124786351)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值