Ir al contenido
Suscribete

Usando LESS con Nanoc

Guardado en: Web, ruby
20:20 19/01/2010

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.

Instalando LESS

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

Integrar LESS con Nanoc

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">

Comentarios RSS

  1. macoteca @ 20:47 09/02/2010

    Ayuda en Coda, y también vale para Textmate… http://incident57.com/less/

  2. Al-x @ 10:35 10/02/2010

    No conocía esta aplicación. Me acabas de dar la vida :D

Deja un comentario

Sobre mí

Alejandro Fernández

Alejandro Fernández Webero de profesión y fotógrafo de afición. Escribo con más o menos acierto sobre lo que caiga en mis manos y me interese.

Si crees tener algo que pueda interesarme: Contacta

Todos los articulos están bajo licencia Creative Commons by-nc-sa a no ser que se indique lo contrario.

Powered by Wordpress