Se eficiente con tus estilos
#header{
margin-bottom: 20px;
padding: 10px 10px;
background-color: #fff;
border: 1px solid #000;
}
#footer{
margin-top: 15px;
padding: 25px 10px;
background-color: #fff;
border: 1px solid #000;
}.header{
margin-bottom: 20px;
padding: 15px 10px;
}
.footer{
margin-top: 15px;
padding: 25px 10px;
}
.skin{
background-color: #fff;
border: 1px solid #000;
}
#header h3{
font-family: 'Arial';
color: #000;
font-size: 18px;
text-transform: uppercase;
}
#footer h3{
font-family: 'Arial';
color: #000;
font-size: 18px;
}
h3, .heading-3{
font-family: 'Arial';
color: #000;
font-size: 18px;
}
.text-up{
text-transform: uppercase;
}
h1{
color: #000;
font-size: 36px
}
ul{
list-style: none;
}
li{
display: block;
}Estilos base para elementos html
.l-contenedor{
width: 1024px;
display: block;
padding: 20px 10px;
}
.l-box{
padding: 10px;
display: block;
}Estilos aplicados al diseño estructural. Medidas, paddings, margenes...La nomenclatura a seguir se indica con una "l" o "layout" al principio.
.module-search{
width: 240px;
display: block;
border: 1px solid #fff000;
padding: 20px 10px;
}
.module-button{
padding: 10px;
text-transform: uppercase;
display: block;
}Comportamiento similar que los bloques de la metodología BEM. Puedes especificar el nombre que quieras a la clase. Su prefijo es "module-".
.is-hidden{
visibility: hidden;
display: none;
}
.is-disabled{
opacity: 0.5;
pointer-events: none;
}
Como su propio nombre indica son reglas de estilo que especifican el estado actual de la interfaz. Su prefijo es "is-"
.link{
color: #fff000;
}
.text-big{
font-size: 36px;
}Estilos genericos que aplicaremos a diferentes elementos con diferentes clases a modo de mantener unos estilos base como si de un tema se tratara.
Los átomos son el nivel más básico en Atomic Design, cualquier etiqueta HTML es un átomo: button, input.
Una molécula es la agrupación de un conjunto de Átomos. Un caja de buscador, una tabla, un menú...
A su vez, si agrupamos las Moléculas obtenemos Organismos. Un ejemplo de Organismo podría ser una cabecera, un aside, un footer...
Siguiendo con la dinámica nos encontramos con las plantillas. De nuevo, las plantillas son un conjunto de organismos. Por ejemplo, podríamos tener una plantilla para una página "Categorías" o una página de "Busqueda".
Por último tenemos las páginas. Una página es la concretación de una plantilla. Para que nos entendamos, la instancia de una clase. A este nivel se aplicarían cambios muy específicos de páginas concretas.
Un bloque no es más que un contenedor en el que se encontrarán diferentes elementos con sus diferentes modificadores.
Este contenedor debe tener una entidad propia que no dependa de ningún otro bloque.
Esto no quiere decir que no podamos tener un bloque dentro de otro, si no que estos serán independientes entre sí.
.header{...}
.footer{...}
.btn{
background-color: #00b9f7;
color: #fff;
padding: 10px;
}
.heading-1{
font-size: 32px;
color: #000;
}Un elemento es básicamente una pieza de un bloque. No puede haber un elemento que no pertenezca a un bloque y todos estos a su vez deben estar anidados dentro. Su nomenclatura se define con el nombre del bloque al que pertenece, dos barras bajas y el nombre del elemento.
.header{...}
.header__logo{
display: block;
height: 70px;
max-width: 150px;
}
.header__logo-span{
font-size: 18px;
color: #000;
}
.footer{...}
.footer__copy{
float: right;
font-size: 16px;
}
.btn{...}
Un elemento puede contener diferentes elementos. Un elemento no puede ser dos elementos del mismo bloque a la vez. Un elemento puede ser a su vez bloque.
Un modificador no es más que la alteración de los estilos base de un bloque o elemento. Un bloque o elemento puede contener cuantos modificadores queramos (sin abusar).
.header{...}
.header--dark{
background: #000;
}
.header__logo-span{...}
.header__logo-span--light{
color: #fff;
}Conjunto de reglas utilizadas por los navegadores para definir que propiedades CSS aplicar a según que elementos.
Web: www.abelcabezaroman.com
Email: contacto@abelcabezaroman.com
Instagram: @acronico_es
Twitter: @abelcabezaroman
Github: https://github.com/abelcabezaroman
https://zellwk.com/blog/css-architecture-2/
https://www.smashingmagazine.com/2011/12/an-introduction-to-object-oriented-css-oocss/
http://www.espai.es/blog/2016/07/metodologias-css-oocss-bem-smacss/
http://dispersium.es/atomic-design-en-diseno-web/
http://bradfrost.com/blog/post/atomic-web-design/