前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vant for Vue Tabbar标签栏自定义图标及颜色的方法

Vant for Vue Tabbar标签栏自定义图标及颜色的方法

作者头像
德顺
发布2020-06-23 13:35:34
9.5K0
发布2020-06-23 13:35:34
举报
文章被收录于专栏:前端资源

Vant 的引入我就不写了,可以参考 官方API文档 ,因为 Vant for Vue 的官网可能不太好找,不同框架的语法不一样,我就直接把链接贴过来了,也方便我自己后期查阅。

首先看一下基础用法:

v-model 默认绑定选中标签的索引值,通过修改 v-model 即可切换选中的标签。

代码语言:javascript
复制
<van-tabbar v-model="active">
  <van-tabbar-item icon="home-o">标签</van-tabbar-item>
  <van-tabbar-item icon="search">标签</van-tabbar-item>
  <van-tabbar-item icon="friends-o">标签</van-tabbar-item>
  <van-tabbar-item icon="setting-o">标签</van-tabbar-item>
</van-tabbar>
export default {
  data() {
    return {
      active: 0,
    };
  },
};

通过名称匹配:

在标签指定 name 属性的情况下,v-model 的值为当前标签的 name

代码语言:javascript
复制
<van-tabbar v-model="active">
  <van-tabbar-item name="home" icon="home-o">标签</van-tabbar-item>
  <van-tabbar-item name="search" icon="search">标签</van-tabbar-item>
  <van-tabbar-item name="friends" icon="friends-o">标签</van-tabbar-item>
  <van-tabbar-item name="setting" icon="setting-o">标签</van-tabbar-item>
</van-tabbar>
export default {
  data() {
    return {
      active: 'home',
    };
  },
};

徽标提示:

设置 dot 属性后,会在图标右上角展示一个小红点。设置 badge 属性后,会在图标右上角展示相应的徽标。

代码语言:javascript
复制
<van-tabbar v-model="active">
  <van-tabbar-item icon="home-o">标签</van-tabbar-item>
  <van-tabbar-item icon="search" dot>标签</van-tabbar-item>
  <van-tabbar-item icon="friends-o" badge="5">标签</van-tabbar-item>
  <van-tabbar-item icon="setting-o" badge="20">标签</van-tabbar-item>
</van-tabbar>

自定义图标:

通过 icon 插槽自定义图标,可以通过 slot-scope 判断标签是否选中

代码语言:javascript
复制
<van-tabbar v-model="active">
  <van-tabbar-item badge="3">
    <span>自定义</span>
    <template #icon="props">
      <img :src="props.active ? icon.active : icon.inactive" />
    </template>
  </van-tabbar-item>
  <van-tabbar-item icon="search">标签</van-tabbar-item>
  <van-tabbar-item icon="setting-o">标签</van-tabbar-item>
</van-tabbar>
export default {
  data() {
    return {
      active: 0,
      icon: {
        active: 'https://img.yzcdn.cn/vant/user-active.png',
        inactive: 'https://img.yzcdn.cn/vant/user-inactive.png',
      },
    };
  },
};

这里我讲一下,通过 slot-scope 判断就是,<template #icon="props"> ,判断 props 的值,是否为选中状态,修改对应的图片。

自定义颜色:

代码语言:javascript
复制
<van-tabbar v-model="active" active-color="#07c160" inactive-color="#000">
  <van-tabbar-item icon="home-o">标签</van-tabbar-item>
  <van-tabbar-item icon="search">标签</van-tabbar-item>
  <van-tabbar-item icon="friends-o">标签</van-tabbar-item>
  <van-tabbar-item icon="setting-o">标签</van-tabbar-item>
</van-tabbar>

监听切换事件:

代码语言:javascript
复制
<van-tabbar v-model="active" @change="onChange">
  <van-tabbar-item icon="home-o">标签1</van-tabbar-item>
  <van-tabbar-item icon="search">标签2</van-tabbar-item>
  <van-tabbar-item icon="friends-o">标签3</van-tabbar-item>
  <van-tabbar-item icon="setting-o">标签4</van-tabbar-item>
</van-tabbar>
import { Notify } from 'vant';

export default {
  methods: {
    onChange(index) {
      Notify({ type: 'primary', message: index });
    },
  },
};

路由模式:

标签栏支持路由模式,用于搭配 vue-router 使用。路由模式下会匹配页面路径和标签的 to 属性,并自动选中对应的标签。

代码语言:javascript
复制
<router-view />

<van-tabbar route>
  <van-tabbar-item replace to="/home" icon="home-o">
    标签
  </van-tabbar-item>
  <van-tabbar-item replace to="/search" icon="search">
    标签
  </van-tabbar-item>
</van-tabbar>

API:

Tabbar Props

参数

说明

类型

默认值

v-model

当前选中标签的名称或索引值

number | string

0

fixed

是否固定在底部

boolean

true

border

是否显示外边框

boolean

true

z-index

元素 z-index

number | string

1

active-color

选中标签的颜色

string

#1989fa

inactive-color

未选中标签的颜色

string

#7d7e80

route

是否开启路由模式

boolean

false

placeholder v2.6.0

固定在底部时,是否在标签位置生成一个等高的占位元素

boolean

false

safe-area-inset-bottom

是否开启底部安全区适配,设置 fixed 时默认开启

boolean

false

Tabbar Events

事件名

说明

回调参数

change

切换标签时触发

active: 当前选中标签的名称或索引值

TabbarItem Props

参数

说明

类型

默认值

name

标签名称,作为匹配的标识符

number | string

当前标签的索引值

icon

图标名称或图片链接

string

-

icon-prefix v2.5.3

图标类名前缀,同 Icon 组件的 class-prefix 属性

string

van-icon

dot

是否显示图标右上角小红点

boolean

false

badge v2.5.6

图标右上角徽标的内容

number | string

-

info

图标右上角徽标的内容(已废弃,请使用 badge 属性)

number | string

-

url

点击后跳转的链接地址

string

-

to

点击后跳转的目标路由对象,同 vue-router 的 to 属性

string | object

-

replace

是否在跳转时替换当前页面历史

boolean

false

TabbarItem Slots

名称

说明

SlotProps

icon

自定义图标

active: 是否为选中标签

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 自定义图标:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档