news 2026/9/3 7:23:02

微信小程序适应机型布局

作者头像

张小明

前端开发工程师

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/9/3 4:58:39

TechCrunch Disrupt创业竞赛中脱颖而出的7家太空与国防科技公司

每年&#xff0c;TechCrunch的创业竞赛都吸引数千家申请者。我们将这些申请筛选至前200强参赛者&#xff0c;其中前20名在大舞台上竞争&#xff0c;争夺创业竞赛冠军奖杯和10万美元奖金。但其余180家创业公司在各自类别中同样表现出色&#xff0c;并参与各自的创业竞赛。以下是…

作者头像 李华
网站建设 2026/9/2 23:30:54

AI驱动企业级SSD变革:闪迪公司的创新与实践

作者&#xff1a;王聪彬 2025年第三季度&#xff0c;企业级SSD市场交出了一份亮眼的成绩单。TrendForce数据显示&#xff0c;前五大品牌综合收入达到65.4亿美元&#xff0c;环比增长28%&#xff0c;刷新年度纪录。这一增长现象&#xff0c;与生成式AI的快速发展密不可分。随着大…

作者头像 李华
网站建设 2026/9/2 23:34:59

【QOwnNotes】编译笔记

&#x1f4cb; 环境准备 系统环境 操作系统: Windows MSYS2 UCRT64Shell: bash目标: 从源码编译 QOwnNotes (Qt6 版本) 必要软件安装 # 1. 基础开发工具 pacman -S --needed mingw-w64-ucrt-x86_64-toolchain \mingw-w64-ucrt-x86_64-cmake \mingw-w64-ucrt-x86_64-ninja#…

作者头像 李华
网站建设 2026/9/2 22:04:55

【万金油-立项管理】信息系统项目工程师案例分析

在信息系统项目管理中&#xff0c;立项阶段是项目成功的基石&#xff0c;也是考试与实际工作中最易出现疏漏的关键环节。许多项目在启动之初就因可行性分析不全面、评审流程缺失或决策依据单一而埋下风险&#xff0c;最终导致资源浪费、进度延误甚至项目失败。为此&#xff0c;…

作者头像 李华
网站建设 2026/9/2 23:34:57

Git stash暂存修改:临时切换PyTorch开发任务

Git stash 暂存修改&#xff1a;临时切换 PyTorch 开发任务 在现代 AI 工程实践中&#xff0c;开发者常常面临一个现实困境&#xff1a;你正在全神贯注地调试一个复杂的 U-Net 分割模型&#xff0c;刚写完一半的注意力模块&#xff0c;突然收到告警——线上推理服务因显存溢出&…

作者头像 李华
网站建设 2026/9/2 22:42:17

python在线教学评比平台vue评教

目录已开发项目效果实现截图关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;已开发项目效果实现截图 同行可拿货,招校园代理 ,本人源头供货商 python在线教学评比平台vue评教 …

作者头像 李华