angular2系列之路由转场动画的示例代码


Posted in Javascript onNovember 09, 2017

Angular2的动画系统赋予了制作各种动画效果的能力,致力于构建出与原生CSS动画性能相同的动画。

Angular2的动画主要是和@Component结合在了一起。

animations元数据属性在定义@Component装饰。就像template元数据属性!这样就可以让动画逻辑与其应用代码紧紧集成在一起,这让动画可以更容易的出发与控制。

一.在app.mudule.ts中引入:

import { BrowserAnimationsModule } from '@angular/platform-browser/animations';

并在@NgModule中的imports添加:

imports: [BrowserAnimationsModule],

二.创建文件定义名为animations.ts用来书写转场动画

import { animate, AnimationEntryMetadata, state, style, transition, trigger } from'@angular/core';
// Component transition animations
export const slideInDownAnimation: AnimationEntryMetadata =
// 动画触发器名称
trigger('routeAnimation', [
  state('*',
    style({
      opacity: 1,
      transform: 'translateX(0)'
    })
  ),
  transition(':enter', [
    style({
      opacity: 0,
      transform: 'translateX(-100%)'
    }),
    animate('0.2s ease-in')
  ]),
  transition(':leave', [
    animate('0.5s ease-out', style({
      opacity: 0,
      transform: 'translateY(100%)'
    }))
  ])
]);

三.在需要添加转场动画的页面操作

引入import {HostBinding } from '@angular/core';(如果引入过直接将HostBinding添加进去就好,不要重复引入,多嘴了...)

再引入你写好的动画模板:import { slideInDownAnimation } from '../animation';

在@Component中添加:animations:[slideInDownAnimation],

最后:

// 添加@HostBinding属性添加到类中以设置这个路由组件元素的动画和样式
  @HostBinding('@routeAnimation') routeAnimation = true;
  @HostBinding('style.display') display = 'block';
  @HostBinding('style.position') position = 'absolute';

四.至此你可以去浏览器看看效果了,如果没有错误

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript执行效率与性能提升方案
Dec 21 Javascript
通过JS自动隐藏手机浏览器的地址栏实现原理与代码
Jan 02 Javascript
js调试系列 控制台命令行API使用方法
Jun 18 Javascript
js通过iframe加载外部网页的实现代码
Apr 05 Javascript
封装获取dom元素的简单实例
Jul 08 Javascript
JS对HTML表格进行增删改操作
Aug 22 Javascript
Jquery组件easyUi实现表单验证示例
Aug 23 Javascript
JS中Swiper的使用和轮播图效果
Aug 11 Javascript
js字符限制(字符截取) 一个中文汉字算两个字符
Sep 12 Javascript
当vue路由变化时,改变导航栏的样式方法
Aug 22 Javascript
使用Vue.set()方法实现响应式修改数组数据步骤
Nov 09 Javascript
jquery实现图片放大镜效果
Dec 23 jQuery
使用ef6创建oracle数据库的实体模型遇到的问题及解决方案
Nov 09 #Javascript
基于vue配置axios的方法步骤
Nov 09 #Javascript
微信小程序倒计时功能实现代码
Nov 09 #Javascript
js与jQuery实现的用户注册协议倒计时功能实例【三种方法】
Nov 09 #jQuery
微信小程序获取手机号授权用户登录功能
Nov 09 #Javascript
jQuery.Sumoselect插件实现下拉复选框效果
Nov 09 #jQuery
webpack中CommonsChunkPlugin详细教程(小结)
Nov 09 #Javascript
You might like
一些花式咖啡的配方
2021/03/03 冲泡冲煮
PHP中基于ts与nts版本- vc6和vc9编译版本的区别详解
2013/04/26 PHP
关于js和php对url编码的处理方法
2014/03/04 PHP
详解PHP+AJAX无刷新分页实现方法
2015/11/03 PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
2016/02/22 PHP
PHP中spl_autoload_register()函数用法实例详解
2016/07/18 PHP
PHP实现接收二进制流转换成图片的方法
2017/01/10 PHP
解决tp5在nginx下修改配置访问的问题
2019/10/16 PHP
Laravel5.1 框架Middleware中间件基本用法实例分析
2020/01/04 PHP
JavaScript 创建对象
2009/07/17 Javascript
锋利的jQuery 要点归纳(一) jQuery选择器
2010/03/21 Javascript
jQuery获取Select选择的Text和Value(详细汇总)
2013/01/25 Javascript
如何在父窗口中得知window.open()出的子窗口关闭事件
2013/10/15 Javascript
纯js分页代码(简洁实用)
2013/11/05 Javascript
解决JS中乘法的浮点错误的方法
2014/01/03 Javascript
javascipt:filter过滤介绍及使用
2014/09/10 Javascript
jquery实现的蓝色二级导航条效果代码
2015/08/24 Javascript
JavaScript中的继承之类继承
2016/05/01 Javascript
Vue.js每天必学之表单控件绑定
2016/09/05 Javascript
AngularJS通过$location获取及改变当前页面的URL
2016/09/23 Javascript
layer弹窗插件操作方法详解
2017/05/19 Javascript
vue组件的写法汇总
2018/04/12 Javascript
详解小程序云开发数据库
2019/05/20 Javascript
node.js实现带进度条的多文件上传
2020/03/27 Javascript
[01:33]PWL开团时刻DAY2-开雾与反开雾
2020/10/31 DOTA
[01:33:25]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第一场 1月24日
2021/03/11 DOTA
对sklearn的使用之数据集的拆分与训练详解(python3.6)
2018/12/14 Python
python下PyGame的下载与安装过程及遇到问题
2019/08/04 Python
Python @property原理解析和用法实例
2020/02/11 Python
HTML5 声明兼容IE的写法
2011/05/16 HTML / CSS
南非领先的在线旅行社:Travelstart南非
2016/09/04 全球购物
毕业设计计划书
2014/01/09 职场文书
妇联主席先进事迹
2014/05/18 职场文书
预备党员个人总结
2015/02/14 职场文书
拔河比赛新闻稿
2015/07/17 职场文书
小学毕业教师寄语
2019/06/21 职场文书