首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >二、Vue3集成Element-Plus

二、Vue3集成Element-Plus

作者头像
程序员三明治
发布2025-12-18 19:56:04
发布2025-12-18 19:56:04
2350
举报
文章被收录于专栏:码力up码力up

简介

Element-Plus是一套非常精美的前端UI框架,通过它可以快速实现精美的前端样式

Vue3集成Element-Plus

执行完 npm install

在根目录下,输入命令:

代码语言:javascript
复制
npm install element-plus --save

在main.js下引入element-plus

代码语言:javascript
复制
import { createApp } from 'vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import App from './App.vue'

const app = createApp(App)

app.use(ElementPlus)
app.mount('#app')

有了element-plus就不用自己写css样式了,直接就能用

全局使用icon

Element Plus 提供了一套常用的图标集合。

如果你想像用例一样直接使用,你需要全局注册组件,才能够直接在项目里使用。

安装

代码语言:javascript
复制
npm install @element-plus/icons-vue

注册所有图标

在main.js下去引入,需要从 @element-plus/icons-vue 中导入所有图标并进行全局注册。

代码语言:javascript
复制
// 如果您正在使用CDN引入,请删除下面一行。
import * as ElementPlusIconsVue from '@element-plus/icons-vue'

const app = createApp(App)
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
  app.component(key, component)
}

element-plus主题色设置

Element Plus 默认提供一套主题,CSS 命名采用 BEM 的风格,方便使用者覆盖样式。 但是如果需要大规模替换样式,例如: 将主题颜色从蓝色改为橙色或绿色,也许一个个将其覆盖起来不是一个好主意。

我们提供四种方法来改变样式变量。

安装依赖

代码语言:javascript
复制
npm i sass@1.71.1 -D
npm i unplugin-auto-import -D
npm i unplugin-element-plus -D
npm i unplugin-vue-components -D

配置index.css

代码语言:javascript
复制
@forward "element-plus/theme-chalk/src/common/var.scss" with (
  $colors: (
    'primary': (
      'base': #409eff,
    ),
    'success': (
      'base': #67c23a,
    ),
    'warning': (
      'base': #e6a23c,
    ),
    'danger': (
      'base': #f56c6c,
    ),
    'error': (
      'base': #f56c6c,
    ),
    'info': (
      'base': #909399,
    ),
  )
);

配置vite.config.css

代码语言:javascript
复制
import { createApp } from 'vue'
import './styles/element/index.scss'
import ElementPlus from 'element-plus'
import App from './App.vue'

const app = createApp(App)
app.use(ElementPlus)

如果你正在使用vite,并且你想在按需导入时自定义主题。

使用 scss.additionalData 来编译所有应用 scss 变量的组件。

代码语言:javascript
复制
import path from 'path'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
// You can also use unplugin-vue-components
// import Components from 'unplugin-vue-components/vite'
// import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'

// or use unplugin-element-plus
import ElementPlus from 'unplugin-element-plus/vite'

export default defineConfig({
  resolve: {
    alias: {
      '~/': `${path.resolve(__dirname, 'src')}/`,
    },
  },
  css: {
    preprocessorOptions: {
      scss: {
        additionalData: `@use "~/styles/element/index.scss" as *;`,
      },
    },
  },
  plugins: [
    vue(),
    // use unplugin-vue-components
    // Components({
    //   resolvers: [
    //     ElementPlusResolver({
    //       importStyle: "sass",
    //       // directives: true,
    //       // version: "2.1.5",
    //     }),
    //   ],
    // }),
    // or use unplugin-element-plus
    ElementPlus({
      useSource: true,
    }),
  ],
})

轮播图的使用

代码语言:javascript
复制
<template>
      <div>
      <el-carousel height="400px" type="card">
        <el-carousel-item v-for="item in data.imgs" :key="item">
          <img style="width: 100%; height: 100%" :src="item"/>
<!--          <h3 class="small justify-center" text="2xl">{{ item }}</h3>-->
        </el-carousel-item>
      </el-carousel>
    </div>
  </div>
</template>
      

import lun1 from '@/assets/muscle.jpg'
import lun2 from '@/assets/muscle2.jpg'
import lun3 from '@/assets/swim.jpg'

const data = reactive({
  imgs:[lun1, lun2, lun3]
})

分页pagination

current-page当前页数

page-size每页的个数

total:总共的数据个数

layout:分页的各种组件集合

代码语言:javascript
复制
<el-pagination
          v-model:current-page="data.currentPage1"
          v-model:page-size="data.pageSize"
          :page-sizes="[5, 10, 15, 20]"
          background
          layout="total, sizes, prev, pager, next, jumper"
          :total="400"
      />

Dialog 对话框

代码语言:javascript
复制
<el-table-column label="show">
          <template #default="scope">
            {{scope.row.id}}
            <el-button @click="edit(scope.row)" type="primary" :icon="Edit"/>
          </template>
</el-table-column>

const edit = (row) => {
  data.row = row
  data.dialogVisible = true
}

<el-dialog v-model="data.dialogVisible" title="弹窗" width="800">
      <div>{{data.row.date}}</div>
      <div>{{data.row.name}}</div>
      <div>{{data.row.address}}</div>
</el-dialog>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-07-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • Vue3集成Element-Plus
  • 全局使用icon
  • element-plus主题色设置
  • 轮播图的使用
  • 分页pagination
  • Dialog 对话框
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档