从0开始搭建后台管理系统-03(自定义主题)

1. 介绍

在官网、后台管理、文档页等长时间浏览的页面,都会内置多套样式。可以缓解视觉疲劳、审美疲劳。主题最基本就是明亮黑暗,一个日间使用一个夜间使用,当然也可以写几套活力一点的颜色。本篇文章介绍如何在vue中使用自定义主题。

2. 详解

2.1 思路

本框架的主题切换采用的是:

  1. 将颜色变量都挂载在HTML元素中,通过--theme-color:#fafafa;这种方式定义CSS全局颜色变量,属性名必须以--开头。
  2. 再将变量赋值给less,@theme-color: var(--theme-color);,在同过@theme-color去使用该变量。
  3. vite中配置预加载的css变量,不然会导致获取不到,如下:
css:{
      preprocessorOptions:{
          less:{
              math:true,
              javascriptEnabled:true,
              additionalData: `@import "./src/assets/style/preload/index.less";` // 预加载
          }
      }
    },
  1. 解决其他插件的样式,像elementPlus、echarts都有自己的内置主题,可以直接使用
    elementPlus
    echarts主题
    本框架是将这些重新定义了一套,但是echarts比较麻烦,每个图表可能样式不同。

2.2 变量定义

全局css变量,定义了基本颜色、label颜色、侧边栏颜色。也可以不用定义这么多。
暗黑模式减少了对比度:值是 0% 将使图像变灰;值是 100%,则无影响;防止有些地方未定义样式刺眼。该属性只对亮色影响。

/* src > assets > style > preload > variables.css */
:root {
    --header-height:50px;
    --tag-height:34px;
    --aside-max-width:220px;
    --aside-min-width:64px;
}

html.dark {
    --theme-bg-color: #121212;
    --theme-color: #272727;
    --theme-font-color: #e2e2e2;
    --theme-active-color: #9DB2BF;
    --theme-line-color:#555555;

    /* label */
    --theme-label-active-color: #555555;
    --theme-label-active-font-color:#e2e2e2;

    /*    侧边栏*/
    --theme-aside-bg-color:#1f1f1f;
    --theme-aside-active-bg-color: #063e71;
    --theme-aside-font-color:#cccccc;
    --theme-aside-active-font-color:#ffffff;

    filter:saturate(0.5);
}


html.light {
    --theme-color: #fafafa;
    --theme-bg-color: #e0e0e0;
    --theme-font-color: #262626;
    --theme-active-color: #9DB2BF;
    --theme-line-color:#e2e2e2;

    /* label */
    --theme-label-active-color: #409eff;
    --theme-label-active-font-color:#fff;

/*    侧边栏*/
    --theme-aside-bg-color:#001527;
    --theme-aside-active-bg-color: #063e71;
    --theme-aside-font-color:#cccccc;
    --theme-aside-active-font-color:#ffffff;
}
/* src > assets > style > preload > variables.less */
// global variable
@header-height:var(--header-height);
@tag-height: var(--tag-height);
@aside-max-width:var(--aside-max-width);
@aside-min-width:var(--aside-min-width);

// theme common variable
@theme-color: var(--theme-color);
@theme-bg-color: var(--theme-bg-color);
@theme-font-color: var(--theme-font-color);
@theme-active-color: var(--theme-active-color);
@theme-line-color:var(--theme-line-color);

// theme label variable
@theme-label-active-color: var(--theme-label-active-color);
@theme-label-active-font-color:var(--theme-label-active-font-color);


// theme aside variable
@theme-aside-bg-color:var(--theme-aside-bg-color);
@theme-aside-active-bg-color:var(--theme-aside-active-bg-color);
@theme-aside-font-color:var(--theme-aside-font-color);
@theme-aside-active-font-color:var(--theme-aside-active-font-color);

2.3 变量预加载

定义一个预加载的文件入口

// src > assets > style > preload > index.less
@import "./variables.less";
@import "./elementPlus.less";
export default defineConfig({
    ...
css:{
      preprocessorOptions:{
          less:{
              math:true,
              javascriptEnabled:true,
              additionalData: `@import "./src/assets/style/preload/index.less";`
          }
      }
    },
})

2.4 修改elementPlus主题

以侧边栏为例,因为是改了--el-menu-... 的全局属性,同样需要预加载才能实现。

/** 侧边栏 */
.el-menu {
  width: 100%;
  height: calc(100% - @header-height);
  border: 0!important;
  white-space: nowrap;
  --el-menu-text-color:@theme-aside-font-color;
  --el-menu-hover-bg-color:@theme-aside-active-bg-color;
  --el-menu-bg-color:@theme-aside-bg-color;
  --el-menu-active-color:@theme-aside-active-font-color;
}
.el-popper{
border: 0;
}

.el-card{
  color:@theme-font-color!important;
  border:1px solid @theme-line-color!important;
  background-color:@theme-color!important;
 .el-card__header{
    border-bottom: 1px solid @theme-line-color!important;
  }
  .el-card__body{
    padding: 0;
  }
}

.el-table__inner-wrapper{
  background-color: @theme-color!important;
}

2.5 使用

