赞
踩
视频教程地址:https://www.bilibili.com/video/BV13m41167iG
去vant官网下载源码,源码放在github,自行去下载下来
https://vant-contrib.gitee.io/vant-weapp/#/home
"globalStyle": { "navigationBarTextStyle": "black", "navigationBarTitleText": "uni-app", "navigationBarBackgroundColor": "#F8F8F8", "backgroundColor": "#F8F8F8", //全局注册方式1 单个组件 "usingComponents": { "van-tabbar": "/wxcomponents/vant/dist/tabbar/index", "van-tabbar-item": "/wxcomponents/vant/dist/tabbar-item/index", "van-search": "/wxcomponents/vant/dist/search/index", "van-dialog": "/wxcomponents/vant/dist/dialog/index", "van-field": "/wxcomponents/vant/dist/field/index", "van-cell-group": "/wxcomponents/vant/dist/cell-group/index", "van-divider": "/wxcomponents/vant/dist/divider/index", "van-cell": "/wxcomponents/vant/dist/cell/index", "van-button": "/wxcomponents/vant/dist/button/index", "van-action-sheet": "/wxcomponents/vant/dist/action-sheet/index", "van-uploader": "/wxcomponents/vant/dist/uploader/index", "van-notify": "/wxcomponents/vant/dist/notify/index", "van-icon": "/wxcomponents/vant/dist/icon/index", "van-switch": "/wxcomponents/vant/dist/switch/index", "van-radio": "/wxcomponents/vant/dist/radio/index", "van-radio-group": "/wxcomponents/vant/dist/radio-group/index", "van-popup": "/wxcomponents/vant/dist/popup/index", // "van-overlay": "/wxcomponents/vant/dist/overlay/index", "van-cascader": "/wxcomponents/vant/dist/cascader/index", "van-card": "/wxcomponents/vant/dist/card/index", "van-submit-bar": "/wxcomponents/vant/dist/submit-bar/index", "van-notice-bar": "/wxcomponents/vant/dist/notice-bar/index", "van-checkbox": "/wxcomponents/vant/dist/checkbox/index", "van-empty": "/wxcomponents/vant/dist/empty/index", "van-steps": "/wxcomponents/vant/dist/steps/index", "van-toast": "/wxcomponents/vant/dist/toast/index" }, "app-plus": { "softinputNavBar": "none", "scrollIndicator": "none" } },
@import "/wxcomponents/vant/dist/common/index.wxss";
<van-button type="primary">主要按钮</van-button>
/* 隐藏原生tabbar */ .uni-tabbar-bottom{ display: none !important; } /* 使用vant-ui tabbar */ .van-tabbar-bottom{ position: fixed !important; bottom: 0 !important; width: 100% !important; z-index: 99999999 !important; border-top: 0 solid #ebedf0 !important; border-bottom-style: hidden !important; } .van-hairline--top-bottom:after{ border-top-width: 1px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; }
<template> <view> <view class="van-tabbar-bottom"> <van-tabbar :active="active" @change="onChange" :border="true" active-color="#898dda" inactive-color="#9c9c9c"> <van-tabbar-item icon="chat-o">首页</van-tabbar-item> <van-tabbar-item icon="contact">我的</van-tabbar-item> </van-tabbar> </view> </view> </template> <script> import Toast from '@/wxcomponents/vant/dist/toast/toast'; export default { name: "tabbar", data() { return { tabbarList: { 0: "/pages/index/index", 1: "/pages/my/my", }, } }, props: { active: Number }, methods: { onChange(index) { uni.switchTab({ url: this.tabbarList[index.detail] }) }, } } </script> <style scoped> </style>
"tabBar": {
"custom": true,// 隐藏原生tabar 仅h5和微信小程序
"height":"0.1rpx",// app 隐藏原生tabar需要将高度设置成最小0.1px rpx
"borderStyle":"white",
"list": [{
"pagePath": "pages/index/index"
},
{
"pagePath": "pages/my/my"
}
]
},
<template> <view class="content"> 首页 <van-button type="primary">主要按钮</van-button> <view class="foot"> <tabbar :active="0"></tabbar> </view> </view> </template> <script> import tabbar from "@/components/tabbar/tabbar" export default { data() { return { title: 'Hello' } }, onLoad() { }, methods: { } } </script> <style> </style>
在my.vue页面中调用自定义的tabbar
<template> <view> 我的 <view class="foot"> <tabbar :active="1"></tabbar> </view> </view> </template> <script> import tabbar from "@/components/tabbar/tabbar" export default { data() { return { } }, methods: { } } </script> <style> </style>
完整的pages.json配置
{ "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages { "path": "pages/index/index", "style": { "navigationBarTitleText": "index" } } ,{ "path" : "pages/my/my", "style" : { "navigationBarTitleText": "my" } } ], "globalStyle": { "navigationBarTextStyle": "black", "navigationBarTitleText": "uni-app", "navigationBarBackgroundColor": "#F8F8F8", "backgroundColor": "#F8F8F8", //全局注册方式1 单个组件 "usingComponents": { "van-tabbar": "/wxcomponents/vant/dist/tabbar/index", "van-tabbar-item": "/wxcomponents/vant/dist/tabbar-item/index", "van-search": "/wxcomponents/vant/dist/search/index", "van-dialog": "/wxcomponents/vant/dist/dialog/index", "van-field": "/wxcomponents/vant/dist/field/index", "van-cell-group": "/wxcomponents/vant/dist/cell-group/index", "van-divider": "/wxcomponents/vant/dist/divider/index", "van-cell": "/wxcomponents/vant/dist/cell/index", "van-button": "/wxcomponents/vant/dist/button/index", "van-action-sheet": "/wxcomponents/vant/dist/action-sheet/index", "van-uploader": "/wxcomponents/vant/dist/uploader/index", "van-notify": "/wxcomponents/vant/dist/notify/index", "van-icon": "/wxcomponents/vant/dist/icon/index", "van-switch": "/wxcomponents/vant/dist/switch/index", "van-radio": "/wxcomponents/vant/dist/radio/index", "van-radio-group": "/wxcomponents/vant/dist/radio-group/index", "van-popup": "/wxcomponents/vant/dist/popup/index", // "van-overlay": "/wxcomponents/vant/dist/overlay/index", "van-cascader": "/wxcomponents/vant/dist/cascader/index", "van-card": "/wxcomponents/vant/dist/card/index", "van-submit-bar": "/wxcomponents/vant/dist/submit-bar/index", "van-notice-bar": "/wxcomponents/vant/dist/notice-bar/index", "van-checkbox": "/wxcomponents/vant/dist/checkbox/index", "van-empty": "/wxcomponents/vant/dist/empty/index", "van-steps": "/wxcomponents/vant/dist/steps/index", "van-toast": "/wxcomponents/vant/dist/toast/index" }, "app-plus": { "softinputNavBar": "none", "scrollIndicator": "none" } }, "tabBar": { "custom": true,// 隐藏原生tabar 仅h5和微信小程序 "height":"0.1rpx",// app 隐藏原生tabar需要将高度设置成最小0.1px rpx "borderStyle":"white", "list": [{ "pagePath": "pages/index/index" }, { "pagePath": "pages/my/my" } ] }, "uniIdRouter": {} }
<template> <view> <!-- 组件页面 --> <view class="component-page"> <index v-if="active == 0"></index> <my v-if="active == 1"></my> </view> <!-- tabbar --> <view class="van-tabbar-bottom"> <van-tabbar :active="active" @change="onChange" :border="true" active-color="#898dda" inactive-color="#9c9c9c"> <van-tabbar-item icon="chat-o">首页</van-tabbar-item> <van-tabbar-item icon="contact">我的</van-tabbar-item> </van-tabbar> </view> </view> </template> <script> import index from '@/components/index/index.vue' import my from '@/components/my/my.vue' export default { name: "tabbar", data() { return { active: 0 } }, components:{ index, my }, methods: { onChange(index) { console.log(index.detail) this.active = index.detail }, } } </script> <style> </style>
<template> <view> 我是index </view> </template> <script> export default { name:"index", data() { return { }; } } </script> <style> </style>
<template> <view> 我是my </view> </template> <script> export default { name:"my", data() { return { }; } } </script> <style> </style>
值得注意的一点时,如果这样子修改,可能会造成生命周期的改变,所以写的时候需要多注意一下
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。