<?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>unreal4u&#039;s Personal Network &#187; CSS</title>
	<atom:link href="http://blog.unreal4u.com/category/css/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.unreal4u.com</link>
	<description>Because my reality... is just your virtuality</description>
	<lastBuildDate>Tue, 07 Sep 2010 17:20:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Script para reducir peso de los CSS</title>
		<link>http://blog.unreal4u.com/2010/02/script-para-reducir-peso-de-los-css/</link>
		<comments>http://blog.unreal4u.com/2010/02/script-para-reducir-peso-de-los-css/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 13:45:27 +0000</pubDate>
		<dc:creator>unreal4u</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Mundo Web]]></category>

		<guid isPermaLink="false">http://blog.unreal4u.com/?p=335</guid>
		<description><![CDATA[En la Web hay una cosa que yo diría es bastante fundamental y nadie le presta mucha atención: el peso de los archivos. Mantener un peso bajo puede ahorrar mucho ancho de banda, cosa necesaria en cualquier sitio de alto tráfico, ya que además de acelerar la descarga también hace que al cliente o usuario [...]]]></description>
			<content:encoded><![CDATA[<p>En la Web hay una cosa que yo diría es bastante fundamental y nadie le presta mucha atención: el peso de los archivos. Mantener un peso bajo puede ahorrar mucho ancho de banda, cosa necesaria en cualquier sitio de alto tráfico, ya que además de acelerar la descarga también hace que al cliente o usuario final la página le aparezca más rápido.</p>
<p>Aunque me gustaría ahondar mucho más en el tema, por el momento sólo presentaré una pequeña función que puede ser bastante útil a la hora de reducir el peso de CSS gigantes, sin embargo, la verdadera ganancia puede no estar aquí, sino que en la compresión que se debe activar en el servidor, o bien ocupando <code>ob_start()</code> de PHP, pero como ya dije: eso ya es harina de otro costal y al ser más amplio preferiría dejarlo para otro post.</p>
<p>Sin embargo, a continuación les presento el pequeño script. Vamos... haz click en leer más <img src='http://blog.unreal4u.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /><br />
<span id="more-335"></span></p>
<h2>Entendiendo CSS</h2>
<p>CSS es un invento genial. Mediante el mismo, y combinándolo inteligentemente con HTML, podemos controlar cualquier aspecto de nuestra página. Es, como casi todo en la Web, fácilmente interpretable y también pesa poco: aplicando sólo una hoja de estilos, podemos controlar todo el aspecto gráfico de la página. Sin embargo, y casi de forma tan variable como lo sea el gusto del programador, es también posible llenar un CSS demasiado con comentarios, espacios demás y hasta caracteres demás. De muestra, un botón:</p>
<pre class="brush: css;">html {
  background-color:#113355;
}
/* Algunos estilos */
p.hola, a:link {
  margin-left: 2px;
  margin-right: 2px;
  margin-top: 43px;
  margin-bottom: 43px;
}
/* El contenedor General de la página */
#wrapper {
  padding: 0px 0px 0px 0px;
  color: #5533AA;
}</pre>
<p>Esto puede reducirse bastante, para que no quede tan críptico, dejé cada estilo en una línea:</p>
<pre class="brush: css;">html{background:#135}
p.hola,a:link{margin:43px 2px}
#wrapper{padding:0;color:#53A}</pre>
<p>Explicaré algunas reglas básicas:</p>
<ol>
<li>Los comentarios no sirven: si quieren un peso chico, eliminen todo comentario.</li>
<li>margin, padding y algunos otros tienen un formato reducido. Sin embargo, es algo que se explicará en otro artículo</li>
<li>El punto y coma final de cada declaración no es necesario. Elimínenlo.</li>
<li>Los colores se pueden reducir, siempre y cuando los tres pares RGB sean iguales. Es útil.</li>
<li>A CSS no le gustan mucho los espacios. Se pueden eliminar muchos.</li>
</ol>
<p>Ahora bien, en el pequeño ejemplo de arriba, que son exactamente iguales, el peso del archivo se redujo de 263 bytes a 84 bytes. Ahora se pueden imaginar la misma situación, pero en la vida real donde el CSS no pesa algunos bytes, sino que bastantes kibibytes. (Eso serían bytes multiplicados por 1024). De todas formas, eliminando los saltos de línea, se puede dejar en 81 bytes, pero queda de difícil lectura.</p>
<p>Sin embargo, el tema que nos convoca hoy no hace algo tan avanzado, sino que simplemente elimina los puntos 1, 3 y la gran mayoría del punto 5. Aunque todavía está lejos de ser perfecto aunque hasta el momento he detectado que hace bien su pega.</p>
<pre class="brush: php;">&lt;?php
  function compress($buffer) {
    $buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
    $buffer = str_replace(array(&quot;\r\n&quot;, &quot;\r&quot;, &quot;\n&quot;, &quot;\t&quot;, '  ', '    ', '    '), '', $buffer);
    $buffer = str_replace(array(';}','; }',': ',' {','; '),array(&quot;}\n&quot;,&quot;}\n&quot;,':','{',';'),$buffer);
    return $buffer;
  }

