一:需求

  1. 把微信小程序标题栏处变成搜索栏。
  2. 自定义返回上级页面。

二:需求分析

  1. 首先要把小程序标题栏设置为可自定义。
  2. 然后计算原标题栏的高度组成结构。
  3. 根据计算高度设置搜索框和返回按钮的布局。
  4. 最后进行代码功能实现。

三:功能实现

1:设置标题栏可自定义

usingComponents是使用的相关组件

{"usingComponents": {"van-uploader": "@vant/weapp/uploader/index","van-button": "@vant/weapp/button/index","van-search": "@vant/weapp/search/index"},"navigationStyle": "custom"
}

2:计算标题栏高度

标题栏高度组成部分:最上边的状态栏高度statusBarHeight和中间按钮高度getMenuButtonBoundingClientRect和中间按钮的上下边距margin

  1. 获取状态栏高度wx.getSystemInfo.statusBarHeight
  2. 获取中间按钮高度wx.getMenuButtonBoundingClientRect()(这里一共四个值top, width, height, right具体对应可查微信开发文档)
  3. 获取中间按钮的上下边距margin = top(中间按钮上边界坐标) - statusBarHeight

 onLoad: function (options) {this.setData({menuButtonInfo: wx.getMenuButtonBoundingClientRect()})//   console.log(this.data.menuButtonInfo)const { top, width, height, right } = this.data.menuButtonInfowx.getSystemInfo({success: (res) => {const { statusBarHeight } = resconst margin = top - statusBarHeightthis.setData({navHeight: (height + statusBarHeight + (margin * 2)),searchMarginTop: statusBarHeight + margin, // 状态栏 + 胶囊按钮边距searchHeight: height,  // 与胶囊按钮同高searchWidth: right - width // 胶囊按钮右边坐标 - 胶囊按钮宽度 = 按钮左边可使用宽度})},})// 生命周期函数--监听页面加载},

四:代码实现

1:js

Page({data:{navHeight: '',menuButtonInfo: {},searchMarginTop: 0, // 搜索框上边距searchWidth: 0, // 搜索框宽度searchHeight: 0, // 搜索框高度},goBack(){wx.navigateBack({delta: 1, // 回退前 delta(默认为1) 页面})},onLoad: function (options) {this.setData({menuButtonInfo: wx.getMenuButtonBoundingClientRect()})//   console.log(this.data.menuButtonInfo)const { top, width, height, right } = this.data.menuButtonInfowx.getSystemInfo({success: (res) => {const { statusBarHeight } = resconst margin = top - statusBarHeightthis.setData({navHeight: (height + statusBarHeight + (margin * 2)),searchMarginTop: statusBarHeight + margin, // 状态栏 + 胶囊按钮边距searchHeight: height,  // 与胶囊按钮同高searchWidth: right - width // 胶囊按钮右边坐标 - 胶囊按钮宽度 = 按钮左边可使用宽度})},})// 生命周期函数--监听页面加载},
})

2:wxss

/* 自定义导航栏 */
view {box-sizing: border-box;overflow: hidden;
}
.custom-bar {/* background-color: #aaa; */position: fixed;left: 0;top: 0;width: 100%;background-color: #fafafa;z-index: 9;
}
.custom-bar__wrapper {padding: 0 10rpx;display: flex;justify-content: space-between;align-items: center;
}
.search-group {width: 88%;height: 100%;border: 1px solid #666;background-color: #fafafa;border-radius: 60rpx;
}
.van-search {font-size: 25rpx;margin: 0 -15rpx;height: 100%;
}
.goback {justify-content: flex-start;width: 40rpx;height: 40rpx;margin-left: 20rpx;
}
.search-btn {width: 100rpx;font-size: 35rpx;
}

3:wxml

<!-- 自定义导航栏 -->
<view class="custom-bar" style="height:{{navHeight}}px"><view class="custom-bar__wrapper" style="margin-top:{{searchMarginTop}}px; height: {{searchHeight}}px;width: {{searchWidth}}px" ><image src="../../../images/assetsImg/img5.png" class="goback" bindtap="goBack"></image><view class="search-group"><van-search use-action-slot="true" background="#fafafa" shape="round" field-class="van-search" focus  value="{{ inputValue }}" placeholder="请输入关键字" bind:change="changeValue"> <view class="search-btn" slot="action" bind:tap="onClick">搜索</view></van-search></view></view></view>

五:效果展示

微信小程序自定义搜索标题栏相关推荐

  1. 微信小程序自定义搜索框(searchbar)

    微信小程序自定义搜索框(searchbar) 样式截图展示: 功能描述:微信小程序页面需要加入搜索框时,可以直接引用到页面中使用,当用户未输入任何关键字时如第一张图所示,当用户输入要搜索的关键字时如第 ...

  2. 微信小程序自定义搜索导航栏

    自定义微信小程序导航栏 因为项目需要,要实现如京东小程序类似的搜索导航栏-下图所示搜索框在导航栏中.参考了官方API最终实现了该有的效果,顺便吧此次实现的思路和代码记录下来. 一.拆解分析 按照正常的 ...

  3. 微信小程序 自定义搜索框并关键字高亮

    效果展示: 实现原理: 一共分为两部分,搜索框.展示面板: 搜索框和展示面板根据业务需求,使用了 小程序ui组 tdesign-miniprogram  :当然你也可以用原生的输入框做搜索框.差别不大 ...

  4. 微信小程序自定义类似微信联系人组件

    微信小程序自定义联系人弹窗 在小程序项目中需要有一个选择人员项,想着看着好看一些,所以做成类似微信联系人的界面,由于本人是后端人员,效果不是特别好看,ui使用的是weui 效果图如下: 使用的是小程序 ...

  5. 微信小程序自定义组件的基本使用

    微信小程序自定义组件的基本使用 组件与模块类似,实现了功能的复用,提高开发速率,减少代码量 在开发过程中 , 总会遇到一些功能板块是相同或很类似的 .如两个不同页面都有搜索框 , 或者 导航栏等 . ...

  6. 微信小程序页面搜索框查询(无后台接口情况下)

    微信小程序页面搜索框查询(无后台接口情况下) 效果图: wxml <view class="container"><view class="goodsl ...

  7. 微信小程序的搜索和重置功能

    微信小程序的搜索和重置功能 wxml <template><div><div class="input-wrap"><el-inputse ...

  8. 微信小程序自定义授权弹框

    微信小程序自定义授权弹框 最近微信获取用户信息的接口有调整,就是这货:wx.getUserInfo(OBJECT),文档描述如下: 此接口有调整,使用该接口将不再出现授权弹窗,请使用 <butt ...

  9. 微信小程序自定义组件方案

    前言:小程序已于11月初开放了小程序组件功能,但事件方面还不是很完善,有的组件暂时可能还是要用其他方式来实现,这里简单记录下开发小程序自定义组件的要点. 在小程序官方开发组件开发功能之前,自定义组件的 ...

最新文章

  1. Android自定义Dialog及与Activity的交互
  2. bios免电池补丁_补丁和权限 处理器漏洞多大这样看
  3. 多款优秀的 JS MVC 框架对比
  4. html复选框值改变后事件,javascript – 从onclick/onchange事件获取HTML值的复选框
  5. 异常堆栈信息丢失?到底是怎么回事?
  6. Java日志框架之JUL(java util logging)详解
  7. mysql active推送消息_java实现基于activeMQ的消息推送
  8. 关于小范围整数N拆解成2的幂相加的个数
  9. 待更新内容mongodb
  10. waitpid使用实例
  11. SQLserver数据库被置疑了(“可疑”)状态下怎么处理?
  12. 手写数学公式自动识别工具、表格自动识别
  13. 抖音小程序二维码生成
  14. mysql静默安装_mysql5.7静默安装
  15. 安装adb,使用adb报错及方案
  16. Android ListView滑动删除及响应事件详解
  17. 游里工夫独造微一一小平邦彦传
  18. phpExcel导出excel打不开问题
  19. 思想的四个组成部分及分类
  20. 数论总结(Finally)

热门文章

  1. python中step什么意思_如何在Python中求解step函数?
  2. mysql配置数据库邮件_SQL Server配置数据库邮件
  3. 计算机科学与技术的难度大小,西南大学计算机科学与技术专业考研难度分析-专业排名-难度大小...
  4. 这些年出差总结得经验
  5. powerpoint预览_如何禁用或删除PowerPoint动画
  6. 安装swiss-port与BLAST query error: CAlnReader::GetSeqEntry(): Seq_entry is not available until after Re
  7. PDF怎么编辑,PDF怎么裁剪空白区域
  8. 双盲插全功能USB-C显示器+HDMI接口(俗称双盲插USB-C显示器)方案讲述
  9. 由Java正则表达式的灾难性回溯引发的高CPU异常:java.util.regex.Pattern$Loop.match
  10. 翻翻git之---一个简单的标签控件 LabelView (随手发了两张小宝宝的玩耍照)