使用vue3+vant如何实现主题定制

文章介绍了如何在项目中定制组件库的主题色彩和样式,以适应项目需求。通过使用CSS变量和`:root`伪类可以定制项目主题,覆盖Vant等组件库的默认颜色。在Vue项目中,可以引入自定义的SCSS文件并利用`:v-deep()`或`/deep/`进行深度选择器操作,以改变特定组件如`van-nav-bar`的样式。此外,还提到了不同Vue版本中深度作用选择器的写法差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

在实际开发中不可避免的要使用一些组件库,但是里面的样式往往不是我们所需要的,和我们做的项目的主题所不匹配,那么我们就可以自己来主题定制,最常用的就是色彩主题定制和样式定制。

  • 项目主题:选择适合项目的主题色彩,可以根据品牌色彩或项目设计风格来进行选择,确保组件库的颜色与项目整体一致。
  • 样式定制:定制组件库的样式,包括按钮样式、输入框样式、边框样式等。可以通过修改 CSS 或使用样式覆盖机制,使组件库的样式与项目的整体风格一致。

实现:

CSS 主题定制

选择适合项目的主题色彩,可以根据品牌色彩或项目设计风格来进行选择。确保组件库的颜色与项目整体一致。
实现:
使用 CSS 变量定制项目主题,覆盖 vant 主题色,我们要做项目中创建一个styles/main.scss

:root {
    // 问诊患者:色板
    --cp-primary: #16c2a3;
    --cp-plain: #eaf8f6;
    --cp-orange: #fca21c;
    --cp-text1: #121826;
    --cp-text2: #3c3e42;
    --cp-text3: #6f6f6f;
    --cp-tag: #848484;
    --cp-dark: #979797;
    --cp-tip: #c3c3c5;
    --cp-disable: #d9dbde;
    --cp-line: #ededed;
    --cp-bg: #f6f7f9;
    --cp-price: #eb5757;
    // 覆盖 Vant 主体色
    // 官方文档:ConfigProvider 全局配置
    --van-primary-color: var(--cp-primary);
}

:root 这个 CSS 伪类匹配文档树的根元素。对于 HTML 来说,:root 表示 元素,除了优先级更高之外,与 html 选择器相同。

在main.ts(这里我用的是ts创建的)引入此文件

<!-- 样式全局使用 -->
import 'vant/lib/index.css'
// main.scss一定要引入vant组件库样式的下面,在上面是不会生效的因为会被覆盖
import './styles/main.scss'

让我们看看效果,如图:
定制前
image.png
定制后

image.png

样式定制

定制组件库的样式,包括按钮样式、输入框样式、边框样式等。可以通过修改 CSS 或使用样式覆盖机制,使组件库的样式与项目的整体风格一致。
实现:
这里我们改变navBar的title字体样式

<template>
  <van-nav-bar title="注册" left-arrow @click-left="onClickLeft" fixed right-text="注册" @click-right="onClickRight" />
</template>

<style lang="scss" scoped>
::v-deep() {
  .van-nav-bar__title {
    font-weight: normal;
  }
}
</style>

拓展:
<<<
Vue2.x的深度作用选择器正式写法

  1. 仅适用于Vue2.x版本
  2. 支持css预加载器

/deep/
Vue2.x的深度作用选择器正式写法

  1. 仅适用于Vue2.x版本
  2. 支持css预加载器

**::v-deep() **
也可以::v-deep, 不过官方现在已经改了推荐用::v-deep()
Vue3.x的深度作用选择器正式写法

前后对比:
image.png
image.png

世界地图矢量数据可以通过多种网站进行下载。以下是一些提供免费下载世界地图矢量数据的网站: 1. Open Street Map (https://www.openstreetmap.org/): 这个网站可以根据输入的经纬度或手动选定范围来导出目标区域的矢量图。导出的数据格式为osm格式,但只支持矩形范围的地图下载。 2. Geofabrik (http://download.geofabrik.de/): Geofabrik提供按洲际和国家快速下载全国范围的地图数据数据格式支持shape文件格式,包含多个独立图层,如道路、建筑、水域、交通、土地利用分类、自然景观等。数据每天更新一次。 3. bbbike (https://download.bbbike.org/osm/): bbbike提供全球主要的200多个城市的地图数据下载,也可以按照bbox进行下载。该网站还提供全球数据数据格式种类齐全,包括geojson、shp等。 4. GADM (https://gadm.org/index.html): GADM提供按国家或全球下载地图数据的服务。该网站提供多种格式的数据下载。 5. L7 AntV (https://l7.antv.antgroup.com/custom/tools/worldmap): L7 AntV是一个提供标准世界地图矢量数据免费下载的网站。支持多种数据格式下载,包括GeoJSON、KML、JSON、TopJSON、CSV和高清SVG格式等。可以下载中国省、市、县的矢量边界和世界各个国家的矢量边界数据。 以上这些网站都提供了世界地图矢量数据免费下载服务,你可以根据自己的需求选择合适的网站进行下载
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值