由于用additionalData配置过,在本框架任意位置都可以直接使用变量,如:

.tag {
      padding: 2px 3px;
      height: min-content;
      background-color: @theme-label-active-color;
      color: @theme-label-active-font-color;
      border-radius: 2px;
    }

3.本框架其他文章链接

GitHub开源链接:GitHub - grxynl/vue3-admin-template: vue3+TypeScript+pinia 后台管理系统模板
从0开始搭建后台管理系统(首篇)
从0开始搭建后台管理系统-01(Login登录)
从0开始搭建后台管理系统-02(Layout布局)(上篇)
从0开始搭建后台管理系统-02(Layout布局)(下篇)

4. 结束语

本框架完全免费,框架尚有不足,供前端爱好者一起讨论,一起学习。 源码和文档都制作不易,如果觉得您还可以的话,求一个stars,这是对我最大的支持,也是本框架前进的最大动力。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Bootstrap 是一个流行的前端框架,它可以帮助开发者快速地搭建企业后台管理系统。使用 Bootstrap 可以减少开发的时间和工作量,并且提供了丰富的组件和样式供开发者使用。 首先,Bootstrap 提供了响应式设计的功能,使得后台管理系统能够在各种设备上都具有良好的显示效果。无论是在桌面端、平板还是手机上,后台管理系统都能够自动适应屏幕大小,保证用户有良好的操作体验。 其次,Bootstrap 内置了丰富的组件,包括导航栏、表格、表单、按钮等等,这些组件可以直接调用并配置,大大减少了开发者的编写代码的工作量。同时,这些组件还具有良好的样式和交互效果,可以提升管理系统的视觉效果和用户体验。 此外,Bootstrap 还提供了自定义样式的功能,开发者可以根据项目需求对组件样式进行个性化调整,减少了对 CSS 和 JavaScript 的依赖。同时,Bootstrap 还有一个丰富的插件库,可以轻松地集成各种功能模块,比如日期选择器、图表、弹窗等等,方便开发者扩展管理系统的功能。 总之,Bootstrap 可以帮助开发者快速搭建企业后台管理系统,不仅能够提高开发效率,还能够提供丰富的组件和样式供选择和定制,使得管理系统具有良好的响应式设计,以及良好的用户体验。 ### 回答2: Bootstrap是一种流行的前端框架,可以帮助开发人员快速搭建企业后台管理系统。它提供了一系列易用且功能丰富的UI组件和样式,使得页面设计和布局变得简单而高效。 使用Bootstrap搭建企业后台管理系统有以下几个优势: 1. 响应式布局:Bootstrap提供了强大的响应式布局系统,可以自动适应不同的屏幕大小和设备类型。这使得企业后台管理系统可以在桌面和移动设备上都能够正常显示,并且提供良好的用户体验。 2. 样式和主题:Bootstrap内置了大量现代化的UI样式和主题,可以轻松地为企业后台管理系统添加各种组件,如导航栏、按钮、表格等。开发人员也可以根据需要自定义样式,以满足企业的品牌和设计要求。 3. 插件和工具:Bootstrap提供了一系列有用的插件和工具,如日期选择器、图表库、对话框等,能够满足企业后台管理系统的各种功能需求。这些插件和工具易于集成,可以大大提高开发效率。 4. 文档和社区支持:Bootstrap有非常完整和详细的官方文档,其中包含了丰富的示例代码和使用指南。此外,Bootstrap还有一个庞大的社区,开发人员可以在社区中分享和获取有关搭建企业后台管理系统的经验和解决方案。 总之,使用Bootstrap可以快速搭建具有响应式布局、现代化样式和丰富功能的企业后台管理系统。它提供了一种简单而强大的开发工具,使得开发人员可以专注于业务逻辑和功能实现,从而提升开发效率和用户体验。 ### 回答3: Bootstrap是一个基于HTML、CSS和JavaScript的开源前端框架,它可以快速地搭建响应式的企业后台管理系统。 首先,使用Bootstrap可以方便地创建导航栏、面包屑导航、标签页等常见的界面组件。这些组件可以帮助用户快速导航系统的不同部分,提高用户体验。 其次,Bootstrap提供了丰富的UI元素,如按钮、表格、表单等,这些元素可以直接拿来使用,节省了设计和开发的时间。同时,Bootstrap还提供了可定制的CSS样式,使用户能够根据自己的需求轻松地改变界面的风格。 此外,Bootstrap还具有响应式设计的特点,可以根据用户的设备自动适应不同的屏幕大小。这意味着无论用户是在电脑、平板还是手机上访问后台管理系统,都能够获得良好的用户体验。 另外,Bootstrap还集成了一些JavaScript插件,如模态框、下拉菜单、日期选择器等。这些插件可以增强用户交互,实现更丰富的功能。 最后,Bootstrap有一个活跃的社区,提供了大量的文档、示例和模板等资源。这些资源可以帮助用户快速上手和解决问题。 综上所述,Bootstrap是一个功能强大且易用的前端框架,适合用于搭建企业后台管理系统。它可以帮助用户节省时间和精力,快速搭建出美观、响应式的界面,提升系统的用户体验。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值