Cómo Codificar Imágenes en React con SVG

Rate this content
Bookmark

¿Alguna vez necesitaste un ícono de menú de hamburguesa y buscaste uno en una biblioteca de íconos? En realidad, son solo unas pocas líneas de código con SVG. Y los SVGs combinados con React abren todo un nuevo mundo. Puedes generar diagramas, gráficos o animaciones, crear un juego o aplicación interactiva. Vamos a recorrer los conceptos básicos de la sintaxis.

This talk has been presented at React Day Berlin 2024, check out the latest edition of this React Conference.

Hunor Márton Borbély
Hunor Márton Borbély
22 min
16 Dec, 2024

Comments

Sign in or register to post your comment.
Video Summary and Transcription
La charla de hoy trata sobre codificar imágenes en React con SVGs. Los SVGs son poderosos cuando se combinan con JavaScript y se pueden usar para crear elementos interactivos. Comprender la sintaxis y el posicionamiento de SVG es importante, ya que los elementos SVG están limitados a elementos específicos de SVG. El elemento círculo en SVG se puede estilizar y usar para crear formas. El elemento rectángulo se usa comúnmente para gráficos y se puede personalizar. El elemento path ofrece flexibilidad y se puede construir a partir de múltiples segmentos. Las transformaciones y curvas se pueden usar para crear formas complejas y animaciones. Las curvas de Bezier, tanto cuadráticas como cúbicas, son útiles para doblar líneas y crear transiciones suaves. Las características avanzadas como dibujar arcos están disponibles en SVG. Para más ejemplos y casos de uso, visita svgtutorial.com.

1. Introducción a SVG en React

Short description:

Hoy voy a hablar sobre cómo codificar imágenes en React con SVGs. Los SVGs se vuelven muy poderosos una vez que comienzas a combinarlos con JavaScript. También puedes hacer cosas interactivas, como en el caso de este selector de color. Y puedes llevar esto al siguiente nivel y crear un editor, como este simulador de puertas lógicas. El último ejemplo es el juego de Gorillaz, que utiliza HTML canvas. HTML canvas y SVG tienen conceptos bastante similares.

¡Hola a todos! Mi nombre es Hunor y hoy voy a hablar sobre cómo codificar imágenes en React con SVGs. Y si te preguntas por qué decodificamos una imagen, aquí tienes un par de ejemplos.

Los SVGs se vuelven muy poderosos una vez que comienzas a combinarlos con JavaScript. En este ejemplo, estamos uniendo esta esfera de reloj con elementos SVG y luego estamos girando las manecillas del reloj a la posición con JavaScript. También puedes crear animaciones o generar una infografía o un gráfico. En este caso, estamos uniendo esta animación con un componente de React. En caso de que necesites visualizar algunos datos, puedes lograrlo combinando JavaScript y SVGs. También puedes hacer cosas interactivas, como en el caso de este selector de color, si estoy arrastrando estos controladores, entonces los colores están cambiando, los valores están cambiando. Y lo interesante aquí es que estos controladores que estoy arrastrando no son una superposición sobre una imagen. Son parte de la imagen SVG en sí. Así que puedes asignar un controlador de eventos a parte de un SVG de la misma manera que asignarías un controlador de eventos a cualquier otro elemento HTML. Y puedes llevar esto al siguiente nivel y crear un editor, como este simulador de puertas lógicas. Este es completamente interactivo. Así que si hago clic en las entradas, la salida cambiará. Puedo arrastrar cosas, puedo agregar nuevos elementos, puedo romper conexiones y hacer nuevas conexiones. Y todo esto es un gran React, es un gran SVG que se construye a partir de múltiples componentes. Tenemos un componente para esta puerta, para esta puerta, para las conexiones que están conectando las diferentes puertas, para las entradas, para las salidas. Y luego, a partir de estos pequeños componentes que están todos construidos con React, podemos simplemente ensamblar este gran SVG.

