微信小程序自定义导航栏机型适配--底部Tabbar--view高度--底部按钮适配

这篇具有很好参考价值的文章主要介绍了微信小程序自定义导航栏机型适配--底部Tabbar--view高度--底部按钮适配。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

自定义微信小程序头部导航栏

小程序tabbar高度,原生微信小程序,微信小程序,javascript,前端
自定义微信小程序头部导航栏,有几种方式

方式一
{
  "navigationStyle": "custom" // 将navigationStyle从默认default改为custom
}

定义此方法后,头部的导航栏会去掉,导航栏下的元素会直接向上移动到原导航栏的位置,可以再app.json配置成全局沉浸式导航栏,以及在单页面配置沉浸式导航栏。

方式二

使用组件
这里使用vant组件作为演示
小程序tabbar高度,原生微信小程序,微信小程序,javascript,前端
小程序tabbar高度,原生微信小程序,微信小程序,javascript,前端
组件配置的NavBar,样式在官方文档上有说明,根据文档说明修改样式即可。
官方文档:https://vant-contrib.gitee.io/vant-weapp/#/nav-bar

机型适配

由于自定义navBar了,导航栏下面的元素会直接向上偏移,需要离顶部的距离才可以恢复到正常的位置,此时设置的距离根据不同的机型,位置也会不同,所以这里就需要做到机型适配。
方式一:
根据微信小程序胶囊到顶部以及胶囊的高度,算出navBar下的内容到顶部的距离

// js
let pillHeight = wx.getMenuButtonBoundingClientRect().top  // 胶囊到顶部的高度
let pill = wx.getMenuButtonBoundingClientRect().height  // 胶囊的高度
this.setData({topHeight : pillHeight +pill })

// 页面   动态设置margin-top高度
 <view class="content_bg" style="margin-top: {{capsuleHeight}}px;">内容</view>

方式二:
根据小程序头部的高度加导航高度的距离动态计算内容到顶部的距离

