Saltar al contenido principal
@capgo/capacitor-transiciones UI & Sistema Fuente abierta

Transiciones plugin de Capacitor

Agregar transiciones de página estilo Ionic y gestos de retroceso de iOS sin interfaz de usuario de Ionic

Instalar

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

Demostración

Demostraciones de transiciones

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

Recursos de origen
Demo animada de transición de página de React que muestra navegación hacia adelante y hacia atrás en una caja estilo Capacitor
Flujo de transición de React

Guía

Cómo usar Transiciones en Capacitor

Probar en dispositivo

Descargar la aplicación Capgo, luego escanea el código QR code.

Vista previa del plugin de transiciones QR code

Usando @capgo/capacitor-transiciones

@capgo/capacitor-transitions Agrega transiciones de ruta estilo Ionic a aplicaciones Capacitor sin adoptar la interfaz de usuario de Ionic. Se ejecuta en la capa web, mantiene su router existente y puede habilitar automáticamente un gesto de retroceso de borde de iOS solo dentro de la Capacitor nativa iOS.

Instalar

npm install @capgo/capacitor-transitions

No hay paso de sincronización nativa porque el paquete no agrega plugin nativo code.

Registrar los elementos

import '@capgo/capacitor-transitions';

Envolver tus páginas

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

Conectarlo a un router

Establezca la dirección de la transición antes de actualizar su ruta normal:

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

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

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

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

El subcaminata de React incluye tipificaciones JSX para los elementos personalizados. Si TypeScript aún informa que cap-router-outlet no existe en JSX.IntrinsicElements, agrega este archivo:

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

Para Vite, Create React App y la mayoría de las aplicaciones React con webpack, mantenga ese archivo en src/ es suficiente. Para Next.js o configuraciones de TypeScript personalizadas, asegúrate de que esté incluido por tsconfig.json:

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

Habilite el deslizamiento hacia atrás

Utilice swipe-gesture="auto" para habilitar el gesto solo cuando Capacitor informa un tiempo de ejecución nativo de iOS:

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

También puedes forzarlo desde JavaScript:

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

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

El gesto sigue el dedo durante la transición, luego completa o cancela cuando el usuario libera. Agrega data-swipe-gesture-ignore a los botones, deslizadores o cajones que no deben iniciar el gesto de borde.

Utilice con navegación nativa

Instalar @capgo/native-navigation ¿Cuándo la capa nativa debe poseer el menú de navegación o la barra de pestañas?

npm install @capgo/native-navigation
npx cap sync

Configura el navegador nativo, luego mantén las transiciones enfocadas en las páginas de 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' },
  });
}

Usar cap-content Para el cuerpo animado de la página y las variables CSS de navegación nativa para los recortes:

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

No duplique la barra de navegación nativa como un encabezado web móvil. @capgo/native-navigation mantiene la barra nativa; @capgo/capacitor-transitions animar el contenido de la página debajo de ella.

Referencia completa

Continúa desde @capgo/capacitor-transiciones

Si estás utilizando Usando @capgo/capacitor-transiciones Para planificar el comportamiento de medios y interfaz nativos, conecta con @capgo/capacitor-transiciones para el detalle de implementación en @capgo/capacitor-transiciones, Getting Started para el detalle de implementación en Inicio, Usando @capgo/capacitor-actividades-en-vivo para la capacidad nativa en Usando @capgo/capacitor-actividades-en-vivo, @capgo/capacitor-actividades-en-vivo para el detalle de implementación en @capgo/capacitor-actividades-en-vivo, y Usando @capgo/capacitor-reproductor-de-videos para la capacidad nativa en Usando @capgo/capacitor-reproductor-de-videos.

FAQ

FAQ de la transición de plugins

Cómo instalo la transición de plugins en una aplicación Capacitor?

Ejecuta &quot;bun add @capgo/capacitor-transiciones&quot; (o &quot;npm install @capgo/capacitor-transiciones&quot;), luego ejecuta &quot;bunx cap sync&quot; para que los proyectos iOS y Android capturen la code nativa. Importa desde &quot;@capgo/capacitor-transiciones&quot; en tu aplicación code.

¿Funciona @capgo/capacitor-transiciones con React, Vue y Angular?

Sí. Transiciones es un paquete Capacitor, por lo que funciona con cualquier framework web que se ejecute dentro de Capacitor, incluyendo Ionic, React, Vue, Angular, Svelte y JavaScript puro.

¿Qué versión de Capacitor admite @capgo/capacitor-transiciones?

Los plugins Capgo siguen la versión mayor de Capacitor: utiliza la versión mayor del plugin que coincida con la versión mayor de Capacitor (por ejemplo, plugin v8 con Capacitor 8). La tabla de compatibilidad en el README del GitHub lista las versiones mantenidas.

¿Es gratuita y de código abierto @capgo/capacitor-transiciones?

Sí. El código code es público en GitHub en https://github.com/Cap-go/capacitor-transiciones/ y el paquete es gratuito para instalar desde npm. Se aceptan informes de errores y solicitudes de cambios.

Puedo actualizar code que utiliza Transiciones sin una revisión de la Tienda de Aplicaciones?

Instalar o actualizar el complemento cambia el code nativo, por lo que necesita una nueva compilación de la tienda. Después de eso, los cambios en JavaScript, HTML y CSS que llaman al complemento pueden enviar con actualizaciones Capgo en vivo de inmediato.

Envía cambios de Transiciones sin esperar la revisión de la aplicación

Una vez que el plugin esté en tu tienda de construcción, Capgo actualizaciones en vivo envían los cambios de JavaScript, HTML y CSS a los usuarios en minutos.

Inicia con Capgo