Ahora, el último ejemplo que quiero mostrarles hoy es este juego de Gorillaz. Y este es un poco de un huevo de Pascua, porque en realidad no está usando SVG, aparte de este molino de viento que vamos a cubrir. Pero este está usando HTML canvas. La razón por la que todavía quería mostrarles hoy es que HTML canvas y SVG tienen conceptos bastante similares. También tienen formas básicas, como para los edificios en este caso. Y también podemos construir formas más complejas a partir de diferentes segmentos de ruta, como líneas rectas y curvas y arcos. Así que en este caso, el cuerpo del gorila se construye a partir de una ruta que utiliza líneas rectas. Luego, el brazo del gorila es una gran curva que se define como una curva de Bezier cuadrática a partir de diferentes propiedades. Y puedes definir una curva de Bezier cuadrática de la misma manera básicamente en HTML canvas y en SVG, aunque uno está en JavaScript y el otro está en HTML, pero tienen los mismos parámetros. Así que volveremos a esto una vez que estemos hablando de curvas. Y ahora veamos si puedo golpear al enemigo. ¡Y sí! Bien, así que después de esta introducción, veamos el código fuente de un SVG básico y recorramos algunas formas básicas, estilos y algunas formas más avanzadas.

2. Understanding SVG Syntax and Positioning

Short description:

La sintaxis SVG se basa en XML y puede estar en línea en HTML. Los elementos SVG están limitados a elementos específicos de SVG y no pueden usar elementos HTML regulares. El elemento SVG tiene propiedades de ancho, alto y view box. El view box define el sistema de coordenadas para posicionar elementos. Las imágenes dentro del view box se posicionan usando coordenadas.

Así que este está mostrando un círculo, un círculo rojo, y eso es básicamente todo. Como ves, la sintaxis se basa en XML. Y lo genial de esto es que desde HTML5, puedes simplemente incluir todo esto dentro de HTML.

Ahora, por supuesto, hay algunos límites estrictos aquí. Así que dentro del elemento SVG, solo podemos tener elementos específicos de SVG, como el círculo. No podemos tener un header o un párrafo o un div. Si quieres tener un texto, entonces podemos usar el elemento text. Si quieres agrupar cosas, entonces podemos usar el elemento group. Así que hay elementos similares, pero no podemos usar los elementos HTML regulares a los que estamos acostumbrados. Y esto también funciona al revés. Así que no podemos usar el elemento circle fuera del elemento SVG porque para posicionar este círculo, necesitamos tener un sistema de coordenadas y eso lo define el elemento SVG.

Ahora, ¿por qué estamos hablando de esto? Por supuesto, podemos simplemente generar todo esto con un componente de React. Y no solo así, sino que también podemos descomponer un SVG más complejo en múltiples componentes y luego ensamblarlos juntos. Ahora echemos un vistazo más de cerca al elemento SVG. Como vemos, tiene un ancho y un alto, y también tiene una propiedad view box, que también define un ancho y un alto. Así que veamos esto. Aquí tenemos dos imágenes, y tienen el mismo contenido. Ambas imágenes tienen un círculo con una posición central en 100, 100, y el radio de 50.

Esta es la misma definición exacta de círculo. Ahora, la imagen de la izquierda es obviamente más pequeña, y eso es porque el ancho y el alto son más pequeños. Esto está afectando el tamaño real de la imagen. Y luego tenemos esta propiedad view box, que está definiendo el sistema de coordenadas, que ha definido el lienzo en el que podemos dibujar. Y esto dice en ambos casos que el sistema de coordenadas comienza en 0, 0 en ambos casos, y el ancho y el alto es 200, 200 cada uno, lo cual no es una unidad de píxel. Esta es una unidad arbitraria que es utilizada por el elemento de imagen. Así que en ambos casos, estos círculos, piensa en el espacio disponible como un lienzo de 200 por 200 unidades de ancho y alto. Y si posicionamos este círculo en 100, 100, entonces estarán en el centro de la imagen, sin importar cuán grande sea la imagen real. Todo lo que importa para los elementos de imagen es el view box. Usualmente esto está alineado, así que tenemos los mismos números en ambos casos, como en este caso, tenemos 200 en ambos casos. Pero si no coincide, entonces la imagen simplemente se reduce o se agranda.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

