Vue-Router 页面正在加载特效

如果你在使用 Vue.js 和 Vue-Router 开发单页面应用。因为每个页面都是一个 Vue 组件,你需要从服务器端请求数据,然后再让 Vue 引擎来渲染到页面上。

例如,这里有个用户个人资料的页面。

user.vue 文件如下:

<template><div><h2 v-text="user.name"></h2><p v-text="user.description"></p></div>
</template>
<script>export default{data(){return{user: {}}}}
</script>

在动画过渡期间向服务器请求数据,如下:

<script>
export default{data(){return{user: {}}},route: {data: function (transition) {this.getUserDetails(transition);}},methods: {getUserDetails(transition){this.$http.get('/users/' + this.$route.params.userName).then(function (response) {this.user = response.data;transition.next();});}}
}
</script>

这样,我们可以通过访问变量 $loadingRouteData。就可以实现隐藏所有的页面元素,显示某个正在加载的元素,比如某个 logo 等。

<div v-if="$loadingRouteData"><div class="white-widget grey-bg author-area"><div class="auth-info row"><div class="timeline-wrapper"><div class="timeline-item"><div class="animated-background"><div class="background-masker header-top"></div><div class="background-masker header-left"></div><div class="background-masker header-right"></div><div class="background-masker header-bottom"></div><div class="background-masker subheader-left"></div><div class="background-masker subheader-right"></div><div class="background-masker subheader-bottom"></div></div></div></div></div></div>
</div>
<div v-if="!$loadingRouteData"><div><h2 v-text="user.name"></h2><p v-text="user.description"></p></div>
</div>

比如,正在加载的样式代码如下:

.timeline-item {background: #fff;border-bottom: 1px solid #f2f2f2;padding: 25px;margin: 0 auto;
}@keyframes placeHolderShimmer{0%{background-position: -468px 0}100%{background-position: 468px 0}
}.animated-background {animation-duration: 1s;animation-fill-mode: forwards;animation-iteration-count: infinite;animation-name: placeHolderShimmer;animation-timing-function: linear;background: #f6f7f8;background: linear-gradient(to right, #eeeeee 8%, #dddddd 18%, #eeeeee 33%);background-size: 800px 104px;height: 40px;position: relative;
}.background-masker {background: #fff;position: absolute;
}/* Every thing below this is just positioning */.background-masker.header-top,
.background-masker.header-bottom,
.background-masker.subheader-bottom {top: 0;left: 40px;right: 0;height: 10px;
}.background-masker.header-left,
.background-masker.subheader-left,
.background-masker.header-right,
.background-masker.subheader-right {top: 10px;left: 40px;height: 8px;width: 10px;
}.background-masker.header-bottom {top: 18px;height: 6px;
}.background-masker.subheader-left,
.background-masker.subheader-right {top: 24px;height: 6px;
}.background-masker.header-right,
.background-masker.subheader-right {width: auto;left: 300px;right: 0;
}.background-masker.subheader-right {left: 230px;
}.background-masker.subheader-bottom {top: 30px;height: 10px;
}.background-masker.content-top,
.background-masker.content-second-line,
.background-masker.content-third-line,
.background-masker.content-second-end,
.background-masker.content-third-end,
.background-masker.content-first-end {top: 40px;left: 0;right: 0;height: 6px;
}.background-masker.content-top {height:20px;
}.background-masker.content-first-end,
.background-masker.content-second-end,
.background-masker.content-third-end{width: auto;left: 380px;right: 0;top: 60px;height: 8px;
}.background-masker.content-second-line  {top: 68px;
}.background-masker.content-second-end {left: 420px;top: 74px;
}.background-masker.content-third-line {top: 82px;
}.background-masker.content-third-end {left: 300px;top: 88px;
}

这样,你就有了 Vue-Router 的正在加载时候的效果了。你可以把以上代码写进到一个单独的组件内,在你用的地方引用它就行。

最后

这仅是个关于 Vue-Router 加载的组件的简单教程,实际上可以在许多地方来进行改进,

VueJobs.com

如果你是一位对 Vue.js 感兴趣的前端工程师,可去这个网上浏览下,了解下国外对 Vue 开发者的要求。

转载于:https://www.cnblogs.com/lvyongbo/p/6248252.html

