用于进入组件前的加载动画


第一步:index.html 定义动画模板和样式


// 样式 <style type="text/css">.preloader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
overflow: hidden;
background: #49a9ee;
z-index: 9999;
transition: opacity .65s
}
.preloader-hidden {
display: none
}
.cs-loader {
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%
}
.cs-loader-inner {
transform: translateY(-50%);
top: 50%;
position: absolute;
width: 100%;
color: #fff;
text-align: center
}
.cs-loader-inner label {
font-size: 20px;
opacity: 0;
display: inline-block
}
@keyframes lol {
0% {
opacity: 0;
transform: translateX(-300px)
}
33% {
opacity: 1;
transform: translateX(0)
}
66% {
opacity: 1;
transform: translateX(0)
}
100% {
opacity: 0;
transform: translateX(300px)
}
}
.cs-loader-inner label:nth-child(6) {
animation: lol 2.5s infinite ease-in-out
}
.cs-loader-inner label:nth-child(5) {
animation: lol 2.5s .1s infinite ease-in-out
}
.cs-loader-inner label:nth-child(4) {
animation: lol 2.5s .2s infinite ease-in-out
}
.cs-loader-inner label:nth-child(3) {
animation: lol 2.5s .3s infinite ease-in-out
}
.cs-loader-inner label:nth-child(2) {
animation: lol 3.5s .4s infinite ease-in-out
}
.cs-loader-inner label:nth-child(1) {
animation: lol 2.5s .5s infinite ease-in-out
} </style> // 加载中DOM <div class="preloader">
<div class="cs-loader">
<div class="cs-loader-inner">
<label> O </label>
<label> R </label>
<label> A </label>
<label> N </label>
<label> C </label>
<label> L </label>
<label> E </label>
</div>
</div>
</div>

第二步:路由守卫,在进入路由满足条件时取消加载

  • 请求登陆认证接口,已登录 - 取消加载,进入路由;未登录 - 跳转至登录页,无需取消加载

export class GuardService implements CanActivate {
// 获取加载元素
loadElem = document.querySelector('.preloader'); constructor(private _http: HttpClient) { } canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
// 构造参数
const encodeTrans = encodeURIComponent('http://192.155.1.32:4200/');
const params = new HttpParams().set('callback', encodeTrans);
// 登陆认证
return this._http.get('http://113.23.11.2:3120/isLogin', {params, withCredentials: true})
.map((data: any) => {
if ( data.errcode === 2001) { // 未登录 - 重定向至登陆页面
window.location.href = data.msg;
return false;
} else if ( data.errcode === 2000) { // 登录成功 - 取消加载,进入路由
// 取消加载
const _loadThis = this;
setTimeout(function() {
if (_loadThis.loadElem) {
_loadThis.loadElem.className = 'preloader-hidden';
}
}, 100); // 进入当前路由
return true;
}
});
}
}

加载效果预览

