zoukankan      html  css  js  c++  java
  • 微信小程序点击图片全屏

      作为一个只懂简单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='{{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"
        })
      }

      

  • 相关阅读:
    前端与算法 leetcode 344. 反转字符串
    JavaScript闭包使用姿势指南
    前端与算法 leetcode 48. 旋转图像
    前端与算法 leetcode 36. 有效的数独
    前端与算法 leetcode 1. 两数之和
    前端与算法 leetcode 283. 移动零
    前端与编译原理 用js去运行js代码 js2run
    前端与算法 leetcode 66. 加一
    前端与算法 leetcode 350. 两个数组的交集 II
    前端与算法 leetcode 26. 删除排序数组中的重复项
  • 原文地址:https://www.cnblogs.com/ttqi/p/10245740.html
Copyright © 2011-2022 走看看