【微信小程序】使用uni-app——开发首页搜索框导航栏(可同时兼容APP、H5、小程序)

简介: 本节介绍怎样使用uni-app——开发首页搜索框导航栏。

目录


前言


App、H5效果


小程序效果


一、兼容APP、H5的方式


二、兼容小程序


三、实现同时兼容


前言


首页都会提供一个搜索框给到客户,让客户自己去搜索自己想要的内容,这里就需要导航栏,来实现搜索页面的跳转,效果如下

微信图片_20220927203842.gif

App、H5效果



小程序效果


微信图片_20220927203856.gif

一、兼容APP、H5的方式

微信图片_20220927203911.png


在常见titleNView配置代码示例中可以看到基本样式的代码如下

{
  "pages": [{
    "path": "pages/index/index", //首页
    "style": {
    "app-plus": {
      "titleNView": false //禁用原生导航栏
    }
    }
  }, {
    "path": "pages/log/log", //日志页面
    "style": {
    "app-plus": {
      "bounce": "none", //关闭窗口回弹效果
      "titleNView": {
      "buttons": [ //原生标题栏按钮配置,
        {
        "text": "分享" //原生标题栏增加分享按钮,点击事件可通过页面的 onNavigationBarButtonTap 函数进行监听
        }
      ],
      "backButton": { //自定义 backButton
        "background": "#00FF00"
      }
      }
    }
    }
  }, {
    "path": "pages/detail/detail", //详情页面
    "style": {
    "navigationBarTitleText": "详情",
    "app-plus": {
      "titleNView": {
      "type": "transparent"//透明渐变导航栏 App-nvue 2.4.4+ 支持
      }
    }
    }
  }, {
    "path": "pages/search/search", //搜索页面
    "style": {
    "app-plus": {
      "titleNView": {
      "type": "transparent",//透明渐变导航栏 App-nvue 2.4.4+ 支持
      "searchInput": {
        "backgroundColor": "#fff",
        "borderRadius": "6px", //输入框圆角
        "placeholder": "请输入搜索内容",
        "disabled": true //disable时点击输入框不置焦,可以跳到新页面搜索
      }
      }
    }
    }
  }
  ...
  ]
}



我们并不需要所有的内容,本次我将介绍的是,"buttons","searchInput"的组合使用,这里的buttons其实是我的导航栏左右的两个图片,可以配合图标实现想要的功能,searchInput就是中间的搜索框

微信图片_20220927203949.png



需要在pages.json中配置,可在button中添加,不过需要注意的是,不管添加文字,矢量图片,默认都是右浮动,可以把其中一个改成左浮动,这里我使用的是阿里巴巴矢量图库的图片,下载文件,引入即可有需要的小伙伴我可以免费提供一个文件夹。


微信图片_20220927204001.png


配置代码如下

"path": "pages/index/index",
    "style": {
    "navigationBarTitleText": "小余努力搬砖",
    "app-plus": {
      "titleNView": {
      "searchInput": {
        "backgroundColor": "#f4f4f4",
        "borderRadius": "6px", 
        "placeholder": "请输入搜索内容",
        "disabled": true 
      },
        "buttons": [
      {
        "fontSrc": "/static/font/iconfont.ttf",//矢量图片引入路径
        "float": "left",
        "text": "\ue67a", //引入图片一定要带u   
        "fontSize": "24px",//大小
        "color": "#666666"
      },
      { 
        "float": "right",
        "text":"\ue661",
        "fontSrc": "/static/font/iconfont.ttf",
        "fontSize": "24px",
        "color": "#666666"
      }
          ]
}}}



为了达到跳转的效果,我要在页面同级创建文件夹,为搜索页面,我们要主页使用页面生命周期onNavigationBarSearchInputClicked(此次文件夹需要在pages.json中注册)


微信图片_20220927204030.png


来跳转到我们先要的页面

onNavigationBarSearchInputClicked(){
    uni.navigateTo({
    url:'../search/search'
    })
  }


二、兼容小程序


需要与pages同级创建一个components文件夹,在此文件夹下,不需要在用import引入,就可以注册,创建一个如下的插槽子文件夹,带同名目录。在components中的文件都不需要在pages.json注册。(这里实现的主要方式,是通过自己写的样式,来展现出一个搜索框)

<template>
  <view class='slot'>
  <slot name='left'></slot>
  <slot name='center'></slot>
  <slot name='right'></slot>
  </view>
</template>
<script>
  export default {
  name:"search-slot",
  data() {
    return {
    };
  }
  }
</script>
<style scoped>
.slot{
  width: 750rpx;
  display: flex;
}
</style>



在首页中引入插槽(不会或者忘记的,可以去学习博主的一学就会的插槽教学),其中的图片都是引入的阿里巴巴矢量图片,图片是我提前准备好的,有想要的小伙伴,私聊我。如下就是我提前准备好的,只要用class就能引入