Angular 页面初始化动画的更多相关文章

  1. Angular 全局页面切换动画 me-pageloading

    最近看了Codrops的一篇文章, 里面讲到了一个页面切换的效果, 详情点击此处. 看了这个效果感觉很赞, 觉得这个效果可以用在angular的页面切换中, 所以将这个效果移植到angular中, 做 ...

  2. ViewPager实现滑屏切换页面及动画效果(仿优酷客户端)

     找了许多实现该功能的例子,但效果都不很理想,于是自己结合网上的资源及自己的总结,整理了一下,发出来,供大家参考.这个是自己做的,仿优酷客户端的. 先看效果: ****************** ...

  3. angluarjs中页面初始化的时候会出现语法{{}}在页面中问题

    angluarjs中页面初始化的时候会出现语法{{}}在页面中问题,也即是页面闪烁问题.出现这个的原因是:由于页面或者组件需要渲染加载数据,浏览器和angluarjs渲染页面需要消耗一定的时间,虽然这 ...

  4. day105:Mofang:设置页面初始化&更新头像/上传头像&设置页面显示用户基本信息

    目录 1.设置页面初始化 2.更新头像 1.点击头像进入更新头像界面 2.更新头像页面初始化 3.更新头像页面CSS样式 4.头像上传来源选择:相册/相机 5.调用api提供的本地接口从相册/相机提取 ...

  5. day109:MoFang:好友列表显示&添加好友页面初始化&添加好友后端接口

    目录 1.好友列表 2.添加好友-前端 3.服务端提供添加好友的后端接口 1.好友列表 1.在用户中心页面添加好友列表点击入口 html/user.html,用户中心添加好友列表点击入口,代码: &l ...

  6. (原)android中的动画(三)之动画监听&页面切换动画

    1.动画也可以设置监听事件,例如在动画结束时需要执行某操作 把要执行的代码写在onAnimationEnd()回调方法中即可: anim.setAnimationListener(new Animat ...

  7. 小强的HTML5移动开发之路(50)——jquerymobile页面初始化过程

    为了方便说明和更加直观的展示jquerymobile的页面初始化过程以及各个事件的触发过程,我绘制了一幅流程图: 图中用红色框圈起来的是界面中的事件,測试代码例如以下: <!DOCTYPE ht ...

  8. HTML页面的动画的制作及性能

    原文:HTML页面的动画的制作及性能 WEB页面的动画的制作及性能 简介 目前WEB页面做动画的方式大的分两种1.JS间隔时间不断修改元素属性值,这也是CSS3出来前常用的做法,貌似也是唯一的做法.2 ...

  9. iOS页面切换动画实现方式。

    iOS页面切换动画实现方式. 1.使用UIView animateWithDuration:animations:completion方法 Java代码 [UIView animateWithDura ...

随机推荐

  1. d3.js 教程 模仿echarts柱状图

    由于最近工作不是很忙,隧由把之前的charts项目用d3.js重写的一下,其实d3.js文档很多,但是入门不是很难,可是想真的能做一个完成的,交互良好的图还是要下一番功夫的.今天在echarts找到了 ...

  2. P1357 花园 状压 矩阵快速幂

    题意 小L有一座环形花园,沿花园的顺时针方向,他把各个花圃编号为1~N(2<=N<=10^15).他的环形花园每天都会换一个新花样,但他的花园都不外乎一个规则,任意相邻M(2<=M& ...

  3. 【Offer】[60] 【n个骰子的点数】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 把n个骰子扔在地上,所有骰子朝上一面的点数之和为S.输入n,打印出s的所有可能的值出现的概率. [牛客网刷题地址]无 思路分析 递归的方 ...

  4. mybatis plus使用redis作为二级缓存

    建议缓存放到 service 层,你可以自定义自己的 BaseServiceImpl 重写注解父类方法,继承自己的实现.为了方便,这里我们将缓存放到mapper层.mybatis-plus整合redi ...

  5. Zabbix面试总结

    zabbix官方的一句话描述zabbix: 监视任何事情适用于任何IT基础架构,服务,应用程序和资源的解决方案 Monitor anythingSolutions for any kind of IT ...

  6. Web框架之Gin

    Gin是一个用Go语言编写的web框架.它是一个类似于martini但拥有更好性能的API框架, 由于使用了httprouter,速度提高了近40倍. 如果你是性能和高效的追求者, 你会爱上Gin. ...

  7. SVN中忘记上传自己写的工程,但是IP已经变了的解决方案

    苦于自己没有养成每天下班上传SVN的好习惯,第二天来又发现IP变了,只得把自己写的删掉,记录一下解决方法: 第一个红框中的svn://192.168.0.103/FH是前一天的IP链接地址,结果发现今 ...

  8. SpringCloud入门[转]

    原文链接 一.  网站的架构演变    网络架构由最开始的三层mvc渐渐演变.传统的三层架构后来在互联网公司让几百人几千人同时开发一个项目已经变得不可行,并且会产生代码冲突的问题.基于SOA面向服务开 ...

  9. mysql中查询字段为null或者不为null的sql语句怎么写?

    在mysql中,查询某字段为空时,切记不可用 = null,而是 is null,不为空则是 is not null select * from table where column is null; ...

  10. Vector和Arrarlist的异同;Hashtanle和HashMap的异同

    Vector和ArrayList的异同 实现原理相同,功能相同,可以互用 主要区别: Vector线程安全,ArrayList重速度,轻安全,线程非安全. 长度需要增长时,Vector默认增长一倍,A ...