当前位置: 首页 > article >正文

uniapp沉浸式导航栏+自定义导航栏组件

在 UniApp 中实现沉浸式导航栏并结合自定义导航栏组件

一、沉浸式导航栏设置

  1. pages.json中配置页面样式

    • 在需要设置沉浸式导航栏的页面的style选项中进行如下配置:
    {
      "pages": [
        {
          "path": "pages/pageName/pageName",
          "style": {
            "navigationStyle": "custom", // 自定义导航栏样式
            "app-plus": {
              "titleNView": false, // 关闭默认导航栏
              "statusbar": {
                "background": "#yourColor" // 设置状态栏颜色,与导航栏颜色一致可实现沉浸式效果
              }
            }
          }
        }
      ]
    }
    
    • yourColor替换为你想要的颜色值,通常与导航栏颜色一致,以实现沉浸式效果。
  2. 在页面中设置导航栏高度

    • 在页面的onLoad生命周期函数中获取设备信息,计算导航栏高度并设置给页面的样式。
    export default {
      data() {
        return {
          navHeight: 0
        };
      },
      onLoad() {
        const systemInfo = uni.getSystemInfoSync();
        this.navHeight = systemInfo.statusBarHeight + 44; // 44 为通常情况下导航栏的高度,可根据实际调整
      }
    };
    
    • 在页面的style中使用计算出的导航栏高度:
    .page-content {
       padding-top: {{navHeight}}px;
     }

二、自定义导航栏组件

  1. 创建自定义导航栏组件
    • components目录下创建一个名为customNavbar的文件夹,并在其中创建customNavbar.vue文件。
<template>
     <view class="custom-navbar">
       <view class="left-icon" @click="goBack">
         <!-- 左箭头图标 -->
         <icon name="arrow-left" />
       </view>
       <text class="title">{{title}}</text>
       <view class="right-icon" v-if="showRightIcon">
         <!-- 右侧图标 -->
         <icon name="more" />
       </view>
     </view>
   </template>

   <script>
   export default {
     props: {
       title: {
         type: String,
         default: ''
       },
       showRightIcon: {
         type: Boolean,
         default: false
       }
     },
     methods: {
       goBack() {
         uni.navigateBack();
       }
     }
   };
   </script>

   <style scoped>
  .custom-navbar {
     display: flex;
     justify-content: space-between;
     align-items: center;
     height: 44px;
     background-color: #yourColor; // 与沉浸式导航栏颜色一致
     padding: 0 16px;
   }
  .left-icon {
     width: 44px;
     height: 44px;
     display: flex;
     justify-content: center;
     align-items: center;
   }
  .title {
     flex: 1;
     text-align: center;
     font-size: 18px;
     color: #fff;
   }
  .right-icon {
     width: 44px;
     height: 44px;
     display: flex;
     justify-content: center;
     align-items: center;
   }
   </style>
  1. 在页面中使用自定义导航栏组件
    • 在需要使用自定义导航栏的页面中引入并注册组件:
    <template>
      <view>
        <customNavbar :title="pageTitle" :showRightIcon="true" />
        <!-- 页面内容 -->
      </view>
    </template>
    
    <script>
    import customNavbar from '@/components/customNavbar/customNavbar.vue';
    
    export default {
      components: {
        customNavbar
      },
      data() {
        return {
          pageTitle: '页面标题'
        };
      }
    };
    </script>
    

通过以上步骤,就可以在 UniApp 中实现沉浸式导航栏和自定义导航栏组件。可以根据实际需求调整导航栏的样式和功能。


http://www.kler.cn/news/318656.html

相关文章:

  • 深入理解端口、端口号及FTP的基本工作原理
  • CREO教程——2 绘制标准图纸
  • python/requests库的使用/爬虫基础工具/
  • 最新版C/C++通过CLion2024进行Linux远程开发保姆级教学
  • 【Docker】基于docker compose部署artifactory-cpp-ce服务
  • 【车联网安全】车端知识调研
  • 产品经理面试整理-软件产品经理的常用工具
  • SpringBoot框架在文档管理中的创新应用
  • 系统架构笔记-3-信息系统基础知识
  • 探讨MySQL中的GROUP BY语句大小写敏感性
  • SegFormer网络结构的学习和重构
  • CSP-S 2024 提高级 第一轮(初赛) 阅读程序(2)
  • 【OSS安全最佳实践】降低因操作失误等原因导致数据丢失的风险
  • 【C++笔试强训】如何成为算法糕手Day2
  • 【c++】知识点
  • 分布式光伏监控系统 在鄂尔多斯市鄂托克旗某煤矿项目中的应用
  • GPU高性能编程CUDA入门
  • 拦截器filter
  • 【ShuQiHere】 探索自然语言处理的世界:从基础到应用
  • flutter中常见的跨组件通讯方式
  • Redis 分布式缓存服务(集群)
  • str函数的模拟(包括strn函数的模拟)
  • 江科大51单片机
  • 2024年前端框架选择指南:React、Vue、Angular与新兴框架对比
  • 详解机器学习经典模型(原理及应用)——支持向量机
  • 每天一个数据分析题(四百七十二)- 业务角度
  • 使用nc命令检测UDP端口
  • Android13中Android.mk和Android.bp预编译多种架构文件
  • spark初步探索
  • LD3320语音识别模块的简单应用