【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.mzph.cn/news/121503.shtml

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

相关文章

TSINGSEE青犀睡岗离岗检测算法——确保加油站安全运营

众所周知&#xff0c;加油站是一个需要24小时营业的场所&#xff0c;由于夜间加油人员较少&#xff0c;员工极易处于疲劳或者睡眠状态&#xff0c;为保障安全和效率&#xff0c;通过TSINGSEE青犀睡岗离岗检测算法在加油站场景中&#xff0c;可以及时发现工作人员的疲劳状况&…

YOLOv5— Fruit Detection

&#x1f368; 本文为[&#x1f517;365天深度学习训练营学习记录博客 &#x1f366; 参考文章&#xff1a;365天深度学习训练营-第7周&#xff1a;咖啡豆识别&#xff08;训练营内部成员可读&#xff09; &#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制](https…

业务架构、应用架构、技术架构、数据架构

架构规划的重要性 如果没有进行合理的架构规划&#xff0c;将会引发一系列的问题。为了避免这些问题的发生&#xff0c;企业需要进行业务架构、应用架构、技术架构和数据架构的全面规划和设计&#xff0c;以构建一个清晰、可持续发展的企业架构。 https://www.zhihu.com/que…

asp.net教务管理信息系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio计算机毕业设计

一、源码特点 asp.net 教务管理信息系统是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语言 开发 asp.net教务管理系统 应用技术&a…

适用于嵌入式arm的ffmpeg编解码

在嵌入式arm应用开发中&#xff0c;经常会遇到需要处理视频的情况&#xff0c;这时候就需要强大的开源工具ffmpeg出马了。 这里可以下载到各个版本的ffmpeg。 ffmpeg各版本https://www.videohelp.com/software/ffmpeg/old-versions 现在ffmpeg更新较频繁&#xff0c;如…

信钰证券:华为汽车概念股持续活跃 圣龙股份斩获12连板

近期&#xff0c;华为轿车概念股在A股商场遭到热捧&#xff0c;多只股票迭创前史新高。10月23日&#xff0c;华为轿车概念股再度走强&#xff0c;到收盘&#xff0c;板块内圣龙股份、银宝山新涨停&#xff0c;轿车ETF在重仓股提振下盘中一度上涨近2%。业界人士认为&#xff0c;…

此页面不能正确地重定向

这种是由于条件判断有误&#xff0c;程序不断的重定向到一个页面&#xff0c;而造成的死循环的情况 下面列举一个常出现的场景之一 1、使用过滤器实现登录验证错误处理 解释&#xff1a;当用户访问login.jsp进行登录的时候&#xff0c;这个时候请求会被Filter捕获&#xff0…

[每周一更]-(第69期):特殊及面试的GIT问题解析

整合代码使用过程的问题&#xff0c;以及面试遇到的细节&#xff0c;汇总一些常用命令的对比解释和对比&#xff1b; 1、fetch和pull区别 git fetch是将远程主机的最新内容拉到本地&#xff0c;用户在检查了以后决定是否合并到工作本机分支中。 git pull则是将远程主机的最新内…

51单片机复位电容计算与分析(附带Proteus电路图)

因为iC x (dU/dt).在上电瞬间&#xff0c;U从0变化到U,所以这一瞬间就是通的&#xff0c;然后这就是一个直流回路&#xff0c;因为电容C直流中是断路的&#xff0c;所以就不通了。 然后来分析一下这个电容的电压到底是能不能达到单片机需要的复位电压。 这是一个线性电容&…

Linux常见问题解决操作(yum被占用、lsb无此命令、Linux开机进入命令界面等)

Linux常见问题解决操作&#xff08;yum被占用、lsb无此命令、Linux开机进入命令界面等&#xff09; 问题一、新安装的Linux使用命令lsb_release提示无此命令&#xff0c;需先安装再使用 Linux安装lsb命令 lsb是Linux Standard Base的缩写&#xff08;Linux基本标准&#xff…

SpringMVC Day 05 : Spring 中的 Model

