【VUE】ArcoDesign之自定义主题样式和命名空间

前言

Arco Design是什么?

Arco Design 是由字节跳动推出的企业级产品的完整设计和开发解决方案前端组件库

  • 官网地址:https://arco.design/
  • 同时也提供了一套开箱即用的中后台前端解决方案:Arco Design Pro(https://pro.arco.design/)

Arco Design样式基于less技术栈,但也同ElementPlus默认主题,CSS 命名采用 BEM风格,方便使用者覆盖样式。
Arco Design 提供的默认命名空间为是空的。 在特殊情况下,我们需要自定义命名空间。

官方文档:

  • 【ArcoDesign | 自定义主题】

以下演示按照按需导入模式下进行

1、环境

  • vue: ^3.3.4
  • vite:^4.4.11
  • @arco-design/web-vue: ^2.52.1
  • @arco-plugins/vite-vue:^1.4.5

2、目录结构

|- public
|- src# ...|- styles # 新增目录包含以下文件|- arco|- index.less # 用于后续对Arco Design的专门样式配置入口|- base.less # 用于项目全局的扩展# ...
|- vite.config.ts # or vite.config.js

3、Less自定义主题配置

3.1、安装相关依赖

npm install -D less
# or
yarn add -D less
# or
pnpm add -D less

3.2、arco/index.less配置

  • 组件库 less 样式文件可以引入 @arco-design/web-vue/dist/arco.less 或者 @arco-design/web-vue/es/index.less
  • 如果使用了按需加载的方式引入组件,请确保在按需加载插件中开启了 less 样式文件的导入
/*** @file: src/styles/arco/index.less* * 组件库的全局 Token,可以在此查看组件库内置的设计变量以及默认* @link https://arco.design/vue/docs/token*//* 设置主色调 */
@arcoblue-6: #165dff;/* 引入arco less库 */
@import "@arco-design/web-vue/es/index.less";

3.3、base.less配置

/*** 引入arco less样式*/
@import (reference) "./arco/index.less";

3.4、vite.config.[ts|js]配置

以下方案二选一即可

3.4.1、方案一

该方案需要@arco-plugins/vite-vue依赖
由Arco 官方提供的 Vite 插件进行按需加载和组件库样式配置,@arco-plugins/vite-vue 插件会自动加载组件样式
@link 《按需加载与组件库主题(Arco 插件)》

依赖

npm install -D @arco-plugins/vite-vue
# or
yarn add -D @arco-plugins/vite-vue
# or
pnpm add -D @arco-plugins/vite-vue

配置

// ...
import path from 'node:path';
import {vitePluginForArco} from '@arco-plugins/vite-vue'
// ...export default ()=>{const viteConfig:UserConfig = {// ...plugins: [// ...vitePluginForArco({})],// ...css: {preprocessorOptions: {less: {modifyVars: {// 引入`base.less`hack: `true; @import (reference) "${path.resolve('./src/styles/base.less')}";`},javascriptEnabled: true,}},},// ...};return defineConfig(viteConfig);
}

3.4.2、方案二

该方案需要unplugin-auto-importunplugin-vue-components依赖

注意:

这种方法并不会处理用户在 script 中手动导入的组件,比如 Message 组件,用户仍需要手动导入组件对应的样式文件,例如 @arco-design/web-vue/es/message/style/css.js

依赖

npm install -D unplugin-auto-import unplugin-vue-components
# or
yarn add -D unplugin-auto-import unplugin-vue-components
# or
pnpm add -D unplugin-auto-import unplugin-vue-components

配置

// ...
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite';
import { ArcoResolver } from 'unplugin-vue-components/resolvers';
// ...export default ()=>{const viteConfig:UserConfig = {// ...plugins: [// ...AutoImport({resolvers: [ArcoResolver()],}),Components({resolvers: [ArcoResolver({sideEffect: true})]})],// ...css: {preprocessorOptions: {less: {modifyVars: {// 引入`base.less`hack: `true; @import (reference) "${path.resolve('./src/styles/base.less')}";`},javascriptEnabled: true,}},},// ...};return defineConfig(viteConfig);
}

ok,至此基本配置搞定,可以开始在arco/index.less中自定义需要的主题样式了

4、自定义命名空间配置

命名空间Arco划分为三个部分

  • css-vars-prefix前缀,
    默认:空
  • ClassName前缀 (arco组件样式class命名前缀名称,
    默认:<div class="arco-${componentName}"/>)
  • Component前缀 (arco组件调用时的前缀名称,
    默认:<a-${componentName} />)

4.1 设置css-vars-prefix前缀

步骤三的demo代码基础上加上:@arco-vars-prefix变量

完整样式:

