Angular Animation: отступ не анимируется с высотой 0->*
Я написал анимацию ящика с Angular. Выглядит так:
transition(':enter', [
style({height: '0', opacity: 0}),
group([
animate(300, style({height: '*'})),
animate('300ms ease-in-out', style({'opacity': '1'}))
])
]) ,
transition(':leave', [
style({height: '*', opacity: 1}),
group([
animate(300, style({height: 0})),
animate('300ms ease-in-out', style({'opacity': '0'}))
] )
])
Мой основной div (к которому привязана эта анимация) также имеет отступ (20 пикселей для всех 4 направлений).
Проблема: как только div становится видимым (через *ngIf), моя анимация высоты начинает работать. Но заполнение элемента сразу же там. Остальные будут анимированы. Так что он имеет мерцающий эффект в начале анимации.
Как я могу также получить отступы для анимации? Или я должен изменить что-нибудь еще?
1 ответ
Для достижения плавной анимации на высоте div
Вы также должны оживить padding-top
а также padding-bottom
свойства:
transition(':enter', [
style({height: '0', opacity: 0, 'padding-top': '0', 'padding-bottom': '0'}),
group([
animate(300, style({height: '*', 'padding-top': '*', 'padding-bottom': '*'})),
animate('300ms ease-in-out', style({'opacity': '1'}))
])
]) ,
transition(':leave', [
style({height: '*', opacity: 1, 'padding-top': '*', 'padding-bottom': '*'}),
group([
animate(300, style({height: 0, 'padding-top': 0, 'padding-bottom': 0})),
animate('300ms ease-in-out', style({'opacity': '0'}))
] )
])