angular - Hur man inaktiverar modalanimationer i Ionic 3?
Jag kör min Ionic-app på ett äldre system som inte hanterar animationer så bra, så jag försöker stänga av dem.
Jag har försökt att sätta opts när jag skapar modal till:
{
cssClass: 'plain-modal',
enableBackdropDismiss: false,
enterAnimation: 'no-animation',
leaveAnimation: 'no-animation',
showBackdrop: true
}
och det verkar som att no-animation inte har någon effekt här. Det tillämpas bokstavligen inte på något DOM-element. Eller gör det det?
När jag diagnostiserade märkte jag att Ionic tillämpar inline-CSS på .content när modalen håller på att öppnas eller stängas:
transform: translateX(100%);
will-change: transform, -webkit-transform;
transition-duration: 500ms;
transition-timing-function: cubic-bezier(0.36, 0.66, 0.04, 1);
så jag försökte åsidosätta dem med initial !important:
.show-page.plain-modal {
> ion-backdrop {
opacity: 0.5; // Nothing is displayed if I don't do this
}
> .modal-wrapper {
opacity: 1; // Again nothing is displayed if I don't do this
> .ion-page {
> .content {
// Override Ionic animation styles
transform: initial !important;
will-change: initial !important;
transition-duration: initial !important;
transition-timing-function: initial !important;
}
}
}
}
Nu visas modalen utan några animationer. Ett problem uppstår - när man stänger modalen med viewController.dismiss() händer ingenting. Att klicka upprepade gånger på stängningsknappen stänger dock modalen. Varför?
Svar #1
Om du behöver inaktivera alla animationer då:
app.module.ts
IonicModule.forRoot(MyApp, { animate: false })
Svar #2
För att inaktivera animationer på en specifik modal (Ionic 3):
inträdesanimation
this.modalCtrl.create(MyModal).present({ animate: false });
lämnaAnimation
this.viewCtrl.dismiss(null, null, { animate: false });
