uniapp获取状态栏高度,胶囊按钮的高度,底部安全区域的高度,自定义导航栏

相关API

uni.getSystemInfoSync()
uni.getMenuButtonBoundingClientRect()

创建一个utils文件夹,该文件下封装一个systemInfo.js
/*** 系统信息工具类* 封装获取系统状态栏、导航栏和安全区域等相关信息的方法*/// 获取系统信息并缓存
const systemInfo = uni.getSystemInfoSync();
//判断设备,H5没有胶囊按钮
// #ifndef H5
const menuButtonInfo = uni.getMenuButtonBoundingClientRect();
// #endif// 默认值常量
const DEFAULT_STATUS_BAR_HEIGHT = 10;
const DEFAULT_BAR_HEIGHT = 44;
const DEFAULT_SAFE_AREA_INSETS = { bottom: 10, top: 0 };/*** 获取状态栏高度* @returns {string|number} 状态栏高度,默认返回10px*/
export const getStatusBarHeight = () => {return systemInfo.statusBarHeight || DEFAULT_STATUS_BAR_HEIGHT;
};/*** 获取导航栏总高度(包括状态栏和标题栏)* @returns {number} 导航栏总高度,默认返回44*/
export const getNavigationBarHeight = () => {try {const statusBarHeight = Number(systemInfo.statusBarHeight) || 0;return (menuButtonInfo.top - statusBarHeight) * 2 + menuButtonInfo.height;} catch (error) {return DEFAULT_BAR_HEIGHT;}
};/*** 获取菜单按钮上边距* @returns {number} 菜单按钮上边距*/
export const getMenuButtonTop = () => {return menuButtonInfo.top;
};/*** 获取安全区域信息* @returns {Object} 包含bottom和top属性的安全区域对象*/
export const getSafeAreaInsets = () => {return {bottom: systemInfo.safeAreaInsets?.bottom || DEFAULT_SAFE_AREA_INSETS.bottom,top: systemInfo.safeAreaInsets?.top || DEFAULT_SAFE_AREA_INSETS.top};
};export default {getStatusBarHeight,getNavigationBarHeight,getMenuButtonTop,getSafeAreaInsets
};

在这里插入图片描述

