angular - 当项目以角度 6 变化时淡入和淡出列表项目
问题描述
我有一个由类别列表控制的产品列表,因此当单击一个类别时,它会显示其中的所有产品
我想为这个列表设置动画,这样当点击类别时,每个列表项都会从 +50% 淡化到 0 交错
如果单击不同的类别,我希望当前产品列表再次淡出,但这次从 0 到 -50% 交错,然后新项目从 +50% 到 0 交错
我目前有这个
<ul @listInOut>
<li *ngFor="let product of products;">
//item
</li>
<ul>
trigger('listInOut', [
transition(':enter', [
query('li', [
style({ opacity: 0, transform: 'translateY(50%)' }),
stagger(100, [
animate('1s ease', style({ opacity: 1, transform: 'translateY(0)' }))
])
])
]),
transition(':leave', [
query('li', [
style({ opacity: 1, transform: 'translateY(0)' }),
stagger(100, [
animate('.5s ease', style({ opacity: 0, transform: 'translateY(-50%)' }))
])
])
])
])
第一次单击该类别时,动画可以正常工作,但单击其他类别根本不起作用
解决方案
我认为@listInOut
必须在包含*ngFor
循环的标签上。我试过把你的动画放在这样的组件中,它可以工作:
结果
下面是代码:
HTML
<div @listInOut *ngFor="let item of list" class="item">
<ul>
<li>{{ item }}</li>
</ul>
</div>
<button (click)="addItem()">Add Item</button>
app.component.ts
import { Component } from '@angular/core';
import { trigger,query, transition, style, stagger, animate } from '@angular/animations';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss'],
animations: [
trigger('listInOut', [
transition(':enter', [
query('li', [
style({ opacity: 0, transform: 'translateY(50%)' }),
stagger(100, [
animate('1s ease', style({ opacity: 1, transform: 'translateY(0)' }))
])
])
]),
transition(':leave', [
query('li', [
style({ opacity: 1, transform: 'translateY(0)' }),
stagger(100, [
animate('.5s ease', style({ opacity: 0, transform: 'translateY(-50%)' }))
])
])
])
])],
})
export class AppComponent {
list: string[] = [];
constructor() {}
addItem() {
this.list.push('item')
}
}
请记住还要导入以下模块客栈app.modules.ts
:BrowserAnimationsModule
推荐阅读
- ruby-on-rails - 简单的多态连接返回未知列
- angular - 如何使用角度材料下拉菜单制作选定的颜色或字体?
- gitlab - 在 Gitlab 中使用并行关键字减少构建管道时间?
- audio - 如何将 wav 转换为带有时间码的 mxf 文件?
- postgresql - 在 PostgreSQL 中按顺序调用最后一个值时出错
- authorization - 在 Blazor 中,如何实现需要服务器访问权限的客户端授权检查?
- ios - 转换嵌套字典以创建 String Swift
- java - 在 Android Studio 中找不到运行
- gatling - 有什么方法可以将 Gatling 报告的统计数据与之前的执行情况进行比较,并比较是否有任何显着的退化?
- jquery - 点击返回数据一次