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


Posted in Javascript onApril 23, 2018

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

我的思路是:获取屏幕宽度,获取图片的宽高,然后等比设置当前屏幕宽度下swiper的高度。

1.结构

<swiper indicator-dots="{{indicatorDots}}" autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}" indicator-active-color="{{bg}}" style='height:{{Height}}'>
   <block wx:for="{{imgUrls}}">
    <swiper-item>
      <image src="{{item}}" class="slide-image" mode="widthFix" bindload='imgHeight'/>  //bindload是绑定图片加载的事件,记得给image加上mode=“widthFix”这个属性哦,还有就是设置这个image 100%宽度哟
    </swiper-item>
   </block>
</swiper>

swiper的各个属性在官方文档中都有,这里就不说明了。最主要的是: style='height:{{Height}}' //动态设置swiper的高度

2.在page里面:

data: {
  imgUrls: [          
    '../img/goodsDetail/goods.png',
    '../img/goodsDetail/goods.png',
    '../img/goodsDetail/goods.png'
  ],
  indicatorDots: true,
  autoplay: true,
  interval: 5000,
  duration: 1300,
  bg: '#C79C77',
  Height:""     //这是swiper要动态设置的高度属性
 },
imgHeight:function(e){
  var winWid = wx.getSystemInfoSync().windowWidth; //获取当前屏幕的宽度
  var imgh=e.detail.height;//图片高度
  var imgw=e.detail.width;//图片宽度
  var swiperH=winWid*imgh/imgw + "px"//等比设置swiper的高度。 即 屏幕宽度 / swiper高度 = 图片宽度 / 图片高度  ==》swiper高度 = 屏幕宽度 * 图片高度 / 图片宽度
  this.setData({
    Height:swiperH//设置高度
  })
},

总结:获取当前屏幕宽度: wx.getSystemInfoSync().windowWidth

在小程序里动态设置属性,只有通过setData({ })来设置,和js中直接操作css样式有一点类似

注意:image如果外层有个容器装,然后image设置width为100%之后,距离装它的容器底部有一点距离,那是因为image是默认设置的display:inline-block属性,这个属性会产生间隙。如果要撑满容器,设置为display:block就可以了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
7个有用的jQuery代码片段分享
May 19 Javascript
使用AngularJS创建单页应用的编程指引
Jun 19 Javascript
浅谈JavaScript异常处理语句
Jun 26 Javascript
鼠标悬停小图标显示大图标
Jan 22 Javascript
js实现上传图片及时预览
May 07 Javascript
JS实现的图片预览插件与用法示例【不上传图片】
Nov 25 Javascript
基于javascript实现按圆形排列DIV元素(三)
Dec 02 Javascript
将angular-ui的分页组件封装成指令的方法详解
May 10 Javascript
angularJS开发注意事项
May 26 Javascript
node后端服务保活的实现
Nov 10 Javascript
Vue+Java 通过websocket实现服务器与客户端双向通信操作
Sep 22 Javascript
AJAX学习笔记
May 18 Javascript
vue.js中实现登录控制的方法示例
Apr 23 #Javascript
JS中获取 DOM 元素的绝对位置实例详解
Apr 23 #Javascript
Vue前端开发规范整理(推荐)
Apr 23 #Javascript
Vue 中mixin 的用法详解
Apr 23 #Javascript
详解Vue2.0配置mint-ui踩过的那些坑
Apr 23 #Javascript
vue2.0 移动端实现下拉刷新和上拉加载更多的示例
Apr 23 #Javascript
详解vue 计算属性与方法跟侦听器区别(面试考点)
Apr 23 #Javascript
You might like
磨咖啡豆的密诀
2021/03/03 冲泡冲煮
MySQL授权问题总结
2007/05/06 PHP
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
2014/05/04 PHP
php保存任意网络图片到服务器的方法
2015/04/14 PHP
Linux操作系统安装LAMP环境
2015/06/26 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
jQuery 美元符冲突的解决方法
2010/03/28 Javascript
js 纯数字不重复排列的另类方法
2010/07/17 Javascript
js清除input中type等于file的值域(示例代码)
2013/12/24 Javascript
js选项卡的实现方法
2015/02/09 Javascript
Javascript中的方法和匿名方法实例详解
2015/06/13 Javascript
学习JavaScript设计模式之代理模式
2016/01/12 Javascript
JavaScript和jquery获取父级元素、子级元素、兄弟元素的方法
2016/06/05 Javascript
初识简单却不失优雅的Vue.js
2016/09/12 Javascript
JavaScript无缝滚动效果的实例代码
2017/03/27 Javascript
关于HTML5的data-*自定义属性的总结
2018/05/05 Javascript
vue2.0 实现导航守卫(路由守卫)
2018/05/21 Javascript
讲解vue-router之什么是嵌套路由
2018/05/28 Javascript
Bootstrap实现省市区三级联动(亲测可用)
2019/07/26 Javascript
vue npm install 安装某个指定的版本操作
2020/08/11 Javascript
[45:14]Optic vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
初步介绍Python中的pydoc模块和distutils模块
2015/04/13 Python
python过滤字符串中不属于指定集合中字符的类实例
2015/06/30 Python
python使用pil库实现图片合成实例代码
2018/01/20 Python
python实现俄罗斯方块
2018/06/26 Python
浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法
2019/10/25 Python
pytorch实现focal loss的两种方式小结
2020/01/02 Python
最好的意大利皮夹克:D’Arienzo
2018/12/04 全球购物
高等教育学自荐书范文
2014/02/10 职场文书
政府门卫岗位职责
2014/04/29 职场文书
2014向国旗敬礼网上签名活动总结
2014/09/27 职场文书
债务授权委托书范本
2014/10/17 职场文书
2015年中秋节演讲稿
2015/03/20 职场文书
情况说明书怎么写
2015/10/08 职场文书
python实现简单的井字棋
2021/05/26 Python
海贼王十大潜力果实,路飞仅排第十,第一可毁世界(震震果实)
2022/03/18 日漫