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

发布时间:2018-07-20 15:34,

浏览次数:588

, 标签:

swiper

小程序中使用swiper 组件 ,实现轮播图高度自适应效果。

先上最终实现效果图

先看一下微信官方文档介绍  swiper 组件

https://developers.weixin.qq.com/miniprogram/dev/component/swiper.html

代码部分

wxml:

autoplay='{{true}}' interval="{{5000}}" duration="{{500}}" circular="{{true}}"

bindchange='bindchange' style="height:{{imgheights[current]}}rpx;">

wx:for="{{imgUrls}}">

class='image-view'

style="height:{{imgheights[current]}}rpx;width:{{imgwidth}}rpx;"

bindload="imageLoad" data-src='{{item}}'>

js:

Page({ data: { imgheights: [], current: 0, imgwidth: 750, imgUrls: [

'http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg',

'http://img06.tooopen.com/images/20160818/tooopen_sy_175866434296.jpg',

'https://img3.doubanio.com/view/photo/l/public/p2494946035.webp',

'http://img06.tooopen.com/images/20160818/tooopen_sy_175833047715.jpg', ], },

imageLoad: function (e) { //获取图片真实宽度 var imgwidth = e.detail.width, imgheight =

e.detail.height, src = [], //宽高比 ratio = imgwidth / imgheight;

console.log(e.target.dataset['src']) src.push(e.target.dataset['src'])

console.log(src) //计算的高度值 var viewHeight = 750 / ratio; var imgheight =

viewHeight var imgheights = this.data.imgheights //把每一张图片的高度记录到数组里

imgheights.push(imgheight) this.setData({ imgheights: imgheights, }) },

bindchange: function (e) { this.setData({ current: e.detail.current }) }, })

思路是这样滴,,,在图片 加载时通过 bindload imageLoad  将每张图片的 宽高取出,计算好高度,存入数组。swiper 组件

通过bindchange 监听图片切换 将当前图片的在数组中的位置(swiper组件中的位置)赋值 current ,以此动态的改变 页面

图片和swiper的高度。。。   但是,无意中发现一个问题,imageLoad  中打印 图片的 src 发现

顺序有时和图片真实的顺序是不一致的,把大图放在数组前面,但是却是第三个第四个加载出来的。这就坑了,,导致加载出来计算的图片高度数组顺序和真实的不一致。bindload

获取的图片顺序不正确,不知道是不是因为图片资源大小的缘故,故加了一个参数,严谨一点。。如果接口提供的参数里返回了图片的原始宽高 也可以不用这么做。

在imageLoad中打印 index 哇 果然 顺序是有误的。

最终代码

autoplay='{{true}}' interval="{{5000}}" duration="{{500}}" circular="{{true}}"

bindchange='bindchange' style="height:{{imgheights[current]}}rpx;">

wx:for="{{imgUrls}}" wx:key="{{index}}">

src="{{item}}" class='image-view'

style="height:{{imgheights[current]}}rpx;width:{{imgwidth}}rpx;"

bindload="imageLoad" data-src='{{item}}' data-index='{{index}}'>

Page({ data: { imgheights: [], current: 0, imgwidth: 750, imgUrls: [

'https://img3.doubanio.com/view/photo/l/public/p2494946035.webp',

'http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg',

'http://img06.tooopen.com/images/20160818/tooopen_sy_175866434296.jpg',

'http://img06.tooopen.com/images/20160818/tooopen_sy_175833047715.jpg', ], },

imageLoad: function (e) { //获取图片真实宽度 var imgwidth = e.detail.width, imgheight =

e.detail.height, //宽高比 ratio = imgwidth / imgheight; //计算的高度值 var viewHeight =

750 / ratio; var imgheight = viewHeight var imgheights = this.data.imgheights

//把每一张图片的高度记录到数组里 imgheights[e.target.dataset['index']] = imgheight;// 改了这里

赋值给当前 index this.setData({ imgheights: imgheights, }) }, bindchange: function

(e) { this.setData({ current: e.detail.current }) }, })

这次没什么问题了 把图片较大的放在数组前面,检验一下就知道了

