小程序swiper结合swiper-item实现banner轮播

本文介绍了Swiper库1.0.0版本开始对微信Windows版和Mac版的支持,包括渲染框架、自动切换、指示点、事件处理和特性如Skyline特有的滚动动画。同时提供了bug提示和示例代码,展示了如何在微信小程序中使用Swiper组件进行滚动和点击监听。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

swiper

基础库 1.0.0 开始支持,低版本需做兼容处理

微信 Windows 版:支持

微信 Mac 版:支持

渲染框架支持情况:Skyline (使用最新 Nighly 工具调试)、WebView

功能描述

滑块视图容器。其中只可放置swiper-item组件,否则会导致未定义的行为。

通用属性

属性类型默认值必填说明最低版本
indicator-dotsbooleanfalse是否显示面板指示点1.0.0
indicator-colorcolorrgba(0, 0, 0, .3)指示点颜色1.1.0
indicator-active-colorcolor#000000当前选中的指示点颜色1.1.0
autoplaybooleanfalse是否自动切换1.0.0
currentnumber0当前所在滑块的 index1.0.0
intervalnumber5000自动切换时间间隔1.0.0
durationnumber500滑动动画时长1.0.0
circularbooleanfalse是否采用衔接滑动1.0.0
verticalbooleanfalse滑动方向是否为纵向1.0.0
display-multiple-itemsnumber1同时显示的滑块数量1.9.0
easing-functionstring"default"指定 swiper 切换缓动动画类型2.6.5
bindchangeeventhandlecurrent 改变时会触发 change 事件,event.detail = {current, source}1.0.0
bindtransitioneventhandleswiper-item 的位置发生改变时会触发 transition 事件,event.detail = {dx: dx, dy: dy}。Skyline 仅支持非 worklet 的组件方法作为回调。2.4.3
bindanimationfinisheventhandle动画结束时会触发 animationfinish 事件,event.detail 同上。Skyline 仅支持非 worklet 的组件方法作为回调。1.9.0

Skyline 特有属性

属性类型默认值必填说明最低版本
scroll-with-animationbooleantrue改变 current 时使用动画过渡2.29.0
cache-extentnumber0缓存区域大小,值为 1 表示提前渲染上下各一屏区域(swiper 容器大小)2.29.0
worklet:onscrollstartworklet滑动开始时触发,仅支持 worklet 作为回调。event.detail = {dx: dx, dy: dy}
worklet:onscrollupdateworklet滑动位置更新时触发,仅支持 worklet 作为回调。event.detail = {dx: dx, dy: dy}
worklet:onscrollendworklet滑动结束时触发,仅支持 worklet 作为回调。event.detail = {dx: dx, dy: dy}

WebView 特有属性

属性类型默认值必填说明最低版本
previous-marginstring"0px"前边距,可用于露出前一项的一小部分,接受 px 和 rpx 值1.9.0
next-marginstring"0px"后边距,可用于露出后一项的一小部分,接受 px 和 rpx 值1.9.0
snap-to-edgebooleanfalse当 swiper-item 的个数大于等于 2,关闭 circular 并且开启 previous-margin 或 next-margin 的时候,可以指定这个边距是否应用到第一个、最后一个元素2.12.1

change事件 source 返回值

从 1.4.0 开始,change事件增加 source字段,表示导致变更的原因,可能值如下:

  1. autoplay 自动播放导致swiper变化;
  2. touch 用户划动引起swiper变化;
  3. 其它原因将用空字符串表示。

Bug & Tip

  1. tip: 如果在 bindchange 的事件回调函数中使用 setData 改变 current 值,则有可能导致 setData 被不停地调用,因而通常情况下请在改变 current 值前检测 source 字段来判断是否是由于用户触摸引起。
  2. tip: 在 mac 小程序上,若当前组件所在的页面或全局开启了 enablePassiveEvent 配置项,该内置组件可能会出现非预期表现(详情参考 enablePassiveEvent 文档

示例代码

<view class="banner" wx:if="{{bannerItems.length>0}}">
                    <swiper autoplay="true" interval="3000" duration="500" circular="true">
                        <swiper-item wx:for-items="{{bannerItems}}" data-index="{{index}}" wx:key="bannerId">
                            <view class="banner-card" catchtap='bannerClick' id="{{index}}">
                                <image bindtap='statistics' class='banner-img' id="{{index}}" src="{{item.imgURL}}"></image>
                                <view class="ad-icon">广告</view>
                            </view>
                        </swiper-item>
                    </swiper>
                </view>

PS:swiper-item标签内可以根据自己需求,自定义view元素的数据显示等。

image.png

 

image.png

banner点击监听

// banner跳转
bannerClick(e) {
    let _self = this;
    // 根据swiper-item中的data-index="{{index}}",取出banner索引
    let index = e.currentTarget.id;
    // 拿到索引,获取banner数据进行跳转等操作
    ...
},
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值