【前端】Vue项目:旅游App-(4)TabBar:Vant库实现功能与样式
创始人
2024-05-05 22:18:16
0

文章目录

    • 目标
    • 代码和过程
      • Vant库引入
      • 自定义样式初步修改
      • 样式修改
        • 修改active颜色
        • icon调大
      • 实现路由跳转
    • 效果
    • 总代码
      • 修改的文件
      • tab-bar.vue
      • main.js

目标

在这里插入图片描述

前文手写了TabBar的样式和功能,本篇我们用vant库重新实现这些功能。

代码和过程

Vant库引入

Vant4 官方文档

安装:

npm i vant

引入组件:

在这里插入图片描述

写个button试试:

在这里插入图片描述
说明引入成功。

注:这种引入组件的方式是:要用什么就注册什么,比较麻烦。本来用的是插件的方式,但它一直报错,博主想着这个项目的目的只是锻炼一下前端水平,重点不在怎么用vant,于是换了这种方式。

自定义样式初步修改

按文档方式引入组件:

在这里插入图片描述
显然我们要自定义图标,把它的代码复制一下,并了解它的功能:

在这里插入图片描述

为实现自己的目标,将UI库的代码改一下:



效果:

在这里插入图片描述

显然有如下问题:

  • 主题颜色不对:这里用的是Vant库的默认颜色
  • 样式不对:字体图标的img要大
  • 没有实现路由跳转

样式修改

修改active颜色

F12一下,看看主题颜色怎么设置的,可以得知是--van-tabbar-item-active-color设置的主题颜色:

在这里插入图片描述
显然本项目的主题颜色是橙色,且一致,所以我们可以直接在common.css中自己设置--van-tabbar-item-active-color的值。也可以直接修改样式color。这里我们用后者。

前者代码:直接写无法显示,要用!important覆盖一下。

:root {--van-tabbar-item-active-color: #ff9854 !important;
}

后者代码:

看一下文档,得知此功能已经被封装(一般都会封装):要放在van-tabbar中。

在这里插入图片描述


icon调大

F12一下看看为什么icon这么小:

在这里插入图片描述
是这个.van-tabbar-item__icon imgheight设置成了20px,这是库写好的样式。我们要修改它。

修改库的样式一般有四种方法:

  1. 如果用了插槽插入了自己的元素,那么在自己的作用域中直接修改这个元素。
  2. 全局定义一个变量,覆盖它默认变量的值(:root 里面修改),会影响整个文件的样式
  3. 局部定义一个变量,覆盖它默认变量的值
  4. 直接查找对应的子组件选择器,进行修改 :deep(子组件中元素的选择器) {}

来自修改第三方UI组件库的样式(如element-plus或者vant)

这里我们用第四种方法。

这里直接修改.van-tabbar-item__icon的样式无效,原因:

scoped表示这里的css是局部的,只在本文件中生效。
本文件template中没有.van-tabbar-item,若是直接重写.van-tabbar-item的样式不会生效 。
解决方法:
本template中没有.van-tabbar-item,但本文件用的子组件中有。使用:deep(),令写在其中的子组件 样式生效。

代码:

:deep(.van-tabbar-item) {height: 50px;img{height: 30px;}
}

效果:

在这里插入图片描述

实现路由跳转

再看一下文档:库为我们封装好了路由跳转的功能。

在这里插入图片描述
注意to是TabbarItem的属性。
在这里插入图片描述
代码:


效果

完全一致。

在这里插入图片描述

总代码

修改的文件

在这里插入图片描述

将不用库的代码保存到copy中。

tab-bar.vue

用库果然代码简洁多了。



main.js

import { createApp } from 'vue'
import App from './App.vue'
import "normalize.css"
import './assets/css/index.css'
import router from './router'
import pinia from './store'// 以下是添加和修改的部分// 引入vant组件
import { Button } from 'vant';
import { Tabbar, TabbarItem } from 'vant';
// 引入组件样式
import 'vant/lib/index.css';const app = createApp(App)app.use(router).use(pinia)
app.use(Button).use(Tabbar).use(TabbarItem)app.mount('#app')

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...