小程序数组型图片自适应效果的实现(交流QQ群:604788754)

//本例代码如有问题,请加群,下载今日日期文件,测试。(如对本例有疑问,也可加群咨询群主)

WXML:

<view class="imgbox">
  <block wx:for="{{imgarr}}" wx:for-item='item' wx:for-index='idx'>
    <image src="{{imgarr[idx]}}" data-id="{{idx}}" bindload="imageLoad" style="width:{{viewWidthArr[idx]}}px; height:{{viewHeightArr[idx]}}px"></image>
  </block>
</view>

WXSS:

.imgbox{
  width: 94%;
  margin-left: 3%;
}

JS:

Page({
  data: {
    imgarr: ['http://img35.photophoto.cn/20150512/0035035061753190_s.jpg', 'http://img.mp.itc.cn/upload/20160923/436c0efb4f58437089699cecd9d62f38_th.jpg', 'http://photocdn.sohu.com/20070701/Img250855658.jpg'],
    /*图片列表的高度值数组*/
    viewHeightArr: [],
    viewWidthArr: []
  },
  onLoad: function () {
    /*获取用户屏幕的实际宽度,取94%的宽度,把取到的值付给缓存*/
    wx.getSystemInfo({
      success: function (res) {
        var screenWidth = parseInt(res.screenWidth * 0.94);
        wx.setStorageSync('screenWidth', screenWidth);
      },
    });
    //获取缓存中屏幕的宽度
    var screenWidth = wx.getStorageSync('screenWidth');
    this.setData({
      screenWidth: screenWidth
    });
  },
  imageLoad: function (res) {
    var dataid = res.currentTarget.dataset.id;
    //获取图片高度数组
    var viewHeightArr = this.data.viewHeightArr;
    //获取图片宽度数组
    var viewWidthArr = this.data.viewWidthArr;
    /*判断图片的实际宽度是否大于缓存中屏幕的宽度,如果大于就取屏幕的宽度作为图片的宽度,如果小于屏幕的宽度,图片的宽度和高度就设置为图片的实际宽度*/
    //获取屏幕宽度
    var screenWidth = this.data.screenWidth;
    //获取图片实际宽度
    var imgwidth = res.detail.width;
    //获取图片的实际高度
    var imgheight = res.detail.height;
    if (imgwidth > screenWidth) {
      //获取图片的宽高比例值
      var ratio = imgwidth / imgheight;
      //设置图片自适应的高度
      var viewHeight = parseInt(screenWidth / ratio);
      //根据实际加载的图片id来赋值给数组
      //把图片的高度付給数组
      viewHeightArr[dataid]=viewHeight;
      //把图片的宽度付給数组
      viewWidthArr[dataid] = screenWidth;
    } else {
      /*图片的实际尺寸小于屏幕的宽度,就取图片的实际宽高来设为图片的宽高*/
      viewHeightArr[dataid] = imgheight;
      //把图片的宽度付給数组
      viewWidthArr[dataid] = imgwidth;
    };
    this.setData({
      viewWidthArr: viewWidthArr,
      viewHeightArr: viewHeightArr
    });
    // console.log(viewWidthArr);
    // console.log(viewHeightArr);
  }
})

 

posted @ 2017-07-06 18:16  生如逆旅,一苇以航  阅读(686)  评论(0编辑  收藏  举报