Salta al contenuto principale
@capgo/capacitor-transitions UI e sistema Open source

Transizioni Plugin Capacitor

Aggiungi transizioni di pagina in stile Ionic e gesti di swipe-back su iOS senza Ionic UI

Installa

bun add @capgo/capacitor-transitions bunx cap sync
npm, pnpm o yarn
  • npm install @capgo/capacitor-transitions
  • pnpm add @capgo/capacitor-transitions
  • yarn add @capgo/capacitor-transitions

Demo

Demo delle transizioni

Flusso di routing React che mostra transizioni di pagina in stile iOS Capacitor come demo WebP animata.

Asset sorgente
Demo di transizioni animate tra pagine React con navigazione avanti e indietro in una shell in stile Capacitor
Flusso di transizione React

Guida

Come usare le Transitions in Capacitor

Testa sul dispositivo

Scarica l'app Capgo, poi scansiona il QR code.

QR code di anteprima del plugin Transitions

Uso di @capgo/capacitor-transitions

@capgo/capacitor-transitions aggiunge transizioni di route in stile Ionic alle app Capacitor senza adottare la UI di Ionic. Gira nel web layer, mantiene il tuo router esistente e può abilitare automaticamente il gesto edge swipe-back su iOS solo dentro Capacitor iOS nativo.

Installa

npm install @capgo/capacitor-transitions

Non serve alcun passaggio di sync nativo perché il pacchetto non aggiunge plugin nativi 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>

Collegalo a un router

Imposta la direzione della transizione prima del normale aggiornamento della route:

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 subpath React include le tipizzazioni JSX per i custom elements. Se TypeScript segnala ancora 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 delle app React con webpack, tieni quel file in src/ è sufficiente. Per Next.js o setup TypeScript personalizzati, assicurati che sia incluso da tsconfig.json:

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

Abilita lo swipe back

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

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

Puoi forzarlo anche 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 si completa o si annulla al rilascio. Aggiungi data-swipe-gesture-ignore su bottoni, slider o drawer che non devono attivare il gesto dal bordo.

Usa con la navigazione nativa

Installa @capgo/native-navigation quando il layer nativo deve gestire la navbar o la tabbar:

npm install @capgo/native-navigation
npx cap sync

Configura il chrome nativo, poi concentra le transizioni sulle pagine della 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 pagina animato e le variabili CSS native-navigation per gli inset:

<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 la navbar nativa come un header web in movimento. @capgo/native-navigation mantiene la barra nativa; @capgo/capacitor-transitions anima il contenuto della pagina sottostante.

Riferimento completo

Continua da Uso di @capgo/capacitor-transitions

Se stai usando Uso di @capgo/capacitor-transitions per pianificare il comportamento dei media nativi e dell'interfaccia, collegalo a @capgo/capacitor-transitions per i dettagli dell'implementazione in @capgo/capacitor-transitions, Per iniziare per i dettagli di implementazione nella guida introduttiva, Uso di @capgo/capacitor-live-activities per la funzionalità nativa nella pagina Uso di @capgo/capacitor-live-activities, @capgo/capacitor-live-activities per i dettagli di implementazione in @capgo/capacitor-live-activities, e Uso di @capgo/capacitor-video-player per la funzionalità nativa in Usare @capgo/capacitor-video-player.

FAQ

FAQ del plugin Transitions

Come installo il plugin Transitions in un'app Capacitor?

Esegui "bun add @capgo/capacitor-transitions" (o "npm install @capgo/capacitor-transitions"), poi lancia "bunx cap sync" così i progetti iOS e Android rilevano il code nativo. Importalo da "@capgo/capacitor-transitions" nel code della tua app.

@capgo/capacitor-transitions funziona con React, Vue e Angular?

Sì. Transitions è un pacchetto Capacitor, quindi funziona con qualsiasi framework web che gira in Capacitor, inclusi Ionic, React, Vue, Angular, Svelte e JavaScript puro.

Quale versione di Capacitor supporta @capgo/capacitor-transitions?

I plugin Capgo seguono la major version di Capacitor: usa la major version del plugin che corrisponde alla tua major version di Capacitor (ad esempio plugin v8 con Capacitor 8). La tabella di compatibilità nel README di GitHub elenca le versioni mantenute.

@capgo/capacitor-transitions è gratuito e open source?

Sì. Il codice sorgente code è pubblico su GitHub all'indirizzo https://github.com/Cap-go/capacitor-transitions/ e il pacchetto si installa gratis da npm. Bug report e pull request sono benvenuti.

Posso aggiornare code che usa Transitions senza la revisione dell'App Store?

Installare o aggiornare il plugin modifica il code nativo, quindi serve una nuova build per lo store. Dopo, le modifiche a JavaScript, HTML e CSS che chiamano il plugin possono essere rilasciate subito con le live updates di Capgo.

Pubblica modifiche alle Transitions senza aspettare la revisione dell'app

Una volta incluso il plugin nel tuo store build, Capgo invia le modifiche a JavaScript, HTML e CSS tramite live updates in pochi minuti.

Inizia con Capgo