• 技术文章 >web前端 >js教程

    网页页面实现加载进度条

    php中世界最好的语言php中世界最好的语言2018-03-23 14:11:20原创1393
    这次给大家带来网页页面实现加载进度条,网页页面实现加载进度条的注意事项有哪些,下面就是实战案例,一起来看一下。

    页面加载进度条最初我是在youtube上看到的,后面几乎在各大网站上都能见到它的身影,可以让用户在加载页面的时候不会对着完全空白的页面发呆,提升用户体验

    但是从开发角度讲,这种进度条在真实性上确实很难把握,因为在逻辑代码加载完成之前,我们都不能统计到进度,而逻辑代码自身的进度也无法统计。另外,我们不可能监控到所有资源的加载情况。

    事实上,用户并不是在乎你的页面究竟加载了百分之几,而真正关心的是离加载完还有多久,以及这个空白页面是没有加载完,还是加载完就是空白的。所以没我们需要去“模拟”一个进度条,在后端数据返回前利用一个假的动画效果模拟加载,在数据返回后读完进度条并且隐藏。

    // progress-bar.vue
    <template>
     <transition name="fade">
     <p class="progress-bar" v-if="isShow">
     </p>
     </transition>
    </template>
    <script type="text/babel">
     export default {
     data() {
      return {
      isShow: true, // 是否显示进度条
      val: 0, // 进度
      }
     },
     props: {
      /**
      * 每10毫秒自增幅度
      */
      step: {
      type: Number,
      default: 5,
      },
      /**
      * 初始值
      */
      initVal: {
      type: Number,
      default: 0,
      },
      /**
      * 到一定进度停止
      */
      stopVal: {
      type: Number,
      default: 80,
      },
      /**
      * 进度条继续到成功
      */
      isOk: {
      type: Boolean,
      default: false,
      },
     },
     mounted() {
      // 初始化后加载进度,加载到百分之多少由stopVal决定
      this.val = this.initVal
      let step = this.step
      let timer = setInterval(() => {
      this.val = this.val + step
      this.$el.style.width = this.val + '%'
      // 父组件数据加载完前进度条最多到stopVal的这个百分值
      if (this.val >= this.stopVal) {
       clearInterval(timer)
       return
      }
      }, 10)
     },
     watch: {
      /**
      * 监听组件props变化决定是否继续加载,一般在父组件数据加载完后改变此标志位
      */
      isOk() {
      let val = this.val
      let step = this.step
      let timer = setInterval(() => {
       val = val + step
       this.$el.style.width = val + '%'
       // 加载到百分百完成
       if (val >= 100) {
       // 关闭定时器
       clearInterval(timer)
       // 加载完成关闭进度条
       this.isShow = false
       // 加载完成的回调
       this.$emit('callback', 'load success')
       return
       }
      }, 10)
      },
     },
     }
    </script>
    <style lang="stylus" rel="stylesheet/stylus">
     .progress-bar {
     position fixed
     top 0
     height 6px
     width 0
     background-color #999
     }
     .fade {
     &-enter-active, &-leave-active {
      transition: all .3s
     }
     &-enter, &-leave-active {
      opacity: 0
     }
     }
    </style>

    相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

    推荐阅读:

    JS自动计算酒店住宿费用

    图片加载完毕前显示加载圈的效果

    以上就是网页页面实现加载进度条的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:进度 加载 实现
    上一篇:JS自动计算酒店住宿费用 下一篇:axios跨域请求出错怎样解决
    PHP编程就业班

    相关文章推荐

    • 归纳整理JavaScript匿名函数知识点• 如何优化jQuery性能?优化方法汇总• 浅析Node中Express的错误处理中间件• 深入了解node​中怎么使用redis集群功能【配置详解】• 深入了解JavaScript引擎如何执行JS代码

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网