微信小程序之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 相关文章推荐
jquery.qrcode在线生成二维码使用示例
Aug 21 Javascript
JS实现图片横向滚动效果示例代码
Sep 04 Javascript
js监控IE火狐浏览器关闭、刷新、回退、前进事件
Jul 23 Javascript
JQuery菜单效果的两个实例讲解(3)
Sep 17 Javascript
React.js入门实例教程之创建hello world 的5种方式
May 11 Javascript
jquery按回车键实现表单提交的简单实例
May 25 Javascript
js数字计算 误差问题的快速解决方法
Feb 28 Javascript
文本溢出插件jquery.dotdotdot.js使用方法详解
Jun 22 jQuery
详解React Native顶|底部导航使用小技巧
Sep 14 Javascript
jQuery中过滤器的基本用法示例
Oct 11 jQuery
详解如何使用koa实现socket.io官网的例子
Nov 04 Javascript
AngularJS实现的自定义过滤器简单示例
Feb 02 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
PHP 编程请选择正确的文本编辑软件
2006/12/21 PHP
PHP设计模式之命令模式的深入解析
2013/06/13 PHP
php获取301跳转URL简单实例
2013/12/16 PHP
php实现的支付宝网页支付功能示例【基于TP5框架】
2019/09/16 PHP
js实现input密码框提示信息的方法(附html5实现方法)
2016/01/14 Javascript
解决node.js安装包失败的几种方法
2016/09/02 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
2017/03/24 Javascript
Angular 4 依赖注入学习教程之FactoryProvider的使用(四)
2017/06/04 Javascript
2019 年编写现代 JavaScript 代码的5个小技巧(小结)
2019/01/15 Javascript
uniapp实现可滑动选项卡
2020/10/21 Javascript
关于better-scroll插件的无法滑动bug(2021通过插件解决)
2021/03/01 Javascript
javascript实现简单页面倒计时
2021/03/02 Javascript
[06:38]DOTA2怒掀电竞风暴 2013Chinajoy
2013/07/27 DOTA
Python 深入理解yield
2008/09/06 Python
python读写文件操作示例程序
2013/12/02 Python
Python使用logging结合decorator模式实现优化日志输出的方法
2016/04/16 Python
利用python生成一个导出数据库的bat脚本文件的方法
2016/12/30 Python
详解Python下载图片并保存本地的两种方式
2019/05/15 Python
python Django框架实现web端分页呈现数据
2019/10/31 Python
python中的逆序遍历实例
2019/12/25 Python
Python文字截图识别OCR工具实例解析
2020/03/05 Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
2020/04/10 Python
python与js主要区别点总结
2020/09/13 Python
css3 transform及原生js实现鼠标拖动3D立方体旋转
2016/06/20 HTML / CSS
美国办公用品购物网站:Quill.com
2016/09/01 全球购物
Farfetch澳大利亚官网:Farfetch Australia
2020/04/26 全球购物
澳大利亚领先的在线礼品网站:Gifts Australia
2020/08/15 全球购物
便利店投资的创业计划书
2014/01/12 职场文书
党员组织关系介绍信
2014/02/13 职场文书
小区门卫的岗位职责
2014/09/26 职场文书
四风自我剖析材料
2014/09/30 职场文书
2014党支部对照检查材料思想汇报
2014/10/05 职场文书
2014年行政工作总结
2014/11/19 职场文书
入伍志愿书怎么写?
2019/07/19 职场文书
简短的人生哲理(38句)
2019/08/13 职场文书
导游词之吉林花园山
2019/10/17 职场文书