1 de mayo de 2022

Hojas de estilo acumulativas

Aprende a escribir CSS de forma optimizada y aléjate de las costosas refactorizaciones



Empecemos con un ejemplo. ¿Qué tan difícil es crear un simple botón azul? Es como un selector, probablemente un estado hover y algunas propiedades. Algo como esto:

.button {
	font-size:18px;
	padding:8px 24px;
	background:#2196f3;
	color:#fff;
	border-radius:2px;
	border:0;
	display:inline-block;
	cursor:pointer;
}

.button:hover {
	background:#1e87db
}

Con el mismo planteamiento, podríamos crear varios desplegables, barras laterales, títulos, secciones, etc. Pero…

¿Es el código y el planteamiento anterior la forma correcta de hacerlo?

Pues… 🤷.

El Problema

Cada vez, que creas un nuevo componente o das estilo a una sección, aumentas el tamaño de tu CSS. ¿Qué pasa si añadimos un radio de borde a una imagen y font-size a un texto?

.button { /* ... */ border-radius:2px; /* ... */ }
img { border-radius:2px; /* Duplicado */ }
.subtitle { font-size:18px /* Duplicado */ }

La Solución

La solución que veo mejor para escribir el CSS de nuestro botón es mezclar componentes y utilidades:

.hover\:background\:\#1e87db:hover,
.button:hover { background: #1e87db }
.font-size\:16px, .button { font-size: 16px }
.padding\:8px_24px, .button { padding: 8px 24px }
.background\:\#2196f3, .button { background: #2196f3 }
.color\:\#fff, .button { color: #fff }
.border-radius\:2px, .button { border-radius: 2px }
.border\:0, .button { border: 0 }
.display\:inline-block, .button { display: inline-block }
.cursor\:pointer, .button { cursor: pointer }

Cuando veas el código probablemente pensarás algo así como “¿Qué demonios es eso?“.

Deja que te lo explique: Cada propiedad:valor que añadas al CSS debería ser también una utilidad:

  • Puedes reutilizarlos fácilmente en cualquier sitio Hay menos propiedades duplicadas
  • Cuanto mayor sea el proyecto, más clases se reutilizan, lo que significa que el tamaño del CSS crecerá lentamente

Vale, pero ¿quién querría escribir algo así manualmente? La buena noticia es que no tienes que hacerlo.

Stylify CSS al rescate

Exactamente por las razones anteriores, stylifycss.com han sido creados.

Aquí tienes un ejemplo, de cómo crear el mismo botón con el CSS de Stylify (Echa un vistazo a la pestaña HTML):

Vea el Pen Stylify - button por Vladimír Macháček (@Machy8) en CodePen.

Los selectores CSS también se pueden minificar cuando se usan en node.js:

<button class="a"></button>
<style>
.b:hover, .a:hover { background: #1e87db }
.c,.a { font-size: 16px }
.d,.a { padding: 8px 24px }
.e,.a { background: #2196f3 }
.f,.a { color: #fff }
.g,.a { border-radius: 2px }
.h,.a { border: 0 }
.i,.a { display: inline-block }
.j,.a { cursor: pointer }
</style>

En caso de que también te tomes el tiempo y separes tu CSS para el diseño y cada página por separado (lo cual es fácil de hacer con Stylify) puedes tener un trozo de CSS realmente pequeño para cada una de tus páginas. Tampoco tienes que preocuparte por los duplicados y los selectores se minifican automáticamente.

¡Dar como Feedback!
¿Te gusta Stylify CSS? Háznoslo saber con una estrella en nuestro repo!