当前位置: 首页 > java >正文

Element用法---Loading 加载

仅供参考

文章目录

  • 一、加载动画
  • 二、Loading 组件
    • 1、指令调用 Loading
    • 2、服务调用 Loading


一、加载动画

当我们打开某个页面时,如果需要加载的数据很多或者网络很差,页面加载就会非常缓慢,中间可能会很长时间显示空白,那么就需要加载动画进行一个过渡,既可以起到一个提示的作用,也可以增加用户体验

在这里插入图片描述


二、Loading 组件

Element 的 Loading 组件可以很好的实现一个动态加载动画

Element Plus 提供了两种调用 Loading 的方法:指令服务

1、指令调用 Loading

假如现在有一个表格需要渲染,但是表格加载数据需要时间,需要在加载数据的时候,只在表格内显示加载动画,而不是整个界面显示加载,此时使用指令调用 Loading 更为方便

指令名称: v-loading

<template><div class="table-container"><el-table v-loading="loading":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></div>
</template><script lang="ts" setup>
import { ref } from 'vue'const loading = ref(true)const tableData = ref([{date: '2016-05-02',name: 'John Smith',address: 'No.1518,  Jinshajiang Road, Putuo District',},{date: '2016-05-04',name: 'John Smith',address: 'No.1518,  Jinshajiang Road, Putuo District',},{date: '2016-05-01',name: 'John Smith',address: 'No.1518,  Jinshajiang Road, Putuo District',},
]) // 你的数据
</script>//当确保表格数据加载完成后,将 loading 的值改为 false 即可取消加载动画

实现的效果如下:
在这里插入图片描述
所以,你想要在哪个盒子里面添加加载动画,就给哪个盒子添加 v-loading 指令

加载的同时显示文案:element-loading-text

<template><div class="table-container"><el-table v-loading="loading"element-loading-text="拼命加载中":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></div>
</template>

在这里插入图片描述

自定义加载图标:element-loading-spinner

<template><div class="table-container"><el-table v-loading="loading"element-loading-text="拼命加载中":element-loading-spinner="svg":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></div>
</template><script lang="ts" setup>
import { ref } from 'vue'const loading = ref(true)const svg = `<path class="path" d="M 30 15L 28 17M 25.61 25.61A 15 15, 0, 0, 1, 15 30A 15 15, 0, 1, 1, 27.99 7.5L 15 15" style="stroke-width: 4px; fill: rgba(0, 0, 0, 0)"/>`

在这里插入图片描述

自定义遮罩层颜色:element-loading-background

<template><div class="table-container"><el-table v-loading="loading"element-loading-text="拼命加载中"element-loading-background="black":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></div>
</template>

在这里插入图片描述

自定义类名:element-loading-custom-class

/* 自定义的样式会作用于加载遮罩层 */
.my-custom-loading {background-color: rgba(0, 0, 0, 0.5); /* 修改遮罩背景色 */
}/* 自定义加载动画 */
.my-custom-loading .el-loading-spinner {/* 修改spinner容器样式 */
}.my-custom-loading .el-loading-spinner .circular {/* 修改旋转动画样式 */
}.my-custom-loading .el-loading-text {/* 修改加载文字样式 */color: #ff0000;
}

2、服务调用 Loading

服务调用 Loading 更偏向于全屏显示加载动画

import { ElLoading } from 'element-plus'
const loading = ElLoading.service({text: '拼命加载中'
})
setTimeout(() => {loading.close() // 关闭加载
}, 2000)

在这里插入图片描述

通过修改 service 中的字段也可以实现自定义加载效果:

const loading = ElLoading.service({target: '',   //Loading 需要覆盖的 DOM 节点,默认是 bodylock: true, //是否在加载期间锁定屏幕交互,如滚动屏幕等fullscreen: true,   //是否全屏显示text: '拼命加载中',  //加载图标下方的加载文案background: 'black',  //遮罩背景色customClass: '',      // Loading 的自定义类名beforeClose: ()=>true,   //Loading 关闭之前执行的函数,返回值为布尔型closed: ()=>{}         //Loading 完全关闭后触发的函数
})

使用服务调用 Loading 怎么实现在某个div 中显示加载动画,而不是全屏显示

<div class="table-container"><div ref="divBox"></div>
</div>import { ref } from 'vue'
const divBox = ref()
const loading = ElLoading.service({target: divBox.value?.$el,   //Loading 需要覆盖的 DOM 节点fullscreen: false,   //是否全屏显示text: '拼命加载中',  //加载图标下方的加载文案
})<style>
.table-container {position: relative; /* 关键样式 */height: 100%; /* 确保容器有高度 */
}
</style>

关键点:
(1)target 字段设置为要添加动态加载效果的 DOM元素
(2)fullscreen 设置为 false 关闭全屏显示
(3)要添加加载动画的 DOM 元素的父容器必须有高度且设置了相对定位(relative)

http://www.xdnf.cn/news/17663.html

相关文章:

  • npm、pnpm、yarn区别
  • 一周学会Matplotlib3 Python 数据可视化-绘制饼状图(Pie)
  • 前沿技术借鉴研讨-2025.8.12 (数据不平衡问题)
  • Web项目Excel文件处理:前端 vs. 后端,企业级如何选择?
  • 【3】Transformers快速入门:大语言模型LLM是啥?
  • 11-docker单机版的容器编排工具docker-compose基本使用
  • centos 7 如何安装 ZipArchive 扩展
  • MySQL 数据库表操作与查询实战案例
  • MySQL概述
  • 计算机网络:ovn数据通信都是用了哪些协议?
  • 集成电路学习:什么是URDF Model统一机器人描述格式模型
  • 智能合约执行引擎在Hyperchain中的作用
  • 北京-4年功能测试2年空窗-报培训班学测开-第七十三天-投递简历-[特殊字符][特殊字符]
  • LangChain 框架 Parser 讲解
  • 介绍一下jQuery的AJAX异步请求
  • Nacos-1--什么是Nacos?
  • vue+flask基于规则的求职推荐系统
  • 3Ds Max的魔改利器:RailClone - 程序化建模的革命者
  • Linux Web服务器与WordPress部署笔记
  • DNS 服务详解与 BIND 部署
  • Django ORM查询技巧全解析
  • 基于Springboot+UniApp+Ai实现模拟面试小工具九:移动端框架搭建
  • 第二章:变量与简单数据类型
  • 【lucene】livedocs描述
  • 【华为机试】208. 实现 Trie (前缀树)
  • 图像打标工具/方法的分类和特点说明
  • Launcher3启动
  • 实战:用 PyTorch 复现一个 3 层全连接网络,训练 MNIST,达到 95%+ 准确率
  • IoT/透过oc_lwm2m/boudica150 源码中的AT指令序列,分析NB-IoT接入华为云物联网平台IoTDA的工作机制
  • Java使用“Microsoft Print To PDF”打印时如何指定输出路径