No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Vite.js

Curso de Vite.js

Diana Martínez

Diana Martínez

CSS Modules

8/19
Recursos

Los CSS modules son una tecnología para organizar nuestro código en CSS por medio de módulos, algo muy similar a como trabajamos con las librerías de JS.

Uso de CSS modules en Vite

Primero debemos crear un archivo que termine con la extension .module.css.

button.module.css

Dentro de este vamos a generar unos estilos para el siguiente botón, que encontramos en el archivo main.js.

<button id="counter" type="button"></button>

Los estilos serán los siguientes:

``` .btn { background-color: violet; text-transform: uppercase; }

.btn:hover { background-color: orange; } ```

Importación de CSS modules en Vite

Una vez generado nuestro CSS module, faltaría importarlo en el main.js, estos se importan como un módulo:

// Asignamos un nombre al archivo que vamos a importar // y le indicamos de donde viene import buttonStyles from "./button.module.css";

Ahora, si imprimimos buttonStyles, veremos que contendrá un JSON con la propiedad btn, que es igual a una cadena de texto, esto representa una clase en CSS lista para ser usada en los elementos HTML.

btn: "_btn_wnlhd_1"

Aplicando los CSS Modules

Para aplicar los estilos debemos de insertar la clase btn, que se encuentra dentro de buttonStyles, en la etiqueta button. Existen varios metodos.

  1. Acceder a la etiqueta a través de su id, después a la propiedad className y asignarle la clase btn, que se encuentra dentro de buttonStyles. document.getElementById("counter").className = buttonStyles.btn;
  2. Aunque también podemos ir a la etiqueta y darle la clase directamente, algo así: <button id="counter" class=${buttonStyles.btn} type="button"></button>

Cuando guardes los cambios, el botón tiene los estilos que le indicamos en nuestro módulo, esta es una manera estándar que nos ofrece CSS para separar nuestro código y que los estilos sean únicos hacia el componente que lo estamos importando.

Contribución creada por: Jofay Zhan Segura

Aportes 7

Preguntas 4

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Una manera de usarlo en React es:

CSS o SCSS Modules

El objetivo de esto es conseguir que el CSS que declaremos sea relativo y único hacia el componente que lo estamos importando.

¿Cómo hacer que una clase de CSS sea única, dándole un nombre único y diferente? se consigue con modules CSS que apoyado en un bundle permite generar un identificador único para cada clase del CSS

A nuestros archivos de CSS debemos agregarle un .module.css

NombreComponente.module.css

Sin embargo también la manera de importarlos y usarlos en nuestro componentes sera diferente

import style from './NombreComponente.module.css'

function NombreComponente({ todos }) {
	return (
		<div className={stlye.container}>
			<p>Content</p>
		</div>
	);
}

export { NombreComponente};

Si queremos usar más dos clases para una solo etiqueta podemos usar template Strings o template literals, respetando el espacio en medio que tienen dichas clases

div className={`${stlye.container} ${stlye.margin}`}>

No olvidemos usar el normalize o un reset de CSS ya que todos los navegadores tienen diferentes márgenes por lo cual nuestro CSS pueden llegar a colapsar.

Requerimientos:

  1. Nuestro archivo a importar debe terminar en .module.css(scss): ejemplo.module.css
  2. Los module CSS se pueden importar como si fueran otra librería. El archivo button.module.css (ejemplo abajo) solo tiene una clase ‘btn’. al importar el módulo la variable buttonStyles almacenará un objeto con las classes del archivo como propiedades del objeto cuyo valores serán los nombres autogenerados a los que podemos hacer referencia en nuestro html.
  3. Agregamos esta clase a nuestro código.
import buttonStyles from './button.module.css'

document.querySelector('#app').innerHTML = `
<h1> Hello PLatzi! </h1>
<a href="https://vitejs.dev/guide/features.html" target="_blank">Hola</a>
<button id="btn" class="${buttonStyles.btn}">Button</button> 
`

//otra forma
document.getElementById('btn').className = buttonStyles.btn

Módulos CSS


.
Es una herramienta de automatizadores (Webpack o Vite) que al compilar nuestros archivos CSS/Sass/Less cambian el nombre de nuestras clases (namespacing) para reducir su especificidad y así aislar cada regla CSS a sus componentes asignados.

.

Fueron creados por la problemática de los sitios web masivos, como Facebook y AirBnB para mantener especificidad baja de sus estilos.


.

En palabras sencillas, son archivos que al compilarse agregan un Hash a nuestras clases para minimizar la especificidad y evitar choques de reglas CSS a medida que la app crece.

Más Información: css-tricks.com

Los CSS Modules son una característica de Vite que le permite incluir archivos de hojas de estilo en su aplicación de manera más segura y mantenible.

Cuando utiliza CSS Modules, Vite asigna automáticamente nombres únicos a cada clase de hoja de estilo en su aplicación y los empaqueta en un archivo de estilo separado. Esto evita que las clases de hoja de estilo de diferentes componentes de su aplicación entren en conflicto y hace que sea más fácil mantener y actualizar su aplicación a medida que crece.

Es un estándar para resolver los problemas de modularidad de CSS

En el file button.module.css nomas agregué el elemento como un id y no como clase y no tuve que ponerle un classname

en el archivo: button.module.css para poder utilizar el ID hay que poner #btn y el import buttonSyles debería ser buttonStyles porque asi es como lo pronuncia a la hora de hablar

Cómo evitar colisión de selectores usando css modules