Vue3 中 Element-Plus 引入 ElLoading 并修改颜色
安装:
# NPM
$ npm install element-plus --save
# Yarn
$ yarn add element-plus
# pnpm
$ pnpm install element-plus
引入:
// main.ts
import { createApp } from 'vue'
import ElementPlus from 'element-plus' // 引入 ElementPlus
import 'element-plus/dist/index.css' // 引入 ElementPlus 核心 css
import App from './App.vue'
const app = createApp(App)
app.use(ElementPlus) // 挂载 app
app.mount('#app')
使用:
<template>
<el-table
v-loading="loading"
element-loading-text="Loading..."
:element-loading-spinner="svg"
element-loading-svg-view-box="-10, -10, 50, 50"
element-loading-background="rgba(122, 122, 122, 0.8)"
:data="tableData"
style="width: 100%"
>
<el-table-column prop="date" label="Date" width="180" />
<el-table-column prop="name" label="Name" width="180" />
<el-table-column prop="address" label="Address" />
</el-table>
<el-table
v-loading="loading"
:element-loading-svg="svg"
class="custom-loading-svg"
element-loading-svg-view-box="-10, -10, 50, 50"
:data="tableData"
style="width: 100%"
>
<el-table-column prop="date" label="Date" width="180" />
<el-table-column prop="name" label="Name" width="180" />
<el-table-column prop="address" label="Address" />
</el-table>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
const loading = ref(true)
const svg = `
<path class="path" d="
M 30 15
L 28 17
M 25.61 25.61
A 15 15, 0, 0, 1, 15 30
A 15 15, 0, 1, 1, 27.99 7.5
L 15 15
" style="stroke-width: 4px; fill: rgba(0, 0, 0, 0)"/>
`
const tableData = [
{
date: '2016-05-02',
name: 'John Smith',
address: 'No.1518, Jinshajiang Road, Putuo District',
}
]
</script>
<style>
.example-showcase .el-loading-mask {
z-index: 9;
}
</style>
修改颜色(Icon 和 文字):
建议写到 App.vue 全局更换 Loading 加载样式。也可以单页面使用。本人写到了 App.vue 中
// App.vue
<style lang="less" scoped>
.el-loading-spinner .path {
-webkit-animation: loading-dash 1.5s ease-in-out infinite;
animation: loading-dash 1.5s ease-in-out infinite;
stroke-dasharray: 90, 150;
stroke-dashoffset: 0;
stroke-width: 4;
stroke-linecap: round;
stroke:#fd2957!important;
}
.el-loading-spinner .el-loading-text {
color: #fd2957!important;
margin: 3px 0;
font-size: 14px;
}
</style>