加载动画Loading插件spin.js以及element-loading的使用

                                                                                

el-loading:

// 下载导入模板(只要安装了element即可)
    downloadTemplate() {
      let loadingInstance = this.$loading({
        lock: true,
        background: "rgba(0, 0, 0, 0.7)",
        text: "正在准备数据,请不要刷新或关闭页面",
      });
      this.$http({
        url: this.$http.adornUrl(
          "/gatherComm/xxxx/downloadTemplate"
        ),
        method: "post",
        responseType: "arraybuffer",
        data: this.$http.adornData({
          yearMonth: this.dataForm.yearMonth,
          cityId: this.dataForm.cityId,
        }),
      }).then((data) => {
        this.$http.fileDownload(data);
        loadingInstance.close();//关闭loading
      });
    },






使用步骤:
1、完整引入了 Element
import ElementUI from 'element-ui' // pc端组件
2、在向后台发起请求前调用this.loading(),在请求结束后调用this.loading(),在请求结束后调用this.loading(),在请求结束后调用this.loading().close()

this.$axios.get().then(
  res=>{
	doSomthing
	this.loading.close()	
    this.loading = false;
})
  .catch(error=>{
   doSomthing
   this.loading.close()
   this.loading = false;
})

转自:加载动画插件spin.js的使用随笔 - Dreamsqin - 博客园

很坑啊spin.js 报错,需要找到spin.min.js才有用

点击这里下载  spin.min.js  404 Not Found

<!doctype html>
<html>
    <head>
        <title>Test Spin Demo</title>
        <script type="text/javascript" src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
        <script type="text/javascript" src="spin.min.js" ></script>
        <style>
            #Div{
                width: 100%;
                height: 100%;
                text-align:center;
            }
            
            #firstDiv{
                width: 100%;
                height: 50%;
            }
            
            #secondDiv{
                width: 50%;
                height: 50%;
                margin:0 auto;
            }
        </style>
        <script type="text/javascript">        
            //opts 样式可从网站在线制作
            var opts = {            
                lines: 13, // 花瓣数目
                length: 20, // 花瓣长度
                width: 10, // 花瓣宽度
                radius: 30, // 花瓣距中心半径
                corners: 1, // 花瓣圆滑度 (0-1)
                rotate: 0, // 花瓣旋转角度
                direction: 1, // 花瓣旋转方向 1: 顺时针, -1: 逆时针
                color: '#000', // 花瓣颜色
                speed: 1, // 花瓣旋转速度
                trail: 60, // 花瓣旋转时的拖影(百分比)
                shadow: false, // 花瓣是否显示阴影
                hwaccel: false, //spinner 是否启用硬件加速及高速旋转            
                className: 'spinner', // spinner css 样式名称
                zIndex: 2e9, // spinner的z轴 (默认是2000000000)
                top: '25%', // spinner 相对父容器Top定位 单位 px
                left: '50%'// spinner 相对父容器Left定位 单位 px
            };

            var spinner = new Spinner(opts);

            $(document).ready(function () {
                $("#btnRequest").bind("click", function () {
                    Request();
                });
                $("#btnRequest2").bind("click", function () {
                   Request2();
                });
            })
            
            function Request(){
                //请求时spinner出现
                var target = $("#firstDiv").get(0);
                spinner.spin(target);
            }
            
            function Request2(){
                //关闭spinner  
                spinner.spin();
            }
        </script>
    </head>
    <body>
        <div id="Div">
            <div id="firstDiv">
            </div>
            <div id="secondDiv">
                <input id="btnRequest" type="button" value="显示加载" class="btnStyle" />
                <input id="btnRequest2" type="button" value="隐藏加载" class="btnStyle" />
            </div>
        </div>
    </body>
</html>

提示:

Spin.js 的在线设计、演示及下载地址为spin.js

我们可以在链接页面中,动态设置样式同时会自动生成样式的配置脚本:

var opts = {            
                lines: 13, // 花瓣数目
                length: 20, // 花瓣长度
                width: 10, // 花瓣宽度
                radius: 30, // 花瓣距中心半径
                corners: 1, // 花瓣圆滑度 (0-1)
                rotate: 0, // 花瓣旋转角度
                direction: 1, // 花瓣旋转方向 1: 顺时针, -1: 逆时针
                color: '#000', // 花瓣颜色
                speed: 1, // 花瓣旋转速度
                trail: 60, // 花瓣旋转时的拖影(百分比)
                shadow: false, // 花瓣是否显示阴影
                hwaccel: false, //spinner 是否启用硬件加速及高速旋转            
                className: 'spinner', // spinner css 样式名称
                zIndex: 2e9, // spinner的z轴 (默认是2000000000)
                top: '25%', // spinner 相对父容器Top定位 单位 px
                left: '50%'// spinner 相对父容器Left定位 单位 px
            };

复制代码

二、spin.js+自制遮罩(暂时还没有找到插件本身自带的遮罩层)

背景:想要在显示加载状态时,父层为不可编辑状态

在页面最后、</body>之前添加div遮罩层

<div id="mb"></div>

设置遮罩层的样式

复制代码

#mb{
    display: none;
    height: 100%;
    width: 100%;
    position: fixed;
    *position: absolute;
    *height: 1380px;
    background: black;
    top:0;
    left: 0;
    opacity:0.6;
}

最后通过js控制遮罩的显示与隐藏

//显示
$("#mb").css("display","block");
var target = $(".firstDiv").get(0);
spinner.spin(target);

//隐藏
$("#mb").css("display","none");
spinner.spin();

效果如下,此时父层为不可编辑状态:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue.js的v-loading指令是一种自定义指令,用于在异步操作期间显示状态。通过使用v-loading指令,我们可以轻松地在Vue.js应用程序中实现状态的显示和隐藏,提升用户体验。 v-loading指令的原理是,在指令绑定的元素上添一个遮罩层,并在遮罩层上显示状态的UI。当异步操作完成时,遮罩层和状态UI会被移除。 下面是一个简单的v-loading指令的实现: ```javascript Vue.directive('loading', { bind: function (el, binding) { const mask = document.createElement('div') mask.className = 'loading-mask' const spinner = document.createElement('div') spinner.className = 'loading-spinner' mask.appendChild(spinner) el.appendChild(mask) el.__loading__ = mask if (binding.value) { el.classList.add('relative') mask.classList.add('show') } else { el.classList.remove('relative') mask.classList.remove('show') } }, update: function (el, binding) { if (binding.value) { el.classList.add('relative') el.__loading__.classList.add('show') } else { el.classList.remove('relative') el.__loading__.classList.remove('show') } }, unbind: function (el) { el.removeChild(el.__loading__) delete el.__loading__ } }) ``` 这个指令会为绑定它的元素添一个遮罩层和状态UI,并在元素的`v-loading`属性值发生变化时显示或隐藏遮罩层和状态UI。我们可以在模板中使用这个指令来显示状态,例如: ```html <div v-loading="loading"> <!-- 异步操作的内容 --> </div> ``` 这个指令的样式可以根据项目需求自行修改,下面是一个简单的CSS样式示例: ```css .loading-mask { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, .5); display: none; } .loading-spinner { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); border: 4px solid #fff; border-top-color: transparent; border-radius: 50%; width: 32px; height: 32px; animation: spin .8s linear infinite; } .show { display: block; } .relative { position: relative; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值