飞道的博客

解决屏幕大小不一导致页面下方出现多余空白的问题

404人阅读  评论(0)

一、问题描述:

左图:iphone5的屏幕大小,页面高度正常显示

右图:iphoneX的屏幕大小,由于设置了固定高度,导致在大屏幕下出现多余空白

 

二、解决方案:底部(按键)保持固定高度,顶部(输入结果部分)根据屏幕高度计算剩余高度


  
  1. Page({
  2. data:{
  3. .........
  4. windowHeight: 0,
  5. screenHeight: 0,
  6. layoutBottomHeight: 0
  7. },
  8. onLoad: function(options){
  9. // (1)先取出页面高度 windowHeight
  10. var _this = this;
  11. wx.getSystemInfo({
  12. success: function(res) {
  13. _this.setData({
  14. windowHeight:res.windowHeight
  15. })
  16. }
  17. });
  18. // (2)根据文档,先创建一个SelectorQuery对象实例
  19. let query = wx.createSelectorQuery().in( this);
  20. // 查找底部按键的节点信息
  21. // 选择器的语法与jQuery语法相同
  22. query.select( '.layout-bottom').boundingClientRect();
  23. // 执行上面所指定的请求,结果会按照顺序存放于一个数组中,在callback的第一个参数中返回
  24. query.exec( (res) => {
  25. // (3)取出底部按键的高度
  26. let layoutBottomHeight = res[ 0].height;
  27. // (4)然后屏幕高度-底部高度,剩余的即为顶部要设置的高度
  28. let screenHeight = this.data.windowHeight - layoutBottomHeight;
  29. // (5)算出来之后存到data对象里面
  30. this.setData({
  31. screenHeight: screenHeight
  32. });
  33. });
  34. },

WXML 里面需要使用双大括号来将data部分的screenHeight的值绑定到height属性上面:(单位是px)


  
  1. <view class="layout-top">
  2. <!-- 通过css设置固定高度,无法填充大屏幕的多余空白
  3. <view class="screen">
  4. {{screenData}}
  5. </view> -->
  6. <!-- 改成设置为计算后的高度 -->
  7. <view class="screen" style="height: {{screenHeight}}px">
  8. {{screenData}}
  9. </view>
  10. </view>

三、执行结果:

左图:iphone5的屏幕大小,页面高度正常显示

右图:iphoneX的屏幕大小,由于设置了计算后的高度,不会出现多余空白

 


转载:https://blog.csdn.net/EvelynHouseba/article/details/106733655
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场