Construyendo Componentes de IU Perfectos con Variables CSS

Rate this content
Bookmark

Las variables CSS se han vuelto tan sofisticadas en los últimos años que ahora nos permiten hacer cosas que no son posibles con JavaScript. En esta charla relámpago, explicaré cómo los ingenieros de MUI están aprovechando el poder de las variables CSS en nuestra nueva biblioteca de componentes de React, Joy UI, para ofrecer componentes que se adaptan automáticamente a su estilo y estructura según el contexto en el que se renderizan.

This talk has been presented at React Summit 2023, check out the latest edition of this React Conference.

FAQ

Una variable CSS es una entidad definida por los autores de CSS que contiene valores específicos para ser reutilizados en todo un documento. Estas permiten una gestión más eficiente de los estilos, facilitando cambios y mantenimiento de consistencia en el diseño.

En Joy UI, las variables CSS se utilizan para crear componentes que se adaptan automáticamente a los estilos de sus padres e hijos, permitiendo ajustes de estilo dinámicos y precisos sin necesidad de recurrir a JavaScript, ofreciendo una experiencia más simple y directa para los desarrolladores.

La principal diferencia es que Joy UI utiliza variables CSS para permitir ajustes de estilo más fáciles y precisos, mientras que en Material UI, hacer ajustes puede resultar más complicado y requiere cálculos adicionales.

Las variables CSS ofrecen beneficios como la reutilización de valores comunes, la facilidad para hacer cambios globales y la capacidad para nombrar valores, lo que ayuda a mantener la consistencia y proteger el código en el futuro.

Joy UI es una nueva biblioteca hermana de Material UI que implementa su propio sistema de diseño y utiliza innovaciones en las variables CSS para mejorar la experiencia del desarrollador. Material UI es una implementación de React del Material Design de Google y es conocida por ser popular en GitHub.

Joy UI facilita la personalización y ajuste de componentes mediante variables CSS, lo que elimina la necesidad de JavaScript para estilos y simplifica los cálculos, haciendo que el proceso de diseño y desarrollo sea más intuitivo y agradable.

Las variables CSS abren la posibilidad de realizar cálculos matemáticos dentro de CSS, referencias cruzadas entre variables y adaptaciones automáticas de estilos, lo que permite una mayor flexibilidad y potencial en el diseño de interfaces y componentes.

Sam Sycamore
Sam Sycamore
9 min
02 Jun, 2023

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Las variables CSS y sus posibilidades para los desarrolladores de IU, la historia de MUI y su comprensión de las necesidades de los desarrolladores, el enfoque de Joy UI en la experiencia del desarrollador y el uso de variables CSS para la consistencia y la futura compatibilidad, la eliminación de cálculos manuales y JavaScript con variables CSS en JoyUI, y la disponibilidad de entornos de prueba y una versión estable para explorar.

1. Introducción a CSS y MUI

Short description:

Me encanta CSS. Eso es todo. Esa es la idea principal. Específicamente emocionado por las variables CSS y sus posibilidades para los desarrolladores de UI. MUI aprovecha las variables CSS para una experiencia del desarrollador encantadora. El papel de CSS se está expandiendo, abriendo nuevas posibilidades. Historia de MUI y comprensión de las necesidades de los desarrolladores.

Muy bien, hola a todos. Gente de fiesta en la casa. Wow. Eso es mucha gente ahí fuera. Muy bien.

No estaba seguro de cómo comenzar esta charla. Estaba hablando con un amigo mío que dijo, deberías compartir tu opinión más picante. Así que en la siguiente diapositiva, voy a compartir mi opinión más controvertida en el ámbito del desarrollo web. Esto va a molestar a mucha gente en la audiencia aquí hoy, pero realmente siento que debe decirse. ¿Estás listo? Aquí va. Me encanta CSS. Eso es todo. Esa es la idea principal. Te dije que era picante, pero no estoy aquí para hacer amigos. Estoy aquí para decir la verdad.

Específicamente, lo que me emociona últimamente son las variables CSS y todas las posibilidades que nos abren como desarrolladores de UI. En MUI, estamos aprovechando el poder de las variables CSS para ofrecer una experiencia del desarrollador que genera alegría y deleite al personalizar los componentes de React. Con las variables CSS, podemos crear componentes que son conscientes de su entorno y se adaptan automáticamente para coincidir con los estilos y estructuras de sus padres e hijos. Y lo mejor de todo, todo esto sucede en CSS, no en JavaScript. No envíes JavaScript a hacer el trabajo de CSS. Y el papel de CSS se está expandiendo rápidamente. Así que para nosotros, los desarrolladores, se abren muchas nuevas posibilidades.