header('Content-type: text/css');
echo compress(file_get_contents('highslide.css'));
?&gt;
</pre>
<p>En el ejemplo de arriba tomé el CSS de highslide, un script hecho en JavaScript que realiza el típico efecto zoom de una foto. El CSS de este script pesa 21.274 bytes, un poco más de 21KiB. Aunque el CSS en sí está bastante bien hecho, no está optimizado para la transferencia Web, tiene muchos espacios vacíos inútiles y también algunos comentarios, todo separado por un enter que parece que se le hubiera quedado pegado al programador.<br />
Después de aplicar el script, quedó pesando 15.695 bytes, lo cual significa una reducción de 6KiB. Puede no sonar tanto, pero en cuanto a porcentaje estamos hablando de una <strong>reducción de peso de un poco más de un 26%</strong>, ¡sólo eliminando espacios innecesarios! Además, hay que tener en cuenta que se está agregando un enter después de cada declaración: al eliminar estos enter que en estricto rigor también están demás, obtenemos un archivo de 15.511 bytes, lo cual en porcentaje significa un poco más del 27%.</p>
<p>Ahora bien, la desventaja de este esquema es que cada vez que queramos modificar el CSS, tendremos que realizar el paso de conversión y luego escribir el archivo, algo bastante impráctico sobretodo si se está desarrollando continuamente. Para solucionar esto, se puede ampliar un poco la función de arriba, combinando CSS y PHP en un solo archivo.</p>
<pre class="brush: php;">
&lt;?php
  header('Content-type: text/css');
  ob_start(&quot;comprimir&quot;);
  function comprimir($buffer) {
    $buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
    $buffer = str_replace(array(&quot;\r\n&quot;, &quot;\r&quot;, &quot;\n&quot;, &quot;\t&quot;, '  ', '    ', '    '), '', $buffer);
    $buffer = str_replace(array(';}','; }',': ',' {','; '),array(&quot;}&quot;,&quot;}&quot;,':','{',';'),$buffer);
    return $buffer;
  }
