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

    vue实现页面加载的进度条

    php中世界最好的语言php中世界最好的语言2018-04-12 17:28:08原创3506
    这次给大家带来vue实现页面加载的进度条,vue实现页面加载进度条的注意事项有哪些,下面就是实战案例,一起来看一下。

    页面加载进度条最初我是在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中文网其它相关文章!

    推荐阅读:

    vue改变当前选中项的状态

    vue+checkbox怎样操作数据绑定及获取与计算

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

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:进度 加载 页面
    上一篇:vue如何操作静态图片和网络图片 下一篇:vue图片加载完成前增加loading效果
    20期PHP线上班

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 什么是装饰器?聊聊Angular中怎么使用方法装饰器?• 聊聊node+express怎么操作cookie• JavaScript对象和数组的解构赋值基础详解• 一文搞定JavaScript字符串对象基本知识• JavaScript弱映射与弱集合知识详解
    1/1

    PHP中文网