CodeForge

Maquetación Web Dinámica / Arquitectura CSS y design tokens

El problema del CSS que crece

Teoría18 min20 XP

Tu CSS funciona de maravilla... hasta que el proyecto crece. Entonces aparecen los síntomas: cambias un color y se rompe otra cosa, peleas con la especificidad a punta de !important, y nadie —ni tú— se atreve a borrar una regla por miedo. Este módulo es sobre ARQUITECTURA: organizar el CSS para que escale sin volverse un caos. Y empieza por reconocer la enfermedad.

La ciudad sin planeación urbana

Síntoma 1: la guerra de especificidad

Cuando un estilo "no se aplica", la reacción instintiva es subir la especificidad. Y ahí empieza la escalada:

guerra.css
/* alguien escribe: */
.boton { background: blue; }

/* no se aplicó (otra regla gana), así que subo la especificidad: */
.barra .boton { background: green; }

/* sigue sin ganar, subo más: */
#header .barra .boton { background: red; }

/* me rindo y uso el arma nuclear: */
.boton { background: purple !important; }

Cada línea es un parche que ENTIERRA el problema en vez de resolverlo. El siguiente que quiera cambiar el color tendrá que pelear contra tu !important con OTRO !important. Es una carrera armamentista donde todos pierden, y el CSS se vuelve imposible de razonar.

Síntoma 2: el efecto dominó

Mira de cerca los tres violetas del ejemplo: #6d28d9, #6e28d9, #6d29da. Son CASI iguales — errores de copiar y pegar el color a mano por todo el CSS. Cuando el color de marca vive repetido en 40 sitios, cambiarlo es una cacería propensa a errores, y acabas con "casi el mismo" violeta en media página. El valor debería vivir en UN solo lugar.

El problema es de organización, no de CSS

Un estilo no se aplica porque otra regla más específica gana. Tu compañero lo 'arregla' con !important. ¿Por qué es una mala señal?

Mini-reto

Abre el CSS de "El Observador" (o cualquier proyecto tuyo de varios archivos) y haz un diagnóstico honesto: busca cuántas veces aparece tu color principal escrito a mano (¿son todos idénticos?), cuántos !important tienes, y si hay selectores con 3+ niveles de especificidad. Anota los números. Ese es tu "antes"; el resto del módulo es el "después".

Qué sigue

El primer pilar de la cura es centralizar los valores. La próxima lección va a fondo con las VARIABLES CSS (custom properties): definir un valor una vez y usarlo en todas partes, con scope, fallbacks, y hasta cambiarlas en vivo con JavaScript. El fin de los "casi el mismo violeta".