2. 导航组件封装和实现

对于微信App, 导航用的是非常多的,几乎每个页面都需要,我们先将它简单地封装以下。

1. free-icon组件, 用来定义每个icon图标

<template>
	<view :style="getSize" class="flex justify-center align-center">
		<text class="iconfont font-md"></text>
	</view>
</template>

<script>
	export default {
		props: {
			size: {
				type: [Number, String],
				default: 90
			},
			icon: {
				type: String,
				default: "",
			}
		},
		computed:{
			getSize() {
				return `height: ${this.size}rpx; width: ${this.size}rpx;`
			}
		}
	}
</script>

 

2. h-nav-bar导航组件:

<template>
	<view>
		<!-- 导航栏 -->
		<view class="bg-light" :class="fixed ? ‘position-fixed fixed-top‘ : ‘‘">
			<view>
				<!-- 状态栏 -->
				<view :style="‘height:‘ + statusBarHeight + ‘px‘"></view>
				<!-- 导航 -->
				<view class="flex justify-between w-100 align-center border" style="height: 90rpx;">
					<view class="ml-3" v-if="title">{{title}}</view>
					<view class="flex">
						<free-icon :size="90" :icon="‘\ue62c‘"></free-icon>
						<free-icon :size="90" :icon="‘\ue621‘"></free-icon>
					</view>
				</view>
			</view>
		</view>

		<!-- 占位 -->
		<view :style="fixedStyle" v-if="fixed"></view>
	</view>
</template>

<script>
	import freeIcon from ‘@/components/free-ui/free-icon.vue‘
	export default {
		props: {
			title: {
				type: [String, Boolean],
				default: ""
			},
			//是否fixed定位到顶部
			fixed: {
				type: Boolean,
				default: true
			}
		},
		components: {
			freeIcon
		},
		data() {
			return {
				// 状态栏
				statusBarHeight: 0,
				navBarHeight: 0
			}
		},
		mounted() {
			// #ifdef APP-PLUS-NVUE
			this.statusBarHeight = plus.navigator.getStatusbarHeight()
			console.log(this.statusBarHeight)

			// #endif
			this.navBarHeight = this.statusBarHeight + uni.upx2px(90)
		},
		methods: {

		},
		computed: {
			fixedStyle() {
				return `height: ${this.navBarHeight}px;`
			}
		}
	}
</script>

  

3. 在index.nvue中调用即可

<template>
	<view>
		<h-nav-bar :title="‘友我‘" :fixed="true"></h-nav-bar>
	</view>
</template>

<script>
	import hNavBar from ‘@/components/free-ui/h-nav-bar.vue‘
	export default {
		components: {
			hNavBar
		}
	}
</script>

  

导航组件中需要注意的点:

1. 需要计算app端的状态栏高度

2. 当我们将导航fixed定位到顶部时,需要创建一个占位view,否则就会有一部分内容会被遮挡

最终效果如下:

原文地址:https://www.cnblogs.com/zhanghaoblog/p/12207104.html

时间: 2024-11-11 05:18:50

2. 导航组件封装和实现的相关文章

第二百三十八节,Bootstrap输入框和导航组件

Bootstrap输入框和导航组件 学习要点: 1.输入框组件 2.导航组件 3.导航条组件 本节课我们主要学习一下Bootstrap的两个个组件功能:输入框组件和导航导航条组件. 一.输入框组件 文本输入框就是可以在<input>元素前后加上文字或按钮,可以实现对表单控件的扩展. 在左侧添加文字 input-group-addon样式class类,写在input同级的span里,给输入框添加一个左片段(Bootstrap)input-group样式class类,写在input外层div里,将

如何使用JavaScript快速的创建一种常用类型的导航组件:sidebar

本文标签: JavaScript小技巧 JavaScript JavaScript函数 JavaScript处理sidebar JavaScript导航组件 sidebar是一种常用类型的导航组件,它可从页面旁侧弹出,覆盖在正常内容上. 假设你的正常内容为: <div id="main"> Placeholder<p> Placeholder<p> Placeholder<p> </div> 现在我们可以在内容内加入sideb

Linux组件封装之五:生产者消费者问题

生产者,消费者问题是有关互斥锁(MutexLock).条件变量(Condition).线程(Thread)的经典案例: 描述的问题可以叙述为 生产者往buffer中投放产品,而消费者则从buffer中消费产品. 生产着消费者问题的难点在于: 为了缓冲区数据的安全性,一次只允许一个线程进入缓冲区投放或者消费产品,这个buffer就是所谓的临界资源. 生产者往缓冲区中投放产品时,如果缓冲区已满,那么该线程需要等待,即进入阻塞状态,一直到消费者取走产品为止. 相应的,消费者欲取走产品,如果此时缓冲区为

Linux组件封装(五)一个生产者消费者问题示例

生产者消费者问题是计算机中一类重要的模型,主要描述的是:生产者往缓冲区中放入产品.消费者取走产品.生产者和消费者指的可以是线程也可以是进程. 生产者消费者问题的难点在于: 为了缓冲区数据的安全性,一次只允许一个线程进入缓冲区,它就是所谓的临界资源. 生产者往缓冲区放物品时,如果缓冲区已满,那么需要等待,一直到消费者取走产品为止. 消费者取走产品时,如果没有物品,需要等待,一直到有生产者放入为止. 第一个问题属于互斥问题,我们需要使用一把互斥锁,来实现对缓冲区的安全访问. 后两个属于同步问题,两类

第 8 章 输入框和导航组件

学习要点: 1.输入框组件 2.导航组件 3.导航条组件 主讲教师:李炎恢 本节课我们主要学习一下Bootstrap的两个个组件功能: 输入框组件和导航导航条组件. 一.输入框组件 文本输入框就是可以在<input>元素前后加上文字或按钮,可以实现对表单控件的扩展. //在左侧添加文字 <div class="input-group"> <span class="input-group-addon">@</span>

Bootstrap 输入框和导航组件(六)

一.输入框组件 <div class="input-group input-group-lg"> <span class="input-group-addon">$</span> <input type="text" class="form-control"> <span class="input-group-addon">元</span&g

Android Binder进程间通信---注册Service组件---封装进程间通信数据

本文参考<Android系统源代码情景分析>,作者罗升阳 一.测试代码: -/Android/external/binder/server ----FregServer.cpp ~/Android/external/binder/common ----IFregService.cpp ----IFregService.h ~/Android/external/binder/client ----FregClient.cpp Binder库(libbinder)代码: ~/Android/fra

输入框和导航组件

一.输入框组件文本输入框就是可以在<input>元素前后加上文字或按钮,可以实现对表单控件的扩展.//在左侧添加文字<div class="input-group"><span class="input-group-addon">@</span><input type="text" class="form-control"></div> //在右侧添加文字

基于iView的列表组件封装

封装的好处多多,代码便于维护.减少代码量.减少BUG 前台封装以前没有尝试过,这回试试,哈哈 目录 1.列表组件封装 2.树组件封装 3.下拉框组件封装 4.上传组件封装 列表组件的API  属性 说明 类型 默认值  url 请求列表数据的地址 必填  String 无 pagingOption 列表底部是否显示分页信息及总数,有两个配置项 showPaging.showTotal Object 显示分页及总数信息 cols 列定义 必填 Array 无 height 列表高度 选填 Numb