vant ui TabBar封装
TabBar.vue基本上是放在App.vue里面,都存在
- <template>
- <div id="app">
- <home-tab-bar :tar-bar-config="tarBarConfig"></home-tab-bar>
- <router-view></router-view>
- </div>
- </template>
我自己把TabBar.vue定义成一个全局组件。
并且用的是自定义图标。如果用到了自定义图标,就需要定义插槽了。
TabBar.vue


- <!-- 主页标签切换 -->
- <template>
- <div class="home-tab-bar">
- <van-tabbar
- v-model="defaultTarBarConfig.active"
- route
- :active-color="defaultTarBarConfig.activeColor"
- :inactive-color="defaultTarBarConfig.inactiveColor"
- >
- <van-tabbar-item
- v-for="(item, index) in defaultTarBarConfig.tabBarItemList"
- :key="index"
- replace
- :name="item.label"
- :to="item.routerPath"
- >
- <span>{{item.label}}</span>
- <template #icon="props">
- <img :src="props.active ? item.icon.active : item.icon.inactive" />
- </template>
- </van-tabbar-item>
- </van-tabbar>
- </div>
- </template>
- <script>
- export default {
- props: {
- tarBarConfig: {
- type: Object,
- required: true
- }
- },
- name: "HomeTabBar",
- data() {
- return {
- defaultTarBarConfig: {
- tabBarItemList: [
- // {
- // label: "about", //文字标签
- // routerPath: "/about", //路由
- // icon: "home-o" //图标
- // },
- ],
- active: "", //默认激活的值
- activeColor: "#1989fa", //激活色
- inactiveColor: "#7d7e80" // 未选中标签的颜色 000
- }
- };
- },
- methods: {
- initDefaultTarBarConfig() {
- this.defaultTarBarConfig = {
- ...this.defaultTarBarConfig,
- ...this.tarBarConfig
- };
- }
- },
- created() {
- this.initDefaultTarBarConfig();
- }
- };
- </script>
- <style lang="less" scoped>
- </style>
index.js
- import HomeTabBar from './HomeTabBar'
- export default {
- //Vue.use()方法就会自动执行install
- install(Vue) {
- Vue.component(HomeTabBar.name, HomeTabBar) //组建的名字和组件
- }
- }


- tarBarConfig: {
- tabBarItemList: [
- {
- label: "about",
- routerPath: "/about",
- icon: {
- active: require("assets/img/homeTabBar/aboutActive.png"),
- inactive: require("assets/img/homeTabBar/aboutInactive.png")
- }
- },
- {
- label: "goods",
- routerPath: "/goods",
- icon: {
- active: require("assets/img/homeTabBar/goodsAcitve.png"),
- inactive: require("assets/img/homeTabBar/goodsInacitve.png")
- }
- },
- {
- label: "news",
- routerPath: "/news",
- icon: {
- active: require("assets/img/homeTabBar/newsActive.png"),
- inactive: require("assets/img/homeTabBar/newsInactive.png")
- }
- }
- ],
- active: "news", //默认激活的值
- activeColor: "#1989fa", //激活色
- inactiveColor: "#7d7e80" // 未选中标签的颜色 000
- }
第二种方式:直接使用vant里面的图标,就不需要定义插槽了。很简单的封装
homeTabBar.vue


- <!-- 主页标签切换 -->
- <template>
- <div class="home-tab-bar">
- <van-tabbar
- v-model="defaultTarBarConfig.active"
- route
- :active-color="defaultTarBarConfig.activeColor"
- :inactive-color="defaultTarBarConfig.inactiveColor"
- >
- <van-tabbar-item
- v-for="(item, index) in defaultTarBarConfig.tabBarItemList"
- :key="index"
- replace
- :name="item.label"
- :icon="item.icon"
- :to="item.routerPath"
- >
- {{item.label}}
- </van-tabbar-item>
- </van-tabbar>
- </div>
- </template>
- <script>
- export default {
- props: {
- tarBarConfig: {
- type: Object,
- required: true
- }
- },
- name: "HomeTabBar",
- data() {
- return {
- defaultTarBarConfig: {
- tabBarItemList: [
- // {
- // label: "about", //文字标签
- // routerPath: "/about", //路由
- // icon: "home-o" //图标
- // },
- ],
- active: "", //默认激活的值 在item label中选择
- activeColor: "#1989fa", //激活色
- inactiveColor: "#7d7e80" // 未选中标签的颜色 000
- }
- };
- },
- methods: {
- initDefaultTarBarConfig() {
- this.defaultTarBarConfig = {
- ...this.defaultTarBarConfig,
- ...this.tarBarConfig
- };
- }
- },
- created() {
- this.initDefaultTarBarConfig();
- }
- };
- </script>
- <style lang="less" scoped>
- </style>
外面传的数据


