小程序实现自定义顶部导航栏搜索框

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

1.0自定义组件

在实现前先将其组件化,方便复用,

(底部有demo)

Component(Object object) | 微信开放文档

1.1配置JS文件

// pages/components/template/template.js
Component({

    //开启插槽
    options: {
        multipleSlots: true //启用slot插槽
    },

    //接收父组件参数
    properties: {
        //参数名
        templateValue: {
            type: String,//数据类型
            value: "我是默认值噢~"//默认值
        },
    },

    //方法
    methods: {
        templateFunction() {
            console.log("我是组件的方法噢~");
        }
    },

    //组件的生命周期
    lifetimes: {
        //在组件实例刚刚被创建时执行	
        created() {
        },
        // 在组件实例进入页面节点树时执行
        attached: function () {
        },
        //	在组件在视图层布局完成后执行	
        ready() {
        },
        //在组件实例被移动到节点树另一个位置时执行	
        moved() {
        },

        // 在组件实例被从页面节点树移除时执行
        detached: function () {
        },
        //每当组件方法抛出错误时执行	
        error() {
        },
    },
})

 1.2配置JSON文件

"component": true, // 自定义组件声明

"usingComponents": {} // 可选项,用于引用别的组件

"navigationStyle": "custom"// 导航栏样式  

default 默认样式  

custom 自定义导航栏,只保留右上角胶囊按钮

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

1.3引用组件

接下来在想使用的页面JSON文件的usingComponents里面引入后直接只用

{
  "usingComponents": {
    "search":"/pages/components/TopSearchBar/TopSearchBar"
  },
  "navigationStyle": "custom",
  "navigationBarTitleText": "搜索结果"
}

微信小程序顶部搜索框,小程序,小程序,前端,javascript

2.0搜索框实现

微信小程序顶部搜索框,小程序,小程序,前端,javascript我们要实现四周边距相等,每台手机的状态栏高度不一致,不能直接使用px来固定位置,胶囊按钮和状态栏之间有点边距,微信有获取状态栏信息的api以及胶囊按钮信息,胶囊按钮的top  -  statusBarHeight(状态栏高度)就能得到边距了,胶囊按钮右边的边距 screenWidth(屏幕的宽度) - right(胶囊按钮位置)

2.1获取状态栏和胶囊按钮信息api

wx.getSystemInfo(Object object) | 微信开放文档

i获取状态栏信息

Object wx.getMenuButtonBoundingClientRect() | 微信开放文档

获取菜单按钮(右上角胶囊按钮)的布局位置信息

微信小程序顶部搜索框,小程序,小程序,前端,javascript

2.2 代码

 使用了vant框架 ,不知道这么安装的可以看下链接

小程序如何使用vant框架?_荡悠悠y的博客-CSDN博客_支付宝小程序使用vant

JS:

// pages/components/template/template.js
Component({

  //开启插槽
  options: {
    multipleSlots: true //启用slot插槽
  },

  //接收父组件参数
  properties: {
    //接受格式
    te: {
      type: String,//数据类型
      value: ""//默认值
    },
  },
  data: {
    statusBarHeight: '',//状态栏高度
    navHeight: '',//胶囊按钮高度
    searchMarginTop: '', //  胶囊按钮顶部边距
    searchMarinRight: '',// 胶囊按钮右边边距
  },

  //方法
  methods: {

    //获取状态栏的参数
    getCalculate() {
      const {
        top,
        width,
        height,
        right,
        left
      } = wx.getMenuButtonBoundingClientRect()
      //获取系统信息
      wx.getSystemInfo({
        success: (res) => {
          const {
            statusBarHeight,//状态栏高度
            screenWidth,//屏幕宽度
          } = res
          // console.log({ top, width, height, right, left });
          // console.log({ statusBarHeight });
          this.setData({
            statusBarHeight,//状态栏高度
            searchMarginTop: top - statusBarHeight,//胶囊按钮top - 状态栏高度 得出顶部的边距
            searchMarinRight: screenWidth - right,//屏幕宽度 - 胶囊按钮right  得出右边的边距
            capsuleWidth:width,//胶囊按钮宽度
            navHeight:height
          })
        },
      })
    },
  },

  //组件的生命周期
  lifetimes: {
    //在组件实例刚刚被创建时执行	
    created() {
    },
    // 在组件实例进入页面节点树时执行
    attached: function () {
      this.getCalculate()
    },
    //	在组件在视图层布局完成后执行	
    ready() {
    },
    //在组件实例被移动到节点树另一个位置时执行	
    moved() {
    },

    // 在组件实例被从页面节点树移除时执行
    detached: function () {
    },
    //每当组件方法抛出错误时执行	
    error() {
    },
  },
})

html:

<!--pages/components/template/template.wxml-->
<view class="box" style="padding-top: {{statusBarHeight}}px;">
  <view style="padding: {{searchMarginTop + 'px' + ' ' + (searchMarinRight + capsuleWidth + 5) + 'px' + ' ' + searchMarginTop + 'px' + ' '  +  searchMarinRight  + 'px'}};background-color: rebeccapurple;">
    <van-search value="{{ value }}" custom-class="search-custom" shape="round" background="rgb(0,0,0,0)" placeholder="请输入搜索关键词" />
  </view>
</view>

css:

/* pages/components/TopSearchBar/TopSearchBar.wxss */
.box{
}
/* 取消vant搜索框自带的边距 */
.search-custom{
  padding: 0 !important;
}

2.3 demo

https://gitee.com/zhang_yuqi/top-search文章来源地址https://www.toymoban.com/news/detail-520347.html

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

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

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

相关文章

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

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

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

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

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

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

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

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

    2024年02月01日
    浏览(41)
  • 微信小程序 顶部搜索框滑动伸缩效果的实现

    提示:实现搜索框跟随用户滑动页面,实现伸缩效果 微信小程序 顶部搜索框滑动伸缩动画的实现 提示:主要用到了微信小程序的view-scroll bindscroll 1:确定一个控制搜索框伸缩的范围。 2:通过bindscroll事件获取e.detail.scrollTop;即用户滑动的位置 3:计算当前位置占伸缩范围的

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

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

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

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

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

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

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

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

    2024年02月11日
    浏览(45)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包