今天在开发小程序轮博图的过程中,发现swiper这个组件套用的轮博图在移动端体验起来很差劲,滑动的时候很不流畅,不过在pc端开发界面滑动起来却很正常。于是我搜了一下,找了一个看上去靠谱的解决方法,这个方法是改变原有的事件,自己重写了滑动事件,不过我用了一下还是那样子不流畅。我去体验了一下其他带有轮博图的小程序,发现都是如此。大家有解决的办法吗?
注意:
轮播图中的image 中src属性
填写图片地址时,如果直接src="/static/img/01.jpg"
在模拟器上可以看到图片,但是真机调试就看不到图片了
解决方法:
在data中定义一个数组,存放图片的src地址
data:{
imgs:['/static/img/banners/1.jpg',....]
}
直接使用wx:for遍历
<image src="{{item}}"
这样既可以解决真机调试不显示图片的bug
wxml
<!-- swiper轮播
宽度 100%
高度设置为 150px
swiper-item 子元素 不需要添加或修改他的默认样式
宽高默认100% 根据父级自动改变
image:默认宽高不是图片真实大小
indicator-dots 是否显示圆点
indicator-color 圆点颜色
inidicator-active-color 当前颜色
atuoplay 自动切换
interval 切换时间间隔
circular 是否衔接
vertical 是否纵向滚动
-->
<swiper class="swiperfocus" indicator-dots="{{ showDots }}" indicator-color="rgba(255,0,0,.5)" indicator-active-color="#00f" autoplay interval="4000" circular vertical>
<swiper-item wx:for="{{imgs}}" wx:key="index">
<image src="{{item}}"></image>
</swiper-item>
</swiper>
<view>-------------------模拟改变指示点样式--------------</view>
<view class="wrap">
<swiper class="swiperfocus" autoplay circular current="{{current}}" bindchange="swiperCurrentchang">
<swiper-item wx:for="{{imgs}}" wx:key="index">
<image src="{{item}}"></image>
</swiper-item>
</swiper>
<view class="dots">
<text class="{{ index == current ? 'dotsactive' : '' }}" wx:for="{{imgs}}" wx:key="index"></text>
</view>
</view>
js
App({
data: {
showDots:true,
imgs:['/static/img/banners/1.jpg','/static/img/banners/3.jpg','/static/img/banners/3.jpg'],
current:0,
},
// 获取current
swiperCurrentchang(e){
// console.log(e,'获取current')
let {current} = e.detail
this.setData({
current
})
}
})
/* pages/02swiper/02swiper.wxss */
.swiperfocus{
height: 297rpx;
}
.swiperfocus image{
/* width: 750rpx; */
width: 100%;
height: 100%;
}
.wrap{
position: relative;
}
.wrap .swiperfocus{
height: 297rpx;
}
.wrap .swiperfocus image{
width: 100%;
height: 100%;
}
.wrap .dots{
position: absolute;
bottom: 8rpx;
left: 0;
width: 100%;
text-align: center;
}
.wrap .dots text{
display: inline-block;
width: 40rpx;
height: 20rpx;
background-color: blueviolet;
margin: 0 12rpx;
border-radius: 10rpx;
}
.wrap .dots .dotsactive{
background-color: #fff;
}
针对轮播图移动端体验不佳的问题,可以考虑以下几个方面来优化:
1.减少图片大小与数量
尽量减少图片的大小以及数量,可以通过压缩图片大小、调整分辨率等方式来减小图片大小,同时也要限制轮播图数量,避免占用过多资源导致卡顿。
2.预加载图片
在用户滑动轮播图时,可以预先加载下一张图片,避免用户滑动时空白出现,提高用户体验。
3.切换动效
可以通过更改切换动画效果来提高用户体验,也可以尝试自定义切换动画来实现更个性化的效果。
4.调整 swiper 配置参数
根据实际情况,可以调整 swiper 的配置参数,如设置 autoplay、interval、circular 等,来实现更加流畅的切换效果,也可以尝试将 vertical 改为 horizontal 来优化体验。
除此之外,也可以参考参考资料中的示例代码进行修改和优化,通过设置轮播图子元素的默认样式、遍历图片地址等方式来实现更加优秀的轮播图效果。