/*** @file src/styles/arco/index.less*/
@arco-vars-prefix: 'css-vars-prefix-name';/* 设置主色调 */
@arcoblue-6: #165dff;@import "@arco-design/web-vue/es/index.less";

修改前:
在这里插入图片描述
修改后:
在这里插入图片描述

4.2 设置ClassName前缀

步骤三的demo代码基础上加上:@prefix变量

打开文件:src/styles/arco/index.less,增加@prefix变量设置:

@prefix: 'class-name-prefix';/* 设置主色调 */
@arcoblue-6: #165dff;@import "@arco-design/web-vue/es/index.less";

打开文件:src/App.vue

<!-- App.vue -->
<template><a-config-provider prefix-cls="class-name-prefix"><!-- ... --></a-config-provider>
</template>

修改前:
在这里插入图片描述

修改后:
在这里插入图片描述

4.3 设置 Component调用前缀

以下基于官方提供的 Vite 插件(@arco-plugins/vite-vue)实现

打开文件:vite.config.[ts|js]
找到plugins配置项:

// ...
plugins: [// ...vitePluginForArco({componentPrefix: "arco-ui", // 自定义组件前缀名称})
],
// ...

修改前:
在这里插入图片描述
修改后:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/171670.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯 Java 括号序列

本算法需要把问题分解成三步&#xff1a; 第一步&#xff1a;算出 ((() 填充 ( 的方案 第二步&#xff1a;算出 ((() 填充 ) 的方案 第三步&#xff1a;把两个方案相乘 第二步可以把原方案当成将 ((() 逆转成 ())) 再填充 ( &#xff0c;这样就可以重复第一步用的算法 第一步…

Tp框架如何使用事务和锁,还有查询缓存

1.事务 在ThinkPHP框架中&#xff0c;可以使用think\db\Transaction类来实现事务。 use think\Db; use think\db\Transaction;// 开始事务 Db::startTrans();try {// 执行数据库操作Db::table(user)->where(id, 1)->update([name > John]);// 提交事务Db::commit(); }…

JVM基础:字节码文件详解①

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、Java虚拟机的组成二、字节码文件的组成2.1 为什么要了解字节码文件&#xff1f;2.2 如何“窥探”字节码文件的奥秘&#xff1f;2.2.1 使用工具打开字节码文件2.…

[论文笔记]GTE

引言 今天带来今年的一篇文本嵌入论文GTE, 中文题目是 多阶段对比学习的通用文本嵌入。 作者提出了GTE,一个使用对阶段对比学习的通用文本嵌入。使用对比学习在多个来源的混合数据集上训练了一个统一的文本嵌入模型,通过在无监督预训练阶段和有监督微调阶段显著增加训练数…

MySQL安装多个实例——批处理脚本一键配置MySQL服务

1.下载mysql的免安装压缩包 官网&#xff1a;https://downloads.mysql.com/archives/community/ 2.解压并新增批处理脚本 echo off chcp 65001 setlocal enabledelayedexpansionecho MySQL版本为8.0.34REM 使用set /p命令获取用户输入的端口号 set /p "port请输入端口号…

LabVIEW开发基于图像处理的车牌检测系统

LabVIEW开发基于图像处理的车牌检测系统 自动车牌识别的一般步骤是图像采集、去除噪声的预处理、车牌定位、字符分割和字符识别。结果主要取决于所采集图像的质量。在不同照明条件下获得的图像具有不同的结果。在要使用的预处理技术中&#xff0c;必须将彩色图像转换为灰度&am…

postgresql14管理(五)-tablespace

基本概念 表空间tablespace在postgresql中&#xff0c;表示数据库对象&#xff08;比如表或索引&#xff09;的存放目录。当表被访问时&#xff0c;系统通过表空间定位到对应数据文件所在的位置。 优势&#xff1a; 1、如果数据库集群所在的初始磁盘分区或磁盘卷的空间不足&a…

企业如何选择设备管理系统?

1、需求为王&#xff0c;列出你的需求清单 每个企业的设备都不尽相同&#xff0c;自然对设备管理系统的需求也不一样。因此&#xff0c;需要充分明确自己的需求和目标&#xff0c;清晰地列出需求清单&#xff0c;然后再逐一对照供应商的产品功能&#xff0c;看是否满足自身各业…

蓝桥杯双周赛算法心得——通关(哈希+小根堆)

大家好&#xff0c;我是晴天学长&#xff0c;这是很重要的贪心思维题&#xff0c;哈希的存法和小根堆的表示很重要。 1) .通关 2) .算法思路 通关 用hash&#xff08;int[]&#xff09;存点的子节点并按输入顺序存关卡的号码&#xff08;输入顺序就是&#xff09; 列如&#…

