• 简易loading


    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="utf-8">
        <style>
            .loading {
                display: table;
                position: fixed;
                top: 0;
                left: 0;
                 100%;
                height: 100%;
                background-color: #fff;
                z-index: 5;
            }
    
            .loading .progress {
                display: table-cell;
                vertical-align: middle;
                text-align: center;
            }
    
        </style>
        <script>
            window.loadingStartTime = new Date()
        </script>
    </head>
    <body>
        <div class="loading" id="loading">
            <div class="progress" id="progress">0%</div>
        </div>
        <script src='node_modules/jquery/dist/jquery.js'></script>
        <script>
            var $loading = $('#loading')
            var $progress = $('#progress')
            var prg = 0
    
            var timer = 0
    var now = new Date()  // 记录当前时间
    var timeout = 5000  // 超时时间
    
    progress([80, 90], [1, 3], 100)
    
    window.onload = () => {
        complete()
    }
    
    if (now - loadingStartTime > timeout) {  // 超时
        complete()
    } else {
      window.setTimeout(() => {  // 未超时,则等待剩余时间
          complete()
      }, timeout - (now - loadingStartTime))
    }
    
    function complete () {  // 封装完成进度功能
        progress(100, [1, 5], 10, () => {
            window.setTimeout(() => {
                $loading.hide()
            }, 1000)
        })
    }
    
    function progress (dist, speed, delay, callback) {
        var _dist = random(dist)
        var _delay = random(delay)
        var _speed = random(speed)
        window.clearTimeout(timer)
        timer = window.setTimeout(() => {
            if (prg + _speed >= _dist) {
                window.clearTimeout(timer)
                prg = _dist
                callback && callback()
            } else {
                prg += _speed
                progress (_dist, speed, delay, callback)
            }
    
            $progress.html(parseInt(prg) + '%')
            console.log(prg)
        }, _delay)
    }
    
    function random (n) {
        if (typeof n === 'object') {
            var times = n[1] - n[0]
            var offset = n[0]
            return Math.random() * times + offset
        } else {
            return n
        }
    }
    </script>
    </body>
    </html>
  • 相关阅读:
    面试准备(集合部分)
    面试准备(算法部分)
    面试准备(sql部分 索引、常用语句 、)
    破解idea软件教程
    40个Java多线程问题详解复习
    面向对象(2)
    开发中容易造成内存泄露的操作
    面向对象(1)
    vue-cli中找不到jquery的原因,以使用ztree为例
    Django中整合Vue-cli,并解决各种路径引用错误和跨域的问题
  • 原文地址:https://www.cnblogs.com/luxiaoxiao/p/6546857.html
Copyright © 2020-2023  润新知