微信小程序点击图片全屏
2024-10-19 09:37:30
作为一个只懂简单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"
})
}
最新文章
- Web前端性能优化教程08:配置ETag
- HttpClient(JAVA)使用笔记
- 路径 (Path)&ndash;nodejs
- (转)重置Mac OS X管理员密码
- IOS Objective-C 协议,委托
- linux命令行模式下对FTP服务器进行文件上传下载
- jsonp及cors
- C#仪器数据文件解析-PDF文件
- ES6(阮一峰)学习总结
- C#学习笔记-DataTable导出到EXCEL(一)
- Javascript高级编程学习笔记(34)—— 客户端检测(3)用户代理检测
- asp.net mvc 多文件上传
- numpy函数:[1]shape用法
- springboot更换日志系统
- Archiva 2.2.3 安装运行的时候出现协议版本错误
- git回滚远程仓库
- 前端框架之Vue.js
- 【angular5项目积累总结】avatar组件
- Unity3D实践系列07,组件的启用或禁用开关,物体的的可见或不可见开关,以及相应事件
- 【AI】face_recognition
热门文章
- myBase7 激活方法
- hive Spark SQL分析窗口函数
- SNF软件开发机器人2018最新更新内容
- Windows IIS 服务器配置HTTPS启用TLS协议。
- CDC在sql server 2017中无法使用的问题
- 安全工具-Hydra
- Excel公式与函数——每天学一个
- 怎么让Windows2012和Windows2008多用户同时远程---经过测试有效
- [转]客户端js判断文件类型和文件大小即限制上传大小
- session_id()和session_regenerate_id()对原来session文件和其中数据是怎么处理的