?&gt;
body{background:#1C762C none repeat scroll 0 0;color:#000;font-family:Arial;margin:0;padding:0}
img{border:none}
marquee{background:#FFF;height:168px;padding:0;text-align:center;width:130px}
a{color:#111;text-decoration:none}
ul{text-align:left}
&lt;?php
  ob_end_flush();
?&gt;
</pre>
<p>Pero, esto tiene un pequeño detalle: hay que guardarlo como un archivo .php, debido a que por lo general la configuración no permite establecer un .css como un script ejecutable de PHP. Lo que en el fondo se hace es generar un archivo PHP que genera CSS gracias a <code>ob_start()</code> que, con una explicación muy a la lijera, toma la salida y le aplica la función que definimos antes de enviarlo al explorador. Finalmente, debemos indicarle expresamente dónde termina el archivo.</p>
<p>De esta forma, se consigue comprimir todo el contenido. El único cambio que habría que hacer en HTML sería el siguiente:</p>
<pre class="brush: xml;">
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; lang=&quot;es&quot;&gt;
  &lt;head&gt;
    &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;/&gt;
    &lt;base href=&quot;http://looneyfactory.com/&quot;/&gt;
    &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;http://yui.yahooapis.com/3.0.0/build/cssreset/reset-min.css&quot;/&gt;
    &lt;link href=&quot;estilo_general.css.php?v=1.0&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;/&gt;
  &lt;/head&gt;
  &lt;body&gt;
&lt;!-- el contenido del cuerpo --&gt;
  &lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Aquí pasan varias cosas interesantes. Primero llamamos a una aplicación de Yahoo, que es la encargada de resetear todos los valores predeterminados que puedan tener los navegadores. (¿Se acuerdan del artículo sobre <a href="http://blog.unreal4u.com/2010/01/resetear-css/">reseteo de CSS</a>?). Después de eso, llamamos a nuestro estilo, que en realidad es un script hecho en PHP. Además, le pasamos la cadena v=1.0 y esto tiene una razón bastante específica: Hoy en día, no es extraño encontrar que algunos sitios (como por ejemplo: Yahoo, Google y en general cualquier empresa grande que tenga empleados que algo cachan sobre la Web) tengan habilitada una caché que dura menos que 1 año. El CSS de Yahoo por ejemplo, expira en 10 años más. Sin embargo, no tiene ni una gracia que se tenga que cambiar el nombre del archivo cada vez que hay un pequeño cambio en el CSS. Es por eso, que se le agrega al más puro estilo $_GET de PHP un identificador único con lo cual el navegador sub-entiende que ese nombre de archivo (completo, incluido los parámetros) lo debe guardar en caché. </p>
<h2>Ahora entendí un poco más... Y todo junto cómo sería?</h2>
<p>Afortunadamente para ustedes, cuando empezé a escribir este post comencé también a trabajar en una class que me hiciera esto de forma automática. Sin embargo, y como siempre, aunque el requerimiento era bastante simple, terminé por meterle mucho más contenido que lo que originalmente iba a hacer.<br />
Mayor información, tal como link hacia la class y qué cosas hace, las pueden encontrar <a href="http://blog.unreal4u.com/2010/01/nueva-class-publicada-csstacker/">en este post</a>. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.unreal4u.com/2010/02/script-para-reducir-peso-de-los-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nueva class publicada: CSStacker</title>
		<link>http://blog.unreal4u.com/2010/01/nueva-class-publicada-csstacker/</link>
		<comments>http://blog.unreal4u.com/2010/01/nueva-class-publicada-csstacker/#comments</comments>
		<pubDate>Sun, 24 Jan 2010 05:05:53 +0000</pubDate>
		<dc:creator>unreal4u</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Classes]]></category>
		<category><![CDATA[Mundo Web]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.unreal4u.com/?p=351</guid>
		<description><![CDATA[A partir de hoy se lanza mi segunda class al público en general: es una class que es capaz de tomar varios CSS, comprimirlo, optimizarlo y enviarlo hacia el cliente (con gzip). 
De esta forma, el CSS principal de CHW por ejemplo, pasa de pesar 43876 bytes a 5802 bytes, una compresión de un 87%! [...]]]></description>
			<content:encoded><![CDATA[<p>A partir de hoy se lanza mi segunda class al público en general: es una class que es capaz de tomar varios CSS, comprimirlo, optimizarlo y enviarlo hacia el cliente (con gzip). </p>
<p>De esta forma, el <a href="http://www.chw.net/wp-content/themes/chw-5.0/s/base.css">CSS principal de CHW</a> por ejemplo, pasa de pesar 43876 bytes a 5802 bytes, una compresión de un 87%! </p>
<p>Cómo se hace esto? Muy simple: se toma el o los CSS a procesarse, se eliminan los comentarios, los retornos de carros, los espacios que sobran, los tabs que sobran, se cambian todos los 0px a 0, los colores se convierten a su respectivo código corto y por último los colores se tratan de acortar de #EEAA11 a #EA1.<br />
Por último, a ese archivo resultante se le aplica gzip y se manda al cliente. Por último, si el cliente ya tiene en su caché el CSS, simplemente se manda un código HTTP de que el archivo no ha sido modificado, reduciendo de esta manera ancho de banda.<br />
<span id="more-351"></span><br />
Mi class trabaja con dos formas de caché, ambos configurables:<br />
El primer caché se genera en el servidor. De esta manera, se pueden dar distintas combinaciones para distintos perfiles.<br />
Si en una página cargo hola.css y chao.css y en otra página cargo hola.css y mundo.css, ambos tendrán una caché distinta.<br />
Esta caché se puede activar o desactivar, aunque desactivado no tiene mucha gracia ya que cada vez que hay un request, se debe realizar todo el proceso de arriba nuevamente. </p>
<p>La segunda caché es la del cliente: si el CSS no ha cambiado entonces no descarga nada. Si en cambio, el archivo fuente ha cambiado o el cliente no tiene en caché el CSS se descarga nuevamente.<br />
Esta caché se puede desactivar como también regular el tiempo que dura. </p>
<p>¿Qué ventajas tiene esto? </p>
<ol>
<li>Los CSS quedan originales, no teniendo que renombrarse. Es tan fácil como llegar y editarlos en caso que sea necesario. Cuando se editan, se actualiza automáticamente la caché interna y se manda la nueva versión al cliente. </li>
<li>No más problemas extraños con distintos navegadores: la class se encarga de hablar con el navegador. </li>
<li>Menos HTTP requests por cliente. </li>
<li>Menos peso que transferir hacia el cliente. </li>
<li>De fácil integración: sólo son 2 líneas de código <img src='http://blog.unreal4u.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  </li>
</ol>
<p>Por último, también es posible enviar el CSS como un archivo (recomendado) o bien imprimirlo inline como parte del estilo. </p>
<p>Y de dónde se puede descargar esta maravilla? De acá: </p>
<h4><a href="http://unreal4u.users.phpclasses.org/browse/package/5950.html">http://unreal4u.users.phpclasses.org/browse/package/5950.html</a></h4>
<p>En ese link se encuentra la class, documentación completa (en inglés, sorry es requisito del sitio), el archivo de configuración necesaria y por último un par de ejemplos. </p>
<p>Cualquier duda, puede ser mediante phpclasses.org o bien <a href="http://www.chw.net/foro/webmasters-f91/300941-nueva-class-publicada-csstacker.html">mediante CHW</a> o por último, como comentario en este mismo blog <img src='http://blog.unreal4u.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>[UPDATE]: Saqué la versión 1.3 hace algunos días que incorpora algo nuevo: uno puede forzar la creación de un archivo caché (en el servidor) y ahora también existe la opción de sólo imprimir el nombre del archivo caché que genera. De esa forma, podemos incluirlo en nuestro código fuente sin tener otro archivo dando vueltas y que el Webserver se encargue de lidiar con la caché del navegador. (Aunque esto hay que configurarlo, mi class la hace solo <img src='http://blog.unreal4u.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  )</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.unreal4u.com/2010/01/nueva-class-publicada-csstacker/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Resetear CSS</title>
		<link>http://blog.unreal4u.com/2010/01/resetear-css/</link>
		<comments>http://blog.unreal4u.com/2010/01/resetear-css/#comments</comments>
		<pubDate>Sun, 03 Jan 2010 07:11:49 +0000</pubDate>
		<dc:creator>unreal4u</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Pensamientos Personales]]></category>

		<guid isPermaLink="false">http://blog.unreal4u.com/?p=318</guid>
		<description><![CDATA[Me decidí hoy a hacer algunas cosas pendientes. Una de ellas es terminar de una buena vez por todas esa fantástica idea que me viene dando vueltas hace cerca de 2 años y que no he podido ejecutar por falta de tiempo: una página que se integre con la montonera de servicios externos para que [...]]]></description>
			<content:encoded><![CDATA[<p>Me decidí hoy a hacer algunas cosas pendientes. Una de ellas es terminar de una buena vez por todas esa fantástica idea que me viene dando vueltas hace cerca de 2 años y que no he podido ejecutar por falta de tiempo: una página que se integre con la montonera de servicios externos para que de esa manera, todo tu movimiento en Internet lo puedas hacer mayormente desde esa página. </p>
<p>También me llevé una agradable sorpresa: el post que habla acerca de <a href="http://blog.unreal4u.com/2009/12/manejar-errores-en-php/">cómo manejar errores en PHP</a> ya se ubica primero en Google al buscar por php trigger_error <img src='http://blog.unreal4u.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  Aunque a través de Google sólo he recibido 2 visitas, el solo hecho de ubicarme en primer lugar ya me hace más que feliz.<br />
Pero, el tema que nos concierne hoy, es acerca del reseteo de CSS. "¿Qué es?" "¿Para qué sirve?" y "¿Cómo podemos solucionar la problemática?" serán algunas de las interrogantes que se plantearán y que verán la luz en este post.<br />
<span id="more-318"></span></p>
<h2>¿Qué es?</h2>
<p>Tal como su nombre lo indica, es un reseteador de CSS (doh!!). ¿Qué es lo que significa exactamente? Bueno, para todos aquellos que se han lanzado a la aventura de crear una página Web que se vea exactamente igual en cualquier navegador, se ha podido dar cuenta de que no siempre se renderean exactamente igual todos los elementos. Existe siempre alguna forma lijeramente distinta de mostrar una cosa en un navegador y en otro.<br />
Para solucionar eso, nació la necesidad de poder "resetear" los valores predeterminados que un navegador en particular pudiera tener para un elemento en particular. De esta manera, se obtiene un documento en blanco que sirve de base para que de esta manera, se pueda empezar a trabajar. </p>
<h2>¿Para qué sirve?</h2>
<p>Aunque parcialmente respondida en la pregunta anterior, aquí voy a terminar de responderla al 100%.<br />
El problema se origina debido a que los navegadores pueden aplicar ciertos valores predeterminados para ciertos elementos lo cual hace que ese elemento no se vea siempre igual. El problema fundamental de esto es que por lo general el o los desarrolladores tienen un navegador principal con el que prueban todo exhaustivamente y ocupan otros sólo para simplemente verificar que todo esté marchando bien.<br />
Un ejemplo práctico lo tiene por ejemplo la diferencia en el rendereo del elemento <code>h1</code> y <code>p</code> en Chrome y Firefox vs Opera e Internet Explorer:</p>
<p>El código:</p>
<pre class="brush: xml;">&lt;html&gt;&lt;head&gt;&lt;title&gt;Probando...&lt;/title&gt;
&lt;style&gt;
html{background:#333}
h1{background:#555;color:#FFF;width:300px}
p{background:#777;color:#CCC;width:300px}
&lt;/style&gt;
&lt;/head&gt;&lt;body&gt;
&lt;h1&gt;Hola mundo!!!&lt;/h1&gt;
&lt;p&gt;Chao mundo!!&lt;/p&gt;
&lt;/body&gt;&lt;/html&gt;</pre>
<p>La vista previa:<br />
<a class="shutterset_" href='http://blog.unreal4u.com/wp-content/gallery/reseteo-css/2010-01-03-u4u-023.png' title=''><img src='http://blog.unreal4u.com/wp-content/gallery/reseteo-css/thumbs/thumbs_2010-01-03-u4u-023.png' alt='2010-01-03-u4u-023' class='ngg-singlepic ngg-center' /></a></p>
<p>Si se fijan bien en la imagen, tanto Chrome como Firefox mantienen un estilo bastante parecido, pero definitivamente Internet Explorer tiene otra manera totalmente distinta de renderear la página, lo cual redunda en mayores espacios y finalmente en pixeles corridos. También Opera corre el espaciado con un par de pixeles de diferencia, sólo apreciable para el que tiene muy buen ojo.<br />
Cabe destacar eso sí, que en estilos más complicados, incluso hay diferencias entre Chrome y Firefox. </p>
<h2>¿Cómo podemos solucionar la problemática?</h2>
<p>Y ha llegado el momento de la salvación y la principal razón de existir de este post: podemos solucionar estas pequeñas problemáticas en un 99% simplemente borrando cualquier estilo predeterminado que tome el navegador y estableciendo expresamente la nuestra de forma posterior al reseteo.<br />
Aunque creo haberlo mencionado antes, nunca está demás: CSS funciona de una manera bastante simple: cuando existe algún conflicto entre dos clases, simplemente se aplicará el último estilo declarado. De esta forma, si tenemos: </p>
<pre class="brush: xml;">&lt;html&gt;
&lt;style&gt;
p{color:#454;background:#9AF}
&lt;/style&gt;
&lt;body&gt;
&lt;p style=&quot;color:#29E&quot;&gt;hola mundo!&lt;/p&gt;
&lt;/body&gt;&lt;/html&gt;</pre>
<p>Existe un claro conflicto entre el estilo declarado en la cabecera y el estilo declarado de forma inline con la propiedad <code>style</code>. Mientras que el primero establece un color <code>#445544</code>, el segundo establece un color de fuente <code>#2299EE</code>. En este caso, se aplicará el último estilo declarado, es decir, el que se declara de forma inline.<br />
Exactamente lo mismo pasa con esta solución: mediante un pequeño cambio en nuestro código de arriba, podemos primero resetear todos los estilos y después llamar a nuestro CSS de forma segura. </p>
<p>Para facilitar aún más las cosas, y de paso no demorar más la carga de nuestra página, podemos externalizar el servicio. Es por lo mismo, que Yahoo nos ofrece el reseteo del CSS de forma totalmente gratuita, contando con el respaldo de ellos. ¿Cómo se hace? </p>
<pre class="brush: xml;">&lt;html&gt;&lt;head&gt;&lt;title&gt;Probando...&lt;/title&gt;
&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;http://yui.yahooapis.com/3.0.0/build/cssreset/reset-min.css&quot;/&gt;
&lt;style&gt;
html{background:#333}
h1{background:#555;color:#FFF;width:300px}
p{background:#777;color:#CCC;width:300px}
&lt;/style&gt;
&lt;/head&gt;&lt;body&gt;
&lt;h1&gt;Hola mundo!!!&lt;/h1&gt;
&lt;p&gt;Chao mundo!!&lt;/p&gt;
&lt;/body&gt;&lt;/html&gt;</pre>
<p>Con este pequeño cambio, nuestro script quedaría rendereado de la siguiente forma en los distintos navegadores seleccionados: </p>
<p><a class="shutterset_" href='http://blog.unreal4u.com/wp-content/gallery/reseteo-css/2010-01-03-u4u-024.png' title=''><img src='http://blog.unreal4u.com/wp-content/gallery/reseteo-css/thumbs/thumbs_2010-01-03-u4u-024.png' alt='2010-01-03-u4u-024' class='ngg-singlepic ngg-center' /></a></p>
<p>Aunque existen todavía algunos pixeles corridos, ya no son tantos como antes, lo cual alivia bastante la pega extra a realizarse. </p>
<p>Eso si que ahora será responsabilidad nuestra establecer los tamaños de las fuentes, pero mediante esta técnica se permitirá facilitar bastante el desarrollo cross-browser. Algunos consejos: la etiqueta <code>&lt;strong&gt;</code> también se resetea, al igual que la etiqueta <code>&lt;em&gt;</code> y varios más. Sugiero <a href="http://developer.yahoo.com/yui/3/cssreset/" target="_BLANK">echar un vistazo en Yahoo Developer Network</a> para informarse de más cambios y otras posibilidades más avanzadas que jamás he ocupado. </p>
<h2>Versión un poco más recortada (343 bytes)</h2>
<p>La versión de Yahoo pesa 501 bytes. Abajo adjunto una versión un poquito más chica que pesa 343 bytes. Se eliminó todo comentario previo y también el punto y coma final de cada declaración que no es necesario. </p>
<p><code><br />
html{color:#000;background:#FFF}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal}li{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}q:before,q:after{content:''}abbr,acronym{border:0;font-variant:normal}sup{vertical-align:text-top}sub{vertical-align:text-bottom}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit}input,textarea,select{*font-size:100%}legend{color:#000}<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.unreal4u.com/2010/01/resetear-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Barras de Progreso con CSS</title>
		<link>http://blog.unreal4u.com/2009/11/barras-de-progreso-con-css/</link>
		<comments>http://blog.unreal4u.com/2009/11/barras-de-progreso-con-css/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 13:18:11 +0000</pubDate>
		<dc:creator>unreal4u</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://blog.unreal4u.com/?p=96</guid>
		<description><![CDATA[Algunos días atrás publiqué un post en CHW que nadie pescó. Nadie lo pescará aquí tampoco ( xD ) pero por lo menos lo posteo xD
Encontré en Internet una forma bastante sencilla de crear barras de progreso sólo con CSS: es un truco bastante viejo pero encontré genial la idea que había detrás. Es demasiado [...]]]></description>
			<content:encoded><![CDATA[<p>Algunos días atrás <a href="http://www.chw.net/foro/webmasters-f91/285635-barras-de-progreso-con-css.html" target="_BLANK">publiqué un post en CHW</a> que nadie pescó. Nadie lo pescará aquí tampoco ( xD ) pero por lo menos lo posteo xD</p>
<p>Encontré en Internet una forma bastante sencilla de crear barras de progreso sólo con CSS: es un truco bastante viejo pero encontré genial la idea que había detrás. Es demasiado simple pero a la vez ingenioso.</p>
<p>El truco en sí es bastante fácil:<br />
<span id="more-96"></span></p>
<pre class="brush: xml;">
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;
&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;es&quot; lang=&quot;es&quot;&gt;
&lt;head&gt;
  &lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
  &lt;title&gt;Porcentajes en CSS&lt;/title&gt;
  &lt;style type=&quot;text/css&quot;&gt;
body{font-family:Arial;font-size:12px}
div.box{width:250px;border:1px solid #000;height:17px;margin:2px 0;background:#CCC}
div.bar{height:14px;line-height:11px;color:#FFF;text-align:right;padding:3px 0 0 0}
.bg-one{background:#000}
.bg-ima{background:url(progreso.png)}
  &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h2&gt;Porcentajes en CSS (Sin imagen)&lt;/h2&gt;
  &lt;div class=&quot;box&quot;&gt;&lt;div class=&quot;bar bg-one&quot; style=&quot;width:40%&quot;&gt;40%&lt;/div&gt;&lt;/div&gt;
  &lt;div class=&quot;box&quot;&gt;&lt;div class=&quot;bar bg-one&quot; style=&quot;width:25%&quot;&gt;25%&lt;/div&gt;&lt;/div&gt;
  &lt;div class=&quot;box&quot;&gt;&lt;div class=&quot;bar bg-one&quot; style=&quot;width:93%&quot;&gt;93%&lt;/div&gt;&lt;/div&gt;
&lt;h2&gt;Porcentajes en CSS (Con imagen)&lt;/h2&gt;
  &lt;div class=&quot;box&quot;&gt;&lt;div class=&quot;bar bg-ima&quot; style=&quot;width:86%&quot;&gt;86%&lt;/div&gt;&lt;/div&gt;
  &lt;div class=&quot;box&quot;&gt;&lt;div class=&quot;bar bg-ima&quot; style=&quot;width:3%&quot;&gt;3%&lt;/div&gt;&lt;/div&gt;
  &lt;div class=&quot;box&quot;&gt;&lt;div class=&quot;bar bg-ima&quot; style=&quot;width:50%&quot;&gt;50%&lt;/div&gt;&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Lo cual produce esta salida:</p>
<p style="text-align: center;"><img class="aligncenter" src="http://img52.imageshack.us/img52/649/20091119u4u0002.png" alt="" /></p>
<p>Básicamente lo que se hace es declarar un contenedor de un ancho específico. Dentro de este declaramos otro con un ancho en porcentaje, que puede ser establecido fácilmente a través de PHP u otro método. Por último, le doy dos clases (aprovechando herencia y selectores de CSS2.1): la primera establece parámetros básicos y comunes a ambos, la segunda clase es simplemente el color de fondo. Esto se puede obviar si siempre se ocupa el mismo.</p>
<p>De esta manera es posible crear una bonita barra de progreso solamente con CSS.</p>
<p>Demo en vivo? Por supuesto: <a href="http://unreal4u.com/test/barra/">Demo</a>.</p>
<p>Fue el tip webmasterístico de hoy.</p>
<p>Saludos !!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.unreal4u.com/2009/11/barras-de-progreso-con-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