Pero antes de explorar algunas de esas posibilidades, necesito compartir un poco de historia aquí. MUI como empresa comenzó con Material UI, que es la implementación de React de Material Design de Google. Hoy en día hacemos mucho más que solo Material Design. Pero Material UI sigue siendo una de las bibliotecas de código abierto más populares en GitHub y tiene una historia que se remonta a los primeros días de React mismo. A lo largo de esos nueve años aproximadamente, hemos aprendido mucho sobre lo que los desarrolladores quieren y necesitan de una biblioteca de componentes. Más que cualquier otra cosa, hemos aprendido mucho sobre lo que los desarrolladores odian. Aquí tienes un ejemplo de la clase de cosas que veo en Twitter de vez en cuando. Lo entiendo.

2. Variables CSS y Joy UI

Short description:

Puede ser frustrante cuando hacer pequeños ajustes a un componente requiere múltiples cambios. Presentamos Joy UI, una biblioteca hermana de Material UI, con un enfoque en la experiencia del desarrollador. Joy UI aprovecha las variables CSS, lo que permite tener una única fuente de verdad y variables nombradas para consistencia y protección futura. Las variables CSS tienen aplicaciones más allá del branding, permitiendo valores dinámicos y cálculos matemáticos. Joy UI utiliza variables CSS para crear componentes que se adaptan a sus padres e hijos. Comparemos Material UI y Joy UI con un componente de interruptor.

El rey de los críticos aquí, tiene un punto válido. No está equivocado. Puede ser muy frustrante cuando intentas hacer un pequeño ajuste de dos píxeles a un componente. Y luego te das cuenta de que de repente tienes que hacer 10 ajustes más. Es frustrante. Lo entiendo. Y esa es solo una de las razones por las que estamos construyendo Joy UI, que es una nueva biblioteca hermana de Material UI que implementa nuestro propio sistema de diseño junto con algunas innovaciones de vanguardia en la experiencia del desarrollador.

Y esto es más evidente, creo, en la forma en que hemos construido Joy UI para manejar las variables CSS. Entonces, ¿qué es una variable CSS? Según MDN, las variables CSS son entidades definidas por los autores de CSS que contienen valores específicos para ser reutilizados en todo un documento. Es fácil de entender en el contexto de los colores de marca, ¿verdad? Tienes un conjunto de colores que se reutilizarán en todo el diseño. Y si necesitas cambiar uno, es mucho más simple si tienes una única fuente de verdad para no tener que buscar y reemplazar cientos de instancias del código hexadecimal incorrecto. Tener esa única fuente de verdad es muy poderoso. Y una de las cosas realmente geniales es que puedes nombrar tus variables, ¿verdad? Ayuda mucho a mantener la consistencia en tu sistema de diseño y a proteger tu código en el futuro. En lugar de tratar de averiguar por qué este texto tiene un tamaño de 1.75 rem, puedes ver que tiene este valor dinámico establecido en encabezado de texto, lo que te brinda mucha más información sobre por qué se ha aplicado ese estilo.

Y a medida que te adentras más en el tema, te das cuenta de que las variables CSS tienen algunas aplicaciones realmente interesantes en nuestros sistemas de diseño que van mucho más allá del simple branding. Aquí tienes un ejemplo de lo que está sucediendo en el componente JoyUI, el componente de entrada, que compartí hace unos pocos diapositivas atrás. Es extraño, ¿verdad? Al principio es un poco difícil acostumbrarse. Quiero decir, ¿qué está pasando aquí? Tenemos variables CSS que hacen referencia a otras variables y realizan cálculos matemáticos basados en esas variables. Y todo esto sucede en CSS, ¿verdad? Como señala Josh Como, simplemente no estamos acostumbrados a este concepto, este modelo mental de definir propiedades CSS que tienen valores dinámicos. Y las cosas se vuelven aún más extrañas cuando comienzas a hacer matemáticas con tus variables y hacer referencia a variables dentro de variables. De hecho, en el caso de JoyUI, estamos utilizando variables CSS para crear componentes que pueden adaptar automáticamente sus estilos para que coincidan con los de sus padres e hijos, ya que todos hacen referencia a esa única fuente de verdad para sus números mágicos. Entonces, está bien, suena genial, pero ¿qué diferencia realmente hace, verdad? Consideremos un componente de interruptor y observemos las diferencias en la experiencia del desarrollador entre Material UI y JoyUI. Aquí tienes algunos ejemplos de interruptores.

Estos son todos interruptores de Material UI. Interruptor, obviamente, un simple interruptor de encendido y apagado, está compuesto por una pista y un pulgar. El usuario hace clic en el pulgar para deslizarlo a través de la pista y hacer su selección. Es bastante simple en la superficie, pero puede resultar bastante molesto cuando necesitas hacer ajustes perfectos de píxeles al componente de Material UI. Por ejemplo, si necesitamos cambiar el ancho de la pista aquí, bueno, eso descoloca por completo el pulgar porque no conoce la longitud de la pista. Y si intento cambiar el tamaño del pulgar, bueno, eso también arruina su posición. Y ni siquiera me hagas empezar con los radios de borde. Si necesito ajustar las esquinas redondeadas, no es como si simplemente pudiera pasar los mismos valores a ambas partes.

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