- tarBarConfig: {
- tabBarItemList: [
- {
- label: "about",
- routerPath: "/about",
- icon: "home-o"
- },
- {
- label: "goods",
- routerPath: "/goods",
- icon: "home-o"
- },
- {
- label: "news",
- routerPath: "/news",
- icon: "home-o"
- }
- ],
- active: "news", //默认激活的值
- activeColor: "#1989fa", //激活色
- inactiveColor: "#7d7e80" // 未选中标签的颜色 000
- }
- };
vant ui TabBar封装的更多相关文章
- 自定义vant ui steps组件效果实现
记录个问题,当作笔记吧:因为vue项目的移动端vant ui 的step组件跟ui设计图有差别,研究了半天还是没法使用step组件,只能手动设置一个 先上效果图和代码: (1)HTML部分 <d ...
- vue+element UI + axios封装文件上传及进度条组件
1.前言 之前在做项目的时候,需要实现一个文件上传组件并且需要有文件上传进度条,现将之前的实现过程简单记录一下,希望可以帮助到有需要的人. 项目用的是Vue框架,UI库使用的是element UI,前 ...
- appium+python 【Mac】UI自动化测试封装框架流程简介 <一>
为了多人之间更方便的协作,那么框架本身的结构和编写方式将变得很重要,因此每个团队都有适合自己的框架.如下本人对APP的UI自动化测试的框架进行进行了简单的汇总.主要目的是为了让团队中的其余人员接手写脚 ...
- appium+python 【Mac】UI自动化测试封装框架介绍 <二>---脚本编写(单设备)
1.单设备的执行很简单,平时可多见的是直接在config中进行配置并进行运行即可.如下: # coding=UTF- ''' Created on // @author: SYW ''' from T ...
- Vant UI 安装
一:安装 npm i vant -S 二.引入组件(共有三个方法) 方法一:使用 babel-plugin-import (推荐) 1. 安装 babel-plugin-import 插件 npm i ...
- Vant ui
轻量.可靠的移动端 Vue 组件库 https://youzan.github.io/vant/#/zh-CN/intro postcss-pxtorem vue:将px转化为rem,适配移动端van ...
- 把项目中的vant UI组件升级
首先把之前 的VANT 卸载掉 npm uninstall vant 然后重新安装 一次vant npm i vant -S
- Vant UI 组件库如何做rem适配?
Vant是一款移动端基于vue的组件库,V2.1.1版本非常棒.文档地址:https://youzan.github.io/vant/?source=vuejsorg#/zh-CN/intro,那么V ...
- appium+python 【Mac】UI自动化测试封装框架介绍 <五>---脚本编写(多设备)
目的: 通过添加设备号,则自动给添加的设备分配端口,启动对应的appium服务.注意:为了方便,将共用一个配置文件. 1.公共的配置文件名称:desired_caps.yaml platformVer ...
随机推荐
- Python 实现 T00ls 自动签到脚本(邮件+钉钉通知)
T00ls 每日签到是可以获取 TuBi 的,由于常常忘记签到,导致损失了很多 TuBi .于是在 T00ls 论坛搜索了一下,发现有不少大佬都写了自己的签到脚本,签到功能实现.定时任务执行以及签到提 ...
- Web测试转App测试不看不知道
Web测试 Web通常指的是互联网应用系统,比如税务电子化征管档案系统.金融数据平台.餐饮商家管理后台等等,其实质是C/S的程序. C是Client--客户端,S是Server--服务器. Web中的 ...
- three.js 着色器材质之纹理
今天郭先生说一说如何在three.js着色器中添加纹理,先看看今天要完成的效果,在线案例请点击博客原文. 这里我们分别引入三个纹理,分别是地球的表面纹理,对应的海拔灰度图,和云朵的纹理.使用表面纹理还 ...
- java类的定义与使用
一 引用数据类型 1.引用数据类型的分类 我们可以把类的类型为两种: 第一种,Java为我们提供好的类,如Scanner类,Random类等,这些已存在的类中包 含了很多的方法与属性,可供我们使用. ...
- C#LeetCode刷题之#59-螺旋矩阵 II(Spiral Matrix II)
目录 问题 示例 分析 问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3678 访问. 给定一个正整数 n,生成一 ...
- C#LeetCode刷题之#414-第三大的数(Third Maximum Number)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3710 访问. 给定一个非空数组,返回此数组中第三大的数.如果不存 ...
- windows下mongoDB的下载和安装
1.进入mongoDB官网,官网地址:https://www.mongodb.com 2. 点击Try free按钮,进入下载页面 3.点击download进行下载:下载完成如下图: 4.点击下载的 ...
- Java并发---并发理论
一.如何理解线程安全 在多线程中稍微不注意就会出现线程安全问题,那么什么是线程安全问题? 我的认识是.在多线程下代码执行的结果和预期的正确的结果不一致,该代码就是线程不安全的,否则就是线程安全的 在深 ...
- 推荐一看的blog
不同专题: 个人blog cnblogs.com/MiLog cnblogs.com/Dway (指DeepWay) cnblogs.com/muly 建议一看,主要发布在cnblogs.com/dl ...
- IntelliJ IDEA安装Activiti插件并使用
一.安装Activiti插件 1.搜索插件 点击菜单[File]-->[Settings...]打开[Settings]窗口. 点击左侧[Plugins]按钮,在右侧输出"actiBPM",点击 ...