Zum Hauptinhalt springen
@capgo/capacitor-transitions UI & System Open Source

Übergänge Capacitor Plugin

Ionic-typische Page-Transitions und iOS Edge-Swipe-Back-Gesten hinzufügen – ganz ohne Ionic UI

Installieren

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

Demo

Transitions-Demos

Ein React-Router-Flow, der iOS-typische Capacitor Page-Transitions als animierte WebP-Demo zeigt.

Quell-Assets
Animierte React-Demo für Page Transitions mit Vorwärts- und Rückwärtsnavigation in einem Capacitor-ähnlichen Shell-Framework
React-Transition-Flow

Anleitung

So verwendest du Transitions in Capacitor

Auf dem Gerät testen

Lade die Capgo App herunter und scanne den QR code.

QR code zur Transitions-Plugin-Vorschau

Verwendung von @capgo/capacitor-transitions

@capgo/capacitor-transitions fügt Capacitor-Apps Ionic-artige Route-Transitions hinzu, ohne die Ionic UI zu übernehmen. Es läuft im Web-Layer, behält deinen bestehenden Router bei und kann eine iOS-Edge-Swipe-Back-Geste automatisch nur in nativem Capacitor iOS aktivieren.

Installieren

npm install @capgo/capacitor-transitions

Es gibt keinen nativen Sync-Schritt, da das Paket kein natives Plugin code hinzufügt.

Elemente registrieren

import '@capgo/capacitor-transitions';

Seiten wrappen

<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>

Mit einem Router verbinden

Setze die Transition-Richtung vor deinem normalen Route-Update:

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

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

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

React-Beispiel

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>
  );
}

Der React-Subpfad enthält JSX-Typisierungen für die Custom Elements. Falls TypeScript weiterhin meldet, dass cap-router-outlet existiert nicht auf JSX.IntrinsicElements, füge diese Datei hinzu:

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

Für Vite, Create React App und die meisten webpack-React-Apps: das Behalten dieser Datei unter src/ reicht aus. Bei Next.js oder eigenen TypeScript-Setups stelle sicher, dass es von tsconfig.json:

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

Swipe-Back aktivieren

Nutzt swipe-gesture="auto" um die Geste nur zu aktivieren, wenn Capacitor eine native iOS-Runtime meldet:

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

Du kannst es auch über JavaScript erzwingen:

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

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

Die Geste folgt dem Finger während des Übergangs und wird beim Loslassen abgeschlossen oder abgebrochen. Füge data-swipe-gesture-ignore bei Buttons, Slidern oder Drawers, die die Edge-Geste nicht auslösen sollen.

Mit nativer Navigation verwenden

Installieren @capgo/native-navigation wenn die native Ebene die Navbar oder Tabbar steuern soll:

npm install @capgo/native-navigation
npx cap sync

Konfiguriere das native Chrome und beschränke die Transitions dann auf die WebView-Seiten:

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' },
  });
}

Nutzt cap-content für den animierten Page-Body und die CSS-Variablen für Insets der nativen Navigation:

<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);
}

Dupliziere die native Navbar nicht als beweglichen Web-Header. @capgo/native-navigation hält die Bar nativ; @capgo/capacitor-transitions animiert den Seiteninhalt darunter.

Vollständige Referenz

Weiter geht's mit Using @capgo/capacitor-transitions

Wenn du es nutzt Verwendung von @capgo/capacitor-transitions , um natives Media- und Interface-Verhalten zu planen, verbinde es mit @capgo/capacitor-transitions für die Implementierungsdetails in @capgo/capacitor-transitions, Erste Schritte für die Implementierungsdetails in Erste Schritte, @capgo/capacitor-live-activities verwenden für die native Funktion in „@capgo/capacitor-live-activities verwenden“, @capgo/capacitor-live-activities für die Implementierungsdetails in @capgo/capacitor-live-activities und Verwendung von @capgo/capacitor-video-player für die native Funktionalität in „Verwendung von @capgo/capacitor-video-player.“

FAQ

Transitions-Plugin FAQ

Wie installiere ich das Transitions-Plugin in einer Capacitor-App?

Führe &quot;bun add @capgo/capacitor-transitions&quot; (oder &quot;npm install @capgo/capacitor-transitions&quot;) aus und danach &quot;bunx cap sync&quot;, damit die iOS- und Android-Projekte das native code übernehmen. Importiere es in deiner App code aus &quot;@capgo/capacitor-transitions&quot;.

Funktioniert @capgo/capacitor-transitions mit React, Vue und Angular?

Ja. Transitions ist ein Capacitor-Package und funktioniert daher mit jedem Web-Framework, das in Capacitor läuft, einschließlich Ionic, React, Vue, Angular, Svelte und reinem JavaScript.

Welche Capacitor-Version unterstützt @capgo/capacitor-transitions?

Capgo Plugins folgen der Major-Version von Capacitor: Nutze die Plugin-Major-Version, die zu deiner Capacitor Major-Version passt (z. B. Plugin v8 bei Capacitor 8). Die Kompatibilitätstabelle im GitHub README listet die gepflegten Versionen auf.

Ist @capgo/capacitor-transitions kostenlos und Open Source?

Ja. Der code ist öffentlich auf GitHub unter https://github.com/Cap-go/capacitor-transitions/ einsehbar und das Package lässt sich kostenlos von npm installieren. Bug-Reports und Pull Requests sind willkommen.

Kann ich code, das Transitions nutzt, ohne App Store Review aktualisieren?

Die Installation oder ein Upgrade des Plugins ändert den nativen code, weshalb ein neuer Store-Build nötig ist. Danach können JavaScript-, HTML- und CSS-Änderungen, die das Plugin aufrufen, sofort per Capgo Live Updates ausgeliefert werden.

Transitions-Änderungen ausrollen, ohne auf den App-Review zu warten

Sobald das Plugin in deinem Store-Build ist, bringt Capgo mit Live-Updates deine JavaScript-, HTML- und CSS-Änderungen in Minuten zu den Nutzern.

Starte mit Capgo