En el articulo anterior vimos como crear un sitio web básico con nanoc. Ahora vamos a ver como podemos gestionar nuestras hojas de estilo en un proyecto de nanoc utilizando LESS.
LESS, o “Leaner CSS” es una gema de Ruby que extiende el lenguaje CSS con elementos propios de otros lenguajes de programación, como variables, herencia, operaciones aritméticas, etc. Algunas de las cosas que nos permite son:
Variables
LESS te permite declarar variables y reutilizarlas dentro de tus hojas de estilo, haciendo cambios globales tan sencillos como modificar una linea.
@color_logo: #F7BD01; #logo { background: @color_logo; }
Elementos anidados (herencia)
Con LESS, en vez de tener selectores largos podemos anidar un selector dentro de otro. De esta forma la herencia queda más clara y tus hojas de estilo más pequeñas.
/* less */ #cabecera { background:#222; color:#ccc; a { text-decoration:none; font-weight:bold; } } /* css */ #cabecera { background:#222; color:#ccc; } #cabecera a { text-decoration:none; font-weight:bold; }
No voy a hablar mucho más de LESS en este articulo. Para ver más características os recomiendo que leais la documentación oficial, donde explican cómo extiende el lenguaje CSS y todo lo que se puede hacer con la librería.
Instalar LESS es tan sencillo como instalar cualquier otra gema de Ruby. Basta con abrir una sesión de terminal y ejecutar:
$ sudo gem install less
Lo primero que necesitas es un proyecto de nanoc. Si seguiste el anterior articulo ya deberías de tener un proyecto, si no es así, leetelo y empieza a usar esta maravillosa herramienta.
Vete al directorio donde tengas tu proyecto de nanoc y crea un nuevo item. Para mantener las cosas organizadas, los items que sean hojas de estilo los vamos a crear dentro del directorio css.
$ cd code/mi_sitio
$ nanoc3 create_item css/estilos
create content/css/estilos.yaml
create content/css/estilos.html
Fíjate en que no he escrito la extensión del fichero, y que nanoc ha supuesto automáticamente que quiero crear una página .html. Bueno, no hay forma de decirle que extensión queremos usar, por lo que la única solución es renombrar a posteriori el fichero. Los las hojas de estilo de LESS llevan la extensión .less
$ mv content/css/estilos.html content/css/estilos.less
Ahora tenemos que decir a nanoc como tiene que compilar nuestras hojas de estilo. Para ello tenemos que modificar el fichero Rules de la raíz de nuestro proyecto y añadir lo siguiente al principio del todo.
# Stylesheets route '/css/*' do item.identifier.chop + '.css' end compile '/css/*' do filter :less end
No entraré en detalles, pero el código que hemos añadido en el fichero le dice a nanoc tres cosas: donde tiene que guardar nuestras hojas de estilo, con que nombre, y qué filtro debe utilizar para ello.
Para comprobar que funciona vamos a crear una hoja de estilo con LESS muy sencilla.
* { margin: 0; padding: 0; font-family: Georgia, Palatino, Times, 'Times New Roman', sans-serif; } body { background: #fff; } a { text-decoration: none; :link, :visited { color:#f30; } :hover { color:#f90; } } #main { position: absolute; top: 40px; left: 280px; width: 500px; h1 { font-size: 40px; font-weight: normal; line-height: 40px; letter-spacing: -1px; } p { margin: 20px 0; font-size: 15px; line-height: 20px; } ul { margin: 20px; } li { list-style-type: square; font-size: 15px; line-height: 20px; } } #sidebar { position: absolute; top: 40px; left: 20px; width: 200px; padding: 20px 20px 0 0; border-right: 1px solid #ccc; text-align: right; h2 { text-transform: uppercase; font-size: 13px; color: #333; letter-spacing: 1px; line-height: 20px; } ul { list-style-type: none; margin: 20px 0; } li { font-size: 14px; line-height: 20px; } }
Como puedes ver estamos haciendo uso de los selectores anidados de LESS para dejar la hoja de estilo más limpia.
Para comprobar que los cambios han surtido efecto vamos a arrancar el autocompilador de nanoc. Para ello ejecutamos:
$ nanoc3 aco
Si ahora abrimos un navegador y pedimos la URL http://localhost:3000/css/estilos.css, deberíamos de ver la hoja de estilos procesada con LESS:
* { margin: 0; padding: 0; font-family: Georgia, Palatino, Times, 'Times New Roman', sans-serif; } body { background: #ffffff; } a { text-decoration: none; } a:link { color: #ff3300; } a:visited { color: #ff3300; } a:hover { color: #ff9900; } ...
Utilizar la nueva hoja de estilo ya procesada es tan fácil como añadir un <link /> a tu fichero de layout. Para ello modificamos el fichero “layouts/default.html”, buscamos la siguiente linea:
<link rel="stylesheet" type="text/css" href="/style.css" media="screen">y la cambiamos por esta otra:
<link rel="stylesheet" type="text/css" href="/css/estilos.css" media="screen">
Ayuda en Coda, y también vale para Textmate… http://incident57.com/less/
No conocía esta aplicación. Me acabas de dar la vida