有没有一种方法可以为不同的DOM元素使用相同的CSS动画?我已经创建了两个相同的动画,我正在寻找一种方法只写一次并注意我想要淡入和淡出哪个DOM元素。现在,我知道ViewChild和ElementRef,但我对实现还有点不清楚。此外,我正在尝试寻找一种避免ElementRef的实现,因为存在XSS安全问题。 https://angular.io/docs/ts/latest/api/core/index/ElementRef-class.html
这是我的HTML
这是我的CSS。
<div>
<md-checkbox (change)="toggleFadeOne()">Show</md-checkbox>
<div fxLayout="row" [@fadeOne]="fadeOne" class="oneToggle">
<p>
</p>
</div>
</div>
<div>
<md-checkbox (change)="toggleFadeTwo()">Show</md-checkbox>
<div fxLayout="row" [@fadeTwo]="fadeTwo" class="twoToggle">
<p>
</p>
</div>
这是我的CSS。
.oneToggle, .twoToggle {//initial style for el, instead of void
opacity: 0;
visibility: hidden;
}
这是我的TypeScript
@Component({
selector : 'c-select-composite-config-dialog',
templateUrl: './page.html',
styleUrls: ['./style.css'],
animations: [
trigger('fadeOne', [
state('in', style({
'opacity' : '1', 'visibility' : 'visible'
})),
state('out', style({
'opacity' : '0', 'visibility' : 'hidden'
})),
transition('* => *', animate(500))
]),
trigger('fadeTwo', [
state('in', style({
'opacity' : '1', 'visibility' : 'visible'
})),
state('out', style({
'opacity' : '0', 'visibility' : 'hidden'
})),
transition('* => *', animate(500))
])
]
})
export class MyComponent {
private fadeOne : string;
private fadeTwo : string;
private toggleFadeOne() {
if(this.fadeOne === 'out' || this.fadeOne === undefined) {
this.fadeOne = 'in';
} else {
this.fadeOne = 'out'
}
}
private toggleFadeTwo() {
if(this.fadeTwo === 'out' || this.fadeTwo === undefined) {
this.fadeTwo = 'in';
} else {
this.fadeTwo = 'out'
}
}
...
}