使用 Pyro 和 PyTorch 的贝叶斯神经网络

一、说明 构建图像分类器已成为新的“hello world”。还记得当你第一次接触 Python 时&#xff0c;你的打印“hello world”感觉很神奇吗&#xff1f;几个月前&#xff0c;当我按照PyTorch 官方教程并为自己构建了一个运行良好的简单分类器时&#xff0c;我也有同样的感觉。 我…

JSON parse error: Cannot deserialize instance of `xxx` out of START_ARRAY token

报错原因 前端传参类型是数组&#xff0c;后端接收参数类型是字符串。 解决办法 前端传参类型改为字符串即可。 如下图 【修改前】 【修改后】

计算机网络-应用层(2)

一、DHCP 当需要跨越多个网段提供DHCP 服务时必须使用DHCP 中继代理&#xff0c; 就是在DHCP 客户和服务器之间转发DHCP 消息的主机或路由器。 DHCP 服务端使用UDP 的67号端口来监听和接收客户请求消息&#xff0c; 保留UDP 的68号端口用于接收来自DHCP 服务器的消息回复。 在…

HTTP 之 options预请求 nginx 解决跨域 postman调试跨域问题

一、HTTP一共有八种常见请求方法 get&#xff1a;参数在url上&#xff0c;浏览器长度有限制&#xff0c;不安全post&#xff1a;参数不可见&#xff0c;长度不受限制put&#xff1a;上传最新内容到指定位置delete&#xff1a;删除请求的url所表示的资源head&#xff1a;不返回…

代码随想录算法训练营第三十五天丨 贪心算法part06

738.单调递增的数字 思路 暴力解法 题意很简单&#xff0c;那么首先想的就是暴力解法了【超时】。 贪心算法 题目要求小于等于N的最大单调递增的整数&#xff0c;那么拿一个两位的数字来举例。 例如&#xff1a;98&#xff0c;一旦出现strNum[i - 1] > strNum[i]的情况…

高精度数字电容传感芯片-MDC04

高精度数字电容传感芯片-MDC04 简介引脚说明PCBA板寄存器说明代码实现单总线通讯时序代码单总线通讯时序代码头文件MDC04驱动代码MDC04驱动代码头文件用户APP调用函数main主程序 简介 MDC04以低成本等优势&#xff0c;可用于智能小家电液位、水箱液位、油液液位、水浸传感、食…

干式电抗器的尺寸和重量对系统有什么影响?

干式电抗器是一种用于电力系统中的无功补偿设备&#xff0c;其尺寸和重量对系统有以下几方面的影响&#xff0c;干式电抗器的尺寸和重量会影响设备的安装和布置&#xff0c;较大尺寸和重量的电抗器需要更大的安装空间&#xff0c;并且可能需要额外的支撑结构。在设计系统时需要…

代码随想录打卡第五十三天|309.最佳买卖股票时机含冷冻期 ● 714.买卖股票的最佳时机含手续费

309.最佳买卖股票时机含冷冻期 题目&#xff1a; 给定一个整数数组prices&#xff0c;其中第 prices[i] 表示第 i 天的股票价格 。​ 设计一个算法计算出最大利润。在满足以下约束条件下&#xff0c;你可以尽可能地完成更多的交易&#xff08;多次买卖一支股票&#xff09;: 卖…

hdlbits系列verilog解答(32位加法器)-25

文章目录 一、问题描述二、verilog源码三、仿真结果 一、问题描述 您将获得一个执行 16 位加法的模块 add16 。实例化其中两个以创建一个 32 位加法器。一个 add16 模块在接收到第一个加法器的进位结果后&#xff0c;计算加法结果的低 16 位&#xff0c;而第二个 add16 模块计…

windows + ubuntu + vscode开发环境配置安装

一、卸载WSL/WSL2 如果安装了windows子系统的朋友&#xff0c;可以选择继续使用。或者提前卸载WSL&#xff0c;再选择安装虚拟机。虚拟机占用内存较大&#xff0c;WSL可能对于开发的一些需求还有欠缺。根据自己的实际情况进行选择。 WIN10/11安装WSL(请参考官方资料&#xff0c…

CentOS 7.9.2009 数据盘挂载

一、linux版本&#xff1a; lsb_release -a 二、操作步骤 2.1&#xff0c;查看磁盘挂载情况&#xff0c;确认sdb是需挂载的硬盘 ## 查看磁盘挂载情况&#xff0c;确认sdb是需挂载的硬盘 lsblk 2.2&#xff0c;对硬盘sdb进行分区 ## 对硬盘sdb进行分区 fdisk /dev/sdb# 命令…