当前位置:首页 > 技术分析 > 正文内容

如何让element ui table 用上ant的loading图标

ui框架 element ui

当我们使用element ui表格的时候,为了让用户区分是否在请求中。我们通常会采取增加loading的做法。例如这样:

假如此时我不想要这个图标,(我觉得太丑了。)甚至element ui 的icon我都不喜欢。那么应该怎么换呢?

ui框架 ant design vue

让我们先看看蚂蚁金服的loading效果:

我觉得好看!!!

实现这个效果,有很多种方法。 比如自己再写个布局,在表格上面套一层 写上loading效果即可。

但是我想用element ui 现成的v-loading

在表格中使用loading的方法如下

<el-table
v-loading="loading"
element-loading-text="拼命加载中"
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(0, 0, 0, 0.8)"
:data="tableData"
style="width: 100%">
<el-table-column
prop="date"
label="日期"
width="180">
</el-table-column>
</el-table>

这个不难,大家很容易就学会了。此时效果是:

接下来开始我们改造之路;

第一步:我们将蚂蚁金服的css样式拿到element ui 封装表格的文件

/deep/ .ant-loading {
position: relative;
display: inline-block;
font-size: 32px;
width: 1em;
height: 1em;
transform: rotateZ(45deg);
transition: transform .3s cubic-bezier(.78, .14, .15, .86);
animation: Rotate45 1.2s infinite linear;
i{
height: 14px;
width: 14px;
background-color: #0AA1E5;
display: block;
position: absolute;
border-radius: 100%;
transform: scale(.75);
transform-origin: 50% 50%;
opacity: .3;
animation: myAnimationMove 1s infinite linear alternate;
}
:nth-child(1) {
top: 0;
left: 0;
}
:nth-child(2) {
top: 0;
right: 0;
animation-delay: .4s;
}
:nth-child(3) {
bottom: 0;
right: 0;
animation-delay: .8s;
}
:nth-child(4) {
left: 0;
bottom: 0;
animation-delay: 1.2s;
}
@keyframes myAnimationMove {
to {
opacity: 1;
}
}
@keyframes Rotate45 {
to {
transform: rotate(405deg);
}
}
}

接下来修改element ui table 的配置项

element-loading-spinner="el-demo"

修改为一个不存在的样式名,覆盖掉原有的loading

然后增加一个js方法

addCustomLoading () {
setTimeout(() => {
const loadingSpinner = document.querySelector('.el-loading-spinner');
if (loadingSpinner) {
const antLoading = document.createElement('span')
antLoading.className = 'ant-loading'
for (let i = 0; i < 4; i++) {
const newI = document.createElement('i');
antLoading.appendChild(newI);
}
loadingSpinner.appendChild(antLoading)
}
},100)
},

在mounted 引用

mounted() {
this.addCustomLoading();
},

此时效果是:

到此我们就实现了在element ui table中 用上了ant的loading。


原文链接:
https://juejin.cn/post/7324680413926637607


扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/4035.html

分享给朋友:

“如何让element ui table 用上ant的loading图标” 的相关文章

Git分布式系统---Gitlab多人工作流程

前言在上一次推文中,我们已经很清楚的讲解了如何创建本地仓库、提交(push)项目到远程仓库以及从远程仓库clone(克隆)项目到本地的相关操作。大家可以先去看前面的推文(快速掌握Git分布式系统操作)点击查看目前无论你是否步入社会还是在校学生,都会使用Gitlab来进行团队的代码管理。(可以这样说:...

Vue进阶(幺叁捌):vue路由传参的几种基本方式

1、动态路由(页面刷新数据不丢失)methods:{ insurance(id) { //直接调用$router.push 实现携带参数的跳转 this.$router.push({ path: `/particulars/${id}`,...

精品微信小程序在线考试系统+后台管理系统|前后...

《微信小程序在线考试系统+后台管理系统|前后分离VUE》该项目含有源码、论文等资料、配套开发软件、软件安装教程、项目发布教程等本系统包含微信小程序前台和Java做的后台管理系统,该后台采用前后台前后分离的形式使用Java+VUE微信小程序——前台涉及技术:WXML 和 WXSS、JavaScript...

千智云低代码平台 v2.0.6发布「平台升级」

【平台简介】千智云低代码应用平台是一款低代码开发+低代码PaaS+SaaS应用中台为一体的应用平台。平台提供了多种应用场景功能及应用组件,满足各种应用的基本实现,可以使用低代码开发的方式,定制化的开发软件项目,并使用平台提供的各种功能,提供了大多数业务场景的支持。也可以将开发的应用发布到平台,成为S...

面试官:如何关闭一个 TCP 连接?

今天聊一个比较轻松的问题:如何关闭一个 TCP 连接?可能大家第一反应是「杀掉进程」不就行了吗?是的,这个是最粗暴的方式,杀掉客户端进程和服务端进程影响的范围会有所不同:在客户端杀掉进程的话,就会发送 FIN 报文,来断开这个客户端进程与服务端建立的所有 TCP 连接,这种方式影响范围只有这个客户端...

vue 如何实现跨域

跨域问题是因为浏览器的同源策略引起的,一种浏览器的安全机制,要求协议,域名,端口,都要一致!出于浏览器的同源策略限制,浏览器会拒绝跨域请求。什么叫跨域?非同源请求,均为跨域。名词解释:同源 —— 如果两个页面拥有相同的协议(protocol),端口(port)和主机(host),那么这两个页面就属于...