微信小程序第一节 —— 自定义顶部、底部导航栏以及获取胶囊体位置信息。

这篇具有很好参考价值的文章主要介绍了微信小程序第一节 —— 自定义顶部、底部导航栏以及获取胶囊体位置信息。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

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

二、开启自定义

如果需要自定义顶部和底部导航。那么如何在自定义后能够适配不同的机型而不会出现样式问题呢?我们可以通过wx.getSystemInfo({})方法来获取页面的信息来保证样式的正确性。此方法常用于app.js文件中的onLanch()方法中,保证这些信息优先被加载,并把获取到的页面信息放到全局变量中,方便其他页面的获取使用。

在此之前需要开启自定义顶部和底部导航栏。如下所示:

{
  "pages": [
    "pages/index/index",
    "pages/index2/index2" 
  ],
  //自定义顶部导航 "navigationStyle": "custom",
  "window": {
    "navigationStyle": "custom",
    "navigationBarTextStyle": "white",
    "backgroundTextStyle": "light"
  },
  //自定义底部导航 "navigationStyle": "custom",这里注意在设置自定义底部导航栏时,list中至少包含两个页面
  "tabBar": {
    "custom": true,
    "list": [
      {
        "pagePath": "pages/index/index",
        "text": "首页"
      },
      {
        "pagePath": "pages/index2/index2",
        "text": "首页2"
      }
    ]
  },
  "style": "v2",
  "sitemapLocation": "sitemap.json"
}

2.1 整个页面

1.位置

小程序全局自定义顶部,微信小程序,微信小程序,小程序,javascript

2.如何获取

页面代码:

<view style="height: {{screenHeight}}px;background-color: aliceblue;">
</view>

页面js代码:

const app = getApp()
Page({
  data: {
    screenHeight: app.globalData.screenHeight,
  }
})

app.js文件代码:


    onLaunch: function() {
        wx.getSystemInfo({
            success: e => {
            	//获取整个页面的高度
                this.globalData.screenHeight = e.screenHeight;
              }
             },
        )}

2.1 状态栏

1.位置

状态栏就是手机最顶部显示时间信号电量等信息的区域。一般状态栏的信息我们不单独获取设置,因为顶部导航栏包含了状态栏
小程序全局自定义顶部,微信小程序,微信小程序,小程序,javascript

2.如何获取

页面代码:

<!--index.wxml-->
<view style="height: {{screenHeight}}px;background-color: aliceblue;">
  <!--状态栏高度-->
  <view style="height: {{statusBarHeight}}px;background-color: red;"></view>
</view>

页面js代码:

// index.js
const app = getApp()
Page({
  data: {
    screenHeight: app.globalData.screenHeight,
    statusBarHeight: app.globalData.statusBarHeight
  }
})

app.js文件代码:

    onLaunch: function() {
	     wx.getSystemInfo({
           success: e => {
              this.globalData.screenHeight = e.screenHeight;
              //获取状态栏的高度
              this.globalData.StatusBar = e.statusBarHeight;
           }
	     },
	)}

2.2 顶部导航栏

1.位置

顶部导航栏的高度是包含胶囊体的。
小程序全局自定义顶部,微信小程序,微信小程序,小程序,javascript

2.如何获取

首先获取胶囊体的信息,如果不存在胶囊体,顶部导航栏高度 = 状态栏高度 + 50;如果存在顶部导航栏高度 = 胶囊体离页面顶部的距离 + 胶囊体离页面底部的距离 - 状态栏高度
页面代码:

<view style="height: {{screenHeight}}px;background-color: aliceblue;">
  <!--顶部导航高度-->
  <view style="height: {{customBar}}px;background-color: blue;"></view>
</view>

页面js代码:

const app = getApp()
Page({
  data: {
    screenHeight: app.globalData.screenHeight,
    customBar: app.globalData.CustomBar
  }
})

app.js代码:

// app.js
App({
  globalData:{
  },
  onLaunch: function() {
    wx.getSystemInfo({
    success: e => {
        let capsule = wx.getMenuButtonBoundingClientRect();
        if (capsule) {
          this.globalData.Custom = capsule;
          this.globalData.CustomBar = capsule.bottom + capsule.top - e.statusBarHeight;
        } else {
          this.globalData.CustomBar = e.statusBarHeight + 50;
        }
      }
     },
 )}
})

