小程序数组型图片自适应效果的实现(交流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: %;
  margin-left: %;
}
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);
  }
})
小程序数组型图片自适应效果的实现(交流QQ群:604788754)的更多相关文章
- 小程序数据绑定点赞效果切换(交流QQ群:604788754)
		如果对本例有更好的意见和建议,希望给予留言或是加群跟群主联系,交流学习. WXML: <block wx:for="{{nums}}" wx:for-index='idx' ... 
- Visual Studio 2017中使用正则修改部分内容  如何使用ILAsm与ILDasm修改.Net exe(dll)文件    C#学习-图解教程(1):格式化数字字符串  小程序开发之图片转Base64(C#、.Net)  jquery遍历table为每一个单元格取值及赋值  。net加密解密相关方法   .net关于坐标之间一些简单操作
		Visual Studio 2017中使用正则修改部分内容 最近在项目中想实现一个小工具,需要根据类的属性<summary>的内容加上相应的[Description]特性,需要实现的效 ... 
- 微信小程序实现标签页滑块效果
		微信小程序实现标签页滑块效果 小程序完整代码: wxml: <view class="swiper-tab"> <view class="swiper- ... 
- 微信小程序点击图片放大预览
		微信小程序点击图片放大预览使用到 wx.previewImage 接口,可以放大.上/下一张 上代码 wxml代码 <view class='content-img' wx:if="{ ... 
- 微信小程序简单封装图片上传组件
		微信小程序简单封装图片上传组件 希望自己 "day day up" -----小陶 我从哪里来 在写小程序的时候需要上传图片,个人觉得官方提供的 Uploader 组件不是太好用, ... 
- 微信小程序里实现跑马灯效果
		在微信小程序 里实现跑马灯效果,类似滚动字幕或者滚动广告之类的,使用简单的CSS样式控制,没用到JS wxml: <!-- 复制的跑马灯效果 --> <view class=&quo ... 
- 小程序中通过判断id来删除数据,当数据长度为0时,显示隐藏部分(交流QQ群:604788754)
		欢迎加入小程序交流群:本群定期更新在工作种遇到的小知识(交流QQ群:604788754) WXML: <!--遍历循环的数据部分--> <block wx:for="{{d ... 
- 微信小程序movable-view移动图片和双指缩放
		先从movable-view开始说起吧. movable-view是小程序自定义的组件.其描述为:"可移动的视图容器,在页面中可以拖拽滑动". 官方文档地址:https://mp. ... 
- web页面和小程序页面实现瀑布流效果
		小程序实现瀑布流效果,和web页面差不多,都要经过以下步骤: 1).加载图片,获取图片的宽高度: 2).根据页面需要显示几列计算每列的宽度: 3).根据图片真实宽度和每列的宽度比,计算出图片需要显示的 ... 
随机推荐
- C++11 正则表达式——实例系统(转载)
			一.用正则表达式判断邮箱格式是否正确 1 #include <regex> #include <iostream> #include <string> bool i ... 
- List集合实现简易学生管理
			题目: 代码: package org.wlgzs; import java.util.ArrayList; import java.util.List; import java.util.Scann ... 
- Android内核和Linux内核的区别
			1.Android系统层面的底层是Linux,并且在中间加上了一个叫做Dalvik的Java虚拟机,从表面层看是Android运行库.每个Android应用都运行在自己的进程上,享有Dalvik虚拟机 ... 
- [异常记录-13]Web Deploy发布:An error occurred when the request was processed on the remote computer
			大概搜了一下这个报错,大家的情况各不相同,但应该是 Web Deploy 安装导致的没错了... 建议粗暴解决, 卸载后重新安装 Web Deploy 时,不要选那个经典还是典型的安装选项,选自定义 ... 
- NYOJ 116 士兵杀敌(二)(二叉索引树)
			http://acm.nyist.net/JudgeOnline/problem.php?pid=116 题意: 南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的. 小工是南将军手下的 ... 
- idea 2018注册码(激活码)永久性的
			2DZ8RPRSBU-eyJsaWNlbnNlSWQiOiIyRFo4UlBSU0JVIiwibGljZW5zZWVOYW1lIjoiY24gdHUiLCJhc3NpZ25lZU5hbWUiOiIiL ... 
- selenium-chrome-headless
			#coding=utf-8 from selenium import webdriver import time chrome_options = webdriver.ChromeOptions() ... 
- MAC OS 英语朗读功能
			哈哈哈,太神奇了 在命令行中敲say + word ,系统能够自己讲word读出来. 如果是敲的是 say +中文, 就不知道再读什么啦 哈哈哈哈---- 此外,在对应网站选中内容后还可以右击,用sp ... 
- ActivityGroup实现tab功能
			android.app包中含有一个ActivityGroup类,该类是Activity的容器,可以包含多个嵌套进来的 Activitys,这篇文章就是借助ActivityGroup可以嵌套Activi ... 
- CSS3 媒体查询@media 查询(响应式布局)
			例:如果文档宽度小于 300 像素则修改背景颜色(background-color): @media screen and (max-width: 300px) { body { background ... 
