[Angular] Two ways to create Angular Animation, using animation() or using state()
We have two blocks to show to difference ways to do animation in Angular:
<button (click)="toggleState()">Toggle</button> <div style="display: flex; align-items: center; align-content: space-between;"> <section [@heightZeroFull] *ngIf="state === 'active'" style="width: 200px; height: 200px; background: black;"> </section> <section [@heightState]="state" style="width: 200px; height: 200px; background: blue;"></section> </div>
heightZeroFull using animation(). heightState using state().
The way to control the state is:
state = 'active'; toggleState() { if (this.state === 'inactive') { this.state = 'active'; } else { this.state = 'inactive'; } }
In the component, we define 'animations':
@Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'], animations: [ heightZeroFull({duration: '500ms'}), heightState({height: '200px', duration: '500ms'}) ] })
We pass in params, so it is more configurable.
Animation.ts:
import {animation, style, animate, trigger, transition, useAnimation, state} from '@angular/animations'; /* * DSL * */ const heightStart = animation([ style({ height: 0 }), animate( "{{duration}} ease-in", style({ height: '*' }) ) ]); const heightEnd = animation([ animate( "{{duration}} ease-out", style({ height: 0 }) ) ]); /* * Transition * */ // Using animation export const heightZeroFull = (params) => { return trigger('heightZeroFull', [ transition(':enter', useAnimation(heightStart, {params})), transition(':leave', useAnimation(heightEnd, {params})) ]); }; // Using state export const heightState = (params) => { return trigger('heightState', [ state('inactive', style({ height: 0 })), state('active', style({ height: params.height })), transition('inactive => active', animate(`${params.duration} ease-in`)), transition('active => inactive', animate(`${params.duration} ease-out`)) ]); };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2016-07-27 [GIF] Shape Objects in GIF Loop Coder