Lebih cepat ke konten utama
@capgo/capacitor-pindai 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

Aliran router React yang menampilkan transisi halaman iOS-style Capacitor sebagai demo animasi WebP.

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

Petunjuk

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 menerima UI Ionic. Ini berjalan di lapisan web, menjaga router yang ada, dan dapat mengaktifkan secara otomatis gestur gesek samping iOS hanya di dalam Capacitor iOS native.

Pasang

npm install @capgo/capacitor-transitions

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

Daftarkan elemen-elemen

import '@capgo/capacitor-transitions';

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

Hubungkan ke router

Atur arah transisi sebelum Anda memperbarui rute 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-elemen kustom. Jika TypeScript masih melaporkan bahwa cap-router-outlet tidak ada pada JSX.IntrinsicElementsTambahkan 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/ sudah cukup. Untuk Next.js atau pengaturan TypeScript kustom, pastikan file tersebut dimasukkan oleh tsconfig.json:

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

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

Kamu juga bisa 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 melepaskannya. Tambahkan data-swipe-gesture-ignore ke tombol, slider, atau drawer yang tidak boleh memulai gerakan edge.

Menggunakan dengan navigasi native

Install @capgo/native-navigation ketika layer native harus menguasai navbar atau tabbar:

npm install @capgo/native-navigation
npx cap sync

Mengonfigurasi chrome native, kemudian tetapkan transisi fokus 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' },
  });
}

Menggunakan 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 kepala web yang bergerak. @capgo/native-navigation menjaga bar native; @capgo/capacitor-transitions animasi 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 asli di Menggunakan @capgo/capacitor-aktivitas-hidup, @capgo/capacitor-aktivitas-hidup untuk detail implementasi di @capgo/capacitor-aktivitas-hidup, dan Menggunakan @capgo/capacitor-pemain-video untuk kemampuan asli di Menggunakan @capgo/capacitor-pemain-video.

FAQ

Pertanyaan Umum Plugin Transisi

Bagaimana cara saya menginstal plugin Transisi di aplikasi Capacitor?

Jalankan &quot;bun add @capgo/capacitor-transisi&quot; (atau &quot;npm install @capgo/capacitor-transisi&quot;), kemudian jalankan &quot;bunx cap sync&quot; agar proyek iOS dan Android dapat menangkap native code. Impor dari &quot;@capgo/capacitor-transisi&quot; di aplikasi code Anda.

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

Ya. Transisi adalah paket Capacitor, sehingga berfungsi dengan semua framework web yang berjalan di dalam Capacitor, termasuk Ionic, React, Vue, Angular, Svelte, dan JavaScript biasa.

Versi Capacitor mana yang didukung oleh @capgo/capacitor-transisi?

Capgo plugin mengikuti versi utama Capacitor: gunakan versi plugin utama yang sesuai dengan versi utama Capacitor Anda (misalnya plugin v8 dengan Capacitor 8). Tabel kompatibilitas di README GitHub menampilkan versi yang dipertahankan.

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

Ya. Sumber code yang terbuka tersedia di GitHub di https://github.com/Cap-go/capacitor-transisi/ dan paketnya dapat diinstal secara gratis dari npm. Laporan bug dan permintaan pull selalu welcome.

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

Pemasangan atau pengupgrade plugin mengubah native code, sehingga memerlukan build aplikasi baru. Setelah itu, perubahan JavaScript, HTML, dan CSS yang memanggil plugin dapat dikirimkan secara langsung dengan Capgo live updates.

Ship Perubahan Transisi tanpa menunggu tinjauan aplikasi

Setelah plugin masuk dalam pembangunan toko Anda, Capgo pembaruan hidup memasukkan perubahan JavaScript, HTML, dan CSS Anda ke pengguna dalam menit.

Mulai dengan Capgo