> Manuales > Tutorial de CSS básico

Qué es ITCSS y cuáles son las bases de esta propuesta arquitectónica para el desarrollo del código CSS.

ITCSS

ITCSS es una propuesta para la organización del CSS que pretende facilitar el trabajo con las hojas de estilo en cascada. Es un modelo de arquitectura CSS que pretende satisfacer de una manera estándar las necesidades comunes de los proyectos.

Este modelo de organización de las CSS ha sido creado por Harry Roberts, a través de su experiencia ofreciendo soporte y consultoría como arquitecto de CSS. Su nombre viene de las siglas Inverted Triangle architecture for CSS, la arquitectura CSS del triángulo invertido y ha sido implementado en multitud de proyectos por toda la comunidad a lo largo del mundo. Incluso es la base sobre la que se han construido diversos frameworks y librerías de CSS.

En este artículo entenderás qué es ITCSS y podrás conocer de manera general la estructura que propone para implementar toda la parte de las CSS en un proyecto.

Es una transcripción libre de la clase gratuita de ITCSS que ofreció Joan León como inicio del curso de arquitectura profesional CSS con ITCSS. Al final de este artículo encontrarás el vídeo completo de esta sesión, de donde hemos generado este texto.

Qué es ITCSS

Para despejar habituales dudas, creo que es interesante comenzar explicando lo que no es ITCSS:

Entonces ¿qué es ITCSS? Como el propio Harry señala, es una arquitectura sana, escalable y manejable para el CSS. Básicamente son una serie de normas o planteamientos para crear el CSS, como una filosofía. Así, ITCSS no implementa nada en concreto, no es como una librería para realizar cosas típicas, sino más bien podríamos pensar en él como un Meta Framework. Es decir, una organización en la que podrías basarte para organizar el CSS de un proyecto mediano o grande sin que se genere un caos ante grandes cantidades de código, o unas reglas recomendables y buenas prácticas para construir cualquier framework CSS.

Aunque se pueda pensar que hemos usado conceptos complejos para definir ITCSS, en realidad es algo realmente simple, que nos puede ayudar sea cual sea el proyecto frontend o los complementos que usamos para implementarlo.

Triángulo invertido

Para explicar ITCSS se usa un diagrama de un triángulo invertido, que podemos ver a continuación:

A la izquierda del diagrama encontramos una estructura sugerida por carpetas: Settings, Tools, Generic… junto con un triángulo sirve para representar el alcance y características del código CSS que iría en cada una de esas carpetas, atendiendo a conceptos como Magnitud, Especificidad y Claridad.

Nota: Como todo en ITCSS, lo que obtenemos son básicamente recomendaciones. No es que te vayas a descargar una serie de carpetas con archivos de código ya escrito para ti, sino una simple propuesta para satisfacer la mayoría de las necesidades. Tú serás el responsable de crear esas carpetas y empezar a colocar archivos con código en ellas, escribiendo CSS o código en cualquier preprocesador de CSS. Podrías tener esas carpetas, con esos nombres u otros, incluso en tu propia implementación podrías añadir nuevas carpetas, si lo consideras interesante para ti.

Carpetas del proyecto

La organización de tus CSS, si decides apoyarte en las convenciones de ITCSS, se basará entonces en diversas carpetas y dentro de cada una podrás tener varios archivos con código CSS. Aunque ya debe quedar claro para la mayoría de los lectores, lo ideal será escribir el código CSS basándonos en un preprocesador de CSS como SaSS, Less, Stylus, etc., ya que nos facilitan, entre otras cosas, la posibilidad de escribir código en diversos archivos CSS. En el proceso de trabajo frontend, luego todos esos archivos se convertirán en un único fichero de código, que obtendremos gracias al preprocesador, o a PostCSS.

La lista de las carpetas propuestas es la siguiente:

Como podrás imaginar, la carpeta components es la que está sujeta a mayores ajustes, dependiendo de tu proyecto y las necesidades de tu sitio. Cabe aclarar que, aunque llamemos components a la carpeta, no tiene que ver específicamente con Web Compomponents, sino con partes específicas que tienen funciones determinadas dentro del sitio. Recuerda que ITCSS es agnóstico a tu preprocesador y también a tu modo de trabajar el Javascript.

Para que nos quede claro qué es un componente puedes pensar en un recuadro de búsqueda. Ese componente está compuesto por dos elementos, típicamente un campo input para escribir texto y un botón para lanzar la búsqueda. Además ese componente en sí tiene un layout, el campo de texto se coloca a la izquierda y el botón a la derecha. Todos los estilos para este componente buscador se colocan en un archivo CSS, donde indicaremos el CSS para posicionamiento y la definición del aspecto con el que se representarán las partes de un componente.

Salida CSS (CSS output)

El orden con el que hemos listado a estas carpetas, tal como aparece en el gráfico, es relevante. Será justamente el que tendrá el código CSS resultante.

Nota: Como sabes, lo más normal es que todo el CSS de un proyecto se sirva desde un único archivo, para evitar solucitudes innecesarias al servidor. Aunque nuestro código CSS original esté dividido en múltiples archivos que se distribuirán en diversas carpetas, el CSS final que se producirá será una concatenación del contenido de los archivos, de modo que los archivos de las primeras carpetas tendrán estilos eventualmente podrán ser sobrescritos por los de las últimas carpetas.

En el gráfico del triángulo, en azul, donde pone "CSS Output", podemos encontrar información que nos ayudará a entender cómo es el CSS que se va a producir mediante la concatenación del código de todos esos ficheros CSS. Esa parte nos indica que las primeras dos carpetas señaladas no tienen salida, o no generan código específico de CSS. Claro que se usarán a lo largo del resto de carpetas del proyecto, pero ellas de por si no tienen sentido hasta que no se utilicen más adelante. Por ejemplo piensa en variables CSS: por su única definición en settings no implica que se vaya a generar una salida en un archivo con código CSS para producción. Lo mismo pasará con los mixins que tenemos en tools, ellos de por si no pintan CSS, hasta que se usen más adelante.

Características del código por carpetas

Ahora podemos interpretar el triángulo central, que nos dimensiona tres características que tiene el código CSS, según su naturaleza indicada en cada una de las carpetas.

Conclusión

Hasta aquí hemos comenzado a entender ITCSS y hemos cubierto el diagrama básico que se utiliza para representar esta arquitectura de CSS. Obviamente quedarán varios conceptos por desarrollar con mayor profundidad, que trataremos más adelante.

Para acabar compartimos con vosotros el vídeo de una clase impartida en vivo, del cual hemos extractado esta información dedicada a ITCSS y la arquitectura de CSS en los proyectos web en general. Además para ampliar esta información te recomendamos el curso de ITCSS de EscuelaIT.

Miguel Angel Alvarez

Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...

Manual