vue 页面加载进度条组件实例


Posted in Javascript onFebruary 05, 2018

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

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

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

// progress-bar.vue
<template>
 <transition name="fade">
 <div class="progress-bar" v-if="isShow">
 </div>
 </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>

以上这篇vue 页面加载进度条组件实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
基于jQuery判断两个元素是否有重叠部分的代码
Jul 25 Javascript
JS实现的文字与图片定时切换效果代码
Oct 06 Javascript
Bootstrap每天必学之导航
Nov 26 Javascript
ionic2 tabs使用 Modal底部tab弹出框
Dec 30 Javascript
微信小程序 request接口的封装实例代码
Apr 26 Javascript
jQuery插件select2利用ajax高效查询大数据列表(可搜索、可分页)
May 19 jQuery
JavaScript数组的5种迭代方法
Sep 29 Javascript
移动端网页开发调试神器Eruda的介绍与使用技巧
Oct 30 Javascript
Angular 组件之间的交互的示例代码
Mar 24 Javascript
如何在Angular应用中创建包含组件方法示例
Mar 23 Javascript
JavaScript实现星级评价效果
May 17 Javascript
javascript触发模拟鼠标点击事件
Jun 26 Javascript
JS设计模式之状态模式概念与用法分析
Feb 05 #Javascript
javascript实现获取一个日期段内每天不同的价格(计算入住总价格)
Feb 05 #Javascript
vue实现图片加载完成前的loading组件方法
Feb 05 #Javascript
JS设计模式之策略模式概念与用法分析
Feb 05 #Javascript
Node.js成为Web应用开发最佳选择的原因
Feb 05 #Javascript
Node.js上传文件功能之服务端如何获取文件上传进度
Feb 05 #Javascript
javascript实现最长公共子序列实例代码
Feb 05 #Javascript
You might like
thinkphp浏览历史功能实现方法
2014/10/29 PHP
PHP采集静态页面并把页面css,img,js保存的方法
2014/12/23 PHP
php-beanstalkd消息队列类实例分享
2017/07/19 PHP
laravel实现登录时监听事件,添加登录用户的记录方法
2019/09/30 PHP
phpstudy隐藏index.php的方法
2020/09/21 PHP
jQuery 源码分析笔记(4) Ready函数
2011/06/02 Javascript
JS实现支持Ajax验证的表单插件
2016/03/24 Javascript
JavaScript自学笔记(必看篇)
2016/06/23 Javascript
jQuery实现根据生日计算年龄 星座 生肖
2016/11/23 Javascript
jQuery实现简单日期格式化功能示例
2017/09/19 jQuery
jQuery中each方法的使用详解
2018/03/18 jQuery
nuxt框架中路由鉴权之Koa和Session的用法
2018/05/09 Javascript
javascript实现图片轮播代码
2019/07/09 Javascript
[01:42:49]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第一场 2月26日
2021/03/11 DOTA
两个使用Python脚本操作文件的小示例分享
2015/08/27 Python
使用Turtle画正螺旋线的方法
2017/09/22 Python
Python系统监控模块psutil功能与经典用法分析
2018/05/24 Python
Python3实现的反转单链表算法示例
2019/03/08 Python
pandas 数据结构之Series的使用方法
2019/06/21 Python
解决python彩色螺旋线绘制引发的问题
2019/11/23 Python
numpy中三维数组中加入元素后的位置详解
2019/11/28 Python
解决python-docx打包之后找不到default.docx的问题
2020/02/13 Python
Python 自由定制表格的实现示例
2020/03/20 Python
浅析CSS3 用text-overflow解决文字排版问题
2020/10/28 HTML / CSS
html5响应式开发自动计算fontSize的方法
2020/01/13 HTML / CSS
KEETSA环保床垫:更好的睡眠,更好的生活!
2016/11/24 全球购物
西班牙三叶草药房:Farmacias Trébol
2019/05/03 全球购物
阿联酋彩妆品牌:OUD MILANO
2019/10/06 全球购物
职业技术学校毕业生推荐信
2013/12/03 职场文书
医学生职业规划范文
2014/01/05 职场文书
租房合同协议书
2014/04/09 职场文书
副乡长民主生活会个人对照检查材料思想汇报
2014/10/01 职场文书
学校食堂标语
2014/10/06 职场文书
就业指导讲座心得体会
2016/01/15 职场文书
低端且暴利的线上线下创业项目分享
2019/09/03 职场文书
springboot项目以jar包运行的操作方法
2021/06/30 Java/Android