前言 欢迎来到 SpringMVC 系列教程的第五天&#xff01;在之前的教程中&#xff0c;我们已经学习了如何使用控制器处理请求和返回视图。今天&#xff0c;我们将深入探讨 Spring 中的 Model。 在 Web 应用程序开发中&#xff0c;数据的传递和展示是非常重要的。SpringMVC 提供…

仿真软件Proteus8.10 SP3 pro一键安装、汉化教程(附proteus8.10下载链接安装视频)

本破解教程仅供个人及 proteus 8.10粉丝们交流学习之用&#xff0c;请勿用于商业用途&#xff0c; 谢谢支持。此版本为Proteus8.10 SP3 pro 这里写目录标题 安装包下载链接:视频教程 一、安装软件解压二、软件安装三、汉化 安装包下载链接: http://www.eemcu.cn/2022/05/14/pr…

FindDiff_Qt找不同项目

文章目录 项目简介源代码widget.hwidget.cppwidget.ui配置文件找不同.json 项目简介 开发平台 win10Qt6.6msvc2022 简介 微信上有一些好玩的游戏, 找不同一种比较轻松有趣的游戏,也曾经在街机上被坑过N币, 玩了几次后,发现还是太难了,于是开始截屏放大,慢慢找,再然后就发展到截…

群晖上搭建teamspeak3语音服务器

什么是 TeamSpeak &#xff1f; TeamSpeak &#xff08;简称 TS&#xff09;是一款团队语音通讯工具&#xff0c;但比一般的通讯工具具有更多的功能而且使用方便。它由服务器端程序和客户端程序两部分组成&#xff0c;如果不是想自己架设 TS 服务器&#xff0c;只需下载客户端程…

Linux系统编程_网络编程:字节序、socket、serverclient、ftp 云盘

1. 网络编程概述&#xff08;444.1&#xff09; TCP/UDP对比 TCP 面向连接&#xff08;如打电话要先拨号建立连接&#xff09;&#xff1b;UDP 是无连接的&#xff0c;即发送数据之前不需要建立连接TCP 提供可靠的服务。也就是说&#xff0c;通过 TCP 连接传送的数据&#xf…

设计模式——单例模式详解

目录 设计模式类型单例模式单例模式方式饿汉式静态常量方式静态代码块形式 懒汉式线程不安全&#xff08;不推荐&#xff09;懒汉式优化&#xff08;不推荐&#xff09; 双重检查&#xff08;推荐方式&#xff09;静态内部类&#xff08;推荐方式&#xff09;枚举方式&#xff…

STM32 ADC数模转换器

STM32 ADC数模转换器 ADC简介 ADC&#xff08;Analog-Digital Converter&#xff09;模拟-数字转换器 ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量&#xff0c;建立模拟电路到数字电路的桥梁 STM32主要是数字电路&#xff0c;数字电路只有高低电平&#xf…

【torch高级】一种新型的概率学语言pyro(01/2)

一、说明 贝叶斯推理&#xff0c;也就是变分概率模型估计&#xff0c;属于高级概率学模型&#xff0c;极有学习价值&#xff1b;一般来说&#xff0c;配合实际活动学习可能更直观&#xff0c;而pyro是pytorch的概率工具&#xff0c;不同于以往的概率工具&#xff0c;只是集中于…

PY32F002A系列单片机:高性价比、低功耗,满足多样化应用需求

PY32F002A系列微控制器是一款高性能、低功耗的MCU&#xff0c;它采用32位ARM Cortex-M0内核&#xff0c;最高工作频率达到24MHz&#xff0c;提供了强大的计算能力。此外&#xff0c;PY32F002A拥有最大20Kbytes的flash存储器和3Kbytes的SRAM&#xff0c;为简单的数据处理提供了充…

Python Selenium 之数据驱动测试的实现!

数据驱动模式的测试好处相比普通模式的测试就显而易见了吧&#xff01;使用数据驱动的模式&#xff0c;可以根据业务分解测试数据&#xff0c;只需定义变量&#xff0c;使用外部或者自定义的数据使其参数化&#xff0c;从而避免了使用之前测试脚本中固定的数据。可以将测试脚本…