Hola, soy Nahuel Sotelo
Frontend developer en Schibsted Spain y Profesor de la asignatura Programación Frontend en el Master de Diseño Web de Bau.
Una guía de estilos:
Existen herramientas que nos ayudarán a que todos los miembros del equipo sigan las pautas definidas.
El gráfico de especificidad es una representación de cómo se distribuye la misma a lo largo de una hoja de estilo.
Es recomendable que la especificidad vaya aumentando gradualmente, empezando con estilos más genéricos (selectores de elemento) y acabando con casos más específicos.
The Specificity Graph - Harry Roberts
Intentar mantener los selectores lo más cortos posibles (evitar nesting) nos ayudará a que nuestros componentes no estén atados a un contexto determinado y sean independientes del HTML.
/* Cuidado! */
#main-header nav ul > li .nav-link:first-child { ... } /* 0, 1, 2, 3 */
/* Mejor */
.MainNav-link--first { ... } /* 0, 0, 1, 0 */
"What we want is to be able to write code that is as transparent and self-documenting as possible. Transparency means that it is clear and obvious (to others) in its intent; self-documenting means that we don’t have to lose time to writing and reading lengthy, supplementary documentation."
Es recomendable centralizar los estilos en un ùnico fichero (main.css, style.css) que no contenga reglas, únicamente @import a otros ficheros.
Podemos encontrar varias arquitecturas en internet pero es importante conseguir una que se adapte a las necesidades de nuestro proyecto.
La clave está en tener claro la función de cada selector que utilicemos y ubicarlo en el archivo correspondiente.
7 carpetas, 1 archivo:
sass/
|
|– base/
| |– _reset.scss
| |– _typography.scss
| ...
|
|– components/
| |– _buttons.scss
| |– _carousel.scss
| |– _cover.scss
| |– _dropdown.scss
| ...
|
|– layout/
| |– _navigation.scss
| |– _grid.scss
| |– _header.scss
| |– _footer.scss
| |– _sidebar.scss
| |– _forms.scss
| ...
|
|– pages/
| |– _home.scss
| |– _contact.scss
| ...
|
|– themes/
| |– _theme.scss
| |– _admin.scss
| ...
|
|– utils/
| |– _variables.scss
| |– _functions.scss
| |– _mixins.scss
| |– _helpers.scss
|
|– vendors/
| |– _bootstrap.scss
| |– _jquery-ui.scss
| ...
|
|
`– main.scss
base/
Es el punto de partida del proyecto (reset, tipografía, etc). Los selectores de esta carpeta tendrán una especificidad muy baja, probablemente la mayoría serán selectores de tipo.
layout/
Todo aquello referente al layout de nuestro sitio: grid, header, footer, sidebar, etc. Aquellos componentes que se repiten página a página.
components/
El core de nuestra web. Todos aquellos componentes reutilizables que utilizaremos a lo largo de nuestra web.
pages/
Estilos específicos para una página en concreto.
themes/
Si nuestro sitio tiene algun tipo de sistema de theming, podemos hacer uso de esta carpeta. En caso contrario puede omitirse.
utils/
Variables, funciones, mixins o cualquier otro tipo de helper. Lo normal es que los contenidos de esta carpeta no se compilen en el fichero .css.
vendors/
Estilos que no hemos creado nosotros: librerías como Bootstrap o estilos que acompañen algún plugin que estemos utilizando.
@import 'utils/variables';
@import 'utils/functions';
@import 'utils/mixins';
@import 'utils/placeholders';
@import 'vendors/bootstrap';
@import 'vendors/jquery-ui';
@import 'base/reset';
@import 'base/typography';
@import 'layout/navigation';
@import 'layout/grid';
@import 'layout/header';
@import 'layout/footer';
@import 'layout/sidebar';
@import 'layout/forms';
@import 'components/buttons';
@import 'components/carousel';
@import 'components/cover';
@import 'components/dropdown';
@import 'pages/home';
@import 'pages/contact';
@import 'themes/theme';
@import 'themes/admin';
Preguntas, dudas, comentarios a hola@nahuelsotelo.com