Angular2 *ngFor animation of pushed away elements

前端 未结 1 1882
野的像风
野的像风 2021-02-04 07:05

I\'ve seen many animation tutorials for the entering or leaving elements (\"New element\" on the image below), but the rest of elements (Element 1 and 2), that are pushed apart

1条回答
  •  粉色の甜心
    2021-02-04 07:33

    You can use angular2 animation API to achieve it.

    Plunker Example

    @Component({
      selector: 'my-app',
      template: `
         
    {{ item.name }}
    `, animations: [ trigger('anim', [ transition('* => void', [ style({ height: '*', opacity: '1', transform: 'translateX(0)', 'box-shadow': '0 1px 4px 0 rgba(0, 0, 0, 0.3)'}), sequence([ animate(".25s ease", style({ height: '*', opacity: '.2', transform: 'translateX(20px)', 'box-shadow': 'none' })), animate(".1s ease", style({ height: '0', opacity: 0, transform: 'translateX(20px)', 'box-shadow': 'none' })) ]) ]), transition('void => active', [ style({ height: '0', opacity: '0', transform: 'translateX(20px)', 'box-shadow': 'none' }), sequence([ animate(".1s ease", style({ height: '*', opacity: '.2', transform: 'translateX(20px)', 'box-shadow': 'none' })), animate(".35s ease", style({ height: '*', opacity: 1, transform: 'translateX(0)', 'box-shadow': '0 1px 4px 0 rgba(0, 0, 0, 0.3)' })) ]) ]) ]) ] }) export class AppComponent { items: any[] = [ { name: 'Element 1' }, { name: 'Element 2' } ]; push() { this.items.splice(1, 0, { name: 'New element', state: 'active' }); } remove(index) { this.items.splice(index, 1); } }

    Don't forget to import BrowserAnimationsModule

    0 讨论(0)
提交回复
热议问题