当前位置:   article > 正文

vue3项目引入全局主题色_vue3自定义全局主题色

vue3自定义全局主题色

1、创建common.less文件

我这里的路径是src/assets/less/common.less,这个可自己决定

  1. :root {
  2. --body-bg: #f4f4f4;
  3. --color-brand: #060101;
  4. --header-height: 48px; // 头部内容高度/一级、二级菜单title高度
  5. --header-size: 16px;
  6. --nav-collapse-height: 44px; // 导航 展开/收起 高度
  7. --nav-transition-time: 0.2s; // 导航nav过渡时间
  8. --nav-size: 16px;
  9. --nav-border-width: 1px;
  10. --nav-item-height: 44px;
  11. --nav-item-icon-size: 20px;
  12. --nav-hover-min-width: 128px; // 导航滑过最小宽度
  13. --nav-hover-title-height: 56px;
  14. --nav-hover-item-height: 36px;
  15. // --nav-sub-title-height: 56px;
  16. --nav-sub-item-height: 36px;
  17. }
  18. body {
  19. background-color: var(--body-bg);
  20. }
  21. // 右侧容器
  22. .right-content {
  23. width: 100%;
  24. }
  25. // 颜色
  26. .color--success {
  27. color: var(--el-color-success);
  28. }
  29. .color--error {
  30. color: var(--el-color-error);
  31. }
  32. .color--danger {
  33. color: var(--el-color-danger) !important;
  34. }
  35. .color--info {
  36. color: var(--el-color-info);
  37. }
  38. .color--primary {
  39. color: var(--el-color-primary);
  40. }
  41. // 文件上传
  42. .upload-wrapper {
  43. .el-upload {
  44. width: 100%;
  45. height: 100%;
  46. .el-upload-dragger {
  47. width: 100%;
  48. height: 100%;
  49. padding: 0;
  50. }
  51. }
  52. .el-icon.icon-plus {
  53. width: 100%;
  54. height: 100%;
  55. text-align: center;
  56. }
  57. .el-loading-mask {
  58. border: 1px dashed var(--el-border-color);
  59. border-radius: 6px;
  60. }
  61. }

2、以下两种任选其一即可

1)在vite.config.js中添加以下代码

只看css即可

  1. import { defineConfig } from 'vite'
  2. import vue from '@vitejs/plugin-vue'
  3. import { resolve } from 'path'
  4. import { viteObfuscateFile } from 'vite-plugin-obfuscator'
  5. import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
  6. // 以下三项引入是为配置Element-plus自动按需导入
  7. import AutoImport from 'unplugin-auto-import/vite'
  8. import Components from 'unplugin-vue-components/vite'
  9. import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
  10. export default defineConfig(
  11. ({ mode, command }: { mode: 'prod' | 'test' | 'dev'; command: 'build' | 'serve' }) => {
  12. const isProd = mode === 'prod'
  13. const isRun = command === 'serve'
  14. console.log('isRun:', isRun)
  15. return {
  16. build: {
  17. outDir: '../dist/end/end-' + mode,
  18. minify: 'terser',
  19. terserOptions: {
  20. compress: {
  21. drop_console: isProd,
  22. drop_debugger: isProd,
  23. },
  24. },
  25. },
  26. plugins: [
  27. vue(),
  28. // 以下两项是为配置Element-plus自动按需导入
  29. AutoImport({
  30. resolvers: [ElementPlusResolver()],
  31. }),
  32. Components({
  33. resolvers: [ElementPlusResolver()],
  34. }),
  35. // viteObfuscateFile 配置项参考:https://github.com/javascript-obfuscator/javascript-obfuscator#javascript-obfuscator-options
  36. viteObfuscateFile({
  37. stringArray: false, // 为 true 会导致element-plus样式丢失
  38. }),
  39. // svg
  40. createSvgIconsPlugin({
  41. iconDirs: [
  42. resolve(__dirname, './src/assets/svg/common'),
  43. resolve(__dirname, './src/assets/svg/nav'),
  44. resolve(__dirname, './src/assets/svg/home'),
  45. resolve(__dirname, './src/assets/svg/wisdom'),
  46. ],
  47. symbolId: 'icon-[dir]-[name]',
  48. }),
  49. ],
  50. resolve: {
  51. alias: [
  52. {
  53. find: '@',
  54. replacement: resolve(__dirname, './src'),
  55. },
  56. {
  57. find: '@/*',
  58. replacement: resolve(__dirname, './src/*'),
  59. },
  60. {
  61. find: '@common',
  62. replacement: resolve(__dirname, '../common'),
  63. },
  64. {
  65. find: '@common/*',
  66. replacement: resolve(__dirname, '../common/*'),
  67. },
  68. ],
  69. },
  70. server: {
  71. port: 3000,
  72. host: '0.0.0.0',
  73. proxy: {
  74. '/api': {
  75. target: isProd ? 'https://xxxx.com' : 'http://test.xxxx.com',
  76. changeOrigin: true,
  77. rewrite: path => path.replace(/^\/api/, '/api'),
  78. },
  79. },
  80. },
  81. // 定义less全局变量
  82. css: {
  83. preprocessorOptions: {
  84. less: {
  85. charset: false,
  86. additionalData: `@import "${resolve(__dirname, 'src/assets/less/common.less')}";`,
  87. },
  88. },
  89. },
  90. }
  91. },
  92. )
2)在main.js中添加以下代码
import './src/assets/less/common.less'

3、现在就可以在全局使用自定义的主题色啦

  1. .form-container {
  2. background: var(--bg-light-1);
  3. padding: 20px 12px 0;
  4. overflow: hidden;
  5. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/84764
推荐阅读
相关标签
  

闽ICP备14008679号