Vue-Router 页面正在加载特效相关推荐

  1. Vue刷新页面重新加载

    Vue刷新页面重新加载 问题描述 在加载同一路由页面的时候,vue的页面默认是不刷新的,需要重新加载数据 解决方案 修改App.vue 在路由视图上添加一个变量isRouterAlive判断显示实现重 ...

  2. vue router按需加载

    1 import Vue from 'vue' 2 import Router from 'vue-router' 3 4 Vue.use(Router); 5 //按需加载,当渲染其他页面时才加载其 ...

  3. Angular\Vue解决页面数据加载时出现{{message}}闪烁的情况

    vue 使用v-cloak <style type="text/css">[v-cloak] { display: none } </style> < ...

  4. vue与外部html通信,VUE页面实现加载外部HTML方法

    VUE页面实现加载外部HTML方法 VUE页面实现加载外部HTML方法 前后端分离,后端提供了接口.但有一部分数据,比较产品说明文件,是存在其他的服务器上的.所以,在页面显示的时候,如果以页面内嵌的形 ...

  5. 【Vue】—解决页面图片加载抖动的问题

    [Vue]-解决页面图片加载抖动的问题 问题如下 解决办法 overflow:hidden; height:0; padding-bottom:*; // 其中*处填 图片的高宽百分比=高/宽*100 ...

  6. vue网页预加载页面_页面预加载效果

    vue网页预加载页面 View demo 查看演示Download Source 下载源 Today we want to show you how to create a very simple p ...

  7. jsp预加载转圈_30种CSS3炫酷页面预加载loading动画特效(推荐)

    这是一组效果非常炫酷的CSS3页面预加载loading动画特效.该特效共有30种不同的loading效果.所有的加载动画都是使用CSS3来完成,jQuery代码只是用于隐藏加载动画.当你点击页面的任何 ...

  8. vue调用接口获取后台数据_使用Vue实现调用接口加载页面初始数据

    使用Vue实现调用接口加载页面初始数据 闲着没事写了一个电影推荐的网页,很简单,使用的是Vue的实现. let vm = new Vue({ el:'#content', data:{ name:'' ...

  9. 好看的html登录遮罩提示加载中,jQuery炫酷页面预加载Loading特效插件

    fakeLoader.js是一款轻量级的 jQuery 炫酷页面预加载Loading特效插件.它能帮助我们创建一个全屏遮罩效果的旋转loading效果来模拟页面预加载过程. Bower安装 bower ...

  10. 【vue】用WOW.js+animate.css实现页面滚动加载元素动画

    一.场景 在很多的网站中,我们发现在滚动条滑动的时候一些元素显示出来的时候是有一些动画效果的,这样看起来页面更具有活力,增加用户体验.当然这些动画我们可以通过判断滚动条的位置或者判断元素距离可视窗口的 ...

最新文章

  1. struts2学习笔记--线程安全问题小结
  2. Facebook收购GrokStyle:布局AI零售
  3. java 静态类设置null_JAVA中对null进行强制类型转换(null可以强转为任意对象,并执行对象的静态方法)...
  4. java 简化判断_简化Java内存分析
  5. 多通道_人机交互界面的多通道RGB LED驱动设计
  6. 如何查看.net framework 版本
  7. 物联网流行协议-MQTT
  8. 格兰杰因果关系检验r语言_R语言 t检验t.test
  9. 《PHP程序员面试笔试宝典》——如何巧妙地回答面试官的问题?
  10. 微信小程序 3 岁:日活超 3 亿,交易额超 8000 亿
  11. iview“官方“实现的右键菜单
  12. vue3初探-工程化项目架构-笔记
  13. 个人简历小程序(附源码)
  14. 谷歌翻译插件对大陆停止服务及其解决方案
  15. 关于Cisco ASDM中配置STATIC NAT顺序的问题-By 年糕泰迪
  16. Creating schema using Saiku Schema Designer
  17. 导数的四则运算法则_胡昉祖《导数的概念》和《定积分》
  18. golang 源码分析之channel
  19. Python爬取链家的数据并绘制热力图
  20. 最新有效的微视频号视频下载丨vx视频号视频怎么免费下载?

热门文章

  1. 微服务与架构师的个人见解
  2. 复盘!12 小时清掉 3500 份生财日历
  3. eclipse对mysql进行增删改查_用eclipse编写的 能对MySQL数据库中表实现增删改查功能...
  4. #上位机开发大师之路# Qt5的环境搭建
  5. nosql数据库之Redis集群
  6. java面向对象(第一章课后作业)02
  7. 关于cocos2dx 3.x版本移植 dragonbones 4.5版本的解决方案
  8. Python 获取URL访问的HEAD头信息
  9. Linux 内核--任务0的运行(切换到用户模式)move_to_user_mode
  10. HDU 3966 Aragorn's Story(树链剖分)题解