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 相关文章推荐
纯js实现背景图片切换效果代码
Nov 14 Javascript
结合JQ1.9通过js正则判断各种浏览器版本的方法
Dec 30 Javascript
jQuery+CSS实现滑动的标签分栏切换效果
Dec 17 Javascript
基于Node.js实现nodemailer邮件发送
Jan 26 Javascript
Boostrap基础教程之JavaScript插件篇
Sep 08 Javascript
js操作浏览器的参数方法
Jan 21 Javascript
node.js使用免费的阿里云ip查询获取ip所在地【推荐】
Sep 03 Javascript
基于vue-upload-component封装一个图片上传组件的示例
Oct 16 Javascript
微信小程序实现渐入渐出动画效果
Jun 13 Javascript
微信小程序 高德地图路线规划实现过程详解
Aug 05 Javascript
vue 导航锚点_点击平滑滚动,导航栏对应变化详解
Aug 10 Javascript
vue使用transition组件动画效果的实例代码
Jan 28 Vue.js
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模板技术[转]
2007/01/04 PHP
PHP 导出数据到淘宝助手CSV的方法分享
2010/02/27 PHP
smarty模板引擎之内建函数用法
2015/03/30 PHP
PHP随机数函数rand()与mt_rand()的讲解
2019/03/25 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
2019/04/15 PHP
jQuery 性能优化指南(2)
2009/05/21 Javascript
js计算页面刷新的次数
2009/07/20 Javascript
复制js对象方法(详解)
2013/07/08 Javascript
javascript中键盘事件用法实例分析
2015/01/30 Javascript
JavaScript模拟实现键盘打字效果
2015/06/29 Javascript
JavaScript开发者必备的10个Sublime Text插件
2016/02/27 Javascript
js实现小窗口拖拽效果
2016/12/03 Javascript
实现点击下箭头变上箭头来回切换的两种方法【推荐】
2016/12/14 Javascript
js随机生成一个验证码
2017/06/01 Javascript
原生JS实现图片网格式渐显、渐隐效果
2017/06/05 Javascript
Vue2.0 axios前后端登陆拦截器(实例讲解)
2017/10/27 Javascript
vue+springmvc导出excel数据的实现代码
2018/06/27 Javascript
微信小程序中转义字符的处理方法
2019/03/28 Javascript
使用js实现一个简单的滚动条过程解析
2019/09/10 Javascript
在weex中愉快的使用scss的方法步骤
2020/01/02 Javascript
Jquery滑动门/tab切换实现方法完整示例
2020/06/05 jQuery
使用PDB模式调试Python程序介绍
2015/04/05 Python
Python使用PDFMiner解析PDF代码实例
2017/03/27 Python
python中如何使用分步式进程计算详解
2019/03/22 Python
Python初学者常见错误详解
2019/07/02 Python
Python图片的横坐标汉字实例
2019/12/04 Python
深入了解Python装饰器的高级用法
2020/08/13 Python
python属于哪种语言
2020/08/16 Python
利用纯CSS3实现动态的自行车特效源码
2017/01/20 HTML / CSS
Html5 Canvas动画基础碰撞检测的实现
2018/12/06 HTML / CSS
学校安全工作制度
2014/01/19 职场文书
2014年幼儿园元旦活动方案
2014/02/13 职场文书
团员个人总结
2015/02/26 职场文书
python 统计代码耗时的几种方法分享
2021/04/02 Python
MySQL锁机制
2021/04/05 MySQL
python模块与C和C++动态库相互调用实现过程示例
2021/11/02 Python