2.4 内容区域

1.位置

如果你做的小程序没有底部导航栏的话,那么内容区域 = 页面总高度 - 顶部导航栏高度
小程序全局自定义顶部,微信小程序,微信小程序,小程序,javascript
但是如果你需要底部导航的话那么内容区域 = 页面总高度 - 顶部导航栏高度 - 底部导航栏高度
小程序全局自定义顶部,微信小程序,微信小程序,小程序,javascript

2.如何获取

页面代码:

  <view style="height:{{screenHeight}}px;width: 100%;background-color: rgb(255, 255, 255);">
    <!--顶部导航栏-->
    <view class="" style="height: {{CustomBar}}px;background-color: blue;"></view>
    <!--内容区域-->
    <view class="" style="height: {{screenHeight - CustomBar}}px;background-color: black;"></view>
    <!--内容区域 包含底部导航-->
    <view class="" style="height: {{screenHeight - CustomBar - tabBarHeight}}px;background-color: black;"></view>
  </view>

页面js代码:

const app = getApp()
Page({
  data: {
    screenHeight: app.globalData.screenHeight,
    CustomBar: app.globalData.CustomBar,
    tabBarHeight: app.globalData.tabBarHeight,
  }
})

app.js代码:

// app.js
App({
  globalData:{
    
  },
  onLaunch: function() {
    // 获取系统状态栏信息
    wx.getSystemInfo({
    success: e => {
        this.globalData.screenHeight = e.screenHeight;
        this.globalData.tabBarHeight = e.screenHeight - e.safeArea.bottom + 50
        let capsule = wx.getMenuButtonBoundingClientRect();
        if (capsule) {
          this.globalData.CustomBar = capsule.bottom + capsule.top - e.statusBarHeight;
        } else {
          this.globalData.CustomBar = e.statusBarHeight + 50;
        }
      }
     },
 )}
})

2.3 底部导航栏

1.位置

小程序全局自定义顶部,微信小程序,微信小程序,小程序,javascript

2.如何获取

页面代码:

<view style="height: {{screenHeight}}px;background-color: aliceblue;">
  <!--顶部导航高度-->
  <view style="height: {{customBar}}px;background-color: blue;"></view>
  <!--内容高度 包含底部导航-->
  <view style="height: {{screenHeight - customBar - tabBar}}px;background-color: black;"></view>
  <!--底部导航高度-->
  <view style="height: {{tabBarHeight}}px;background-color: red;"></view>
</view>

页面js代码:

const app = getApp()
Page({
  data: {
    screenHeight: app.globalData.screenHeight,
    statusBarHeight: app.globalData.statusBarHeight,
    customBar: app.globalData.CustomBar,
    tabBar: app.globalData.tabBarHeight,
    tabBarHeight: app.globalData.tabBarHeight
  }
})

app.js代码:

    onLaunch: function() {
        wx.getSystemInfo({
            success: e => {
            	this.globalData.screenHeight = e.screenHeight;
            	this.globalData.tabBarHeight = e.screenHeight-e.safeArea.bottom + 50
				let capsule = wx.getMenuButtonBoundingClientRect();
		        if (capsule) {
		          this.globalData.Custom = capsule;
		          this.globalData.CustomBar = capsule.bottom + capsule.top - e.statusBarHeight;
		        } else {
		          this.globalData.CustomBar = e.statusBarHeight + 50;
		        }
              }
             },
        )}

这个底部导航栏之所以+50,我是从小程序框架中获取的,可以直接拿来用。

三、胶囊体

3.1 什么是胶囊体?

小程序全局自定义顶部,微信小程序,微信小程序,小程序,javascript

我们再做自定义顶部导航时,在一些场景下需要在导航中设置返回按钮以及其他信息:
小程序全局自定义顶部,微信小程序,微信小程序,小程序,javascript
这些按钮和信息需要和胶囊体对齐才完美,所以我们需要获取到胶囊体的位置信息。文章来源地址https://www.toymoban.com/news/detail-786669.html

