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 相关文章推荐
Javascript-Mozilla和IE中的一个函数直接量的问题
Jan 09 Javascript
javascript静态的url如何传递
May 03 Javascript
javascript 动态调整图片尺寸实现代码
Dec 28 Javascript
javascript unicode与GBK2312(中文)编码转换方法
Nov 14 Javascript
如何在JavaScript中实现私有属性的写类方式(一)
Dec 04 Javascript
javascript搜索框效果实现方法
May 14 Javascript
简单实现IONIC购物车功能
Jan 10 Javascript
JQuery页面随滚动条动态加载效果的简单实现(推荐)
Feb 08 Javascript
微信小程序 实例开发总结
Apr 26 Javascript
js实现点击按钮复制文本功能
Jul 20 Javascript
vue添加class样式实例讲解
Feb 12 Javascript
JavaScript日期库date-fn.js使用方法解析
Sep 09 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
用PHP和ACCESS写聊天室(三)
2006/10/09 PHP
基于php-fpm 参数的深入理解
2013/06/03 PHP
php上传文件中文文件名乱码的解决方法
2013/11/01 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
让任务管理器中的CPU跳舞的js代码
2008/11/01 Javascript
jQuery判断元素是否是隐藏的代码
2011/04/24 Javascript
jQuery EasyUi实战教程之布局篇
2016/01/26 Javascript
get  post jsonp三种数据交互形式实例详解
2017/08/25 Javascript
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
2017/09/21 Javascript
动态加载权限管理模块中的Vue组件
2018/01/16 Javascript
快速搭建vue2.0+boostrap项目的方法
2018/04/09 Javascript
vue实现中部导航栏布局功能
2019/07/30 Javascript
详解vue中在父组件点击按钮触发子组件的事件
2020/11/13 Javascript
javascript实现京东快递单号的查询效果
2020/11/30 Javascript
[34:56]Ti4冒泡赛LGD vs Liquid 1
2014/07/14 DOTA
Python爬取读者并制作成PDF
2015/03/10 Python
使用Python的turtle模块画图的方法
2017/11/15 Python
使用 python pyautogui实现鼠标键盘控制功能
2019/08/04 Python
Django rstful登陆认证并检查session是否过期代码实例
2019/08/13 Python
python3.8 微信发送服务器监控报警消息代码实现
2019/11/05 Python
python 伯努利分布详解
2020/02/25 Python
新建文件时Pycharm中自动设置头部模板信息的方法
2020/04/17 Python
如何学习Python time模块
2020/06/03 Python
python实现简易版学生成绩管理系统
2020/06/22 Python
Python 没有main函数的原因
2020/07/10 Python
给Django Admin添加验证码和多次登录尝试限制的实现
2020/07/26 Python
King Apparel官网:英国街头服饰品牌
2019/09/05 全球购物
IMPORT的选项IGNORE有什么作用?缺省是什么设置?
2015/09/17 面试题
一篇.NET面试题
2014/09/29 面试题
家长对学生的评语
2014/04/18 职场文书
公司捐款倡议书
2014/05/14 职场文书
学校与家长安全责任书
2014/07/23 职场文书
写给老婆的保证书
2015/02/27 职场文书
2019学子的答谢词范本!
2019/07/05 职场文书
Jsonp劫持学习
2021/04/01 PHP
python实现的人脸识别打卡系统
2021/05/08 Python