微信小程序swiper图片尺寸_微信小程序 swiper 轮播图 高度自适应相关推荐

  1. 微信小程序swiper图片尺寸_微信小程序之swiper轮播图中的图片自适应高度的方法...

    小程序中的轮播图很简单,官方都有例子的,但是唯一的缺陷就是swiper是固定死的150px高度,这样如果传入的图片大于这个高度就会被隐藏.辣么,怎样让图片自适应不同分辨率捏. 我的思路是:获取屏幕宽度 ...

  2. 微信小程序swiper图片尺寸_微信小程序之swiper轮播图中的图片自适应高度

    小程序中的轮播图很简单,官方都有例子的,但是唯一的缺陷就是swiper是固定死的150px高度,这样如果传入的图片大于这个高度就会被隐藏.辣么,怎样让图片自适应不同分辨率捏. 我的思路是:获取屏幕宽度 ...

  3. 轮播图高度自适应_干货!弘成教你写轮播图全自动适应封装代码

    点击蓝字 关注我们 在弘成教育任UI讲师,带了几十个班数百个学生了,我发现学生们最头疼的不是网站界面的设计,各种网站的设计,专题页,详情页,店铺装修,他们都能设计得漂漂亮亮.也不是HTML+CSS的静 ...

  4. 微信小程序swiper图片尺寸_微信小程序 - swiper 高度自适应

    我这边开发用的是 wepy,代码风格跟小程序原生的不太一样,下面代码是依照小程序的代码风格整理之后的,可能有不同或遗漏的地方,但这都不重要,注意领会精神! 原理: 获取设备宽度 获取 swiper 内 ...

  5. 微信小程序swiper图片尺寸_微信小程序swiper组件中的img自定义尺寸(自适应)

    swiper组件里的image默认宽度320,高度200,这无法满足我们的需求,就需要我们自己修改尺寸和属性了,这里记录下自己的解决办法.首先给image的width设置为100%,此时图片的大小会根 ...

  6. 轮播图高度自适应_【2020顶会NIPS】用于交通预测的自适应图卷积循环网络

    就idea来说,这篇文章整体感觉亮点只有参数分解一处,其他的自适应网络结构,之前已经有文章研究,如果在计算方面有需求,或者是网络节点较多的应用可以参考这篇文章. Adaptive Graph Conv ...

  7. 微信小程序轮播图高度与图片高度不匹配问题

    微信小程序轮播图高度与图片高度不匹配问题 在微信小程序项目中,为了美观给page设置了padding值,然后让轮播图里面的图片宽度为100%,高度widthFix自适应,出现了如下问题:指示器位置不对 ...

  8. 微信小程序 swiper轮播图高度宽度自适应(解决轮播图图片显示不全问题)

    之前从来没有接触过前端,最近开始学习微信小程序,因为没有基础所以学起来有点难度.在学习这个swiper标签的时候遇到了一些问题.首先一个问题就是轮播图中的图片显示不全,尽管已经给image设置成了wi ...

  9. 小程序轮播图高度适配

    小程序轮播图适配 在开发小程序轮播图时,我遇到一下问题:小程序轮播图的导航栏总是不能放在正确的位置上,思考再三,我发现问题的原因是:当我们设置image的mode="widthFix&quo ...

最新文章

  1. dubbo 配置文件详解
  2. python获取url参数 类继承_python之类的继承
  3. java基础提升篇:深入剖析Java中的装箱和拆箱
  4. Oracle资源管理器(二)-- 创建和使用数据库资源计划
  5. hadoop 配置文件简析
  6. 一位程序员工作10年总结的13个忠告
  7. VB小技巧 文本框中屏蔽系统右键菜单用自定义菜单代替自带右键菜单
  8. web多线程之webworkers
  9. HTML5模拟衣服撕扯动画
  10. mysql性能优化金字塔法则 下载_千金良方:MySQL性能优化金字塔法则 pdf版
  11. Android Q适配攻略(五)(存储权限变更)
  12. OneDrive,在云端
  13. Wechat----wxs
  14. 【Linux】修改文件或文件夹权限的命令
  15. 五句话介绍Hessian序列化
  16. S32K系列S32K144学习笔记——UART2
  17. 成功解决代码运行的时候出现的warnings警告问题
  18. nginx在Linux的安装和简单使用
  19. screen显示窗口查看历史输出
  20. led数码显示控制plc实验_实验三 LED数码显示控制 PLC实验报告

热门文章

  1. js回调函数(超详细)
  2. ajax 返回的数据有换行符,前端如何展示出来?
  3. java获取mysql的数据_【助教】Java获取数据库数据展示
  4. *args和**kwargs
  5. vivoY73s和vivoY70s的区别 vivoY73s和vivoY70s哪个值得入手
  6. 【SVN】svn解决冲突
  7. 使用linux创建文件系统,linux创建文件系统
  8. 游戏声效知多少-Unity
  9. 农耕不再靠“天意”,中科赛诺用百度飞桨打造智能“地脸识别”
  10. ffmpeg configure中文帮助文档