作为一个只懂简单HTML,jQuery,JS的web后台开发者,最近在学习小程序开发,现在将小程序的点击全屏功能的相关内容记录下来。如果有不对的地方或者有更简单的方法,请留言指教 0_0~

  .js 文件 

  data: {    
  one:"block", //判断图片全屏前是否隐藏
  ones:"none", //判断图片全屏后是否隐藏
  phoneheight :" " , //按比例缩放后图片高
  phoneWidth : " "  //按比例缩放后图片宽
  }

  .wxml 文件

  //全屏前

  <view class='first' style='display:{{one}}'>

    <image class='detailphone' src='{{urls}}' mode='widthFix' bindtap='phonefull'></image>

  </view>

  //全屏后

  <view class='firsts' style='display:{{ones}}'>
    <image style='width:{{phoneWidth}}rpx;height:{{phoneheight}}rpx;top:{{top}}rpx;left:{{left}}rpx' src='{{urls}}' class="asd" mode="aspectFit" bindtap='nophonefull' id="{{urls}}"     ></image>
  </view>
 

  当点击全屏前图片时,触发bindtap事件

  .js 文件 

  //点击照片全屏
  phonefull : function(){
    var originalWidth =0;    //图片原本的高
    var originalHeight=0;    //图片原本的宽
    var height = 0;      //可用屏幕高
    var width = 0;       //可用屏幕宽
    var orwidth = 0;
    var orheight =0;
 
  //在javascript语言中,this代表着当前的对象,它在程序中随着执行的上下文随时会变化。在进入phonefull点击事件函数后,对象已经发生了变化。所以已经不是原来的页面对象了。自然就没有了data属性,通过 var that = this 把this对象复制到临时变量that.这样就将原来的页面对象赋值给that了。
    var that = this ;
    wx.getImageInfo({      //.getImageInfo()获取图片信息
      src: this.data.urls,     //要获取的图片信息的路径
      success: function (res) {   //获取图片成功后的操作
        originalWidth = res.width; 
        originalHeight = res.height;
        wx.getSystemInfo({      //获取设备的相关信息
          success: function (res) {
            height = res.windowHeight*2;    //res.windowHeight  可用屏幕高    小程序使用自适应单位 rpx,获取屏幕高以 px 为单位,以iPhone6为例,1rpx=0.5px
            width = res.windowWidth*2;       //res.windowWidth   可用屏幕宽
            orwidth = width / originalWidth ;       // 可用屏幕宽与图片原本宽的比
            orheight = height / originalHeight ;   //可用屏幕高与图片原本高的比
            //因为全屏需要将高宽全部显示出来,所以进行比例判断
            if (orwidth <= orheight) {
              that.setData({
                phoneheight: originalHeight * orwidth,
                phoneWidth: originalWidth * orwidth,
                top: (height - originalHeight * orwidth)/2,
                left: (width - originalWidth * orwidth)/2,
                one: "none",
                ones: "block"
              })
            } else {
              that.setData({
                phoneheight: originalHeight * orheight,
                phoneWidth: originalWidth * orheight,
                top: (height - originalHeight * orheight) / 2,
                left: (width - originalWidth * orheight) / 2,
                one: "none",
                ones: "block"
              })
            }
          },
          fail: function (res) {
            console.log("获取设备高宽失败");
          },
        })
      },
      fail: function (res) {
        console.log("获取图片高宽失败");
      },
    })
  },
 
  这时,通过one,ones的赋值,显示的就是全屏的图片啦,如果想退出全屏,点击全屏后的图片,触发nophonefull事件就可以啦  
 
  .js 文件
 
  //退出满屏
  nophonefull: function () {
    this.setData({
      one: "block",
      ones: "none"
    })
  }

  

最新文章

  1. Web前端性能优化教程08:配置ETag
  2. HttpClient(JAVA)使用笔记
  3. 路径 (Path)&ndash;nodejs
  4. (转)重置Mac OS X管理员密码
  5. IOS Objective-C 协议,委托
  6. linux命令行模式下对FTP服务器进行文件上传下载
  7. jsonp及cors
  8. C#仪器数据文件解析-PDF文件
  9. ES6(阮一峰)学习总结
  10. C#学习笔记-DataTable导出到EXCEL(一)
  11. Javascript高级编程学习笔记(34)—— 客户端检测(3)用户代理检测
  12. asp.net mvc 多文件上传
  13. numpy函数:[1]shape用法
  14. springboot更换日志系统
  15. Archiva 2.2.3 安装运行的时候出现协议版本错误
  16. git回滚远程仓库
  17. 前端框架之Vue.js
  18. 【angular5项目积累总结】avatar组件
  19. Unity3D实践系列07,组件的启用或禁用开关,物体的的可见或不可见开关,以及相应事件
  20. 【AI】face_recognition

热门文章

  1. myBase7 激活方法
  2. hive Spark SQL分析窗口函数
  3. SNF软件开发机器人2018最新更新内容
  4. Windows IIS 服务器配置HTTPS启用TLS协议。
  5. CDC在sql server 2017中无法使用的问题
  6. 安全工具-Hydra
  7. Excel公式与函数——每天学一个
  8. 怎么让Windows2012和Windows2008多用户同时远程---经过测试有效
  9. [转]客户端js判断文件类型和文件大小即限制上传大小
  10. session_id()和session_regenerate_id()对原来session文件和其中数据是怎么处理的