¿Cómo activar animaciones en una aplicación ReactJS según la posición de desplazamiento?

En este artículo, aprenderemos cómo podemos activar la animación en un componente en función de su posición de desplazamiento mediante un paquete npm react-animated-css-onscroll.

En muchos sitios web, vemos que cuando nos desplazamos, se activan algunas animaciones. Esto proporciona una experiencia de usuario muy agradable.

Usando el módulo react-animated-css-onscroll, podemos activar la animación cada vez que nos desplazamos hacia abajo hasta el componente.

Características de reaccionar-animado-css-onscroll:

  • Módulo ligero.
  • No es necesario crear funciones para conocer la posición actual del componente en la página web.
  • Una amplia gama de animaciones está disponible.
  • Muy fácil de trabajar.

Requisito previo: 

Introducción e instalación react.js

Sintaxis:

<AnimatedOnScroll animationIn="">

</AnimatedOnScroll>

Envolvemos el componente dentro de estas etiquetas.

Aquí, en animación, pasamos nombres de animación que están disponibles. Algunos de los ejemplos son bounce, flash, pulse, rubberBand, shake y muchos más.

Creando la aplicación React:

Paso 1: cree la carpeta del proyecto de reacción, para eso abra la terminal y escriba el comando npm create-react-app nombre de la carpeta, si ya ha instalado create-react-app globalmente. Si no lo ha hecho, instale create-react -aplicar globalmente usando el comando npm -g create-react-app o puede instalarlo localmente con npm i create-react-app.

npm create-react-app project

Paso 2 : después de crear la carpeta de su proyecto (es decir, proyecto), muévase a ella usando el siguiente comando.

cd project

Instalación y adición de módulos:

Paso 1: para instalar el paquete, vaya a la terminal y ejecute el comando

npm i react-animate-on-scroll

Paso 2: Agregue el archivo Animated.css in index.html en la carpeta pública dentro de la etiqueta principal.

índice.html

<head>
    <link rel="stylesheet" href=
"https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.5.2/animate.min.css">
</head>

Estructura del proyecto:

Ejemplo 1: – En este ejemplo, estamos envolviendo un texto de encabezado simple dentro de AnimationOnScroll y pasando props animationIn como bounceInRight, lo que hará que el texto flote desde la derecha. Para usar AnimationOnScroll, lo estamos importando desde «react-animated-css-onScroll».

Además, estamos usando algunos estilos en línea para las etiquetas de encabezado y le agregamos márgenes para que podamos desplazarnos entre estos textos.

App.js

import {AnimatedOnScroll} from "react-animated-css-onscroll";
function App() {
  return (
    <div className="App">
          <h1 style={{marginTop:"500px"}}>Hey Geek!</h1>
          <AnimatedOnScroll animationIn="bounceInRight" 
        style={{marginTop:"80px",color:"green"}}>
             <h2>Welcome to Geeksforgeeks</h2>
          </AnimatedOnScroll>
      </div>
  );
}
  
export default App;

Paso para ejecutar la aplicación: ejecute la aplicación utilizando el siguiente comando desde el directorio raíz del proyecto.

npm start

Producción:

Aquí, podemos ver que cuando nos desplazamos hacia abajo, el texto «Bienvenido a Geeksforgeeks» se desliza desde el lado derecho.

Entendamos mejor con otro ejemplo. 

Ejemplo 2: en App.js vamos a crear una página de componentes que muestre el nombre de la animación que estamos usando. Agreguemos algunas de las animaciones que están disponibles y veamos cómo se ve el componente mientras se desplaza.

App.js

const Page = (props) => { // creating Component Page
  const {children,...rest} =props;
  return (
      <div {...rest} className="page">
        {children}
     </div>
 )
}
  
function App() {
   return (
      <div className="App">
      </div>
   );
}
  
export default App;

Ahora importaremos AnimatedOnScroll desde «react-animated-css-onscroll» en nuestro archivo App.js. 

Aquí, para cada componente de página, envolvemos la etiqueta AnimatedOnScroll y pasamos algunas de las animaciones disponibles como accesorios a animationIn, como rebote, jello, etc.

App.js

import {AnimatedOnScroll} from "react-animated-css-onscroll";
  
const Page = (props) => {
  const {children,...rest} =props;
  return (
  <div {...rest} className="page">
     {children}
    </div>
 )
}
  
function App() {
  return (
    <div className="App">
      <h1 align="center">Hey! Geek Welcome</h1>
      <h2 align="center">Let's see some effects</h2>
      <div id="start">
      <AnimatedOnScroll animationIn="fadeInDownBig">
      <Page children="fadeInDownBig"/>
      </AnimatedOnScroll>
      <AnimatedOnScroll animationIn="bounceInLeft">
      <Page children="bounceInLeft"/>
      </AnimatedOnScroll>
      <AnimatedOnScroll animationIn="wobble">
      <Page children="wobble"/>
      </AnimatedOnScroll>
      <AnimatedOnScroll animationIn="tada">
      <Page children="tada"/>
      </AnimatedOnScroll>
      <AnimatedOnScroll animationIn="jello">
      <Page children="jello"/>
      </AnimatedOnScroll>
      <AnimatedOnScroll animationIn="bounceInRight">
      <Page children="bounceInRight"/>
      </AnimatedOnScroll>
     <AnimatedOnScroll animationIn="bounce" duration="1000"> 
     <Page children="bounce"/>
     </AnimatedOnScroll>
       </div>
    </div>
  );
}
  
export default App;

Ahora agregaremos algo de estilo al componente de la página. Estamos haciendo que el color de fondo del componente Página hijo par sea verde y el color del texto sea blanco.

index.css

body {
  margin: 0;
  font-family: -apple-system, BlinkMacSystemFont, 
     'Segoe UI', 'Roboto', 'Oxygen','Ubuntu', 
     'Cantarell', 'Fira Sans', 'Droid Sans', 
     'Helvetica Neue',
    sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
  
code {
  font-family: source-code-pro, Menlo, 
    Monaco, Consolas, 'Courier New', monospace;
}
.page {
  height: 30px;
  width:300px;
  font-style: italic;
  margin-top: 20px;
  text-align: center;
  padding: 70px 0;
  font-size: 2rem;
  font-weight: 800;
}
  
#start {
  margin-top: 20px;
  display: flex;
  flex-direction: column;     
  justify-content: center; 
  align-items: center;    
}
#start div:nth-child(2n){
  background-color: rgb(6, 71, 6);
  color: white;
}

Paso para ejecutar la aplicación: ejecute la aplicación utilizando el siguiente comando desde el directorio raíz del proyecto.

npm start

Producción:

Referencia: https://www.npmjs.com/package/react-animation-on-scroll

Publicación traducida automáticamente

Artículo escrito por aniluom y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *