最近在做小程序开发,复制官方文档上的swiper组件实测后发现,图片不能自适应。网上找了几个版本测试都发现存在一些小问题,目前这个版本本人实测是最好用的。记录一下,方便日后使用。
- <view class='swiper'>
- <swiper indicator-dots="{{indicatorDots}}" vertical="{{vertical}}" autoplay="{{autoplay}}" duration="{{duration}}" interval='{{interval}}' bindchange="bindchange" circular="{{circular}}" style="height:{{imgheights[current]}}rpx;">
- <block wx:for='{{imgList}}' wx:key="{{index}}">
- <swiper-item>
- <image src="{{item}}" data-id='{{index}}' class="slide-image" mode="widthFix" bindload="imageLoad"/>
- </swiper-item>
- </block>
- </swiper>
- </view>
- .swiper image {
- width: 100%;
- height: auto;
- }
- data: {
- //图片地址
- imgList: ['/images/wyh-img_bg.png', '/images/wyh-img8.png', '/images/wyh-img_shop1.png', '/images/wyh-img_bg1.png'],
- //是否采用衔接滑动
- circular: true,
- //是否显示画板指示点
- indicatorDots: false,
- //选中点的颜色
- indicatorcolor: "#000",
- //是否竖直
- vertical: false,
- //是否自动切换
- autoplay: true,
- //自动切换的间隔
- interval: 2500,
- //滑动动画时长毫秒
- duration: 100,
- //所有图片的高度
- imgheights: [],
- //图片宽度
- imgwidth: 750,
- //默认
- current: 0
- },
- imageLoad: function (e) {//获取图片真实宽度
- var imgwidth = e.detail.width,
- imgheight = e.detail.height,
- //宽高比
- ratio = imgwidth / imgheight;
- console.log(imgwidth, imgheight)
- //计算的高度值
- var viewHeight = 750 / ratio;
- var imgheight = viewHeight;
- var imgheights = this.data.imgheights;
- //把每一张图片的对应的高度记录到数组里
- imgheights[e.target.dataset.id] = imgheight;
- this.setData({
- imgheights: imgheights
- })
- },
- bindchange: function (e) {
- // console.log(e.detail.current)
- this.setData({ current: e.detail.current })
- },