news 2026/3/3 7:06:34

微信小程序适应机型布局

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
微信小程序适应机型布局

小程序布局三部分,头+内容+底部,自定义头(navigation-bar)+内容+自定义底部(tab-bar),使中间的内容适应不同的机型

第一种:通过js控制高度

app.js

getShowScreenHeight() { try { // 获取系统信息(同步方式,兼容性更好) const systemInfo = wx.getWindowInfo(); // 获取胶囊按钮位置(同步) const capsuleInfo = wx.getMenuButtonBoundingClientRect(); // 计算导航栏高度(状态栏高度 + 胶囊按钮高度 + 上下间距) const statusBarHeight = systemInfo.statusBarHeight; const navHeight = statusBarHeight + capsuleInfo.height + (capsuleInfo.top - statusBarHeight) * 2; // 兼容处理:获取安全区域底部(基础库<2.11.0时使用bottom属性) const safeAreaBottom = systemInfo.safeArea?.bottom || systemInfo.bottom; const tabHeight = systemInfo.screenHeight - safeAreaBottom; // 计算内容区域高度(屏幕高度 - 导航栏高度 - TabBar高度) const screenHeight = systemInfo.screenHeight - navHeight - tabHeight; // 保存到全局数据 this.globalData.navHeight = navHeight; this.globalData.tabHeight = tabHeight; this.globalData.screenHeight = screenHeight; } catch (e) { // 备用方案(当API不可用时) this.globalData.screenHeight = 600; // 默认高度 } }

wxml

<navigation-bar navTitle="{{navTitle}}" iconType="{{iconType}}"></navigation-bar> <scroll-view scroll-y style="height: {{height}}px;"> </scroll-view> <tab-bar selected="{{selected}}"></tab-bar>

js

data: { navTitle:"正式考场", selected:2,//在tabbar列表中的序号 iconType:"home", height:getApp().globalData.screenHeight-10, },

上述的getApp().globalData.screenHeight-10;减10是测试过程中进行的优化

第二种:通过css控制

wxml

<view class="page-content"> <navigation-bar navTitle="{{navTitle}}" iconType="{{iconType}}"></navigation-bar> <view class="content"> </view> <tab-bar selected="{{selected}}"></tab-bar> </view>

wxss

.page-content{ display: flex; flex-direction: column; height: 100vh; /*页面占满全屏*/ } .content{ flex: 1; /*余下内容填充*/ width: 100%; display: flex; flex-direction: column; background-color: #ffffff; } .bottom{/*如有底部内容,希望始终保持在tab-bar上方*/ position:flex; padding-bottom: calc(env(safe-area-inset-bottom) + 110rpx); }

关于flex:1 的基本含义

当弹性容器(display: flex 或 display: inline-flex)的子元素设置 flex: 1 时,该元素的行为如下:

  1. 初始尺寸为 0‌:由于 flex-basis 被设置为 0%,元素的初始宽度或高度(取决于主轴方向)被视为 0,不占用任何空间。‌34
  2. 按比例分配剩余空间‌:如果父容器有剩余空间,flex-grow: 1 会使得该元素与其他同样设置 flex-grow 为 1 的元素等比例地放大以填充这些空间。‌15
  3. 空间不足时等比例收缩‌:当父容器空间不足以容纳所有子元素时,flex-shrink: 1 会使得该元素与其他可收缩元素等比例缩小。‌
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/3 2:40:52

Git reset回退提交:修复错误的PyTorch代码变更

Git reset回退提交&#xff1a;修复错误的PyTorch代码变更 在深度学习项目的开发过程中&#xff0c;一个看似微小的代码改动&#xff0c;可能引发连锁反应——模型训练突然中断、前向传播报错、GPU内存异常……而当你回头查看时&#xff0c;却发现问题就出在几分钟前那次“自信…

作者头像 李华
网站建设 2026/3/3 5:39:22

《创业之路》-766-透过现象看本质:职场中的“阳”与“阴”现象

在现代职场中&#xff0c;“阳”与“阴”并非简单的善恶对立&#xff0c;而是两种并行不悖、互为补充的运行逻辑。它们共同构成了职场生态的完整图景&#xff1a;一个看得见&#xff0c;一个看不见&#xff1b;一个明面运转&#xff0c;一个暗中流动。理解“阳”与“阴”的现象…

作者头像 李华
网站建设 2026/2/28 8:19:35

如何在PyTorch中使用混合精度训练节省显存

如何在PyTorch中使用混合精度训练节省显存 深度学习模型的“胃口”越来越大&#xff0c;尤其是从BERT到GPT再到ViT这一系列Transformer架构的爆发式发展&#xff0c;对GPU显存的需求几乎成了训练任务的第一道门槛。你有没有遇到过这样的场景&#xff1a;刚跑起一个ResNet或者Vi…

作者头像 李华
网站建设 2026/3/2 10:59:00

网络安全专业,在校大学生如何赚外快,实现生活费自由?

如今&#xff0c;计算机行业内卷严重&#xff0c;我们不找点赚外快的路子这么行呢&#xff1f; 今天就来说说网络安全专业平时都怎么赚外快。 一、安全众测 国内有很多成熟的src众测平台&#xff0c;如漏洞盒子、火线众测、补天、CNVD、漏洞银行等。一些大厂也有自己的src&a…

作者头像 李华
网站建设 2026/3/2 0:20:45

Markdown表格美化技巧:用于展示PyTorch实验结果

Markdown表格美化技巧&#xff1a;用于展示PyTorch实验结果 在深度学习项目中&#xff0c;模型训练只是第一步&#xff0c;如何清晰、专业地呈现实验结果&#xff0c;往往决定了研究成果能否被快速理解与采纳。尤其是在团队协作或论文撰写过程中&#xff0c;一份结构清晰、排版…

作者头像 李华
网站建设 2026/2/25 16:06:40

PyTorch模型保存与加载最佳实践:兼容不同CUDA版本

PyTorch模型保存与加载最佳实践&#xff1a;兼容不同CUDA版本 在深度学习项目中&#xff0c;一个看似简单的操作——“把训练好的模型拿过来跑一下”——却常常让工程师陷入困境。你有没有遇到过这样的情况&#xff1f;同事发来一个 .pt 文件&#xff0c;在他的机器上运行得好好…

作者头像 李华