微信图片_20220927204137.png


<search-slot class='flex'>
  <view class="left" slot='left'>
  <text class="iconfont icon-xiaoxi"></text>
  </view>
  <view class="center" slot='center'>
  <text class="iconfont icon-sousuo" @click="search"></text>
  </view>
  <view class="right" slot='right'>
  <text class="iconfont icon-richscan_icon"></text>
  </view>
</search-slot>


这里也同样需要点击搜索导航跳转到搜索页面(此次文件夹需要在pages.json中注册),是通过@click绑定事件完成的,路径还是同样的方法(创建一个专属的搜索页面)

methods: {
search(){
  uni.navigateTo({
  url:'../search/search'
})
}}


css样式代码

<style>
.flex {
  display: flex;
  height: 88rpx;
  line-height: 88rpx;
  align-items: center;
  }
  .left {
  width: 44rpx;
  flex: 0 0 44px;
  align-items: center;
  text-align: center;
  }
  .center {
  flex: 1;
  height: 60rpx;
  line-height: 60rpx;
  background-color: #eee;
  text-align: center;
  color: #ccc;
  }
  .right {
  width: 44rpx;
  flex: 0 0 44px;
  align-items: center;
  text-align: center;
  }
</style>


三、实现同时兼容


通过以上代码,已经实现了在app、h5、小程序,实现搜索框导航栏,但是如果想要同时满足app、h5、小程序,就需要对此作出一个区域性的判断。


如果没有按兼容性显示,同时配置如上的两个搜索框导航栏,在app、h5就会出现两个搜索框,因为它们兼容小程序的配置


微信图片_20220927204226.png


但是小程序只有一个,因为小程序不兼容在 pages.json中配置的搜索框

微信图片_20220927204241.png



这时候不用紧张,我们还记得媒体查询吗,这里的方式,和媒体查询几乎是一个意思,在特定的环境使用特定的样式,我们这里通过官网文档可以找到条件编译


微信图片_20220927204253.png


使用很简单,只要将代码包裹进条件中即可,我们这里只要将小程序的包裹进,只在微信小程序中编译的条件中即可

#ifdef  MP
需条件编译的代码
#endif


代码如下


把配置在首页的小程序的导航栏包裹住(小程序不兼容在 pages.json中的配置,这里就不用在意是否需要条件编译)这样,小程序的搜索框导航不会在app、h5出现了。从而实现了同时兼容的效果。

<!--#ifdef MP -->
  <search-slot class='flex'>
    <view class="left" slot='left'>
    <text class="iconfont icon-xiaoxi"></text>
    </view>
    <view class="center" slot='center'>
    <text class="iconfont icon-sousuo" @click="search"></text>
    </view>
    <view class="right" slot='right'>
    <text class="iconfont icon-richscan_icon"></text>
    </view>
  </search-slot>
  <!--#endif-->


相关文章
|
9月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1720 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
9月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1105 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
9月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1192 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
9月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
428 0
|
10月前
|
缓存 小程序 前端开发
商城/点餐/家政类小程序源码合集_微信抖音小程序源码开发从入门到精通实战
本文系统讲解如何利用现有源码快速开发商城、点餐、家政类微信/抖音小程序,涵盖环境搭建、核心功能实现、多平台部署与优化,提供完整技术方案。实战导向,助力开发者高效入门与落地。
|
自然语言处理 搜索推荐 小程序
微信公众号接口:解锁公众号开发的无限可能
微信公众号接口是微信官方提供的API,支持开发者通过编程与公众号交互,实现自动回复、消息管理、用户管理和数据分析等功能。本文深入探讨接口的定义、类型、优势及应用场景,如智能客服、内容分发、电商闭环等,并介绍开发流程和工具,帮助运营者提升用户体验和效率。未来,随着微信生态的发展,公众号接口将带来更多机遇,如小程序融合、AI应用等。
|
10月前
|
消息中间件 人工智能 Java
抖音微信爆款小游戏大全:免费休闲/竞技/益智/PHP+Java全筏开源开发
本文基于2025年最新行业数据,深入解析抖音/微信爆款小游戏的开发逻辑,重点讲解PHP+Java双引擎架构实战,涵盖技术选型、架构设计、性能优化与开源生态,提供完整开源工具链,助力开发者从理论到落地打造高留存、高并发的小游戏产品。
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
4589 7
|
小程序 前端开发 Android开发
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
2629 29
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
|
11月前
|
小程序 JavaScript API
uni-halo + 微信小程序开发实录:我的第一个作品诞生记
这篇文章介绍了使用uni-halo框架进行微信小程序开发的过程,包括选择该框架的原因、开发目标以及项目配置和部署的步骤。
593 0
uni-halo + 微信小程序开发实录:我的第一个作品诞生记

热门文章

最新文章