El Potencial Caprichoso de los Marcos de Trabajo de JavaScript
React Summit US 2023React Summit US 2023
28 min
El Potencial Caprichoso de los Marcos de Trabajo de JavaScript
Top Content
The speaker discusses the whimsical and detailed work of Stripe, particularly their interactive and dynamic pages. They explain the use of React for building whimsical details and tracking mouse position. The speaker introduces React Spring for smooth animation and React3 Fiber for creating a 3D egg model. They also mention the use of Framer Motion and React server components for animating CSS properties.
Animaciones Emocionales y Funcionales de la Interfaz de Usuario en React
React Day Berlin 2022React Day Berlin 2022
28 min
Animaciones Emocionales y Funcionales de la Interfaz de Usuario en React
Today's Talk discussed the importance of UI animations in React, both functional and emotional. Examples were given using CSS and Framer Motion, with a focus on user feedback and accessibility. Design guidelines and animation usage were highlighted, as well as the consideration of negative emotions in animations. The Talk also touched on designing 404 error pages and concluded with gratitude to the audience and organizers.
Las animaciones en React Native deben ser divertidas
React Advanced 2022React Advanced 2022
28 min
Las animaciones en React Native deben ser divertidas
This talk is about animations in React Native, specifically focusing on React Native Reanimated. It covers the use of interpolations and extrapolations in animations, animating items in a carousel or list, sticky elements and interpolation, and fluidity and layout animations. The talk provides valuable tips and tricks for creating performant animations and explores the use of math formulas for natural movements.
Sigue Desplazándote
JSNation Live 2021JSNation Live 2021
33 min
Sigue Desplazándote
Scroll animations can enhance user experience when done properly, but should not distract from important information. CSS, JavaScript, and plugins like Scroll Trigger can be used to achieve scroll animations. GreenSock's ScrollTrigger provides a powerful JavaScript animation library for more complex animations. It is important to consider accessibility and provide reduced motion fallbacks. CodePen and GreenSock's documentation are valuable resources for learning and inspiration in creative coding.
Animación y Vue.js
Vue.js London Live 2021Vue.js London Live 2021
32 min
Animación y Vue.js
Today's Talk covers animation in Vue JS apps, including CSS animations, JavaScript animations using the GSAP library, and handling multiple elements with transition groups. The Talk also discusses different kinds of movements, state transitions, and animating numbers and SVGs. Overall, it provides a comprehensive overview of animation techniques and tools for enhancing Vue JS apps.
Animaciones con JS
JSNation 2022JSNation 2022
19 min
Animaciones con JS
Today's talk is about animations in Javascript, covering frame rates and different methods like CSS transitions and animations. JavaScript provides more control over animations, allowing interpolation and simulation of real-world scenarios. Different approaches to animating a box from zero to 100 pixels are discussed, including for loops, timers, and the web animations API. Request Animation Frame is highlighted as a solution for consistent and smooth animations. The Web Animations API is introduced as a powerful tool alongside CSS animations and transitions, although it has limited browser support.

Workshops on related topic

Cómo crear arte generativo increíble con código JavaScript simple
JS GameDev Summit 2022JS GameDev Summit 2022
165 min
Cómo crear arte generativo increíble con código JavaScript simple
Top Content
WorkshopFree
Frank Force
Frank Force
En lugar de dibujar manualmente cada imagen como en el arte tradicional, los artistas generativos escriben programas que son capaces de producir una variedad de resultados. En esta masterclass aprenderás cómo crear arte generativo increíble usando solo un navegador web y un editor de texto. Comenzando con conceptos básicos y avanzando hacia la teoría avanzada, cubriremos todo lo que necesitas saber.