// js
 wx.getSystemInfo({
        success: res => {
          let navWindowHeight = res.statusBarHeight + 46; // 小程序头部的高度 + 导航高度
          this.setData({capsuleHeight : navWindowHeight })  // 赋值高度
        }, fail(err) {
      console.log(err);
    }
// 页面
<view class="content_bg" style="margin-top: {{capsuleHeight }}px;">内容</view>

由于机型的不同,动态计算的高度也不同,不同机型对胶囊到顶部的高度都有差异,而且获取到的胶囊到顶部或者小程序头部的高度的值单位是 px ,所以直接将获取到的值赋值给距离顶部的距离即可,否则在动态计算高度的时候,px不会动态适配屏幕的大小变化,目前来说用方式二适配率高一些,在开发的时候需要根据实际情况,做不同的调整。


动态获取view的宽高

根据viewclassid名动态获取view的宽高信息

<view class="box"></view>

// 获取宽高信息
getNavInfo(){
   let that = this
   const query = wx.createSelectorQuery();
   query.select('.box').boundingClientRect(function (res) {
     console.log(res);
   }).exec()
},

小程序tabbar高度,原生微信小程序,微信小程序,javascript,前端


动态获取底部Tabbar的高度

screenHeight :屏幕高度,单位px
safeArea.bottom:安全区域右下角纵坐标

官方文档已有说明:https://developers.weixin.qq.com/miniprogram/dev/api/base/system/wx.getSystemInfo.html

    wx.getSystemInfo({
      success: (res) => {
        this.setData({
          tabBarHeight : res.screenHeight - res.safeArea.bottom + 50
        })
      }
    })

将计算出来的tabBatHeight直接写在页面的行内样式中即可


底部按钮的适配

由于用户的机型不同,微信小程序底部的高度计算规则也不同,现在的机型分为两种,一种是安卓机,一种是ios机型,安卓机的适配在开发者工具上的预览机型相当于iphone5,而ios机型在开发者工具上的预览相当与iphone12或以上,这其实只是一个预估值,可以将它统称为iphoneX,导致机型不适配的原因是因为苹果 iPhoneX 、iPhone XR等设备上,物理Home键被取消,改为底部小黑条替代home键功能。
小程序tabbar高度,原生微信小程序,微信小程序,javascript,前端
在安卓机型上是直接忽略掉该小黑条的,而iPhoneX及以上设备则会计算该小黑条的高度,这就导致一套css方案在不同的机型上会有适配问题,解决适配问题的方案可以使用苹果官方提供的css样式:

padding-bottom: constant(safe-area-inset-bottom); /*兼容 IOS<11.2*/
padding-bottom: env(safe-area-inset-bottom); /*兼容 IOS>11.2*/

该样式可以兼容iPhone设备的底部高度,但是安卓机型并不兼容,所以需要在给底部的高度再加一个padding-bottom:10rpx;让底部的按钮撑起一个安全距离。下面是完整的代码示例:

<view class="baseBottom">
   <view class="bottomCase">提交</view>
   <view class="isIPhoneXRegexBottom"></view>
</view>
.outStore{
  position: fixed;  /* 固定在底部 */
  bottom: 0;
  left: 0;
  width: 100vw;
  background-color: white;
  .bottomCase{
    width: calc(100% - 52rpx);
    height: 76rpx;
    margin: 0 auto;
    margin-top: 12rpx;
    text-align: center;
    line-height:76rpx
    margin-bottom: 10rpx; /* 10px适配安卓机型 */
  }
}
/* 安全距离-全局的style文件,在页面直接调用即可 */
.isIPhoneXRegexBottom {
  padding-bottom: constant(safe-area-inset-bottom) !important;   /*兼容 IOS<11.2*/
  padding-bottom: env(safe-area-inset-bottom) !important;  /*兼容 IOS>11.2*/
  background-color: transparent;  /* 透明色 */
}

原理就是在底部按钮下方设置一个view块,该块会自动适配iPhone机型,将按钮上方顶住,以保持安全距离。由于苹果官方提供的方法安卓机型不适配,所以需要只用marginpadding来将底部按钮撑起一个安全高度。
在不同机型下的效果:
iPhone机型
小程序tabbar高度,原生微信小程序,微信小程序,javascript,前端
安卓机型:
小程序tabbar高度,原生微信小程序,微信小程序,javascript,前端文章来源地址https://www.toymoban.com/news/detail-787983.html

到了这里,关于微信小程序自定义导航栏机型适配--底部Tabbar--view高度--底部按钮适配的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序自定义 底部 tabbar (中间凸起)

    在与 pages 文件夹同级的地方新建 custom-tab-bar 文件夹,并新建 index.wxml 、index.wxss 、index.js 、index.json 四个文件夹 注意路径!!! 复制后会报错,把图片和页面路径改掉就好了!!! 提示: 不要无脑复制,复制到自己的项目中后记得更改图片、页面路径!!! 如需自定义 头

    2024年02月20日
    浏览(36)
  • 微信小程序自定义底部菜单设计,固定在底部,并非使用tabBar设计

    1.微信小程序自定义底部菜单设计,并且固定在底部,并非tabBar设计 场景:比如加载详情页时:底部需要加入购物车、收藏、返回主页等设计 效果图: 点击事件发生 xx.wxml 样式设计xx.wxss js设计xx.js

    2024年02月16日
    浏览(36)
  • 微信小程序自定义底部导航栏

    微信小程序自定义底部导航栏,原生实现,不包含其他任何第三方组件,比较干净,开箱即用 效果预览: 可自定义底部导航栏列表样式 可自定义每个菜单的默认、激活后的图标和文字样式 可自定义是否添加中间的大图标菜单,当然也可自定义大图标的默认与激活样式 可自

    2024年02月07日
    浏览(38)
  • 微信小程序 根据登录后的角色权限 渲染底部tabbar--自定义渲染tabbar

    微信小程序模拟登录后 根据不同角色权限 渲染底部tabbar (底部tabbar 用的是vant ui 提供的组件)  1.权限一: 拥有的底部栏如图 1.2 权限二: 拥有的底部栏 如图 1.3 定义全局属性用于存储底部的tabbar渲染 一:  首先在全局文件App.json 配置tabbar (最少2个 最多5个),并且配置页

    2024年02月02日
    浏览(37)
  • 优雅实现微信小程序动态tabBar,根据不同用户角色显示不同底部导航——更新版(支持自由组合总数超过5个tabBar菜单)

    背景 在开发小程序过程中,有个需求是,小程序底部的tabBar需要根据不同用户角色显示不同底部导航。此时就需要用到自定义底部导航 custom-tab-bar。 上次发文是组合显示4个底部tabBar导航,很多小伙伴评论说组合超过5个怎么办。他们的需求总数超过5个了。 现在我在这里更新

    2024年02月03日
    浏览(34)
  • 微信小程序、uniapp自定义底部导航栏(附源码)

    需求分析 目前开发一套“同城跑腿平台”小程序,面向用户和骑手,需要两个不同的底部导航,uniapp原生导航不满足要求。所以需要自定义导航栏。 随着自定义导航卡完成,切换选项卡页面总是闪烁,在网上也没有搜到完整的解决方法,总不能完美解决。现在我有一个方法

    2024年02月04日
    浏览(47)
  • 微信小程序基于vant的自定义底部导航栏

    基于vant-weapp的底部导航栏,首先根据vant官网安装vant https://vant-ui.github.io/vant-weapp/#/quickstart 由于vant的Tabbar 标签栏自带翻页效果,而且不够美观,且小程序最多只支持10个页面栈,点击多了会导致报错 报错如下  将wx.navigateTo改为wx.redirectTo在反复多点很多次之后依然会报错,所

    2024年02月13日
    浏览(34)
  • 微信小程序自定义tabbar导航栏,中间凸出样式

    这种样式的底部导航栏 使用微信小程序的自定义tabBar:微信小程序官方说明 uni.app=在  page.json   中的  tabBar  项指定  custom   字段为true: 在根目录创建custom-tab-bar目录, 注意一定要完全匹配,不要输错 :  index.js代码: 注意这里的中间需要凸出项设置一个class index.json代码

    2024年02月09日
    浏览(32)
  • uniApp开发小程序自定义tabBar底部导航栏+tabBar中间凸起自定义样式实现

            先看效果是否可以满足你们,如果可以满足你只要一步一步照着做绝对没有错。         本人技术不佳,研究了一整天,全网的大佬们写的博客看的晕头转向,避免大伙再走弯路,跟着我以下步骤一点一点来绝对可以实现。         最终效果图: (如果你

    2024年02月04日
    浏览(40)
  • 微信小程序第一节 —— 自定义顶部、底部导航栏以及获取胶囊体位置信息。

    dai ga hou啊!我是 😘😘😘 是江迪呀 。我们在进行微信小程序开发时,常常需要自定义一些东西,比如 自定义顶部导航 、 自定义底部导航 等等。那么知道这些自定义内容的具体位置、以及如何适配不同的机型就变得尤为重要。下面让我以在iPhone机型,来给大家介绍下 微信

    2024年02月02日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包