news 2026/4/23 15:33:03

微信小程序适应机型布局

作者头像

张小明

前端开发工程师

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/4/23 12:31:24

显卡品牌市场格局:一线品牌全面解析

在计算机硬件行业的激烈竞争中&#xff0c;显卡市场的品牌格局一直备受瞩目。根据行业普遍认知&#xff0c;华硕、技嘉和微星凭借其长期积累的技术实力、全球市场覆盖能力和产品稳定性&#xff0c;被视为传统的一线显卡品牌。同时&#xff0c;七彩虹在中国市场的显著表现&#…

作者头像 李华
网站建设 2026/4/23 13:52:49

【Vue3 + Element Plus】Form表单按下Enter键导致页面刷新问题

问题描述 Form表单按下Enter键导致页面刷新&#xff0c;是浏览器的默认行为所导致的&#xff0c;要避免这种情况&#xff0c;可以通过阻止默认的提交行为来禁止页面刷新。 解决方法 使用submit.prevent修饰符来阻止表单的默认提交行为 <el-form ref"ruleFormRef" …

作者头像 李华
网站建设 2026/4/23 12:29:37

Chrome如何禁用浏览器内置AI功能完全指南

如今大多数桌面网络浏览器都内置了大量AI功能&#xff0c;但好消息是&#xff0c;在大多数情况下&#xff0c;没有人强制你使用这些功能&#xff0c;你至少可以将它们从视图中隐藏。从Chrome中移除最令人讨厌的AI工具相当简单&#xff0c;但需要几个步骤。移除Gemini按钮默认情…

作者头像 李华
网站建设 2026/4/23 13:55:10

ue 下载 error code FAB-FAB001

ue 用 Epic Games Launcher 下载报错&#xff1a;error code FAB-FAB001解决方法&#xff1a;在web 浏览器打开&#xff0c;然后点击下载&#xff0c;

作者头像 李华
网站建设 2026/4/21 22:13:09

阶跃星辰深度研究32B媲美Gemini深度研究能力,成本不到1/10

阶跃星辰Agent团队推出Step-DeepResearch&#xff0c;用32B参数的中等规模模型实现媲美OpenAI o3-mini和Gemini 2.0 Flash的深度研究能力&#xff0c;将行业部署成本降低一个数量级。大语言模型正在经历从对话者向自主智能体进化的关键转折&#xff0c;而深度研究&#xff08;D…

作者头像 李华
网站建设 2026/4/23 12:29:31

英伟达史上最大收购!200亿美元收购Groq解读

科技界被一则“英伟达以200亿美元并购AI芯片初创公司Groq”的新闻所震动。官方表述并非并购&#xff0c;而是非独家技术授权协议&#xff08;Non-Exclusive Licensing Agreement&#xff09;&#xff0c;并伴随对Groq核心高管和技术团队的吸纳&#xff08;Acqui-hire&#xff0…

作者头像 李华