157  
查询码:00001065
uni-app自适应不同比例的屏幕
来源:https://blog.csdn.net/wosind/article/details/103111292?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3
作者: 朱凡 于 2020年04月25日 发布在分类 / FM组 / FM_App 下,并于 2020年04月25日 编辑
阅读 阅读数 读数 uni-app 来自 程序 屏幕 高度 程序员 适应

uni-app自适应不同比例的屏幕。


移动端APP应用中,不同设备屏幕长宽比存在差异。因此有些固定高度的页面,在不同设备就会产生不同的显示效果。


比如图中左边布局正常,更换了一个比例不同的屏幕,显示就产生了一条间隙。

在这里插入图片描述


解决思路:AB和CD两个区域的可以固定高度,然后BC区域根据不同的屏幕尺寸调整它的高度,即可实现不同尺寸屏幕的自适应。

在这里插入图片描述
那么程序需要做的:
1、获取设备可用屏幕总高度。
3、获取固定区域的高度
2、滚动框height属性绑定变量。


一、获取设备可用屏幕总高度。
uni.getSystemInfo({ success: function (res) { var windowHeight= res.windowHeight; } }); 
二、获取固定区域的高度,通过参照元素的位置信息,来计算C区域的高度
var _this = this; var diffHeight = 0; let view = uni.createSelectorQuery().select("#scrollbody"); view.boundingClientRect(data => { diffHeight = data.top ; //C区域上延到屏幕顶端的距离,即A区域的高度  view = uni.createSelectorQuery().select("#tfloor1"); view.boundingClientRect(data => { diffHeight += data.height ; //B区域的高度  _this.tableheight = _this.GLOBAL.screenHeight - diffHeight; //可以屏幕总高度 - C区域上延到屏幕顶端的距离 - B区域的高度  //即获得C区域要调整的高度  }).exec(); }).exec(); 

附:boundingClientRect获取元素的相关属性:
属性 类型 说明
id String 节点的 ID
dataset Object 节点的 dataset
left Number 节点的左边界坐标
right Number 节点的右边界坐标
top Number 节点的上边界坐标
bottom Number 节点的下边界坐标
width Number 节点的宽度
height Number 节点的高度
三、height属性绑定变量。

将获取的C区域高度,绑定到template样式。
首先注意,不能绑定data属性,要绑定计算属性

computed: { scrollerHeight: function() { return this.scrollHeight+'px'; } }, 

template样式height属性绑定计算属性。

:style="{height:scrollerHeight} 


 推荐知识

 历史版本

修改日期 修改人 备注
2020-04-25 16:26:37[当前版本] 朱凡 创建版本

 附件

附件类型

PNGPNG

知识分享平台 -V 4.8.7 -wcp