使用VueCLI制作TabBar

本文档详细介绍了如何使用VueCLI创建一个TabBar组件,并将其与路由结合。首先创建项目,编写基础页面结构和样式,然后逐步抽取组件,包括TabBar和TabBarItem。接着,通过在TabBarItem中传入active图片并监听事件实现与路由的联动。最后,处理文字颜色变化,并将App组件中的代码进一步抽离到MainTabBar组件中,完成整个TabBar的实现过程。
摘要由CSDN通过智能技术生成

使用VueCLI制作TabBar

1 创建项目

在控制台输入:

vue create tabbar

选择配置后项目创建成功。

2 编写基础页面

把创建好后的文件夹里面一些自带的组件删除,接着在/src/asset文件夹下创建两个新文件夹:css和img,用来放置css代码和项目要用的图片。在css文件夹里创建base.css文件用来清除页面的默认样式。

body {
    padding: 0;
    margin: 0;
} 

并在App.vue文件中的<style></style>引用该文件,通过代码`@import “./asset/css/base.css”

在该文件中继续编写基本的结构代码,和简单的样式。

<div id = "tab-bar">
    <div class="tabbar-item">首页</div>
    <div class="tabbar-item">分类</div>
    <div class="tabbar-item">购物车</div>
    <div class="tabbar-item">我的</div>
</div>
#tab-bar {
  display: flex;
  background-color: #f6f6f6;
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  box-shadow: 0 -1px 10px rgba(100,100,100,.2);
}在这里插入图片描述

3 组件的抽取

1 抽取App中的Tabbar

./components文件夹下创建一个新组件来存放App.vue中的基本结构代码,组件名为TabBar.vue。在App.vue里引入并注册该组件(抽离时也应将样式也一并抽离,确保App.vue没有多余部分)。

在这里插入图片描述

2 继续从TabBar组件中抽离TabBarItem

使用插槽<slot></slot>将TabBar组件中的属性为tabbar-item替换掉,被替换的放到新组件TabBarItem中。

在组件TabBarItem中观察结构,发现可以使用两个具名插槽来替换冗余的标签,还可以重复使用。

在这里插入图片描述

继续在App.vue中引用、注册这两个组件。

import TabBar from "./tabbar/TabBar";
import TabBarItem from "./tabbar/TabBarItem";

此时App.vue组件

在这里插入图片描述

3 在TabBarItem组件中传入active图片

1 新增插槽并且再插槽上加入判断,根据条件来进行激活显示

2在使用插槽的时候填充到插槽中的内容会替换掉插槽内的所有内容,所以进行使用一个div将插槽包裹起来,在div中写一些必要的属性。像下面这样:

 <div :style="activeStyle"><slot name="item-text"></slot></div>

4 组件与路由结合

1 TabBarItem与路由结合

每个Tabbar-item都和一个路由跳转相对应

2 添加路由

在router文件夹下找到index.js文件,打开后在里面添加相关代码。完成后如下:

在这里插入图片描述

3 在main.js 中导入路由并使用
4 创建各个组件

为方便管理,单一的组件可以放到views文件夹下。

5 在TabBarItem组件上监听事件

在组件上设置监听事件,用来进行路由的跳转

在子组件在添加props属性用来接受父组件传过来的路径,设置监听函数用来进行路由的跳转

export default {
  name: "TabBarItem",
  props:{
    link: String,
    },
  
  methods: {
    itemClick(){
      this.$router.replace(this.link);
    }
  }
6 在APP中设置传递过来的跳转路径

在这里插入图片描述

5 TabBarItem中文字颜色

需要在props中定义一个属性。用于接收来自App中传递过来的颜色设置。设置props中的属性名称为activeColor 类型为 String 默认值为red 在TabbarItem组件中的文字上绑定上style 的计算属性。

在这里插入图片描述

路径判断当前选中的状态。返回一个Boolean值;

	// 在TabbarItem中添加如下代码
	 computed: {
      isActive() {
        /*该条件成立的时候表示某个tabbar-item属于活跃状态*/
        return this.$route.path.indexOf(this.path) !== -1
      }
    }

如果设置了颜色得话,被点击后就会显示设置的颜色,若没有,则会使用默认的颜色,通过计算属性来判断某个tabbar-item是否属于活跃状态,如果处于活跃条件得话,该tabbar-item就会被添加上颜色属性。

6 抽取APP组件中的代码到MainTabBar中

抽取后MainTabBar如下

在这里插入图片描述

来判断某个tabbar-item是否属于活跃状态,如果处于活跃条件得话,该tabbar-item就会被添加上颜色属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值