vue3 结合element-plus 切换主题功能,结合上篇使用

本文介绍了如何在mian.js中使用ElementPlus框架,通过修改`styles/element/index.scss`和引入自定义的dark.scss文件,实现ElementPlus主题的切换,包括primary颜色的定制和按钮padding的调整,同时参考了element-plus-vite-starter-main项目。

mian.js 里面

import './styles/element/index.scss'

// styles/element/index.scss 代码

// 修改element主题样式
@forward 'element-plus/theme-chalk/src/common/var.scss' with (
  $colors: (
    'primary': (
      'base': #e54c0f,
    ),
  ),
   $button-padding-horizontal: ("default": 50px)
);
// 自定义暗黑主题变量
@use "./dark.scss";
// 导入element样式
@use "element-plus/theme-chalk/src/index.scss" as *;
//导入黑色主题
@use "element-plus/theme-chalk/src/dark/css-vars.scss" as *;

dark.scss里面代码

// 自定义黑色主题
$--colors: (
        "primary": (
                "base": #589ef8,
        ),
);
@forward "element-plus/theme-chalk/src/dark/var.scss" with (
  $colors: $--colors
);

参考:element-plus-vite-starter-main 项目

### 使用 Vue 3Element Plus 和 TypeScript 实现 CMS 功能 #### 创建项目结构 为了构建基于 Vue 3 的 CMS 应用程序,首先需要初始化一个新的 Vue 项目并安装必要的依赖项。通过 `vue-cli` 或者 Vite 可以快速搭建环境。 ```bash npm init vite@latest my-cms-app --template vue-ts cd my-cms-app npm install ``` 接着安装 Element Plus 组件库: ```bash npm i element-plus ``` #### 配置全局样式和按需加载组件 为了让应用更高效,在 main.ts 中配置 Element Plus 并设置主题颜色等参数[^1]。 ```typescript // src/main.ts import { createApp } from &#39;vue&#39; import App from &#39;./App.vue&#39; import ElementPlus from &#39;element-plus&#39; import &#39;element-plus/dist/index.css&#39; const app = createApp(App) app.use(ElementPlus) app.mount(&#39;#app&#39;) ``` 对于大型应用程序来说,推荐采用按需引入的方式减少打包体积。可以借助 unplugin-vue-components 插件来自动导入所需组件。 #### 设计数据模型和服务层 定义好 API 接口之后就可以创建服务类用于处理 HTTP 请求。这里假设有一个 RESTful 后端提供文章列表接口 `/api/articles`。 ```typescript // src/services/articleService.ts import axios from &#39;axios&#39;; export default class ArticleService { static async fetchArticles() { const response = await axios.get(&#39;/api/articles&#39;); return response.data; } } ``` #### 构建页面布局与路由管理 使用 Element Plus 提供的各种容器组件如 el-container 来设计响应式的页面框架;利用 vue-router 进行单页应用中的多视图切换逻辑控制。 ```javascript // router/index.ts import { createRouter, createWebHistory } from &#39;vue-router&#39;; import HomeView from &#39;../views/HomeView.vue&#39;; import EditArticleView from &#39;../views/EditArticleView.vue&#39;; const routes = [ { path: &#39;/&#39;, name: &#39;home&#39;, component: HomeView, }, { path: &#39;/edit/:id?&#39;, name: &#39;edit-article&#39;, component: EditArticleView, }, ]; const router = createRouter({ history: createWebHistory(), routes, }); export default router; ``` #### 开发表单编辑器和其他交互模块 针对内容创作需求开发富文本编辑器插件或其他自定义输入控件。Element Plus 自带了一些基础的 form 表单项支持双向绑定验证等功能特性。 ```html <!-- views/EditArticleView.vue --> <template> <el-form :model="form"> <el-form-item label="Title"> <el-input v-model="form.title"></el-input> </el-form-item> <!-- 更多功能可自行扩展... --> <el-button type="primary" @click="submitForm">Submit</el-button> </el-form> </template> <script lang="ts"> import { defineComponent, reactive } from &#39;vue&#39;; import ArticleService from &#39;@/services/articleService&#39;; export default defineComponent({ setup() { const form = reactive({ title: &#39;&#39; }); function submitForm() { console.log(&#39;Submitting:&#39;, form); // 调用 service 方法提交数据... } return { form, submitForm }; }, }); </script> ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流转的年华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值