Saltare al contenuto principale
Indietro ai plugin
@capgo/capacitor-transizioni
Tutorial
@capgo/capacitor-transizioni

Transizioni

Aggiungi transizioni di pagina dello stile Ionic e gesti di swipe-back iOS senza l'interfaccia UI di Ionic

Demo

Demos di WebP animate

A React router flow showing iOS-style Capacitor page transitions as an animated WebP demo.

Risorse di origine
Demo di transizione di pagina React che mostra la navigazione avanti e indietro in un shell di stile Capacitor
Flusso di transizione React

Guida

Tutoriale sulle transizioni

Testare sul dispositivo

Scarica l'app Capgo, poi scansione il codice QR code.

Collegamento QR code di anteprima del plugin Transitions

Utilizzando @capgo/capacitor-transizioni

@capgo/capacitor-transitions Aggiunge le transizioni di rotta dello stile Ionic alle app Capacitor senza adottare l'interfaccia utente di Ionic. Esegue il rendering nel layer web, mantiene il router esistente e può abilitare automaticamente un gesto di ritorno a sinistra sul bordo dello schermo solo all'interno di Capacitor iOS nativo.

Installare

npm install @capgo/capacitor-transitions

Non esiste un passaggio di sincronizzazione nativa perché il pacchetto non aggiunge plugin nativo code.

Registra gli elementi

import '@capgo/capacitor-transitions';

Avvolgi le tue pagine

<cap-router-outlet platform="auto" swipe-gesture="auto">
  <cap-page>
    <cap-header slot="header">
      <h1>Inbox</h1>
    </cap-header>

    <cap-content slot="content">
      <button>Open message</button>
    </cap-content>

    <cap-footer slot="footer">
      <nav>Tabs</nav>
    </cap-footer>
  </cap-page>
</cap-router-outlet>

Connettilo a un router

Imposta la direzione di transizione prima dell'aggiornamento della tua rotta normale:

import { setDirection } from '@capgo/capacitor-transitions/react';

setDirection('forward');
router.push('/message/42');

setDirection('back');
router.back();

Esempio React

import { useEffect, useRef } from 'react';
import { useNavigate } from 'react-router-dom';
import { initTransitions, setDirection, setupPage, setupRouterOutlet } from '@capgo/capacitor-transitions/react';
import '@capgo/capacitor-transitions';

initTransitions({ platform: 'auto' });

export function AppShell() {
  const outletRef = useRef<HTMLElement>(null);

  useEffect(() => {
    if (!outletRef.current) return;
    setupRouterOutlet(outletRef.current, { platform: 'auto', swipeGesture: 'auto' });
  }, []);

  return <cap-router-outlet ref={outletRef}>{/* routes */}</cap-router-outlet>;
}

export function InboxPage() {
  const navigate = useNavigate();
  const pageRef = useRef<HTMLElement>(null);

  useEffect(() => {
    if (!pageRef.current) return;
    return setupPage(pageRef.current);
  }, []);

  return (
    <cap-page ref={pageRef}>
      <cap-header slot="header">
        <h1>Inbox</h1>
      </cap-header>
      <cap-content slot="content">
        <button
          onClick={() => {
            setDirection('forward');
            navigate('/message/42');
          }}
        >
          Open message
        </button>
      </cap-content>
    </cap-page>
  );
}

Il sottopercorso React include le tipizzazioni JSX per gli elementi personalizzati. Se TypeScript ancora segnala che cap-router-outlet non esiste su JSX.IntrinsicElements, aggiungi questo file:

// src/capgo-transitions.d.ts
import '@capgo/capacitor-transitions/react';

Per Vite, Create React App e la maggior parte degli app React con webpack, tenere quel file sotto src/ è sufficiente. Per Next.js o impostazioni TypeScript personalizzate, assicurati che sia incluso da tsconfig.json:

{
  "include": ["src", "src/capgo-transitions.d.ts"]
}

Abilita lo swipe back

Usa swipe-gesture="auto" abilitare il gesto solo quando Capacitor segnala un runtime nativo iOS:

<cap-router-outlet swipe-gesture="auto"></cap-router-outlet>

Puoi anche forzarlo da JavaScript:

const outlet = document.querySelector('cap-router-outlet');

outlet?.setSwipeGesture(true);
outlet?.setSwipeGesture(false);
outlet?.setSwipeGesture('auto');

Il gesto segue il dito durante la transizione, poi completa o annulla quando l'utente rilascia. Aggiungi data-swipe-gesture-ignore su pulsanti, slider o menu che non dovrebbero attivare il gesto di bordo.

Usa con navigazione nativa

Installa @capgo/native-navigation quando il layer nativo dovrebbe possedere il navbar o tabbar:

npm install @capgo/native-navigation
npx cap sync

Configura il chrome nativo, poi mantieni le transizioni focalizzate sulle pagine WebView:

import { NativeNavigation } from '@capgo/native-navigation';
import { setDirection } from '@capgo/capacitor-transitions/react';
import { router } from './router';

await NativeNavigation.configure({
  contentInsetMode: 'css',
});

await NativeNavigation.setNavbar({
  title: 'Inbox',
  backButton: { visible: false },
});

await NativeNavigation.addListener('navbarBack', () => {
  setDirection('back');
  router.back();
});

async function openMessage(id: string) {
  setDirection('forward');
  router.push(`/message/${id}`);

  await NativeNavigation.setNavbar({
    title: 'Message',
    backButton: { visible: true, title: 'Inbox' },
  });
}

Usa cap-content per il corpo della pagina animato e le variabili CSS di navigazione nativa per gli insetti:

<cap-router-outlet platform="auto" swipe-gesture="auto">
  <cap-page>
    <cap-content slot="content" fullscreen>
      <main class="native-page">Inbox content</main>
    </cap-content>
  </cap-page>
</cap-router-outlet>
.native-page {
  padding-top: var(--cap-native-navigation-top);
  padding-bottom: var(--cap-native-navigation-bottom);
}

Non duplicare il navbar nativo come un'intestazione web in movimento. @capgo/native-navigation mantiene la barra nativa; @capgo/capacitor-transitions animazione del contenuto della pagina sotto di essa.

Full Reference

Continua da Utilizzare @capgo/capacitor-transizioni

Se stai utilizzando Utilizzare @capgo/capacitor-transizioni per pianificare il comportamento dei media nativi e dell'interfaccia, connettilo con @capgo/capacitor-transizioni per i dettagli di implementazione in @capgo/capacitor-transizioni, Avvio Guidato per i dettagli di implementazione in Getting Started, Usando @capgo/capacitor-live-attivitàs per la capacità nativa in Usando @capgo/capacitor-live-attivitàs, @capgo/capacitor-live-attivitàs per i dettagli di implementazione in @capgo/capacitor-live-attivitàs, e Usando @capgo/capacitor-player-video per la capacità nativa in Usando @capgo/capacitor-player-video.