评论

微信小程序之swiper轮播图片高度自适应

微信小程序中使用swiper组件可以实现图片轮播效果,但是默认swiper高度是固定的150px,如果项目中图片大于固定高度就会被隐藏,所以本篇文章要实现轮播图片的高度自适应。

微信小程序中使用swiper组件可以实现图片轮播效果,但是默认swiper高度是固定的150px,如果项目中图片大于固定高度就会被隐藏,所以本篇文章要实现轮播图片的高度自适应。

效果图:


wxml代码:

<swiper class="t-swiper" indicator-dots="{{indicatordots}}" indicator-active-color="{{color}}" autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}" style="height:{{height}}">
  <block wx:for="{{img}}" wx:key="">
    <swiper-item>
      <image src="{{item}}" mode="widthFix" bindload='goheight' />
    </swiper-item>
  </block>
</swiper>

wxss代码:

.t-swiper image {
  width: 100%;
}

js代码:

Page({
  data: {
    img: [
      'img/1.jpg',
      'img/2.jpg',
      'img/3.jpg'
    ],
    indicatordots: true,
    //是否显示面板指示点
    autoplay: true,
    //是否自动切换
    interval: 5000,
    //自动切换时间间隔
    duration: 500,
    //滑动动画时长
    color: '#ffffff',
    //当前选中的指示点颜色
    height: ''
    //swiper高度
  },
  goheight: function (e) {
    var width = wx.getSystemInfoSync().windowWidth
    //获取可使用窗口宽度
    var imgheight = e.detail.height
    //获取图片实际高度
    var imgwidth = e.detail.width
    //获取图片实际宽度
    var height = width * imgheight / imgwidth + "px"
    //计算等比swiper高度
    this.setData({
      height: height
    })
  }
})
最后一次编辑于  2019-07-14  
点赞 8
收藏
评论

3 个评论

  • Damon
    Damon
    2022-12-30

    不错

    2022-12-30
    赞同
    回复
  • 夏天
    夏天
    2020-09-24

    swiper-item 嵌套的image组件,bindload函数怎么没进去啊 被屏蔽了?

    2020-09-24
    赞同
    回复
  • 完全搞不懂
    完全搞不懂
    2019-11-26

    默认的image会有一个高度属性,所以在image标签里加上style="height:{{height}}"

    2019-11-26
    赞同
    回复
登录 后发表内容