Sistemas de Diseño: Caminando la Línea Entre Flexibilidad y Consistencia
React Advanced 2021React Advanced 2021
47 min
Sistemas de Diseño: Caminando la Línea Entre Flexibilidad y Consistencia
Top Content
The Talk discusses the balance between flexibility and consistency in design systems. It explores the API design of the ActionList component and the customization options it offers. The use of component-based APIs and composability is emphasized for flexibility and customization. The Talk also touches on the ActionMenu component and the concept of building for people. The Q&A session covers topics such as component inclusion in design systems, API complexity, and the decision between creating a custom design system or using a component library.
Hacia una Biblioteca Estándar para Runtimes de JavaScript
Node Congress 2022Node Congress 2022
34 min
Hacia una Biblioteca Estándar para Runtimes de JavaScript
Top Content
There is a need for a standard library of APIs for JavaScript runtimes, as there are currently multiple ways to perform fundamental tasks like base64 encoding. JavaScript runtimes have historically lacked a standard library, causing friction and difficulty for developers. The idea of a small core has both benefits and drawbacks, with some runtimes abusing it to limit innovation. There is a misalignment between Node and web browsers in terms of functionality and API standards. The proposal is to involve browser developers in conversations about API standardization and to create a common standard library for JavaScript runtimes.
Construir un Sistema de Diseño con React y Tailwind CSS
React Summit 2022React Summit 2022
27 min
Construir un Sistema de Diseño con React y Tailwind CSS
Top Content
This Talk discusses design systems and how to build one using React and Tailwind CSS. Tailwind CSS provides utility classes for building complex layouts without writing CSS rules. Custom colors can be added to the Tailwind CSS config file, and font styles and text sizes can be customized. The entire Tailwind CSS configuration can be customized to meet specific requirements. Base styles can be added to the config file itself using a plugin. Reusable components can be created with Tailwind CSS, allowing for easy customization of size and color.
Composición vs Configuración: Cómo Construir Componentes Flexibles, Resilientes y a Prueba de Futuro
React Summit 2022React Summit 2022
17 min
Composición vs Configuración: Cómo Construir Componentes Flexibles, Resilientes y a Prueba de Futuro
Top Content
Today's Talk discusses building flexible, resilient, and future-proof React components using composition and configuration approaches. The composition approach allows for flexibility without excessive conditional logic by using multiple components and passing props. The context API can be used for variant styling, allowing for appropriate styling and class specification. Adding variants and icons is made easy by consuming the variant context. The composition and configuration approaches can be combined for the best of both worlds.
Construyendo Bibliotecas de Componentes Multiplataforma para Web y Nativo con React
React Advanced 2021React Advanced 2021
21 min
Construyendo Bibliotecas de Componentes Multiplataforma para Web y Nativo con React
Top Content
This Talk discusses building cross-platform component libraries for React and React Native, based on a successful project with a large government-owned news organization. It covers the requirements for React Native knowledge, building cross-platform components, platform-specific components, styling, and the tools used. The Talk also highlights the challenges of implementing responsive design in React Native.

Workshops on related topic

Construye un Tablero Rico en Datos y Hermoso con la Rejilla de Datos de MUI X y Joy UI
React Summit 2023React Summit 2023
137 min
Construye un Tablero Rico en Datos y Hermoso con la Rejilla de Datos de MUI X y Joy UI
Top Content
WorkshopFree
Sam Sycamore
Siriwat (Jun) Kunaporn
2 authors
Aprende cómo utilizar el ecosistema completo de MUI para construir un tablero de gestión de proyectos hermoso y sofisticado en una fracción del tiempo que tomaría construirlo desde cero. En particular, veremos cómo integrar la Rejilla de Datos de MUI X con Joy UI, nuestra biblioteca de componentes más nueva y hermana del estándar de la industria Material UI.
Tabla de contenidos:- Presentando nuestro proyecto y herramientas- Configuración de la aplicación e instalación del paquete- Construcción del tablero- Prototipado, estilos y temas - Características de Joy UI- Filtrado, ordenación, edición - Características de la Rejilla de Datos- Conclusión, pensamientos finales, P&R
Aprende a utilizar Composables: La navaja suiza de los desarrolladores de Vue
Vue.js Live 2024Vue.js Live 2024
163 min
Aprende a utilizar Composables: La navaja suiza de los desarrolladores de Vue
Workshop
Juan Andrés Núñez Charro
Juan Andrés Núñez Charro
Los Composables (funciones de composición) son funciones con estado/sin estado que pueden aprovechar la API de reactividad de Vue, desacoplándola de los componentes.Este cambio de perspectiva abre la posibilidad de abordar escenarios comunes de una manera nueva y creativa. En este masterclass, aprenderás cómo resolver problemas típicos que enfrenta cada desarrollador de Vue, utilizando composables:
- Almacenamiento de datos;- Comunicación entre componentes;- Funciones de utilidad (DOM, API, etc);Y más.