3.2 如何获取?

// app.js
App({
  globalData:{
  },
  onLaunch: function() {
    // 获取系统状态栏信息
    wx.getSystemInfo({
    success: e => {
      	//胶囊体距离顶部距离
        this.globalData.capsuleTop =  wx.getMenuButtonBoundingClientRect().top;
        //胶囊体的高度
        this.globalData.capsuleHeight =  wx.getMenuButtonBoundingClientRect().height;
        //胶囊体的宽度
        this.globalData.capsuleWidth =  wx.getMenuButtonBoundingClientRect().width;
      }
     },
     wx.onKeyboardHeightChange((res) => {
      console.log('键盘高度111111:', res.height)
      wx.setStorageSync('keyBordHeight', res.height)
    })
 )}
})

到了这里,关于微信小程序第一节 —— 自定义顶部、底部导航栏以及获取胶囊体位置信息。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 微信小程序、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)
  • 微信小程序云开发之自定义顶部导航栏搜索框(非组件)

    提到微信小程序,就不得不提到它那磨人的顶部导航栏,真的有被丑到。身为强迫症患者,笔者实在是难以忍受,好在官方提供了解决方案,但是对于初学者还是有一丢丢的难度,为了初学者不在重蹈笔者的老路,这篇文章就给大家分享一下如何做一个好看的自定义顶部导航

    2024年02月10日
    浏览(32)
  • uni-app微信小程序,APP都适用自定义顶部导航

    *使用自定义的导航样式,首先需要把原生的顶部的导航方式给隐藏掉(\\\"navigationStyle\\\": \\\"custom\\\") *手机顶部手机状态栏的高度 *微信小程序中胶囊的位置信息存储(使用store存储) *由于微信小程序中带有导航胶囊,所以需要根据胶囊去获取一定的参数信息 在微信小程序中,我们只需要获

    2024年02月06日
    浏览(39)
  • 微信小程序自定义导航栏机型适配--底部Tabbar--view高度--底部按钮适配

    自定义微信小程序头部导航栏 自定义微信小程序头部导航栏,有几种方式 方式一 定义此方法后,头部的导航栏会去掉,导航栏下的元素会直接向上移动到原导航栏的位置,可以再app.json配置成全局沉浸式导航栏,以及在单页面配置沉浸式导航栏。 方式二 使用组件 这里使用

    2024年02月02日
    浏览(41)
  • 【微信小程序-原生开发】实用教程07 - Grid 宫格导航,详情页,侧边导航(含自定义页面顶部导航文字)

    【微信小程序-原生开发】实用教程 轮播图、分类页签 tab 、成员列表(含Tdesign升级,切换调试基础库,设置全局样式,配置组件按需注入,添加图片素材,wx:for,生命周期 onLoad)

    2024年02月09日
    浏览(74)
  • 微信小程序自定义顶部导航栏的胶囊和微信自带的胶囊一样的透明背景色

    想要实现微信自带的右上角胶囊背景透明很简单,只需要在pages.js里面设置下面配置就可以了: 但是设置完这个后,胶囊的背景色是那种黑色半透明的效果:(微信开发者工具和真机上显示的效果不一致,要以真机为准) 手机端的效果:所以还是要以手机端为准   左侧的返

    2024年02月01日
    浏览(30)
  • 微信原生小程序自定义顶部导航

    都2023了,自定义顶部导航应该不是什么新鲜事了,这里只是简单记录下 微信自己也提供了自定义顶部导航 navigation-bar ,大概看了下,可配置的也不少,所以看需求了,如果简单可以采用微信提供的,老规矩,先看效果 状态栏高度(getSystemInfoSync),就是手机顶部网络那块的

    2024年02月15日
    浏览(30)
  • 微信小程序自动获取顶部导航栏高度

    1、本人是通过uniapp开发的微信小程序,原生开发基本相同,首先在data里声明变量 2、其次在onLoad生命周期中获取当前手机的导航栏宽高数据 3、navHeight获取的是当前手机型号的导航栏总高度;searchMarginTop获取的是手机顶部到小程序胶囊的高度,也就是下图黄色线框的高度;

    2024年02月11日
    浏览(59)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包