Podemos crear un dado usando reaccionar con CSS simple y una biblioteca de movimiento de marcos para animarlo usando el siguiente enfoque:
requisitos previos:
- Conocimiento de JavaScript (ES6)
- Conocimientos de HTML/CSS.
- Conocimientos básicos de ReactJS.
Creación de la aplicación React e instalación del módulo:
Paso 1: Cree una aplicación React usando el siguiente comando:
npx create-react-app rolling-die
Paso 2: después de crear la carpeta de su proyecto, es decir, rodar , muévase a ella con el siguiente comando:
cd rolling-die
Paso 3: después de crear la aplicación ReactJS, instale los módulos framer -motion con el siguiente comando:
$ npm install framer-motion
App.js: ahora escriba el siguiente código en el archivo App.js. Aquí, la aplicación es nuestro componente predeterminado donde hemos escrito nuestro código.
Ejemplo:
App.js
import React, { useState, useEffect } from "react"; import { motion } from "framer-motion"; import "./App.css"; // Animation properties for the container // which is the face of the die const container = { hidden: { opacity: 1, scale: 0 }, visible: { scale: [0, 1], opacity: 1, transition: { staggerChildren: 0.5, delayChildren: 0.5, }, }, }; // Animation properties for the disc(s) that // denote(s) the number player gets after rolling the die const discsOnTheDie = { hidden: { y: 20, opacity: 0 }, visible: { y: 0, opacity: [0.2, 1], }, }; // Utility function to get the random number // from 1 t0 6 just like a physical die const rollTheDie = () => { return Math.floor(Math.random() * 7 + 1); }; const App = () => { // Managing state of randomSize aka number on the die // using useState hook const [randomSize, setRandomSize] = useState(rollTheDie()); const discNumbers = new Array(randomSize); // Assigning 0 to randomSize to the array for (var i = 0; i < discNumbers.length; i++) { discNumbers[i] = i; } useEffect(() => { // This will fire on every change of randomSize setRandomSize(rollTheDie()); }, [randomSize]); return ( <div> <motion.ul className="square-container" variants={container} initial="hidden" animate="visible" > {/* Mapping javascript array discNumbers */} {discNumbers.map((index) => ( <motion.li key={index} className="disc" variants={discsOnTheDie} /> ))} </motion.ul> <button onClick={() => { setRandomSize(); }} > {" "} ROLL{" "} </button> </div> ); }; export default App;
App.css
body { overflow: hidden; width: 100vw; height: 100vh; display: flex; justify-content: center; align-items: center; background: linear-gradient(180deg, green, white); } .square-container { display: grid; width: 200px; height: 300px; border-radius: 50px; padding: 30px; gap: 20px; list-style: none; grid-template-rows: repeat(3, 1fr); grid-template-columns: repeat(2, 1fr); background: rgba(255, 255, 255, 0.2); } .disc { background: white; border-radius: 100%; justify-content: center; align-items: center; } button { text-decoration: none; display: inline-block; margin-left: 80px; border: none; color: white; padding: 15px 32px; text-align: center; font-size: 16px; font-weight: 900; border-radius: 50px; background-color: #4caf50; }
Paso para ejecutar la aplicación: Ejecute la aplicación usando el siguiente comando desde el directorio raíz del proyecto.
npm start
Salida: Ahora abra su navegador y vaya a http://localhost:3000/ , verá la siguiente salida:
Publicación traducida automáticamente
Artículo escrito por jt9999709701 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA