Las metodologías OOCSS, BEM y SMACSS para organizar los estilos CSS
Escrito por
el .
planeta-codigo
web
Enlace permanente
Comentarios
OOCSS, BEM y SMACSS son tres de las metodologías más conocidas para organizar el código CSS con la intención de que sea legible y mantenible. Cada una de estas metodologías define una serie de convenciones y reglas que han de seguir los estilos y propiedades CSS.
Las funciones de un preprocesador y algunas nativas como variables, funciones, mixis, operaciones matemáticas o anidaciones de estilos no son garantía para escribir código CSS bien organizado pero no son garantía para escribir código CSS con menos líneas de código, más mantenible y legible.
Por otro lado, en un proyecto en el que trabajan varias personas es recomendable seguir alguna metodología o convenciones como guía para editar los estilos y mantener la uniformidad del código. Para CSS hay varias metodologías entre las más utilizadas están OOCSS, BEM y SMACSS. Cada una de estas metodologías son independientes pero a veces se aplican varios de los principios y varias metodologías al mismo tiempo.
Contenido del artículo
OOCSS
La metodología Object-Oriented CSS o OOCSS se basa en los siguientes dos principios:
- Separar la estructura del diseño.
- Separar contenedor del contenido.
En CSS hay propiedades de estructura que son invisibles al usuario pero modifican el tamaño y posición de un elemento y otro grupo de propiedades que modifican el aspecto visual de un elemento. En esta metodología los nombres de los estilos no deben contener referencias a los nombres de las propiedades.
Algunas propiedades de estructura son:
- Height
- Width
- Margin
- Padding
- Overflow
Por otro lado, las propiedades de apariencia son propiedades que modifican el aspecto visual de los elementos:
- Color
- Font
- Shadow
- Gradient
Separar la estructura del diseño
Para aplicar la regla de separar la estructura del diseño en OOCSS se diferencian las propiedades que modifican la estructura de las propiedades que modifican el diseño, para ello se crean diferentes estilos sin mezclar propiedades de estos dos grupos. Por ejemplo, las propiedades padding o margin son propiedades que modifican la estructura o maquetación mientras que color o border son propiedades que modifican la visualización pero no la maquetación.
Estos son dos ejemplos de estilos que mezclan tanto propiedades de estructura como de diseño visual.
|
|
|
|
En los estilos anteriores no se separa la estructura del diseño, las propiedades de estructura están repetidas en ambos estilos y las propiedades de diseño no son reutilizables en otros elementos. Aplicando la primera regla de OOCSS los estilos quedan de la siguiente forma.
|
|
|
|
Separar contenedor del contenido
La segunda regla trata de evitar que los estilos dependen del contenedor en el que están dada la estructura de HTML ya que esto hace que el estilo aplicado al contenido no sea reutilizable.
Estos son dos ejemplos de estilos en los que el contenedor y contenido tienen una dependencia.
|
|
|
|
Aplicando OOCSS para separar el contenedor del contenido los estilos se transforman en los siguientes.
|
|
|
|
BEM
La metodología Block Element Modifier o BEM se basa en que las páginas web están compuestas de bloques como encabezado, pié de página o contenido, dentro de esos bloques están elementos como título, fecha o texto y los elementos tienen modificadores que varían su apariencia como estilo de fuente o color. La ventaja de BEM es que los estilos de un bloque están separados de los estilos de otros bloques de modo que cada uno de ellos se puede modificar de forma independiente sin afectar a otros.
La nomenclatura usa dos guiones bajos para separar el bloque de un elemento y dos guiones medios para separar el modificador. Se usan dos guiones para no crear ambigüedad en caso de que el elemento tenga un guión medio en el nombre. Un defecto de esta nomenclatura es que genera nombres largos para los nombres de los estilos.
Para nombrar las clases de los estilos se siguen unas convenciones:
|
|
En este ejemplo hay un bloque header, los elementos title, date y text y un modificador secondary para el título.
|
|
SMACSS
SMACSS son las siglas de Scalable and Modular Architecture for CSS es otra metodología CSS que tiene como objetivo que el código CSS sea mejor, más fácil de leer y modular. En SMACSS se separan los siguientes elementos.
- Base: son los elementos base de una página web como body, h1 o a.
- Layout: se divide la página en varias secciones de estructura como header, sidebar, content o footer. Forman la estructura de la página. Los estilos de layout se preceden con l- para distinguirlos de los de los módulos.
- Modules: son los elementos que forman la página.
- State: modifican el aspecto de los elementos en comportamientos en situaciones con interactividad como oculto, expandido, modificado o con errores. Los estilos se preceden con is-.
- Theme: modifican la apariencia de un elemento según el layout y módulo.
Elementos base.
|
|
Elementos de layout.
|
|
Un módulo.
|
|
Estilos de estado.
|
|
Estilos de tema que modifican la apariencia.
|
|
- Metodologías css: OOCSS, BEM y SMACSS
- OOCSS - The Future of Writing CSS
- Metodologías o Arquitecturas CSS (OOCSS, BEM, SMACSS, ITCSS, Atomic Design)
- Una introducción a la metodología BEM
- Quick Tip: Fix Your Messy CSS With SMACSS
- Methods to Organize CSS
- Exploring SMACSS: Scalable and Modular Architecture for CSS