微信小程序云开发之自定义顶部导航栏搜索框(非组件)

这篇具有很好参考价值的文章主要介绍了微信小程序云开发之自定义顶部导航栏搜索框(非组件)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

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

注意:本篇文章分享的是如何做一个好看的自定义导航栏,不是做组件哦!

正文

一、隐藏原生navigationBar

navigation-bar是小程序的顶部导航组件,当页面配置navigationStyle设置为custom的时候可以使用此组件替代原生导航栏。

1.全局自定义顶部导航栏

在app.json的“window”里添加"navigationStyle": "custom"

"window": {
	"navigationStyle": "custom"
}

2.单独页面自定义顶部导航栏

在该页面的json文件里添加"navigationStyle": "custom"

{
  "usingComponents":{},
  "navigationStyle": "custom"
}

二、获取系统及按钮信息

1.js页面

获取系统信息并计算按钮位置信息

const app=getApp()
Page({
  data: {
    page_show:false,
    navHeight: '',
    menuButtonInfo: {},
    searchMarginTop: 0, // 搜索框上边距
    searchWidth: 0, // 搜索框宽度
    searchHeight: 0 ,// 搜索框高度
  },


  onLoad: function (options) {
    var systeminfo=wx.getSystemInfoSync()
    //console.log(systeminfo.windowHeight)
    this.setData({
      movehight:systeminfo.windowHeight,
      movehight2:systeminfo.windowHeight-100
    })

    this.setData({
      menuButtonInfo: wx.getMenuButtonBoundingClientRect()
    })
    console.log(this.data.menuButtonInfo)
    const { top, width, height, right } = this.data.menuButtonInfo
    wx.getSystemInfo({
      success: (res) => {
        const { statusBarHeight } = res
        const margin = top - statusBarHeight
        this.setData({
          navHeight: (height + statusBarHeight + (margin * 2)),
          searchMarginTop: statusBarHeight + margin, // 状态栏 + 胶囊按钮边距
          searchHeight: height,  // 与胶囊按钮同高
          searchWidth: right - width -20// 胶囊按钮右边坐标 - 胶囊按钮宽度 = 按钮左边可使用宽度
        })
      }
    })

  }, 
})

2.wxml页面

通过获取的数据编写搜索框

<!--搜索-->
<view  style="height:{{navHeight}}px;background:#ffffff;position: sticky;top: 0px;z-index:99999; " >
  <view class="custom-bar__wrapper" style="margin-top:{{searchMarginTop}}px; height: {{searchHeight}}px;width: {{searchWidth}}px;position:absolute;" >
    <view class="search-group" style="position:absolute;">
      <image    style="left: 7rpx;" src="/images/icon/sousuo.png" mode="aspectFit" />
      <input  class="search-group__input" type="text" placeholder="搜搜校园日常动态吧!" placeholder-style="color:#161823;" confirm-type="search" value="{{search}}" maxlength="25" bindconfirm="search"></input>
    </view>
  </view>
</view>

3.css页面

美化搜索框

.custom-bar__wrapper {
  left: 24rpx;
  padding: 0 10rpx;
  display: flex;
  justify-content: center;
  align-items: center;
}
.search-group {
  width: 100%;
  height: 100%;
  display: flex;
  justify-content: flex-start;
  align-items: center;
  background:#F0F8FF ;
  border-radius: 100rpx;
  padding: 0 15rpx;
}
.search-group > input {
  font-size: 25rpx;
  left: 14px;
}
.search-group > image {
  height: 36rpx;
  width: 36rpx;
  margin-right: 20rpx
}

4.app.js页面

这是最容易忘的页面,一定要记得编写

App({
  onLaunch: function () {
    wx.getSystemInfo({
      success: e => {
        this.globalData.StatusBar = e.statusBarHeight;
        let custom = wx.getMenuButtonBoundingClientRect();
        this.globalData.Custom = custom;  
        this.globalData.CustomBar = custom.bottom + custom.top - e.statusBarHeight;
      }
    })
  },
})

三、查看效果

微信小程序云开发之自定义顶部导航栏搜索框(非组件)

微信小程序云开发之自定义顶部导航栏搜索框(非组件)

 总结思路

  • 隐藏原生顶部导航栏
  • 获取胶囊按钮、状态栏相关数据以供后续计算
  • 根据不同机型计算出该机型的导航栏高度,进行适配
  • 编写新的导航栏页面
  • 应用获取的按钮参数
  • css美化界面

飞鱼程序猿

如果这篇文章对您有帮助,麻烦给个免费的赞哦

或者关注微信公众号【飞鱼程序猿】获取更多信息。文章来源地址https://www.toymoban.com/news/detail-495684.html

到了这里,关于微信小程序云开发之自定义顶部导航栏搜索框(非组件)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • uni-app微信小程序,APP都适用自定义顶部导航

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

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

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

    2024年02月02日
    浏览(58)
  • 微信小程序之自定义组件开发

    从小程序基础库版本 1.6.3 开始,小程序支持简洁的组件化编程。所有自定义组件相关特性都需要基础库版本 1.6.3 或更高。开发者可以将页面内的功能模块抽象成自定义组件,以便在不同的页面中重复使用;也可以将复杂的页面拆分成多个低耦合的模块,有助于代码维护。自

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

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

    2024年02月01日
    浏览(41)
  • 小程序实现自定义顶部导航栏搜索框

    在实现前先将其组件化,方便复用, (底部有demo) Component(Object object) | 微信开放文档 \\\"component\\\": true, // 自定义组件声明 \\\"usingComponents\\\": {} // 可选项,用于引用别的组件 \\\"navigationStyle\\\": \\\"custom\\\"// 导航栏样式   default  默认样式   custom  自定义导航栏,只保留右上角胶囊按钮 接下

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

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

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

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

    2024年02月11日
    浏览(73)
  • 【微信小程序】头部导航栏背景铺满顶部

    背景:使用uniapp开发微信小程序 需求:需要微信小程序顶部导航栏使用页面背景铺满顶部 我们可以利用 navigationStyle 属性,来处理导航栏样式,支持 default/custom,其中 custom 可自定义导航栏,只保留右上角胶囊状的按钮。 在pages.json 文件里,将globalStyle中新增或修改 navigatio

    2024年02月16日
    浏览(50)
  • 微信小程序——顶部搜索框

    一点小小的声明:学习笔记,若有不妥之处还望指正,Thanks♪(・ω・)ノ 参考视频微信小程序实例——从入门到精通 效果展示: 步骤:  首先需要建立一个存放图片的文件夹images,该文件夹放置在最外层。将此图放入文件夹。后续需要使用的图片也都可以放入此文件夹中。

    2024年02月11日
    浏览(45)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包