cordova 如何使离子页面/模态动画从右侧滑入

enyaitl3  于 2023-03-08  发布在  其他
关注(0)|答案(3)|浏览(161)

我做了一些调查,我看到的是这样的:
一个cordova插件,以获得本机页面转换,但这是只有在移动的. https://ionicframework.com/docs/native/native-page-transitions/
如果我想让这个工作在移动的应用程序和网络什么是最好的选择遵循这里?
我想做的是把我的page和modal从右边滑到page/modal的位置。
仅仅使用css动画就能做到吗?

oxosxuxt

oxosxuxt1#

您可以调整离子配置以实现此目的:

import { IonicModule } from 'ionic-angular';

@NgModule({
  ...
  imports: [
    BrowserModule,
    IonicModule.forRoot(MyApp, {
       modalEnter: 'modal-slide-in',
       modalLeave: 'modal-slide-out',
       pageTransition: 'ios-transition'
      }
    }, {}
  )],
  ...
})

参见https://ionicframework.com/docs/api/config/Config/作为参考。
对于单页过渡,您可以用途:

import { Component } from '@angular/core';
import { NavController, ModalController } from 'ionic-angular';

@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {

  constructor(public navCtrl: NavController, public modalCtrl: ModalController) {

  }

  openModal() {
    const modal = this.modalCtrl.create('ContactPage', {}, { enterAnimation: 'modal-slide-in', leaveAnimation: 'modal-slide-out' });
    modal.present();
  }

  openPage() {
    this.navCtrl.push('ContactPage', {}, { animation: 'ios-transition' });
  }

}

注意:没有内置的模式转换可以从右侧滑入,但您可以自己定义,如本论坛帖子所述:https://forum.ionicframework.com/t/adding-custom-transitions-custom-modal-transition/75924/3

ubbxdtey

ubbxdtey2#

在app.module.ts中,导入以下内容:

import { iosTransitionAnimation } from '@ionic/core/dist/collection/utils/transition/ios.transition';

之后,添加如下内容:

imports: [
    ...
    BrowserModule,
    IonicModule.forRoot({
        navAnimation:iosTransitionAnimation
    }),
    ...
],

它在离子4中工作。
也许能帮到别人!

k10s72fa

k10s72fa3#

如果使用的是Ionic 6,则可以使用

enterAnimation = (baseEl: HTMLElement) => {
const root = baseEl.shadowRoot;
const backdropAnimation = this.animationCtrl
  .create()
  .addElement(root.querySelector('ion-backdrop')!)
  .fromTo('opacity', '0.01', 'var(--backdrop-opacity)');

  const wrapperAnimation = this.animationCtrl
  .create()
  .addElement(root.querySelector('.modal-wrapper')!)
  .keyframes([
    { offset: 0, opacity: '0', transform: 'translateX(-100%)' },
    { offset: 1, opacity: '0.99', transform: 'translateX(0)' },
  ]);

return this.animationCtrl
  .create()
  .addElement(baseEl)
  .easing('ease-out')
  .duration(500)
  .addAnimation([backdropAnimation, wrapperAnimation]);

 };

  leaveAnimation = (baseEl: HTMLElement) => {
    return this.enterAnimation(baseEl).direction('reverse');
  };

相关问题