Tutorial Completo: Uso de Componente ion-ripple-effect en Ionic con Personalización Completa Avanzado

El componente ion-ripple-effect se usa en Ionic para agregar un efecto de onda (ripple) en elementos interactivos como botones, listas, y cualquier otro componente donde quieras resaltar visualmente la interacción del usuario. Este efecto es especialmente útil para mejorar la experiencia de usuario en aplicaciones móviles y web. En este tutorial, personalizaremos completamente el efecto con CSS, utilizando un degradado de colores, y aseguraremos que funcione en todos los dispositivos y plataformas compatibles con Ionic.

En este tutorial aprenderás cómo utilizar el componente ion-ripple-effect de forma extensiva y variada, aplicando personalizaciones avanzadas con CSS, incluyendo degradados y transiciones únicas. Exploraremos cómo integrar el componente en botones, listas, íconos y otros elementos interactivos para maximizar la experiencia del usuario.

Paso 1: Configuración Inicial del Proyecto Ionic

Para comenzar, vamos a crear un proyecto básico de Ionic donde implementaremos el efecto ripple en diferentes componentes. Usa este comando para crear tu proyecto si aún no lo has hecho:

ionic start ripple-effect-demo blank --type=angular

Este comando crea un proyecto de Ionic en blanco con soporte para Angular. Puedes escoger otro nombre si lo prefieres.

Paso 2: Crear Varias Páginas para Ejemplos

A continuación, creamos páginas adicionales dentro de nuestro proyecto para explorar los diferentes usos del efecto ripple:

ionic generate page RippleButtons
ionic generate page RippleIcons
ionic generate page RippleLists

Esto genera tres páginas que nos permitirán aplicar el efecto ripple en botones, íconos y listas.

Paso 3: Integración Básica del ion-ripple-effect en Botones

Comencemos con la página RippleButtons. Abre el archivo ripple-buttons.page.html y añade este código:

<ion-header>
  <ion-toolbar>
    <ion-title>Ripple en Botones</ion-title>
  </ion-toolbar>
</ion-header>

<ion-content>
  <div class="ripple-button-container">
    <ion-button expand="block" class="custom-ripple-button">
      Botón Primario
      <ion-ripple-effect></ion-ripple-effect>
    </ion-button>

    <ion-button color="secondary" expand="block" class="custom-ripple-button">
      Botón Secundario
      <ion-ripple-effect></ion-ripple-effect>
    </ion-button>
  </div>
</ion-content>

Explicación:

  • Hemos añadido dos botones ion-button con diferentes colores y el componente ion-ripple-effect integrado en cada uno.
  • Puedes utilizar diferentes atributos en los botones como expand="block" para que ocupen el ancho completo de la pantalla.

Paso 4: Estilización Personalizada de Ripple en Botones

En el archivo ripple-buttons.page.scss, personalizaremos los estilos del efecto ripple. Añade este código:

.ripple-button-container {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: space-around;
  height: 100%;
}

.custom-ripple-button {
  position: relative;
  overflow: hidden;

  ion-ripple-effect {
    --background: radial-gradient(circle, rgba(0, 0, 255, 0.4), rgba(0, 255, 255, 0.8));
    --opacity: 0.7;
    --transition-duration: 0.4s;
  }
}

Explicación del CSS:

  • Usamos un degradado circular con un tono azul para el efecto ripple.
  • La opacidad y la duración de la transición se han ajustado para que el efecto sea más suave.

Paso 5: Efecto Ripple en Listas

Ahora, exploremos cómo aplicar el efecto ripple en listas interactivas. Abre el archivo ripple-lists.page.html y añade el siguiente código:

<ion-header>
  <ion-toolbar>
    <ion-title>Efecto Ripple en Listas</ion-title>
  </ion-toolbar>
</ion-header>

<ion-content>
  <ion-list>
    <ion-item class="custom-list-item">
      <ion-label>Elemento de lista 1</ion-label>
      <ion-ripple-effect></ion-ripple-effect>
    </ion-item>

    <ion-item class="custom-list-item">
      <ion-label>Elemento de lista 2</ion-label>
      <ion-ripple-effect></ion-ripple-effect>
    </ion-item>

    <ion-item class="custom-list-item">
      <ion-label>Elemento de lista 3</ion-label>
      <ion-ripple-effect></ion-ripple-effect>
    </ion-item>
  </ion-list>
</ion-content>

Explicación:

  • Hemos añadido un efecto ripple a cada ion-item de una lista. Este efecto se activa cuando el usuario hace clic en un ítem de la lista.

Paso 6: Estilización Personalizada de Ripple en Listas

En el archivo ripple-lists.page.scss, personalizamos los estilos de la lista:

.custom-list-item {
  position: relative;
  overflow: hidden;

  ion-ripple-effect {
    --background: radial-gradient(circle, rgba(255, 165, 0, 0.4), rgba(255, 69, 0, 0.7));
    --opacity: 0.5;
    --transition-duration: 0.3s;
  }
}

Paso 7: Efecto Ripple en Íconos

Abre el archivo ripple-icons.page.html y añade el siguiente código para aplicar el efecto ripple en íconos:

<ion-header>
  <ion-toolbar>
    <ion-title>Ripple en Íconos</ion-title>
  </ion-toolbar>
</ion-header>

<ion-content>
  <div class="icon-container">
    <ion-icon name="star" class="custom-ripple-icon"></ion-icon>
    <ion-icon name="heart" class="custom-ripple-icon"></ion-icon>
    <ion-icon name="thumbs-up" class="custom-ripple-icon"></ion-icon>
  </div>
</ion-content>

Explicación:

  • Añadimos varios íconos usando ion-icon y les aplicamos el efecto ripple.

Paso 8: Estilización de Ripple en Íconos

Personaliza los íconos en el archivo ripple-icons.page.scss:

.icon-container {
  display: flex;
  justify-content: space-around;
  align-items: center;
  height: 100%;
}

.custom-ripple-icon {
  font-size: 3rem;
  position: relative;
  overflow: hidden;

  ion-ripple-effect {
    --background: radial-gradient(circle, rgba(255, 20, 147, 0.4), rgba(255, 105, 180, 0.8));
    --opacity: 0.6;
    --transition-duration: 0.4s;
  }
}

Paso 9: Uso del Efecto Ripple en Combinación con Animaciones

Puedes combinar el ion-ripple-effect con animaciones en botones para crear una experiencia interactiva aún más inmersiva.

<ion-button class="animated-button">
  Animación + Ripple
  <ion-ripple-effect></ion-ripple-effect>
</ion-button>

Y en el SCSS:

.animated-button {
  ion-ripple-effect {
    animation: pulse 2s infinite;
  }

  @keyframes pulse {
    0% {
      transform: scale(1);
    }
    50% {
      transform: scale(1.1);
    }
    100% {
      transform: scale(1);
    }
  }
}

Paso 10: Aplicar Efectos Ripple Dinámicos (Opcional)

Es posible controlar dinámicamente las propiedades del efecto ripple utilizando propiedades de Ionic o Angular. Por ejemplo, puedes controlar el color o la opacidad del ripple en función de un valor en tu TypeScript.

export class RippleEffectPage {
  rippleColor = 'rgba(0,0,255,0.3)';
}

Paso 11-16: Otros Usos y Casos Específicos

otras personalizaciones adicionales: A continuación te agrego otras personalizaciones para un formulario de pago donde usamos un color con colores de degradado unido al ripple

Otros tutoriales populares

Espacio publicitario:

Scroll al inicio