123 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Vue
		
	
	
	
			
		
		
	
	
			123 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Vue
		
	
	
	
| <!--
 | |
|  * @Descripttion: 
 | |
|  * @version: 
 | |
|  * @Author: kBank
 | |
|  * @Date: 2022-11-21 16:46:09
 | |
| -->
 | |
| <template>
 | |
|   <view>
 | |
|     <view class="navBar"
 | |
|           :style="{height: navBarHeight+ 'px',background: backColor}">
 | |
|       <!-- 返回 -->
 | |
|       <view class="left-btn"
 | |
|             v-if="isBack"
 | |
|             :style="{marginTop: jn.top + 3+'px',left:jnRight + 'px'}"
 | |
|             @tap="toBack()">
 | |
|         <view class="left_item"
 | |
|               :style="{width: jn.height+ 'px',height: jn.height+ 'px'}">
 | |
|           <u-icon name="arrow-left"
 | |
|                   size="14"
 | |
|                   color="#333"></u-icon>
 | |
|         </view>
 | |
|       </view>
 | |
|       <view class="left-btn"
 | |
|             v-else>
 | |
| 
 | |
|       </view>
 | |
|       <!-- title -->
 | |
|       <view class="title"
 | |
|             :style="{marginTop: jn.top + 3+ 'px',lineHeight:jn.height+ 'px',}">
 | |
|         {{title}}
 | |
|       </view>
 | |
|       <view class="right-btn">
 | |
|         <slot name="rightBtn"></slot>
 | |
|       </view>
 | |
|     </view>
 | |
|     <view v-if="isKong"
 | |
|           :style="{height: navBarHeight+ 'px'}"></view>
 | |
|   </view>
 | |
| </template>
 | |
| 
 | |
| <script>
 | |
| export default {
 | |
|   name: 'navBar',
 | |
|   props: {
 | |
|     // 标题
 | |
|     title: {
 | |
|       type: String,
 | |
|       default: 'title',
 | |
|     },
 | |
|     // 背景色
 | |
|     backColor: {
 | |
|       type: String,
 | |
|       default: '#fcb71e',
 | |
|     },
 | |
|     // 是否显示返回
 | |
|     isBack: {
 | |
|       type: Boolean,
 | |
|       default: false,
 | |
|     },
 | |
|     // 是否占文档流
 | |
|     isKong: {
 | |
|       type: Boolean,
 | |
|       default: true,
 | |
|     },
 | |
|   },
 | |
|   data() {
 | |
|     return {
 | |
|       navBarHeight: 40,
 | |
|       jn: {},
 | |
|       jnRight: '',
 | |
|     }
 | |
|   },
 | |
|   mounted() {
 | |
|     // 胶囊位置
 | |
|     let btnInfo = uni.getMenuButtonBoundingClientRect()
 | |
|     // 手机信息
 | |
|     let mobileInfo = uni.getSystemInfoSync()
 | |
| 
 | |
|     this.jn = btnInfo
 | |
|     this.navBarHeight = btnInfo.top + btnInfo.height + 8
 | |
|     this.jnRight = mobileInfo.windowWidth - btnInfo.right
 | |
|   },
 | |
|   methods: {
 | |
|     toBack() {
 | |
|       let pages = getCurrentPages()
 | |
|       let prevPage = pages[pages.length - 1]
 | |
|       // 分享进来
 | |
|       if (prevPage.route == 'pages/index/goodsDetails/index') {
 | |
|         uni.switchTab({ url: '/pages/index/index' })
 | |
|       } else {
 | |
|         uni.navigateBack()
 | |
|       }
 | |
|     },
 | |
|   },
 | |
| }
 | |
| </script>
 | |
| 
 | |
| <style lang="scss" scoped>
 | |
| .navBar {
 | |
|   position: fixed;
 | |
|   width: 100%;
 | |
|   display: flex;
 | |
|   /* align-items: center; */
 | |
|   justify-content: space-between;
 | |
|   color: #333;
 | |
|   z-index: 9999;
 | |
| }
 | |
| .left-btn {
 | |
|   position: relative;
 | |
|   .left_item {
 | |
|     position: absolute;
 | |
|     background: #fff;
 | |
|     border-radius: 50%;
 | |
|     display: flex;
 | |
|     align-items: center;
 | |
|     justify-content: center;
 | |
|   }
 | |
| }
 | |
| .title {
 | |
|   font-size: 28rpx;
 | |
|   font-weight: 600;
 | |
| }
 | |
| </style> |