封装一个nav-header.vue组件,在当前组件导入使用封装的,固定在顶部
<template><view class="nav-layout"><!-- 状态栏高度 --><view class="status-bar" :style="{ height: `${getStatusBarHeight()}px` }"></view><!-- 自定义导航栏 --><view class="search-bar" :style="{ height: `${getNavigationBarHeight()}px` }"><text class="recommend">推荐</text><view class="search-container" @click="onSearchClick"><uni-icons class="search-icon" type="search" size="22" color="#333" /><text class="search-placeholder">搜索</text></view></view></view><!-- 占位 --><view class="layout-fill" :style="{ height: `${getStatusBarHeight() + getNavigationBarHeight()}px` }"></view>
</template><script setup>
import {getStatusBarHeight,getNavigationBarHeight} from '@/utils/systemInfo.js'
</script><style lang="scss" scoped>
.nav-layout {position: fixed;top: 0;left: 0;z-index: 10;width: 100%;background: linear-gradient(to bottom, transparent, #fff 400rpx),linear-gradient(to right, #beecd8 20%, #f4e2d8);.status-bar {background-color: transparent;}.search-bar {display: flex;align-items: center;padding: 0 30rpx;.recommend {font-size: 40rpx;font-weight: bold;padding-right: 30rpx;color: #333;}}.search-container {display: flex;align-items: center;border-radius: 40rpx;border: 2px solid #fff;width: 300rpx;padding: 0 20rpx;box-sizing: border-box;background: rgba(255, 255, 255, 0.3);transition: all 0.3s ease;&:hover {background: rgba(255, 255, 255, 0.5);transform: scale(1.02);}.search-icon {padding-right: 6rpx;}.search-placeholder {color: #666;font-size: 28rpx;}}
}.layout-fill {width: 100%;
}
</style>
需要使用的页面导入nav-header.vue组件,自定义导航栏首先需要在page.json文件对应的路径去配置"navigationStyle": "custom"

在这里插入图片描述

展示效果图

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/88677.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/88677.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jQuery 文本属性值

一、前言在网页开发中&#xff0c;我们经常需要对页面上的文本内容进行操作&#xff0c;例如动态修改段落文字、读取用户输入框的内容、更新按钮文本等。jQuery 提供了简洁而强大的方法来处理这些常见的文本操作需求。本文将带你全面了解 jQuery 中用于操作文本内容的三个核心方…

JAVA并发——为什么Java中的ThreadLocal对key的引用为弱引用

1、ThreadLocal 的用途 给每个线程提供自己独立的变量副本&#xff0c;实现线程间隔离。 常用于&#xff1a; 数据库连接、Session 缓存、用户上下文&#xff08;如 userId&#xff09;线程池中的线程复用时避免共享污染&#xff1b;实现线程封闭的设计模式 2、内存泄漏 使用弱…

【C++】多线程同步三剑客介绍

目录 条件变量 头文件 主要操作函数 1、等待操作 2、唤醒操作 使用示例 信号量 头文件 主要操作函数 1、信号量初始化 2、等待操作&#xff08;P操作&#xff09; 3、信号操作&#xff08;V操作&#xff09; 4、获取信号量值 5、销毁信号量 使用示例 互斥锁 …

《Java Web程序设计》实验报告八 JSP+Servlet+JDBC+MySQL实现课程管理

目 录 一、实验目的 二、实验环境 三、实验步骤和内容 1、小组成员分工&#xff08;共计4人&#xff09; 2、实验方案 3、实验结果与分析 4、项目任务评价 四、遇到的问题和解决方法 五、实验总结 一、实验目的 1、掌握mysql的安装、数据库表单创建 2、掌握JDBC的链接…

基于数据挖掘的课程推荐系统研究

摘要本研究设计并开发了一套基于先进数据挖掘技术的智能化课程推荐系统。该系统创新性地采用了协同过滤算法与内容推荐算法相结合的混合推荐策略&#xff0c;通过深度分析学生在学习平台上的历史行为数据&#xff08;包括选课记录、学习时长、测试成绩等&#xff09;以及课程的…

【SCI 4区推荐】《Journal of Visual Communication and Image Representation》

期刊简介&#xff1a;《视觉传达与图像表示杂志》&#xff08;Journal of Visual Communication and Image Representation&#xff09;致力于发表视觉传达与图像表示领域的最前沿研究&#xff0c;特别强调多学科交叉领域中的新技术和理论应用。这本期刊涵盖的研究范围广泛&…

20250711_Sudo 靶机复盘

target:192.168.43.20 外部打点 &#xff08;文件上传&#xff09; nmap扫一下&#xff0c;80,22 开放 扫目录&#xff0c;发现 README.md [17:04:30] 200 - 664B - /Dockerfile [17:04:38] 200 - 34KB - /LICENSE …

STEP 7-Micro/WIN SMART 编程软件:从入门到精通的使用指南

STEP 7-Micro/WIN SMART 编程软件&#xff1a;从入门到精通的使用指南 在工业自动化控制领域&#xff0c;编程软件是连接工程师与 PLC 的桥梁&#xff0c;而 STEP 7-Micro/WIN SMART 作为 S7-200 SMART PLC 的专用编程工具&#xff0c;以其友好的界面和高效的编程能力备受青睐。…

模型训练与部署注意事项篇---resize

图像大小的影响在 YOLOv 系列模型的训练和推理部署过程中&#xff0c;图像大小的选择是影响模型性能&#xff08;精度、速度、泛化能力&#xff09;的关键因素之一。两者的关系既相互关联&#xff0c;又存在一定的灵活性&#xff0c;具体可从以下几个方面详细分析&#xff1a;一…

【Python】venv:配置独立镜像源

为某个特定的 venv 虚拟环境设置 pip 镜像源&#xff0c;使得该环境下的 pip 安装始终使用自定义镜像源&#xff0c;不影响系统 pip&#xff0c;也不依赖用户级配置文件。环境准备 1. 创建虚拟环境 python -m venv venv2. 激活虚拟环境Windows: .\venv\Scripts\activateLinux/m…

日本语言学校:签证制度类 Prompt 的结构整理路径与策略

日本语言学校&#xff1a;签证制度类 Prompt 的结构整理路径与策略 我们在构建语言留学语义系统的过程中&#xff0c;尝试以“签证风险”为例&#xff0c;探索如何让结构信息被更好地保留下来。本文不介绍 Prompt 本身&#xff0c;也不夸大其作用&#xff0c;而是希望借此与更…

RFCOMM协议详解:串口仿真与TCP/IP协议栈移植技术——面试高频考点与真题解析

一、RFCOMM 协议核心考点与高频面试问题1.1 协议基础与核心功能考点解析&#xff1a;RFCOMM&#xff08;Radio Frequency Communication&#xff09;是蓝牙协议栈中实现串口仿真的核心协议&#xff0c;基于 L2CAP 协议提供类似 RS-232 的可靠数据流传输。其核心功能包括&#x…

【编程实践】利用open3d生成物体的最长边方向并可视化

1 利用3d软件生成一个长方体 边长随意&#xff0c;长度随意 2 导出为模型文件并采样为点云数据 从mesh表面进行采样&#xff0c;点数根据自己需求进行设置&#xff0c;此处设置为100000。采样结果&#xff1a;3 识别OBB外接框并可视化长边方向import numpy as np import open3d…

1. 好的设计原则

目录一、应该具备的性质二、面向对象设计原则三、详解3.1 开闭原则3.2 单一职责原则3.3 里氏替换原则3.4 依赖倒置原则3.5 接口隔离原则3.6 合成复用原则3.7 迪米特原则一、应该具备的性质 可扩展性灵活性可插入性 二、面向对象设计原则 以下设计原则的重要性从高到低排列 …

深度学习图像分类数据集—猫七种表情识别分类

该数据集为图像分类数据集&#xff0c;适用于ResNet、VGG等卷积神经网络&#xff0c;SENet、CBAM等注意力机制相关算法&#xff0c;Vision Transformer等Transformer相关算法。 数据集信息介绍&#xff1a;猫七种表情识别分类&#xff1a;[Angry, Disgusted, Happy, Normal, Sa…

002_Claude模型与定价

Claude模型与定价 目录 Claude 4 模型系列模型功能对比定价策略计费说明企业定价使用建议 Claude 4 模型系列 Anthropic 推出了最新的 Claude 4 系列模型&#xff0c;提供不同性能等级以满足各种需求&#xff1a; Claude Opus 4 定位&#xff1a;最强大、最智能的模型特点…

【牛客刷题】游游的字母串

文章目录 一、题目介绍1.1 题目描述1.2 输入描述:1.3 输出描述:1.4 示例1二、解题二、解题思路2.1 核心问题2.2 关键策略三、算法分析3.1 为什么正确?3.2 复杂度分析四、模拟演练五、完整代码一、题目介绍 题目:游游的字母串 1.1 题目描述 对于一个小写字母而言,游游可以通…

docker容器高级管理-dockerfile创建镜像

目录一.构建LNMP架构1.构建nginx容器①拉取centos镜像&#xff08;对镜像做基础架构&#xff09;②创建dockerfile工作目录&#xff08;可以是一个服务的项目&#xff09;③创建dockerfile④创建启动脚本2.构建mysql数据库①创建mysql项目②配置dockersfile文件④创建镜像文件3…

北京-4年功能测试2年空窗-报培训班学测开-第四十九天

今天自习&#xff0c;在自习室嘤…今天效率不高&#xff0c;导致焦虑。不&#xff0c;或者该说&#xff0c;因为焦虑导致效率不高&#xff1f;没有达到自己预期&#xff0c;对自己也不满意临近结课&#xff0c;突然有些迷茫&#xff0c;我知道我要做的还有很多&#xff0c;要学…

css选择器的优先级以及用法

在 CSS 中&#xff0c;当多个选择器同时作用于一个元素&#xff0c;并且为该元素的同一属性设置了不同的值时&#xff0c;就需要依据选择器的优先级来确定最终应用哪个样式。本文详细介绍 CSS 选择器优先级的相关内容。 本文目录一、单个选择器的优先级1. 内联样式2. ID 选择器…