zoukankan      html  css  js  c++  java
  • 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;  ${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,否则就会有一部分内容会被遮挡

    最终效果如下:

     

  • 相关阅读:
    VS2008找不到MFC90d.dll错误解决方法
    字符编码之间的转换
    java 中使用RSA非对称性加密解密
    java eclipse中使用wsdl生成soap 的客户端代码
    java 打印空心菱形的两种实现
    Chrome 快捷键
    电脑常用快捷键
    VS2013常用快捷键
    Eclipse常用快捷键
    java 使用for循环打印杨辉三角形
  • 原文地址:https://www.cnblogs.com/zhanghaoblog/p/12207104.html
Copyright © 2011-2022 走看看