前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微信小程序(一)自定义导航栏和fixed失效及各机型兼容问题

微信小程序(一)自定义导航栏和fixed失效及各机型兼容问题

作者头像
andyhu
发布2022-12-14 15:24:38
2K0
发布2022-12-14 15:24:38
举报
文章被收录于专栏:andyhu-大前端andyhu-大前端

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情

前言

相信掘友们应该或多或少都开发过微信小程序,微信小程序的写法虽然和vue有很多类似的地方,但又有很多vue属性,在小程序中没有类似的实现,比如计算属性,watch 监听等;

因为小程序是附着在微信 app 上,所以经常要处理一些安卓端和苹果端的兼容,比如有些苹果机屏幕下方有安全区域,一些安卓机上点输入框输入完毕后点完成按钮键盘不能自动收回,导致输入框不能失去焦点的问题,等等...

为了以后自己和掘友们不再浪费踩坑的时间,我打算写一些文章记录一下我在开发微信小程序中遇到的一些坑和一些小功能的实现过程。

目录:

cover-view 组件使用 fixed 样式失效问题

背景

因项目需求,要开发一个自定义 tabBar,在微信官方文档找到一个demo,官方demo看到 tabBar 组件是用基础组件 cover-viewcover-image 构建的架子,用 positionfixed 固定定位在手机屏幕最下方,用真机调试是发现 tabBar 组件并不一定会固定在屏幕的最下方,而且如果页面滑动,用 fixed 固定的区域会上下移动

官方demo 示例代码

原因:

在微信社区找相关问题发现是 cover-view 的原因,然后这个问题直到现在好像还没修复

解决方案

改用 view image 基础组件构建架子就可以了

自定义导航栏、状态栏在不同机型的适配

背景原因

因为不同机型的导航栏和胶囊距上下间距不同,导致自定义的导航栏的高度不能固定。需求是导航栏的文字要和胶囊对齐。

解绝方案

废话不多说了,直接上代码,后面有解释说明:

代码语言:javascript
复制
  /* 获取胶囊的位置和手机状态栏的信息 */
  async getMenuInfo() {
    let { top, height } = wx.getMenuButtonBoundingClientRect();
    let statusBarHeight = "";
    wx.getSystemInfo({
      success(res) {
        statusBarHeight = res.statusBarHeight
      }
    })
    this.setData({
      topParams: {
        top,
        height,
        statusBarHeight
      },
    })
  },

通过 wx.getMenuButtonBoundingClientRect() 获取菜单按钮(右上角胶囊按钮)的布局位置信息。坐标信息以屏幕左上角为原点。

获取的参数解释:

  • top 是上边界坐标,也就是胶囊距离屏幕顶部的距离,单位:px
  • height 是胶囊高度,单位:px
  • 然后通过 wx.getSystemInfo() 获取状态栏的高度statusBarHeight,单位px;
  • 综上所述可知 胶囊距离状态栏的距离 = 胶囊距离屏幕顶部的距离(top) - 状态栏的高度(statusBarHeight) 通过这些参数你就可以写出自己想要的各种自定义导航栏的样式了。

参考文档:

wx.getMenuButtonBoundingClientRect()

wx.getSystemInfo()

写在最后

我是 AndyHu,目前暂时是一枚前端搬砖工程师。

文中如有错误,欢迎在评论区指正,如果这篇文章帮到了你,欢迎点赞和关注呀😊

未经许可禁止转载💌

speak less,do more.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-06-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 目录:
    • cover-view 组件使用 fixed 样式失效问题
      • 背景
        • 解决方案
        • 自定义导航栏、状态栏在不同机型的适配
          • 背景原因
            • 解绝方案
            • 写在最后
            相关产品与服务
            云开发 CloudBase
            云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档