当前位置: 首页 > news >正文

微信小程序适应机型布局

小程序布局三部分,头+内容+底部,自定义头(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 会使得该元素与其他可收缩元素等比例缩小。‌
http://www.gsyq.cn/news/175882.html

相关文章:

  • 高新技术企业申报服务哪家强?新测评精选服务公司推荐 - 工业品牌热点
  • 2025年江苏正规调查公司推荐榜:配偶行为调查/婚前背景调查/离婚综合调查/专业调查取证服务商精选 - 品牌推荐官
  • VS插件(颜色预览)
  • java计算机毕业设计校园外卖系统 高校即时配餐在线平台 校园点餐极速达系统
  • 采用SpringBoot+Vue等技术架构的云ERP系统源码,SaaS ERP管理系统
  • java计算机毕业设计校园物品交易系统 高校二手闲置物品置换平台 校园跳蚤市场数字化交易系统
  • 2026零基础如何参与护网行动?(非常详细)
  • 基于龙格-库塔方法与中心差分方法求解随机非线性薛定谔方程的数值实现
  • 2026年海外数字化营销公司TOP5推荐:涵盖 Facebook、Google、TikTok、 ins、LinkedIn 等海外营销主流平台 - 品牌2025
  • 2025年差压变送器厂家推荐:压力变送器厂家有哪些? - mypinpai
  • python招标投标文件在线制作系统vue
  • 别再犹豫了!网安 327 万缺口 + 越老越吃香,现在加入稳赚不亏!
  • 2026年苏州海外社媒运营推广服务商精选(涵盖 Facebook、LinkedIn 领英、TikTok 、Google营销推广获客解决方案) - 品牌2025
  • 年末大盘点!包装设计公司排名新鲜出炉 - 黑马榜单
  • 2025年压力变送器知名品牌排行榜,高性价比制造商研发能力测评推荐 - mypinpai
  • 如何在Windows和Linux上使用PyTorch-CUDA-v2.7镜像进行GPU训练
  • 2025 年国产斜轨数控车床哪家口碑好/销量高/稳定性好?广东博克斯为何脱颖而出 - 品牌推荐大师
  • AOSP 打包之如何新增预装应用
  • 哪个厂家可定制钻机配件?信誉好有实力的宣化钻机配件推荐厂家腾达钻孔 - 品牌推荐大师1
  • 2026 Deepseek知识库部署服务商深度盘点(实战落地版):企业级本地化部署一步收官实操方案全覆盖 - 品牌2026
  • 井下钻机推荐品牌哪家强?性能好质量优的宣化井下钻机标杆企业认准腾达 - 品牌推荐大师1
  • 永磁同步电机PMSM全速域无速度传感器控制探秘
  • PyTorch分布式训练原理浅析:适用于大规模token生成场景
  • 正能量的dp——树形
  • 2025制造场景工业洗地机品牌选择核心维度深度评测 - 资讯焦点
  • Photoshop 图形与图像处理技术——第3章:图像的选择与填充
  • Transformer多头注意力实现细节
  • 2026企业智能BI私有化部署厂商标杆名录(年度焕新):覆盖智能BI数据可视化、本地部署全场景服务,重塑企业决策新基准 - 品牌2026
  • 2025-2026广东佛山铝型材源头厂家权威评测与选型指南:为何佛山市南海元巢五金制品有限公司领跑行业? - 2025年品牌推荐榜
  • 解决wslregisterdistribution failed问题:顺利运行PyTorch on WSL2