Pindah ke konten utama
@capgo/capacitor-transitions UI & Sistem Terbuka sumber

Transisi Plugin Capacitor

Tambahkan transisi halaman gaya Ionic dan sentuhan balik iOS tanpa UI Ionic

Pasang

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

Demo

Demos Transisi

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

Sumber aset
Demo animasi transisi halaman React yang menampilkan navigasi maju dan mundur dalam shell-style Capacitor
Aliran transisi React

Panduan

Bagaimana menggunakan Transisi di Capacitor

Uji coba di perangkat

Unduh aplikasi Capgo, kemudian scan kode QR code.

Tautan QR Pratinjau Plugin Transisi code

Menggunakan @capgo/capacitor-transisi

@capgo/capacitor-transitions Menambahkan transisi jalur Ionic ke aplikasi Capacitor tanpa mengadopsi antarmuka UI Ionic. Ini berjalan di layer web, menjaga router yang sudah ada, dan dapat mengaktifkan secara otomatis gestur geser kembali iOS di tepi hanya di dalam Capacitor iOS asli.

Install

npm install @capgo/capacitor-transitions

Tidak ada langkah sinkron native karena paket tidak menambahkan plugin native code.

Mendaftarkan elemen

import '@capgo/capacitor-transitions';

Mengelilingi halaman Anda

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

Menghubungkannya ke router

Set arah transisi sebelum Anda memperbarui jalur normal:

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

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

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

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

Subpath React termasuk tipe JSX untuk elemen kustom. Jika TypeScript masih melaporkan bahwa cap-router-outlet tidak ada pada JSX.IntrinsicElements, tambahkan file ini:

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

Untuk Vite, Create React App, dan sebagian besar aplikasi React webpack, menjaga file tersebut di src/ adalah cukup. Untuk Next.js atau pengaturan TypeScript kustom, pastikan termasuk dengan tsconfig.json:

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

Mengaktifkan swipe back

Menggunakan swipe-gesture="auto" untuk mengaktifkan gerakan hanya ketika Capacitor melaporkan runtime iOS native:

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

Menggunakan juga dapat memaksa dari JavaScript:

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

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

Gesang mengikuti jari selama transisi, kemudian selesai atau dibatalkan ketika pengguna melepaskan. Tambahkan data-swipe-gesture-ignore pada tombol, slider, atau drawer yang tidak ingin memulai gerakan edge.

Menggunakan dengan navigasi native

Pasang @capgo/native-navigation ketika layer native harus mengambil navbar atau tabbar:

npm install @capgo/native-navigation
npx cap sync

Konfigurasi chrome native, kemudian fokuskan transisi pada halaman 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' },
  });
}

Gunakan cap-content untuk tubuh halaman animasi dan variabel CSS native-navigasi untuk insets:

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

Jangan duplikat navbar native sebagai header web yang bergerak. @capgo/native-navigation menjaga bar native; @capgo/capacitor-transitions menganimasikan konten halaman di bawahnya.

Referensi Lengkap

Teruskan dari Menggunakan @capgo/capacitor-transisi

Jika Anda menggunakan Menggunakan @capgo/capacitor-transisi Untuk merencanakan perilaku media dan antarmuka native, hubungkannya dengan @capgo/capacitor-transisi untuk detail implementasi di @capgo/capacitor-transisi, Mulai Menggunakan untuk detail implementasi di Mulai, Menggunakan @capgo/capacitor-aktivitas-hidup untuk kemampuan native di Menggunakan @capgo/capacitor-aktivitas-hidup, @capgo/capacitor-aktivitas-hidup untuk detail implementasi di @capgo/capacitor-aktivitas-hidup, dan Penggunaan @capgo/capacitor-player video Penggunaan @capgo/capacitor-player video untuk kemampuan native.

FAQ

Pertanyaan dan Jawaban

Bagaimana cara saya menginstal plugin Transisi di aplikasi Capacitor?

Run &quot;bun add @capgo/capacitor-transitions&quot; (or &quot;npm install @capgo/capacitor-transitions&quot;), then run &quot;bunx cap sync&quot; so the iOS and Android projects pick up the native code. Import it from &quot;@capgo/capacitor-transitions&quot; in your app code.

Apakah @capgo/capacitor-transitions berfungsi dengan React, Vue, dan Angular?

Yes. Transitions is a Capacitor package, so it works with any web framework that runs inside Capacitor, including Ionic, React, Vue, Angular, Svelte and plain JavaScript.

Apa versi Capacitor yang didukung oleh @capgo/capacitor-transitions?

Capgo plugins follow Capacitor&#39;s major version: use the plugin major version that matches your Capacitor major version (for example plugin v8 with Capacitor 8). The compatibility table in the GitHub README lists the maintained versions.

Apakah @capgo/capacitor-transitions gratis dan terbuka sumber?

Yes. The source code is public on GitHub at https://github.com/Cap-go/capacitor-transitions/ and the package is free to install from npm. Bug reports and pull requests are welcome.

Apakah saya bisa memperbarui code yang menggunakan Transisi tanpa melalui tinjauan App Store?

Installing or upgrading the plugin changes native code, so it needs a new store build. After that, JavaScript, HTML and CSS changes that call the plugin can ship instantly with Capgo live updates.

Kirim perubahan Transisi tanpa menunggu tinjauan aplikasi

Setelah plugin masuk ke dalam toko Anda, Capgo memperbarui hidup secara langsung dan mendorong perubahan JavaScript, HTML, dan CSS Anda ke pengguna dalam menit.

Mulai dengan Capgo