如何应用正确的元素加消息框样式?

jak*_*zon 5 css vue.js vite element-plus

这是元素加消息框在我构建的最小页面上的外观: 在此输入图像描述

我期望它看起来像element-plus 文档中的那样。

我将VueviteElementPlus一起使用。我从 vite 和 element plus 文档复制了设置。我玩了很多其他元素,它们都渲染正确。App.vue可以重现问题的最小组件:

<template>
  <el-button text @click="open">Click to open the Message Box</el-button>
</template>

<script setup>
import { ElMessageBox } from 'element-plus'

const open = () => {
  ElMessageBox.alert('This is a message', 'Title', {
    confirmButtonText: 'OK'
  })
}
</script>
Run Code Online (Sandbox Code Playgroud)

我的vite.config.js

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    AutoImport({
      resolvers: [ElementPlusResolver()],
    }),
    Components({
      resolvers: [ElementPlusResolver()],
    })
  ],
  base: ''
})
Run Code Online (Sandbox Code Playgroud)

该页面是最小的:

<!DOCTYPE html>
<title>Vite + Vue</title>
<div id="app"></div>
<script type="module" src="/src/main.js"></script>
Run Code Online (Sandbox Code Playgroud)

脚本也是如此:

import { createApp } from 'vue'
import App from './App.vue'
createApp(App).mount('#app')
Run Code Online (Sandbox Code Playgroud)

最后我的package.json

{
  "name": "v2",
  "private": true,
  "version": "0.0.0",
  "main": "main.js",
  "type": "module",
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "preview": "vite preview",
    "start": "electron ."
  },
  "dependencies": {
    "electron": "^20.0.2",
    "element-plus": "^2.2.12",
    "vue": "^3.2.37"
  },
  "devDependencies": {
    "@vitejs/plugin-vue": "^3.0.2",
    "unplugin-auto-import": "^0.11.1",
    "unplugin-vue-components": "^0.22.4",
    "vite": "^3.0.6"
  }
}
Run Code Online (Sandbox Code Playgroud)

jak*_*zon 9

我想说文档没有很好地解释它https://element-plus.org/en-US/guide/quickstart.html

当使用ElMessageElMessageBox使用时,可能需要手动导入它们的样式。快速启动/按需导入部分没有说明任何内容,所有其他元素都是开箱即用的,因此有点令人困惑。

<template>
  <el-button text @click="open">Click to open the Message Box</el-button>
</template>

<script setup>
import { ElMessageBox } from 'element-plus';
import 'element-plus/es/components/message/style/css'; // this is only needed if the page also used ElMessage
import 'element-plus/es/components/message-box/style/css';

const open = () => {
  ElMessageBox.alert('This is a message', 'Title', {
    confirmButtonText: 'OK'
  })
}
</script>
Run Code Online (Sandbox Code Playgroud)

  • 2023:仍然需要手动导入,现在是通过 `import 'element-plus/theme-chalk/src/message-box.scss'` (2认同)