<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Antártico Norte &#187; Web</title>
	<atom:link href="http://antarticonorte.com/blog/category/web/feed/" rel="self" type="application/rss+xml" />
	<link>http://antarticonorte.com/blog</link>
	<description>Fotografía, diseño web y de todo un poco</description>
	<lastBuildDate>Tue, 19 Jan 2010 19:20:49 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Usando LESS con Nanoc</title>
		<link>http://antarticonorte.com/blog/2010/01/19/usando-less-con-nanoc/</link>
		<comments>http://antarticonorte.com/blog/2010/01/19/usando-less-con-nanoc/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 19:20:20 +0000</pubDate>
		<dc:creator>Al-x</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[less]]></category>
		<category><![CDATA[nanoc]]></category>

		<guid isPermaLink="false">http://antarticonorte.com/blog/?p=215</guid>
		<description><![CDATA[ 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 &#8220;Leaner CSS&#8221; es una gema de Ruby que extiende el lenguaje CSS con elementos propios de otros lenguajes de programación, como variables, [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://antarticonorte.com/blog/wp-content/uploads/2010/01/less.png" alt="" title="less" width="214" height="114" class="alignright size-full wp-image-216" /> En el articulo anterior vimos como <a href="http://antarticonorte.com/blog/2010/01/09/empezando-con-nanoc/">crear un sitio web básico con nanoc</a>. Ahora vamos a ver como podemos gestionar nuestras hojas de estilo en un proyecto de nanoc utilizando <a href="http://lesscss.org/">LESS</a>.</p>
<p>LESS, o &#8220;Leaner CSS&#8221; 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:</p>
<p><strong>Variables</strong><br />
LESS te permite declarar variables y reutilizarlas dentro de tus hojas de estilo, haciendo cambios globales tan sencillos como modificar una linea.</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #a1a100;">@color_logo: #F7BD01;</span>
&nbsp;
<span style="color: #cc00cc;">#logo</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #a1a100;">@color_logo; }</span></pre></div></div>

<p><strong>Elementos anidados (herencia)</strong><br />
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.</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/* less */</span>
<span style="color: #cc00cc;">#cabecera</span> <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#222</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#ccc</span><span style="color: #00AA00;">;</span>
    a <span style="color: #00AA00;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">text-decoration</span><span style="color: #00AA00;">:</span><span style="color: #993333;">none</span><span style="color: #00AA00;">;</span>
        <span style="color: #000000; font-weight: bold;">font-weight</span><span style="color: #00AA00;">:</span><span style="color: #993333;">bold</span><span style="color: #00AA00;">;</span>
    <span style="color: #00AA00;">&#125;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/* css */</span>
<span style="color: #cc00cc;">#cabecera</span> <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#222</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#ccc</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
<span style="color: #cc00cc;">#cabecera</span> a <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">text-decoration</span><span style="color: #00AA00;">:</span><span style="color: #993333;">none</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">font-weight</span><span style="color: #00AA00;">:</span><span style="color: #993333;">bold</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>No voy a hablar mucho más de LESS en este articulo. Para ver más características os recomiendo que leais la <a href="http://lesscss.org/docs.html">documentación oficial</a>, donde explican cómo extiende el lenguaje CSS y todo lo que se puede hacer con la librería.</p>
<p><span id="more-215"></span></p>
<h3>Instalando LESS</h3>
<p>Instalar LESS es tan sencillo como instalar cualquier otra gema de Ruby. Basta con abrir una sesión de terminal y ejecutar:</p>
<pre class="term">
$ sudo gem install less
</pre>
<h3>Integrar LESS con Nanoc</h3>
<p>Lo primero que necesitas es un proyecto de nanoc. Si seguiste el <a href="http://antarticonorte.com/blog/2010/01/09/empezando-con-nanoc/">anterior articulo</a> ya deberías de tener un proyecto, si no es así, leetelo y empieza a usar esta maravillosa herramienta.</p>
<p>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 <code>css</code>.</p>
<pre class="term">
$ cd code/mi_sitio
$ nanoc3 create_item css/estilos
      create  content/css/estilos.yaml
      create  content/css/estilos.html
</pre>
<p>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 <code>.html</code>. 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</p>
<pre class="term">
$ mv content/css/estilos.html content/css/estilos.less
</pre>
<p>Ahora tenemos que decir a nanoc como tiene que compilar nuestras hojas de estilo. Para ello tenemos que modificar el fichero <code>Rules</code> de la raíz de nuestro proyecto y añadir lo siguiente al principio del todo.</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;"># Stylesheets</span>
route <span style="color:#996600;">'/css/*'</span> <span style="color:#9966CC; font-weight:bold;">do</span>
  item.<span style="color:#9900CC;">identifier</span>.<span style="color:#CC0066; font-weight:bold;">chop</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#996600;">'.css'</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
compile <span style="color:#996600;">'/css/*'</span> <span style="color:#9966CC; font-weight:bold;">do</span>
  filter <span style="color:#ff3333; font-weight:bold;">:less</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>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.</p>
<p>Para comprobar que funciona vamos a crear una hoja de estilo con LESS muy sencilla.</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #00AA00;">*</span> <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">font-family</span><span style="color: #00AA00;">:</span> Georgia<span style="color: #00AA00;">,</span> Palatino<span style="color: #00AA00;">,</span> Times<span style="color: #00AA00;">,</span> <span style="color: #ff0000;">'Times New Roman'</span><span style="color: #00AA00;">,</span> <span style="color: #993333;">sans-serif</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
body <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#fff</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
a <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">text-decoration</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">none</span><span style="color: #00AA00;">;</span>
    <span style="color: #3333ff;">:link</span><span style="color: #00AA00;">,</span> <span style="color: #3333ff;">:visited </span><span style="color: #00AA00;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#f30</span><span style="color: #00AA00;">;</span>
    <span style="color: #00AA00;">&#125;</span>
    <span style="color: #3333ff;">:hover </span><span style="color: #00AA00;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#f90</span><span style="color: #00AA00;">;</span>
    <span style="color: #00AA00;">&#125;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#main</span> <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">:</span> <span style="color: #933;">40px</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">:</span> <span style="color: #933;">280px</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">500px</span><span style="color: #00AA00;">;</span>
&nbsp;
    h1 <span style="color: #00AA00;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span> <span style="color: #933;">40px</span><span style="color: #00AA00;">;</span>
        <span style="color: #000000; font-weight: bold;">font-weight</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">normal</span><span style="color: #00AA00;">;</span>
        <span style="color: #000000; font-weight: bold;">line-height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">40px</span><span style="color: #00AA00;">;</span>
        <span style="color: #000000; font-weight: bold;">letter-spacing</span><span style="color: #00AA00;">:</span> <span style="color: #933;">-1px</span><span style="color: #00AA00;">;</span>
    <span style="color: #00AA00;">&#125;</span>
    p <span style="color: #00AA00;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span> <span style="color: #933;">20px</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
        <span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span> <span style="color: #933;">15px</span><span style="color: #00AA00;">;</span>
        <span style="color: #000000; font-weight: bold;">line-height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">20px</span><span style="color: #00AA00;">;</span>
    <span style="color: #00AA00;">&#125;</span>
    ul <span style="color: #00AA00;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span> <span style="color: #933;">20px</span><span style="color: #00AA00;">;</span>
    <span style="color: #00AA00;">&#125;</span>
    li <span style="color: #00AA00;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">list-style-type</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">square</span><span style="color: #00AA00;">;</span>
        <span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span> <span style="color: #933;">15px</span><span style="color: #00AA00;">;</span>
        <span style="color: #000000; font-weight: bold;">line-height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">20px</span><span style="color: #00AA00;">;</span>
    <span style="color: #00AA00;">&#125;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#sidebar</span> <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">:</span> <span style="color: #933;">40px</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">:</span> <span style="color: #933;">20px</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">200px</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #933;">20px</span> <span style="color: #933;">20px</span> <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">border-right</span><span style="color: #00AA00;">:</span> <span style="color: #933;">1px</span> <span style="color: #993333;">solid</span> <span style="color: #cc00cc;">#ccc</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">text-align</span><span style="color: #00AA00;">:</span> <span style="color: #000000; font-weight: bold;">right</span><span style="color: #00AA00;">;</span>
    h2 <span style="color: #00AA00;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">text-transform</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">uppercase</span><span style="color: #00AA00;">;</span>
        <span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span> <span style="color: #933;">13px</span><span style="color: #00AA00;">;</span>
        <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#333</span><span style="color: #00AA00;">;</span>
        <span style="color: #000000; font-weight: bold;">letter-spacing</span><span style="color: #00AA00;">:</span> <span style="color: #933;">1px</span><span style="color: #00AA00;">;</span>
        <span style="color: #000000; font-weight: bold;">line-height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">20px</span><span style="color: #00AA00;">;</span>
    <span style="color: #00AA00;">&#125;</span>
    ul <span style="color: #00AA00;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">list-style-type</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">none</span><span style="color: #00AA00;">;</span>
        <span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span> <span style="color: #933;">20px</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
    <span style="color: #00AA00;">&#125;</span>
    li <span style="color: #00AA00;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span> <span style="color: #933;">14px</span><span style="color: #00AA00;">;</span>
        <span style="color: #000000; font-weight: bold;">line-height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">20px</span><span style="color: #00AA00;">;</span>
    <span style="color: #00AA00;">&#125;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Como puedes ver estamos haciendo uso de los selectores anidados de LESS para dejar la hoja de estilo más limpia.</p>
<p>Para comprobar que los cambios han surtido efecto vamos a arrancar el autocompilador de nanoc. Para ello ejecutamos:</p>
<pre class="term">
$ nanoc3 aco
</pre>
<p>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:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #00AA00;">*</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">font-family</span><span style="color: #00AA00;">:</span> Georgia<span style="color: #00AA00;">,</span> Palatino<span style="color: #00AA00;">,</span> Times<span style="color: #00AA00;">,</span> <span style="color: #ff0000;">'Times New Roman'</span><span style="color: #00AA00;">,</span> <span style="color: #993333;">sans-serif</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
body <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#ffffff</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span>
a <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">text-decoration</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">none</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span>
a<span style="color: #3333ff;">:link </span><span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#ff3300</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span>
a<span style="color: #3333ff;">:visited </span><span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#ff3300</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span>
a<span style="color: #3333ff;">:hover </span><span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#ff9900</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span>
...</pre></div></div>

<p>Utilizar la nueva hoja de estilo ya procesada es tan fácil como añadir un <code>&lt;link /&gt;</code> a tu fichero de layout. Para ello modificamos el fichero &#8220;layouts/default.html&#8221;, buscamos la siguiente linea:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">link</span> <span style="color: #000066;">rel</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;/style.css&quot;</span> <span style="color: #000066;">media</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;screen&quot;</span>&gt;</span></pre></div></div>

<p>y la cambiamos por esta otra:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">link</span> <span style="color: #000066;">rel</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;/css/estilos.css&quot;</span> <span style="color: #000066;">media</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;screen&quot;</span>&gt;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://antarticonorte.com/blog/2010/01/19/usando-less-con-nanoc/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Empezando con nanoc</title>
		<link>http://antarticonorte.com/blog/2010/01/09/empezando-con-nanoc/</link>
		<comments>http://antarticonorte.com/blog/2010/01/09/empezando-con-nanoc/#comments</comments>
		<pubDate>Sat, 09 Jan 2010 07:33:03 +0000</pubDate>
		<dc:creator>Al-x</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[nanoc]]></category>

		<guid isPermaLink="false">http://antarticonorte.com/blog/?p=161</guid>
		<description><![CDATA[
Nanoc es un generador de páginas estáticas escrito en Ruby. Nanoc crea ficheros HTML a partir de plantillas escritas en ERB, HAML u otros lenguajes.
No necesitas nada especial en el servidor para usar nanoc, ya que las plantillas se procesan en tu ordenador. Basta con subir los ficheros estáticos generados a un servidor web y [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://antarticonorte.com/blog/wp-content/uploads/2010/01/extensible.png" alt="" title="extensible" width="262" height="108" class="alignright size-full wp-image-203" /></p>
<p><a href="http://nanoc.stoneship.org/">Nanoc</a> es un generador de páginas estáticas escrito en Ruby. Nanoc crea ficheros HTML a partir de plantillas escritas en <a href="http://www.ruby-doc.org/stdlib/libdoc/erb/rdoc/">ERB</a>, <a href="http://haml-lang.com/">HAML</a> u otros lenguajes.</p>
<p>No necesitas nada especial en el servidor para usar nanoc, ya que las plantillas se procesan en tu ordenador. Basta con subir los ficheros estáticos generados a un servidor web y el sitio ya estará accesible.</p>
<p><span id="more-161"></span></p>
<h3>Creando un sitio</h3>
<p>Lo primero que tenemos que hacer es instalar nanoc y otras gemas que vamos a necesitar.</p>
<pre class="term">
$ sudo gem install nanoc3 rack mime-types
</pre>
<p>Una vez instalado todo el siguiente paso es crear nuestro primer sitio web.</p>
<pre class="term">
$ nanoc3 create_site mi_sitio
</pre>
<p>Esto nos genera la siguiente salida:</p>
<pre class="term">
      create  config.yaml
      create  Rakefile
      create  Rules
      create  content/index.yaml
      create  content/index.html
      create  layouts/default.yaml
      create  layouts/default.html
Created a blank nanoc site at 'mi_sitio'. Enjoy!
</pre>
<p>El comando anterior crea un nuevo proyecto de nanoc en la carpeta &#8216;mi_primer_sitio&#8217;, pero aún no hay ningún fichero que podamos abrir con un navegador web. Para ello debemos indicar a nanoc que compile nuestro proyecto en un sitio estático. </p>
<pre class="term">
$ nanoc3 compile
Loading site data...
Compiling site...
      create  [0.01s]  output/index.html

Site compiled in 0.01s.
</pre>
<p>Si echamos un vistazo al directorio <code>output</code> vemos que se ha creado un nuevo fichero llamado <code>index.html</code>. El contenido de este fichero se genera a partir de un contenedor o fichero de <em>layout</em> y un fichero de plantilla.</p>
<p>Los ficheros que genera nanoc no están pensados para abrirse directamente con el navegador, sino para ser servidos mediante un servidor web. Esto es importante, ya que nanoc por defecto utiliza rutas absolutas para los recursos (imágenes, hojas de estilo, etc&#8230;). Si abrimos el fichero directamente con el navegador seguramente veamos el contenido sin estilos aplicados.</p>
<p>Si a esto añadimos que con cada cambio que hagamos debemos recompilar el sitio, el proceso de desarrollo se hace muy tedioso. Para ello nanoc nos permite arrancar un servidor web local que compila automáticamente el sitio cada vez que accedemos a él. Para arrancarlo basta con escribir en el terminal.</p>
<pre class="term">
mi_sitio$ nanoc3 aco
</pre>
<p>Con esto abrimos un servidor web en el puerto 3000 de nuestra maquina en el que podremos ver el sitio web compilado. No es necesario compilar manualmente ya que nanoc lo hará por nosotros cada vez que accedamos a este servidor.</p>
<p>Podemos entrar con nuestro navegador favorito en <a href="http://localhost:3000/">http://localhost:3000/</a> y veremos el sitio web compilado:</p>
<p><a href="http://antarticonorte.com/blog/wp-content/uploads/2010/01/Imagen-1.png"><img src="http://antarticonorte.com/blog/wp-content/uploads/2010/01/Imagen-1-500x399.png" alt="" title="Imagen 1" width="500" height="399" class="alignnone size-medium wp-image-184" /></a></p>
<h3>Editando plantillas</h3>
<p>Las diferentes plantillas para generar nuestro sitio web estático se almacenan en el directorio <code>content</code>. Si entramos en él, veremos que tiene una estructura similar a esta:</p>
<pre class="term">
mi_sitio/content$ ls -l
total 16
-rw-r--r--  1 alex  _www  981  4 ene 01:21 index.html
-rw-r--r--  1 alex  _www   17  4 ene 01:21 index.yaml
</pre>
<p><code>index.html</code> es el fichero que contiene el contenido de la plantilla, e <code>index.yaml</code> es donde se almacenan los metadatos de la misma.</p>
<p>Vamos a modificar el título de la página. Para ello modificamos el fichero <code>index.html</code> y cambiamos el contenido del tag <code>&lt;h1&gt;</code> por lo siguiente:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">h1</span>&gt;</span>Mi primer sitio con nanoc<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">h1</span>&gt;</span></pre></div></div>

<p>Ahora abrimos el fichero <code>index.yaml</code> y dejamos su contenido como sigue:</p>

<div class="wp_syntax"><div class="code"><pre class="yaml" style="font-family:monospace;">--- 
title: Mi primer sitio con nanoc</pre></div></div>

<p>Accedemos de nuevo a http://localhost:3000/ para comprobar que ha modificado el sitio con nuestros cambios.</p>
<h3>Creando una nueva página</h3>
<p>Crear una nueva página en nanoc es muy simple:</p>
<pre class="term">
$ nanoc3 create_item nombre_pagina
</pre>
<p>Por ejemplo, vamos a crear una página en la que metamos información acerca de nosotros mismos</p>
<pre class="term">
mi_sitio$ nanoc3 create_item acerca_de
      create  content/acerca_de.yaml
      create  content/acerca_de.html
An item has been created at /acerca_de/.
</pre>
<p>Si ahora apuntamos nuestro navegador a <a href="http://localhost:3000/acerca_de/">http://localhost:3000/acerca_de/</a> veremos que se ha creado una nueva página en blanco. Si modificamos el fichero <code>content/acerca_de.html</code> se actualizará el contenido de la página que acabamos de crear.</p>
<h3>Entendiendo el layout</h3>
<p>Los layouts (podemos tener varios) se almacenan en el directorio <code>layouts</code>. Si echamos un vistazo al directorio tendremos una estructura similar a esta.</p>
<pre class="term">
mi_sitio/layouts$ ls -l
total 16
-rw-r--r--  1 alex  _www  875  4 ene 23:51 default.html
-rw-r--r--  1 alex  _www    8  4 ene 23:51 default.yaml
</pre>
<p>Esta estructura nos resultará familiar del contenido del directorio <code>content</code>.</p>
<p>Por defecto el fichero <code>default.yaml</code> viene vacío, así que de momento vamos a centrarnos en el contenido de <code>default.html</code></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #00bbdd;">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01//EN&quot; &quot;http://www.w3.org/TR/html4/strict.dtd&quot;&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">html</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">head</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">title</span>&gt;</span>A Brand New nanoc Site - <span style="color: #009900;">&lt;%<span style="color: #66cc66;">=</span> @item<span style="color: #66cc66;">&#91;</span>:<span style="color: #000066;">title</span><span style="color: #66cc66;">&#93;</span> %&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">title</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">link</span> <span style="color: #000066;">rel</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;/style.css&quot;</span> <span style="color: #000066;">media</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;screen&quot;</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">head</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">body</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;main&quot;</span>&gt;</span>
<span style="color: #009900;">&lt;%<span style="color: #66cc66;">=</span> yield %&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;sidebar&quot;</span>&gt;</span>
      <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">h2</span>&gt;</span>Documentation<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">h2</span>&gt;</span>
      <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">ul</span>&gt;</span>
        <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://nanoc.stoneship.org/tutorial/&quot;</span>&gt;</span>Tutorial<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
        <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://nanoc.stoneship.org/manual/&quot;</span>&gt;</span>Manual<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
      <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">ul</span>&gt;</span>
      <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">h2</span>&gt;</span>Community<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">h2</span>&gt;</span>
      <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">ul</span>&gt;</span>
        <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://groups.google.com/group/nanoc/&quot;</span>&gt;</span>Discussion Group<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
        <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://groups.google.com/group/nanoc-es/&quot;</span>&gt;</span>Spanish Discussion Group<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
        <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://projects.stoneship.org/trac/nanoc/&quot;</span>&gt;</span>Wiki<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
      <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">ul</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">body</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">html</span>&gt;</span></pre></td></tr></table></div>

<p>Como podemos ver se trata de un fichero HTML normal y corriente, salvo por dos detalles. El primero lo encontramos en el <title></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>4
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">title</span>&gt;</span>A Brand New nanoc Site - <span style="color: #009900;">&lt;%<span style="color: #66cc66;">=</span> @item<span style="color: #66cc66;">&#91;</span>:<span style="color: #000066;">title</span><span style="color: #66cc66;">&#93;</span> %&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">title</span>&gt;</span></pre></td></tr></table></div>

<p>¿Recordais que antes modificamos el fichero <code>index.yaml</code>? Bien. El contenido de ese fichero se carga en las plantillas como variables del objeto <code>@item</code>. En este caso estamos cogiendo el contenido de <code>title</code> dentro de <code>index.yaml</code> y lo estamos escribiendo en el layout como parte del título de la página.</p>
<p>El segundo detalle que nos llama la atención está en la linea 9</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>8
9
10
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;main&quot;</span>&gt;</span>
<span style="color: #009900;">&lt;%<span style="color: #66cc66;">=</span> yield %&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre></td></tr></table></div>

<p>La llamada a <code>yield</code> se sustituirá con el contenido de la página sobre la que estemos aplicando el layout. En este caso, coge el contenido de <code>content/index.html</code> y lo coloca ahí.</p>
<h3>Más información</h3>
<p>Puedes ampliar información sobre nanoc en el <a href="http://nanoc.stoneship.org/tutorial/">tutorial oficial</a>, sobre el que he basado este articulo.</p>
<p>Otro buen tutorial es <a href="http://nanoc2.jottit.com/">Maquetación ágil con nanoc 2.1</a>, de Ale Muñoz. Está escrito sobre una versión antigua, pero trata la herramienta de forma más profunda.</p>
<p>Por último y para profundizar del todo en nanoc, es de lectura obligada el <a href="http://nanoc.stoneship.org/manual/">manual oficial</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://antarticonorte.com/blog/2010/01/09/empezando-con-nanoc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cómo usar markdown en Rails</title>
		<link>http://antarticonorte.com/blog/2010/01/04/como-usar-markdown-en-rails/</link>
		<comments>http://antarticonorte.com/blog/2010/01/04/como-usar-markdown-en-rails/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 08:30:50 +0000</pubDate>
		<dc:creator>Al-x</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[bluecloth]]></category>
		<category><![CDATA[markdown]]></category>

		<guid isPermaLink="false">http://antarticonorte.com/blog/?p=170</guid>
		<description><![CDATA[Me encanta markdown. Tiene una sintaxis fácil de aprender y convive muy bien con texto existente en HTML. Es un buen lenguaje para foros o blogs, ya que permite dar formato de forma sencilla sin necesidad de saber HTML.
Recientemente quería usar markdown para un proyecto que estoy haciendo con Rails. El framework ofrece un método [...]]]></description>
			<content:encoded><![CDATA[<p>Me encanta <a href="http://daringfireball.net/projects/markdown/">markdown</a>. Tiene una <a href="http://daringfireball.net/projects/markdown/syntax">sintaxis</a> fácil de aprender y convive muy bien con texto existente en HTML. Es un buen lenguaje para foros o blogs, ya que permite dar formato de forma sencilla sin necesidad de saber HTML.</p>
<p>Recientemente quería usar markdown para un proyecto que estoy haciendo con Rails. El framework <a href="http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#M001750">ofrece un método</a> para trabajar directamente con markdown, pero es necesario tener instalada una librería externa a Rails. En mi caso opté por BlueCloth.</p>
<p><span id="more-170"></span></p>
<p>Para usar bluecloth basta con instalar la gema</p>
<pre class="term">
$ sudo gem install bluecloth
</pre>
<p>NOTA: en algunas guías he visto el comando <code>sudo gem install BlueCloth</code> en vez de <code>bluecloth</code>. RubyGems es sensible a mayúsculas y minúsculas y al usar <code>BlueCloth</code> se instala una versión antigua de la gema.</p>
<h3>Haciendo que Rails reconozca bluecloth</h3>
<p>Para que Rails permita usar el método <code>markdown</code> debemos indicarle que queremos usar bluecloth. Para ello modificamos el fichero <code>config/environment.rb</code></p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#6666ff; font-weight:bold;">Rails::Initializer</span>.<span style="color:#9900CC;">run</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>config<span style="color:#006600; font-weight:bold;">|</span>
  ...
  <span style="color:#9900CC;">config</span>.<span style="color:#9900CC;">gem</span> <span style="color:#996600;">&quot;bluecloth&quot;</span>
  ...
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>Reiniciamos el servidor de desarrollo para que reconozca nuestros cambios y voila! Usar markdown en nuestras vistas es tan simple como llamar al helper <code>markdown</code></p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">&lt;!-- cosas... --&gt;</span>
<span style="color: #009900;">&lt;%<span style="color: #66cc66;">=</span> markdown variable %&gt;</span>
<span style="color: #808080; font-style: italic;">&lt;!-- otras cosas... --&gt;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://antarticonorte.com/blog/2010/01/04/como-usar-markdown-en-rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fuentes relativas en CSS</title>
		<link>http://antarticonorte.com/blog/2008/09/24/fuentes-relativas-en-css/</link>
		<comments>http://antarticonorte.com/blog/2008/09/24/fuentes-relativas-en-css/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 21:00:49 +0000</pubDate>
		<dc:creator>Al-x</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[fuentes]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[ie]]></category>

		<guid isPermaLink="false">http://antarticonorte.com/?p=42</guid>
		<description><![CDATA[En algún momento de nuestra carrera profesional, todos nosotros hemos oído o leido que debemos usar tamaños de fuentes relativos (si no es el caso, te lo digo yo: debes usar tamaños de fuentes relativos).
¿Por qué debo yo usar fuentes relativos?
Simple: por usabilidad.

Como diseñadores, tenemos que dar al usuario la posibilidad de usar el tamaño [...]]]></description>
			<content:encoded><![CDATA[<p>En algún momento de nuestra carrera profesional, todos nosotros hemos oído o leido que debemos usar tamaños de fuentes relativos (si no es el caso, te lo digo yo: debes usar tamaños de fuentes relativos).</p>
<h3>¿Por qué debo yo usar fuentes relativos?</h3>
<p>Simple: por usabilidad.</p>
<p><span id="more-42"></span></p>
<p>Como diseñadores, tenemos que dar al usuario la posibilidad de usar el tamaño de fuente que ellos quieran. Usando un tamaño de fuente absoluto estamos quitando esta opción a los usuarios, a muchos usuarios (los que usan ese <em title="Internet explorer">gran amigo</em> de los diseñadores y desarrolladores web).</p>
<p>Cojamos una web cualquiera al azar, como por ejemplo <a href="http://www.elpais.com">elpais.com</a>.</p>
<p><img src="http://antarticonorte.com/blog/wp-content/uploads/2008/09/imagen-1.png" alt="" title="elpais.com tamaño de fuente medio" /></p>
<p>Ahora ir al menú Ver &gt; Tamaño de fuente &gt; La más grande.</p>
<p><a href="http://antarticonorte.com/blog/wp-content/uploads/2008/09/menu-ie.png"><img src="http://antarticonorte.com/blog/wp-content/uploads/2008/09/menu-ie.png" alt="" title="menu-ie" class="boxed" /></a></p>
<p>Y podemos ver como el texto no cambia, tiene el mismo tamaño:</p>
<p><img src="http://antarticonorte.com/blog/wp-content/uploads/2008/09/imagen-1.png" alt="" title="elpais.com tamaño de fuente más grande." /></p>
<h3>Cómo usar fuentes relativas</h3>
<p>Para poder usar tamaños relativos de fuente, debemos partir de la base de que casi todos los navegadores tienen un tamaño estándar de 16px. Sabiendo esto sólo tenemos que hacer algo de matemáticas y usar <em>em</em> como unidad para las fuentes.</p>
<p>Por definición, 1em equivale al tamaño de fuente que estemos utilizando (en nuestro caso 16px). Así 2em equivalen a 32px y 0.5em a 8px.</p>
<p>Si queremos que el tamaño de todos los <code>&ld;p /&gt;</code> de nuestra página tengan un tamaño de fuente de 12px, tendremos que usar el siguiente CSS</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">p <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span><span style="color: #933;">.75em</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Calcular el tamaño de todos los elementos puede ser una tarea tediosa (y odiosa). Podemos simplificarlo cambiando el tamaño de fuente del documento a 10px de forma que las conversiones sean más directas (1em = 10px, 1.2em = 12px, &#8230;)</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">html <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span><span style="color: #933;"><span style="color: #cc66cc;">62.5</span>%</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span> <span style="color: #808080; font-style: italic;">/* 10/16 = 0.625. Usamos porcentajes por que hay navegadores que discriminan el tercer decimal */</span>
p <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span><span style="color: #933;">1.2em</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span></pre></div></div>

<h3>Mas allá: unidades relativas para las medidas</h3>
<p>Podemos hacer que el <em>layout</em> de la página se adapte al tamaño de fuente del usuario usando unidades relativas para los anchos. Como hemos establecido un tamaño base de 10px la conversión es directa.</p>
<p>Supongamos el siguiente layout:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;div class=&quot;container&quot;&gt;
	&lt;div class=&quot;col1&quot;&gt;&lt;h2&gt;lorem ipsum dolor sit amet&lt;/h2&gt;&lt;/div&gt;
	&lt;div class=&quot;col2&quot;&gt;&lt;h2&gt;consequecter adipliscing elit&lt;/h2&gt;&lt;/div&gt;
	&lt;div style=&quot;clear:both;&quot;&gt;&lt;/div&gt;
&lt;/div&gt;</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #6666ff;">.container</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">300px</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span> <span style="color: #993333;">auto</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span>
<span style="color: #6666ff;">.col1</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">float</span><span style="color: #00AA00;">:</span><span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">100px</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span>
<span style="color: #6666ff;">.col2</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">float</span><span style="color: #00AA00;">:</span><span style="color: #000000; font-weight: bold;">right</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">200px</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span>
h2 <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span><span style="color: #933;">2em</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Si aumentamos el tamaño de la fuente con el navegador, llegará un momento en el que el texto no entre en las columnas y se solapen. Sin embargo, si utilizamos el siguiente CSS</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #6666ff;">.container</span> <span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">30em</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span>
<span style="color: #6666ff;">.col1</span> <span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">10em</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span>
<span style="color: #6666ff;">.col2</span> <span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">20em</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Al aumentar el tamaño de la fuente, aumentará de forma proporcional el ancho de las columnas, por lo que nunca se llegará a solapar el texto de una sobre el de otra.</p>
]]></content:encoded>
			<wfw:commentRss>http://antarticonorte.com/blog/2008/09/24/fuentes-relativas-en-css/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>El viajero</title>
		<link>http://antarticonorte.com/blog/2008/06/28/el-viajero/</link>
		<comments>http://antarticonorte.com/blog/2008/06/28/el-viajero/#comments</comments>
		<pubDate>Fri, 27 Jun 2008 22:35:36 +0000</pubDate>
		<dc:creator>Al-x</dc:creator>
				<category><![CDATA[Curro]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://antarticonorte.com/?p=28</guid>
		<description><![CDATA[Ha costado un poquito de sudor y unas gotas de sangre, pero por fin hemos sacado el rediseño de el viajero de elpais.com.
&#8220;Un gran lugar donde los viajeros puedan dejar sus opiniones y hacer efectivas sus ideas&#8221;. Así definió ayer Jesús del Río, director general de contenidos de Prisacom, el nuevo portal de viajes del [...]]]></description>
			<content:encoded><![CDATA[<p>Ha costado un poquito de sudor y unas gotas de sangre, pero por fin hemos sacado el rediseño de <a href="http://elviajero.elpais.com/">el viajero</a> de <a href="http://www.elpais.com">elpais.com</a>.</p>
<blockquote><p>&#8220;Un gran lugar donde los viajeros puedan dejar sus opiniones y hacer efectivas sus ideas&#8221;. Así definió ayer Jesús del Río, director general de contenidos de Prisacom, el nuevo portal de viajes del Grupo PRISA (empresa editora de EL PAÍS), www.elpais.com/elviajero. En él, los internautas podrán encontrar información de destinos, guías, recomendaciones y fotos de lectores, blogs, consejos de expertos y una selección de hoteles y restaurantes.</p></blockquote>
<p>Podéis leer la <a href="http://www.elpais.com/articulo/Pantallas/Viajero/Red/plaza/trotamundos/elpepirtv/20080627elpepirtv_2/Tes">noticia completa</a> en El País.</p>
<p>Si algo se ve mal echarme la culpa, con confianza <img src='http://antarticonorte.com/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://antarticonorte.com/blog/2008/06/28/el-viajero/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PNGs transparentes en nuestros CSS para Internet Explorer</title>
		<link>http://antarticonorte.com/blog/2008/01/30/pngs-transparentes-en-nuestros-css-para-internet-explorer/</link>
		<comments>http://antarticonorte.com/blog/2008/01/30/pngs-transparentes-en-nuestros-css-para-internet-explorer/#comments</comments>
		<pubDate>Wed, 30 Jan 2008 22:54:46 +0000</pubDate>
		<dc:creator>Al-x</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[png]]></category>

		<guid isPermaLink="false">http://antarticonorte.com/2008/01/30/pngs-transparentes-en-nuestros-css-para-internet-explorer/</guid>
		<description><![CDATA[Que levanten la mano todos los que han querido meter una caja en su web con un fondo translucido y no han podido por culpa de Internet Explorer.
Hasta su versión 7, Internet Explorer no soporta el uso de PNGs transparentes de modo nativo. Sin embargo es posible usar un PNG transparente en nuestras hojas de [...]]]></description>
			<content:encoded><![CDATA[<p>Que levanten la mano todos los que han querido meter una caja en su web con un fondo translucido y no han podido por culpa de Internet Explorer.</p>
<p>Hasta su versión 7, Internet Explorer no soporta el uso de PNGs transparentes de modo nativo. Sin embargo es posible usar un PNG transparente en nuestras hojas de estilos usando un filtro propietario. Nos interesa que dicho filtro solo lo interprete Internet Explorer 6 e inferiores, por lo que tendremos que utilizar comentarios condicionales o algún otro método para filtrar CSS. (Yo personalmente uso el <a href="http://www.google.com/search?hl=es&#038;rls=es-es&#038;q=tan+hack&#038;btnG=Buscar&#038;lr=">Tan hack</a>)</p>
<pre class="css">
.capa-con-png {
	background:url(&#x27;../img/transparente.png&#x27;);
}
* html .capa-con-png {
	background-image: none; /* Sin esto no veríamos la imagen cargada con el filtro */
	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&#x27;img/transparente.png&#x27;, sizingMethod=&#x27;scale&#x27;);
}
</pre>
<h3>A tener en cuenta</h3>
<p>Es más que posible que en nuestro sitio la estructura de carpetas sea similar a la de la imagen, y que en nuestra hoja de estilos estemos poniendo las rutas relativas como en el ejemplo de arriba. Es importante saber que en el filtro las rutas no se tienen en cuenta desde el CSS, sino desde <strong>la página en la que estemos</strong>. Para ahorrarnos problemas es mejor usar rutas absolutas (siempre que tengamos posibilidad).</p>
<p>Las imagenes cargadas con el filtro no aceptan las propiedades <code>background-position</code> y <code>background-repeat</code>. Siempre se posicionarán en la esquina superior izquierda y se repetirán una única vez.</p>
<p>Dentro del filtro, la propiedad <code>sizingMethod</code> acepta dos valores:</p>
<ul>
<li><strong>image</strong>: pondrá la imagen a su tamaño. Si tenemos un PNG de 1&#215;1 pixels, lo mostrará a 1&#215;1.</li>
<li><strong>scale</strong>: redimesiona la imagen al tamaño de la caja en la que estamos aplicando el filtro. Si tenemos un png de 100&#215;100 pixels puesto en una caja que mide 200&#215;400 px, lo reescalará hasta ocupar toda la página</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://antarticonorte.com/blog/2008/01/30/pngs-transparentes-en-nuestros-css-para-internet-explorer/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Estructurando nuestra web con HTML5</title>
		<link>http://antarticonorte.com/blog/2008/01/26/estructurando-nuestra-web-con-html5/</link>
		<comments>http://antarticonorte.com/blog/2008/01/26/estructurando-nuestra-web-con-html5/#comments</comments>
		<pubDate>Sat, 26 Jan 2008 13:20:49 +0000</pubDate>
		<dc:creator>Al-x</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[html5]]></category>

		<guid isPermaLink="false">http://antarticonorte.com/blog/2008/01/26/reescribiendo-nuestras-webs-con-html5/</guid>
		<description><![CDATA[Este artículo está basado en el borrador público del estándar HTML5. La información aquí escrita podría no ser válida cuando se apruebe el estandar definitivo.
HTML5 va a suponer un paso importante hacia la web semántica. Las nuevas etiquetas para el marcado permiten describir mejor el contenido de nuestros documentos, lo que mejorará el tratamiento que [...]]]></description>
			<content:encoded><![CDATA[<p class="nota">Este artículo está basado en el <a href="http://www.w3.org/TR/2008/WD-html5-20080122/">borrador público del estándar HTML5</a>. La información aquí escrita podría no ser válida cuando se apruebe el estandar definitivo.</p>
<p>HTML5 va a suponer un paso importante hacia la web semántica. Las nuevas etiquetas para el marcado permiten describir mejor el contenido de nuestros documentos, lo que mejorará el tratamiento que dan a la información los navegadores y los motores de búsqueda.</p>
<h3>Secciones, encabezados y pies</h3>
<p>Hasta ahora para definir las distintas partes de un documento era necesario el uso de <code>&lt;div&gt;</code>s con el atributo <code>class</code> para organizar el contenido. Aunque el uso de clases es útil para nosotros como desarrolladores, los <abbr title="user agent">UA</abbr>s poco pueden hacer para interpretar el significado semántico de las mismas. Si nosotros escribimos <code>&lt;div class=&quot;header&quot;&gt;</code> o <code>&lt;div class=&quot;cabecera&quot;&gt;</code> sabemos que se corresponde a la cabecera de un bloque, pero un navegador o un motor de búsqueda no sabría diferenciar ese bloque de cualquier otro.</p>
<p>Con las nuevas etiquetas <code>&lt;section&gt;</code>, <code>&lt;header&gt;</code> y <code>&lt;footer&gt;</code> podremos definir con exactitud la función que desempeña cada bloque de nuestro documento.</p>
<p><span id="more-7"></span></p>
<p>Por ejemplo, una entrada de un blog en HTML4 es más o menos así:</p>
<pre class="html">
&lt;div class=&quot;articulo&quot;&gt;
	&lt;div class=&quot;articulo-cabecera&quot;&gt;
		&lt;h1&gt;Titulo de la entrada&lt;/h1&gt;
		&lt;p class=&quot;meta&quot;&gt;Escrito el 19/07/2008 - 12:34&lt;/p&gt;
	&lt;/div&gt;

	&lt;p&gt;Lorem ipsum dolor...&lt;/p&gt;
	&lt;div class=&quot;foto&quot;&gt;
		&lt;img src=&quot;una-foto.jpg&quot;&gt;
		&lt;p&gt;Texto de pie de foto&lt;/p&gt;
	&lt;/div&gt;
	...

	&lt;div class=&quot;relacionados&quot;&gt;
		&lt;ul&gt;
			&lt;li&gt;&lt;a href=&quot;..&quot;&gt;Articulo relacionado 1&lt;/a&gt;&lt;/li&gt;
			&lt;li&gt;&lt;a href=&quot;..&quot;&gt;Articulo relacionado 2&lt;/a&gt;&lt;/li&gt;
			&lt;li&gt;&lt;a href=&quot;..&quot;&gt;Articulo relacionado 3&lt;/a&gt;&lt;/li&gt;
		&lt;/ul&gt;
	&lt;/div&gt;

	&lt;div class=&quot;articulo-pie&quot;&gt;
		&lt;p&gt;Comentarios: &lt;a href=&quot;...&quot;&gt;40&lt;/a&gt;&lt;/p&gt;
	&lt;/div&gt;
&lt;/div&gt;
</pre>
<p>Utilizando el nuevo estandar, nuestro marcado es mucho más descriptivo sobre que papel desempeña cada bloque de texto dentro del documento:</p>
<pre class="html">
&lt;article&gt;
	&lt;header&gt;
		&lt;h1&gt;Titulo de la entrada&lt;/h1&gt;
		&lt;p class=&quot;meta&quot;&gt;Escrito el &lt;time datetime=&quot;2008-07-19 12:34&quot;&gt;19/07/2008 - 12:34&lt;/time&gt;&lt;/p&gt;
	&lt;/header&gt;

	&lt;p&gt;Lorem ipsum...&lt;/p&gt;
	&lt;figure&gt;
		&lt;img src=&quot;una-foto.jpg&quot;&gt;
		&lt;legend&gt;Texto de pie de foto&lt;/legend&gt;
	&lt;/figure&gt;
	...

	&lt;aside&gt;
		&lt;ul&gt;
			&lt;li&gt;&lt;a href=&quot;..&quot;&gt;Articulo relacionado 1&lt;/a&gt;&lt;/li&gt;
			&lt;li&gt;&lt;a href=&quot;..&quot;&gt;Articulo relacionado 2&lt;/a&gt;&lt;/li&gt;
			&lt;li&gt;&lt;a href=&quot;..&quot;&gt;Articulo relacionado 3&lt;/a&gt;&lt;/li&gt;
		&lt;/ul&gt;
	&lt;/aside&gt;

	&lt;footer&gt;
		&lt;p&gt;Comentarios: &lt;a href=&quot;...&quot;&gt;40&lt;/a&gt;&lt;/p&gt;
	&lt;/footer&gt;
&lt;/article&gt;
</pre>
<p>En el ejemplo podeis ver que he utilizado <code>&lt;article&gt;</code> en lugar de <code>&lt;section&gt;</code>. No es más que una forma más precisa de definir el tipo de sección en el que estamos.</p>
<p>El estandar no limita el número de <code>&lt;header&gt;</code> o <code>&lt;footer&gt;</code> que podemos poner en una página. Podemos poner tantos como secciones tenga el sitio. Por ejemplo la portada de nuestro hipotetico blog podría quedar así:</p>
<pre class="html">
&lt;body&gt;
	&lt;header&gt;
		&lt;h1&gt;Titulo del blog&lt;/h1&gt;
		&lt;p&gt;Tagline&lt;/p&gt;
	&lt;/header&gt;
	&lt;section class=&quot;articulos&quot;&gt;
		&lt;article&gt;
			&lt;header&gt;
				&lt;h2&gt;Titulo de la entrada&lt;/h2&gt;
				&lt;p class=&quot;meta&quot;&gt;Escrito el &lt;time datetime=&quot;2008-07-19 12:34&quot;&gt;19/07/2008 - 12:34&lt;/time&gt;&lt;/p&gt;
			&lt;/header&gt;

			&lt;p&gt;Lorem ipsum...&lt;/p&gt;

			&lt;footer&gt;
				&lt;p&gt;Comentarios: &lt;a href=&quot;...&quot;&gt;40&lt;/a&gt;&lt;/p&gt;
			&lt;/footer&gt;
		&lt;/article&gt;

		&lt;article&gt;
			&lt;header&gt;
				&lt;h2&gt;Titulo de la otra entrada&lt;/h2&gt;
				&lt;p class=&quot;meta&quot;&gt;Escrito el &lt;time datetime=&quot;2008-07-19 12:34&quot;&gt;19/07/2008 - 12:34&lt;/time&gt;&lt;/p&gt;
			&lt;/header&gt;

			&lt;p&gt;Lorem ipsum...&lt;/p&gt;

			&lt;footer&gt;
				&lt;p&gt;Comentarios: &lt;a href=&quot;...&quot;&gt;40&lt;/a&gt;&lt;/p&gt;
			&lt;/footer&gt;
		&lt;/article&gt;
	&lt;/section&gt;
	&lt;footer&gt;
		&copy; blablba....
	&lt;/footer&gt;
&lt;/body&gt;
</pre>
<p>Para más información no dejéis de consultar el apartado de <a href="http://www.w3.org/TR/2008/WD-html5-20080122/#sections">secciones</a> en <a href="http://www.w3.org/TR/2008/WD-html5-20080122/">el estandar</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://antarticonorte.com/blog/2008/01/26/estructurando-nuestra-web-con-html5/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Extensiones en el DOM de HTML5</title>
		<link>http://antarticonorte.com/blog/2008/01/23/extensiones-en-el-dom-de-html5/</link>
		<comments>http://antarticonorte.com/blog/2008/01/23/extensiones-en-el-dom-de-html5/#comments</comments>
		<pubDate>Wed, 23 Jan 2008 21:34:54 +0000</pubDate>
		<dc:creator>Al-x</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[dom]]></category>
		<category><![CDATA[html5]]></category>

		<guid isPermaLink="false">http://antarticonorte.com/blog/2008/01/23/extensiones-en-el-dom-de-html5/</guid>
		<description><![CDATA[Una de las cosas que mas me gustan del nuevo HTML5 son las extensiones de los objetos HTMLDocument y HTMLElement. Si bien son cosas que podemos hacer actualmente con librerías como prototype o jQuery, no viene mal que se puedan realizar de manera nativa.
HTMLDocument
El nuevo HTML5 define el metodo getElementsByClassName() para seleccionar elementos a través [...]]]></description>
			<content:encoded><![CDATA[<p>Una de las cosas que mas me gustan del nuevo HTML5 son las extensiones de los objetos HTMLDocument y HTMLElement. Si bien son cosas que podemos hacer actualmente con librerías como <a href="http://www.prototypejs.org">prototype</a> o <a href="http://www.jquery.com">jQuery</a>, no viene mal que se puedan realizar de manera nativa.</p>
<h3>HTMLDocument</h3>
<p>El nuevo HTML5 define el metodo <code>getElementsByClassName()</code> para seleccionar elementos a través de su clase.</p>
<p><code>innerHTML</code> pasa a ser estandar, y a nivel de documento (antes solo estaba implementado en HTMLElement). De esta forma podemos serializar todo el documento.</p>
<p><code>activeElement</code> devuelve el elemento que tiene foco actualmente. Si ningún elemento tiene foco devuelve el <code>body</code> de la página.</p>
<p><code>hasFocus</code> determina si el documento tiene foco.</p>
<p><code>getSelection()</code> devuelve un objeto que representa la selección o selecciones actuales del documento. Si por ejemplo el usuario selecciona el siguiente bloque de texto en su navegador <img src='/wp-content/uploads/2008/01/lipsum.png' class="boxed" alt='Texto seleccionado' /> <code>document.getSelection().toString()</code> devolverá &quot;est qui dolorem ipsum quia dolor sit amet&quot;</p>
<h3>HTMLElement</h3>
<p>Tambien implementa <code>getElementsByClassName()</code>. Combinado con <code>getElementById()</code> podemos restringir el ámbito de la búsqueda. Así podremos escribir sentencias como:</p>
<pre class="js">
var articulos = document.getElementById('contenido').getElementsByClassName('articulo');
</pre>
<p>Al igual que en HTMLDocument, <code>innerHTML</code> pasa a ser estandar.</p>
<p><code>classList</code> devuelve un objeto con el que poder manipular las clases de un elemento. Esto es muy útil cuando tenemos un elemento con más de una clase.</p>
<pre class="js">
clases = document.getElementById('contenido').classList;
clases.has('clase'); // Vemos si el elemento tiene una clase determinada
clases.add('clase'); // Añade una clase al elemento
clases.del('clase'); // Elimina una clase del elemento
clases.toggle('clase'); // Si el elemento tiene la clase, la elimina. Si no la tiene la añade
</pre>
<p>Para los elementos <code>a</code>, <code>area</code> y <code>link</code> se añade un objeto llamado <code>relList</code> con los mismos métodos para manejar el atributo <code>rel</code></p>
<p>Lo malo: que las podremos usar cuando Microsoft las implemente en Internet Explorer 17 o así.</p>
]]></content:encoded>
			<wfw:commentRss>http://antarticonorte.com/blog/2008/01/23/extensiones-en-el-dom-de-html5/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

