<?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>Chuso! &#187; CSS</title>
	<atom:link href="http://chusete.es/category/desarrollo/css-desarrollo/feed/" rel="self" type="application/rss+xml" />
	<link>http://chusete.es</link>
	<description>A la tercera va la vencida</description>
	<lastBuildDate>Tue, 13 Mar 2012 16:06:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Sombras y degradados en CSS3</title>
		<link>http://chusete.es/2012/03/08/sombras-y-degradados-en-css3/</link>
		<comments>http://chusete.es/2012/03/08/sombras-y-degradados-en-css3/#comments</comments>
		<pubDate>Thu, 08 Mar 2012 20:51:04 +0000</pubDate>
		<dc:creator>chusete</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[box-shadow]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[linear-gradient]]></category>
		<category><![CDATA[radial-gradient]]></category>
		<category><![CDATA[shadows]]></category>

		<guid isPermaLink="false">http://chusete.es/?p=1283</guid>
		<description><![CDATA[Esta vez no voy a hablar de nada nuevo. Muchos diseñadores y maquetadores web están ya incluyendo estos efectos a sus trabajos. Sin embargo, para mí son nuevos Los he utilizado con anterioridad pero muy brevemente, y sin tener muy claro qué hacían y por qué exactamente. Si quieres ir directo a los ejemplos, los tienes aquí. ¡Al [...]]]></description>
			<content:encoded><![CDATA[<p>Esta vez no voy a hablar de nada nuevo. Muchos diseñadores y maquetadores web están ya incluyendo estos efectos a sus trabajos. Sin embargo, para mí son nuevos <img src='http://chusete.es/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Los he utilizado con anterioridad pero muy brevemente, y sin tener muy claro qué hacían y por qué exactamente. Si quieres ir directo a los ejemplos, los tienes <a href="/demos/shadows_gradient/sample.html">aquí</a>. ¡Al lío!</p>
<p><span id="more-1283"></span></p>
<h2>Sombras</h2>
<p>En CSS todo son cajas; a cada elemento del árbol DOM (salvo a los <em>inline</em>, pero esto no viene a cuento) se le asigna una caja, y mediante CSS definimos su ubicación. Algunos de estos elementos se encuentran sobre otros: imagina un párrafo &lt;p&gt; sobre el elemento &lt;body&gt;. Con CSS3 podríamos hacer que el &lt;p&gt; arroje una sombre sobre &lt;body&gt;. Vamos a ver la <a href="http://www.w3.org/TR/css3-background/#box-shadow">sintaxis de esta propiedad</a> en su notación <a href="http://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_Form">EBNF</a>:</p>
<pre>none | &lt;shadow&gt; [ , &lt;shadow&gt; ]*</pre>
<p>Donde:</p>
<pre>&lt;shadow&gt; = inset? &amp;&amp; [ &lt;length&gt;{2,4} &amp;&amp; &lt;color&gt;? ]</pre>
<p>Traducido viene a dar estas dos opciones:</p>
<ol>
<li>none &#8211; En cuyo caso, no se muestra ninguna sombra.</li>
<li>&lt;shadow&gt; [ , &lt;shadow&gt; ]* &#8211; Significa que podemos tener una o más sombras separadas por comas. Cada sombra contiene:</li>
<ol>
<li>inset &#8211; Es un valor opcional. Si se omite, la sombra se arrojará hacia fuera del elemento. En caso de que se especifique &#8216;inset&#8217;, la sombra será arrojada dentro del elemento.</li>
<li>&lt;length&gt;{2,4} &#8211; Introduciremos 2, 3 o 4 longitudes:</li>
<ol>
<li>La primera longitud (obligatoria) establece el desplazamiento horizontal de la sombra. Los valores positivos hacen que la sombra se arroje hacia la derecha, y los negativos hacia la izquierda.</li>
<li>La segunda longitud (obligatoria) establece el desplazamiento vertical de la sombra. Los valores positivos hacen que la sombra se arroje hacia abajo, y los negativos hacia arriba.</li>
<li>La tercera longitud (opcional) especifica el radio blur. Si se introduce cero, la sombra será &#8220;afilada&#8221;, en caso contrario, contendrá más blur a mayor radio.</li>
<li>La tercera longitud (opcional) establece la difusión de la sombra. Los valores positivos hacen que se expanda, y los negativos que se contraiga.</li>
</ol>
<li>color &#8211; Es el color de la sombra. Este valor es opcional. Si no se ha introducido, se usará el valor de la propiedad &#8216;color&#8217;. <strong>Nota:</strong> No lo soportan todos los navegadores.</li>
</ol>
</ol>
<p>Vamos a ver algunos ejemplos de valores válidos según la notación estándar:</p>
<pre name="code" class="css">box-shadow: none;
box-shadow: 2px 2px;
box-shadow: inset 2px -2px;
box-shadow: 2px 2px black;
box-shadow: 1em -1em 0.5em #CCCCCC;
box-shadow: 1em -1em 0.5em 1em rgba(118, 118, 118, 0.5);
box-shadow: inset 1em 0 0.5em -1em rgb(0,0,0);
box-shadow: 2px 2px #000, inset -3px 3px gray;</pre>
<p>Y ahora, vamos a revisar ejemplos que puedes probar hoy en los navegadores:</p>
<h3>Ejemplo 1</h3>
<p><a href="http://chusete.es/wp-content/uploads/2012/03/1_1.png"><img class="aligncenter size-full wp-image-1307" title="1_1" src="http://chusete.es/wp-content/uploads/2012/03/1_1.png" alt="" width="210" height="113" /></a></p>
<pre name="code" class="css">box-shadow: 5px 5px #000;</pre>
<p>Arroja una sombra negra desplazada 5px a la derecha y 5px hacia abajo. No hemos especificado un blur, por lo que la sombra está afilada</p>
<h3>Ejemplo 2</h3>
<p><a href="http://chusete.es/wp-content/uploads/2012/03/1_2.png"><img class="aligncenter size-full wp-image-1308" title="1_2" src="http://chusete.es/wp-content/uploads/2012/03/1_2.png" alt="" width="211" height="115" /></a></p>
<pre name="code" class="css">box-shadow: 5px 5px 3px black;</pre>
<p>Arroja una sombra negra desplazada 3px a la derecha y 3px hacia abajo, con un desenfoque blur de 3px de radio.</p>
<h3>Ejemplo 3</h3>
<p><a href="http://chusete.es/wp-content/uploads/2012/03/1_3.png"><img class="aligncenter size-full wp-image-1309" title="1_3" src="http://chusete.es/wp-content/uploads/2012/03/1_3.png" alt="" width="207" height="107" /></a></p>
<pre name="code" class="css">box-shadow: inset 2px -2px 5px #000;</pre>
<p>Arroja una sombra interna negra desplazada 2px a la derecha y 2px hacia arriba, con un desenfoque blur de 5px de radio.</p>
<h3>Ejemplo 4</h3>
<p><a href="http://chusete.es/wp-content/uploads/2012/03/1_4.png"><img class="aligncenter size-full wp-image-1310" title="1_4" src="http://chusete.es/wp-content/uploads/2012/03/1_4.png" alt="" width="251" height="152" /></a></p>
<pre name="code" class="css">box-shadow: 0 0 0.5em 1em rgba(118, 0, 200, 0.5);</pre>
<p>Arroja una sombra lila, sin desplazamiento, con 0.5em de radio de blur, y expandida 1em.</p>
<h3>Ejemplo 5</h3>
<p><a href="http://chusete.es/wp-content/uploads/2012/03/1_5.png"><img class="aligncenter size-full wp-image-1311" title="1_5" src="http://chusete.es/wp-content/uploads/2012/03/1_5.png" alt="" width="229" height="108" /></a></p>
<pre name="code" class="css">box-shadow: 2em 0 0.5em -1em rgb(0,0,0);</pre>
<p>Arroja una sombra negra desplazada 2em a la derecha, con un desenfoque blur de 0.5em de radio, y contraída 1em.</p>
<h3>Ejemplo 6</h3>
<p><a href="http://chusete.es/wp-content/uploads/2012/03/1_6.png"><img class="aligncenter size-full wp-image-1312" title="1_6" src="http://chusete.es/wp-content/uploads/2012/03/1_6.png" alt="" width="219" height="120" /></a></p>
<pre name="code" class="css">box-shadow: 2px 2px 5px #000, -3px -3px 5px red;</pre>
<p>Arroja una sombra negra desplazada 2px a la derecha y 2px hacia abajo con un desenfoque blur de 5px. Además, arroja otra sombra roja desplazada 3px a la izquierda, 3px hacia arriba, y un desenfoque blur de 5px.</p>
<h3>Ejemplo 7</h3>
<p><a href="http://chusete.es/wp-content/uploads/2012/03/1_7.png"><img class="aligncenter size-full wp-image-1313" title="1_7" src="http://chusete.es/wp-content/uploads/2012/03/1_7.png" alt="" width="216" height="114" /></a></p>
<pre name="code" class="css">box-shadow: 5px 5px 5px gold;
border-radius: 15px;</pre>
<p>Arroja una sombra dorada desplazada 5px a la derecha, 5px hacia abajo y con 5px de radio blur. Además, vemos que la sombra se comporta sigue correctamente el recorrido del borde redondeado.</p>
<h3>Ejemplo 8</h3>
<p><a href="http://chusete.es/wp-content/uploads/2012/03/1_8.png"><img class="aligncenter size-full wp-image-1314" title="1_8" src="http://chusete.es/wp-content/uploads/2012/03/1_8.png" alt="" width="205" height="111" /></a></p>
<pre name="code" class="css">box-shadow: 0 8px 5px -5px red;
border-radius: 15px;</pre>
<p>Arroja una sombra roja desplazada 8px hacia abajo, con 5px de radio blur, y contraída 5px.</p>
<h2>Degradados</h2>
<p>Ya hemos visto las sombras, y como has podido comprobar son muy sencillas. Me gustaría decirte que los degradados son igual o más fáciles, pero lamentablemente no es así: se trata de una herramienta muy potente y versátil, por lo que nos ofrece muchas opciones.</p>
<p>Tenemos dos tipos de degradados: lineares y radiales. Los lineales, como su nombre indican, siguen una trayectoria lineal. Por contra, los radiales siguen una trayectoria circular o elíptica.</p>
<h2>Degradados lineales</h2>
<p>Su uso todavía está sujeto a modificaciones, y cada navegador lo implementa precedido de su propio prefijo y sin cumplir necesariamente la notación estándar:</p>
<ul>
<li>-moz-linear-gradient() para Firefox.</li>
<li>-webkit-linear-gradient() para Safari y Google Chrome.</li>
<li>-o-linear-gradient() para Opera</li>
<li>-ms-linear-gradient() para Internet Explorer 10.</li>
</ul>
<p>Esta es su <a href="http://dev.w3.org/csswg/css3-images/#linear-gradients">notación</a> <strong>estándar</strong>:</p>
<pre>&lt;linear-gradient&gt; = linear-gradient(
    [ [ &lt;angle&gt; | to &lt;side-or-corner&gt; ] ,]?
    &lt;color-stop&gt;[, &lt;color-stop&gt;]+
)

&lt;side-or-corner&gt; = [left | right] || [top | bottom]</pre>
<p>Que significa esto:</p>
<ol>
<li>Contiene un ángulo opcional especificado en &#8216;deg&#8217;. Por ejemplo, 90deg. <strong>Nota:</strong> No está todavía soportado por todos los navegadores.</li>
<li>Un punto de origen opcional precedido por &#8220;to&#8221;, que podría ser left, right, top, bottom, left top, left bottom, right top o right-bottom. Por defecto la trayectoria se traza hacia el lado o vértice opuesto al especificado. <strong>Nota:</strong> los navegadores que implementan esta propiedad solo funcionan si no se precede por &#8220;to&#8221;.</li>
<li>Dos o más colores, donde cada uno de ellos indica:</li>
<ol>
<li>El código del color, por ejemplo #FF00FF.</li>
<li>La posición del color. Por ejemplo, 0%, 30px, 100%. Si no se indica posición, se distribuyen a lo largo del recorrido uniformemente.</li>
</ol>
</ol>
<p>Al igual que con las sombras, vamos a ver algunos valores válidos de acuerdo a la <strong>notación estándar</strong>:</p>
<pre name="code" class="css">background-image: linear-gradient(90deg, yellow, blue);
background-image: linear-gradient(to bottom, red, white);
background-image: linear-gradient(to bottom left, red, black);
background-image: linear-gradient(0deg, #FF0000 10%, #000);
background-image: linear-gradient(to top, red 0%, rgb(129, 5, 205) 50%, #CCC 100%);</pre>
<p>Y ahora, algunos ejemplos reales:</p>
<h3>Ejemplo 1</h3>
<p><a href="http://chusete.es/wp-content/uploads/2012/03/2_1.png"><img class="aligncenter size-full wp-image-1315" title="2_1" src="http://chusete.es/wp-content/uploads/2012/03/2_1.png" alt="" width="208" height="117" /></a></p>
<pre name="code" class="css">background-image: -webkit-linear-gradient(top, black, white);
background-image: -moz-linear-gradient(top, black, white);
background-image: -ms-linear-gradient(top, black, white);
background-image: -o-linear-gradient(top, black, white);</pre>
<p>Degradado, de arriba a abajo, comenzando en negro y finalizando en blanco.</p>
<h3>Ejemplo 2</h3>
<p><a href="http://chusete.es/wp-content/uploads/2012/03/2_2.png"><img class="aligncenter size-full wp-image-1316" title="2_2" src="http://chusete.es/wp-content/uploads/2012/03/2_2.png" alt="" width="208" height="108" /></a></p>
<pre name="code" class="css">background-image: -webkit-linear-gradient(top left, black, white);
background-image: -moz-linear-gradient(top left, black, white);
background-image: -ms-linear-gradient(top left, black, white);
background-image: -o-linear-gradient(top left, black, white);</pre>
<p>Desgradado, de la esquina superior izquierda a la esquina inferior derecha, comenzando en negro y finalizando en blanco.</p>
<h3>Ejemplo 3</h3>
<p><a href="http://chusete.es/wp-content/uploads/2012/03/2_3.png"><img class="aligncenter size-full wp-image-1317" title="2_3" src="http://chusete.es/wp-content/uploads/2012/03/2_3.png" alt="" width="206" height="105" /></a></p>
<pre name="code" class="css">background-image: -webkit-linear-gradient(bottom, red, white, black);
background-image: -moz-linear-gradient(bottom, red, white, black);
background-image: -ms-linear-gradient(bottom, red, white, black);
background-image: -o-linear-gradient(bottom, red, white, black);</pre>
<p>Degradado de abajo hacia arriba, comenzando en rojo, después en blanco, y finalmente en negro.</p>
<h3>Ejemplo 4</h3>
<p><a href="http://chusete.es/wp-content/uploads/2012/03/2_4.png"><img class="aligncenter size-full wp-image-1318" title="2_4" src="http://chusete.es/wp-content/uploads/2012/03/2_4.png" alt="" width="204" height="105" /></a></p>
<pre name="code" class="css">background-image: -webkit-linear-gradient(top, red 70%, black);
background-image: -moz-linear-gradient(top, red 70%, black);
background-image: -ms-linear-gradient(top, red 70%, black);
background-image: -o-linear-gradient(top, red 70%, black);</pre>
<p>Degradado de arriba hacia abajo, de rojo hasta el 70% del recorrido y, desde ahí, hacia negro.</p>
<h3>Ejemplo 5</h3>
<p><a href="http://chusete.es/wp-content/uploads/2012/03/2_5.png"><img class="aligncenter size-full wp-image-1319" title="2_5" src="http://chusete.es/wp-content/uploads/2012/03/2_5.png" alt="" width="205" height="106" /></a></p>
<pre name="code" class="css">background-image: -webkit-linear-gradient(top, red 50%, black 80%, yellow 100%);
background-image: -moz-linear-gradient(top, red 50%, black 80%, yellow 100%);
background-image: -ms-linear-gradient(top, red 50%, black 80%, yellow 100%);
background-image: -o-linear-gradient(top, red 50%, black 80%, yellow 100%);</pre>
<p>Degradado de arriba hacia abajo, de rojo hasta el 50%, negro en el 80% del recorrido, y finalmente a amarillo.</p>
<h3>Ejemplo 6</h3>
<p><a href="http://chusete.es/wp-content/uploads/2012/03/2_6.png"><img class="aligncenter size-full wp-image-1320" title="2_6" src="http://chusete.es/wp-content/uploads/2012/03/2_6.png" alt="" width="205" height="106" /></a></p>
<pre name="code" class="css">background-image: -webkit-linear-gradient(top, red 50%, black 80%, yellow 100%);
background-image: -moz-linear-gradient(top, red 50%, black 80%, yellow 100%);
background-image: -ms-linear-gradient(top, red 50%, black 80%, yellow 100%);
background-image: -o-linear-gradient(top, red 50%, black 80%, yellow 100%);
background-size: 100% 50px;</pre>
<p>Igual que el ejemplo 5, pero estableciendo un tamaño de imagen de fondo de 50px de alto, con lo que el degradado se repite.</p>
<h3>Ejemplo 7</h3>
<p><a href="http://chusete.es/wp-content/uploads/2012/03/2_7.png"><img class="aligncenter size-full wp-image-1321" title="2_7" src="http://chusete.es/wp-content/uploads/2012/03/2_7.png" alt="" width="205" height="102" /></a></p>
<pre name="code" class="css">background-image: -webkit-linear-gradient(top, red 50%, black 80%, yellow 100%);
background-image: -moz-linear-gradient(top, red 50%, black 80%, yellow 100%);
background-image: -ms-linear-gradient(top, red 50%, black 80%, yellow 100%);
background-image: -o-linear-gradient(top, red 50%, black 80%, yellow 100%);
border-radius: 15px;</pre>
<p>Igual que el ejemplo 5, pero con bordes redondeados.</p>
<h2>Degradados radiales</h2>
<p>Al igual que con los degradados lineales, su uso todavía está sujeto a modificaciones, y cada navegador lo implementa precedido de su propio prefijo y sin cumplir necesariamente la notación estándar:</p>
<ul>
<li>-moz-radial-gradient() para Firefox.</li>
<li>-webkit-radial-gradient() para Safari y Google Chrome.</li>
<li>-o-radial-gradient() para Opera</li>
<li>-ms-radial-gradient() para Internet Explorer 10.</li>
</ul>
<p>Esta es su <a href="http://dev.w3.org/csswg/css3-images/#radial-gradients">notación</a> estándar:</p>
<pre>&lt;radial-gradient&gt; = radial-gradient(
    [ [ &lt;shape&gt; || &lt;size&gt; ] [ at &lt;position&gt; ]? , |
        at &lt;position&gt;,
    ]?
    &lt;color-stop&gt; [ , &lt;color-stop&gt; ]+
)</pre>
<p>Que significa esto:</p>
<ul>
<li>shape &#8211; Opcional. Forma del degradado, que puede ser o bien &#8216;circle&#8217; o bien &#8216;ellipse&#8217;.</li>
<li>size &#8211; Opcional. Tamaño. Puede ser:</li>
<ul>
<li>Un único valor absoluto, indicando un círculo. <strong>Nota</strong>: No soportado por los principales navegadores.</li>
<li>Dos valores absolutos o relativos, indicando una elipse. <strong>Nota</strong>: No soportado por los principales navegadores.</li>
<li><em>closest-side</em> &#8211; El degradado se expande hasta que el último color alcanza el lado más cercano del punto de origen. <strong>Nota</strong>: No soportado por los principales navegadores.</li>
<li><em>farthest-side</em> &#8211; El degradado se expande hasta que el último color alcanza el lado más lejano del punto de origen.</li>
<li><em>closest-corner</em> &#8211; El degradado se expande hasta que el último color alcanza la esquina más cerca al punto de origen. <strong>Nota</strong>: No soportado por los principales navegadores.</li>
<li><em>farthest-corner</em> &#8211; El degradado se expande hasta que el último color alcanza la esquina más lejana al punto de origen.</li>
</ul>
<li>position &#8211; Opcional. Posición de origen, precedida por &#8220;at&#8221;. Por omisión, &#8216;center&#8217;. Se especifica la posición horizontal (left, center, right, valor absoluto, o relativo) y vertical (top, center, bottom, valor absoluto, o relativo). <strong>Nota</strong>: Los navegadores que implementan esta propiedad solamente funcionan si no se precede por &#8220;at&#8221;.</li>
<li>Dos o más colores, separados por comas, y opcionalmente acompañados de una posición (por ejemplo, 50% o 3em). Si no se introduce una posición, se distribuyen uniformemente.</li>
</ul>
<p>Algunos ejemplos válidos según la notación estándar:</p>
<pre name="code" class="css">background-image: radial-gradient(circle, black, white);
background-image: radial-gradient(circle, black 50%, white 100%);
background-image: radial-gradient(ellipse, black, white);
background-image: radial-gradient(circle at top left, black, white);
background-image: radial-gradient(circle at 50px 100px, black, white);
background-image: radial-gradient(50px at bottom left, black, white);
background-image: radial-gradient(closest-side at top, black, white);
background-image: radial-gradient(farthest-corner, black, white);
background-image: radial-gradient(circle, black, white, red);</pre>
<p>Sin embargo estos ejemplos no funcionan en los navegadores, pues como hemos visto su notación es ligeramente diferente. Vamos a ver algunos ejemplos que podemos usar hoy:</p>
<h3>Ejemplo 1</h3>
<p><a href="http://chusete.es/wp-content/uploads/2012/03/3_1.png"><img class="aligncenter size-full wp-image-1322" title="3_1" src="http://chusete.es/wp-content/uploads/2012/03/3_1.png" alt="" width="204" height="203" /></a></p>
<pre name="code" class="css">background-image: -webkit-radial-gradient(red, black);
background-image: -moz-radial-gradient(red, black);
background-image: -ms-radial-gradient(red, black);
background-image: -o-radial-gradient(red, black);</pre>
<p>Degradado radial por defecto, de rojo a negro. Como vemos, comienza ubicado en el centro, se distribuye de forma circular, y se expande hasta que el negro alcanza las esquinas.</p>
<h3>Ejemplo 2</h3>
<p><a href="http://chusete.es/wp-content/uploads/2012/03/3_2.png"><img class="aligncenter size-full wp-image-1323" title="3_2" src="http://chusete.es/wp-content/uploads/2012/03/3_2.png" alt="" width="204" height="204" /></a></p>
<pre name="code" class="css">background-image: -webkit-radial-gradient(top center, red, black);
background-image: -moz-radial-gradient(top center, red, black);
background-image: -ms-radial-gradient(top center, red, black);
background-image: -o-radial-gradient(top center, red, black);</pre>
<p>Degradado radial comenzando en el centro superior (top center), de rojo a negro. De nuevo, se expande hasta que el color final (negro) alcanza alguna de las esquinas, adquiriendo por tanto una distribución elíptica.</p>
<h3>Ejemplo 3</h3>
<p><a href="http://chusete.es/wp-content/uploads/2012/03/3_3.png"><img class="aligncenter size-full wp-image-1324" title="3_3" src="http://chusete.es/wp-content/uploads/2012/03/3_3.png" alt="" width="204" height="204" /></a></p>
<pre name="code" class="css">background-image: -webkit-radial-gradient(top center, circle, red, black);
background-image: -moz-radial-gradient(top center, circle, red, black);
background-image: -ms-radial-gradient(top center, circle, red, black);
background-image: -o-radial-gradient(top center, circle, red, black);</pre>
<p>Degradado radial, de rojo a negro, comenzando en el centro superior (top center). En este caso hemos especificado que su distribución sea circular.</p>
<h3>Ejemplo 4</h3>
<p><a href="http://chusete.es/wp-content/uploads/2012/03/3_4.png"><img class="aligncenter size-full wp-image-1325" title="3_4" src="http://chusete.es/wp-content/uploads/2012/03/3_4.png" alt="" width="203" height="200" /></a></p>
<pre name="code" class="css">background-image: -webkit-radial-gradient(top left, red, black);
background-image: -moz-radial-gradient(top left, red, black);
background-image: -ms-radial-gradient(top left, red, black);
background-image: -o-radial-gradient(top left, red, black);</pre>
<p>Degradado de rojo a negro comenzando en la esquina superior izquierda. Desde esa posición todos los extremos quedan a la misma distancia, por lo que la distribución se hace de forma circular.</p>
<h3>Ejemplo 5</h3>
<p><a href="http://chusete.es/wp-content/uploads/2012/03/3_5.png"><img class="aligncenter size-full wp-image-1326" title="3_5" src="http://chusete.es/wp-content/uploads/2012/03/3_5.png" alt="" width="201" height="200" /></a></p>
<pre name="code" class="css">background-image: -webkit-radial-gradient(top left, red, black, white);
background-image: -moz-radial-gradient(top left, red, black, white);
background-image: -ms-radial-gradient(top left, red, black, white);
background-image: -o-radial-gradient(top left, red, black, white);</pre>
<p>Degradado radial, de rojo a blanco, pasando por el negro, desde la esquina superior izquierda.</p>
<h3>Ejemplo 6</h3>
<p><a href="http://chusete.es/wp-content/uploads/2012/03/3_6.png"><img class="aligncenter size-full wp-image-1327" title="3_6" src="http://chusete.es/wp-content/uploads/2012/03/3_6.png" alt="" width="199" height="201" /></a></p>
<pre name="code" class="css">background-image: -webkit-radial-gradient(top left, red 10%, black 30%, white);
background-image: -moz-radial-gradient(top left, red 10%, black 30%, white);
background-image: -ms-radial-gradient(top left, red 10%, black 30%, white);
background-image: -o-radial-gradient(top left, red 10%, black 30%, white);</pre>
<p>Degradado radial, de rojo a blanco, pasando por el negro, desde la esquina superior izquierda. El color rojo se prolonga hasta el 10% del recorrido, el negro se alcanza al 30% del recorrido, y el blanco al final (100%, por ser el último). El degradado se expande hasta la esquina más lejana (farthest-corner).</p>
<h3>Ejemplo 7</h3>
<p><a href="http://chusete.es/wp-content/uploads/2012/03/3_7.png"><img class="aligncenter size-full wp-image-1328" title="3_7" src="http://chusete.es/wp-content/uploads/2012/03/3_7.png" alt="" width="200" height="200" /></a></p>
<pre name="code" class="css">background-image: -webkit-radial-gradient(top left, farthest-side, red 10%, black 30%, white);
background-image: -moz-radial-gradient(top left, farthest-side, red 10%, black 30%, white);
background-image: -ms-radial-gradient(top left, farthest-side, red 10%, black 30%, white);
background-image: -o-radial-gradient(top left, farthest-side, red 10%, black 30%, white);</pre>
<p>Ejemplo igual que el anterior, pero en lugar de expandirse hasta la esquina más lejana (farthest-corner) se expande hasta el lateral más lejano (farthest-side).</p>
<h3>Ejemplo 8</h3>
<p><a href="http://chusete.es/wp-content/uploads/2012/03/3_8.png"><img class="aligncenter size-full wp-image-1329" title="3_8" src="http://chusete.es/wp-content/uploads/2012/03/3_8.png" alt="" width="200" height="200" /></a></p>
<pre name="code" class="css">background-image: -webkit-radial-gradient(top center, ellipse farthest-side, black, white);
background-image: -moz-radial-gradient(top center, ellipse farthest-side, black, white);
background-image: -ms-radial-gradient(top center, ellipse farthest-side, black, white);
background-image: -o-radial-gradient(top center, ellipse farthest-side, black, white);</pre>
<p>Degradado radial, de blanco a negro, comenzando en el centro superior (top center), con distribución elíptica expandiéndose hasta el lateral más lejano (farthest-side).</p>
<h3>Ejemplo 9</h3>
<p><a href="http://chusete.es/wp-content/uploads/2012/03/3_9.png"><img class="aligncenter size-full wp-image-1330" title="3_9" src="http://chusete.es/wp-content/uploads/2012/03/3_9.png" alt="" width="200" height="200" /></a></p>
<pre name="code" class="css">background-image: -webkit-radial-gradient(top center, ellipse farthest-corner, black, white);
background-image: -moz-radial-gradient(top center, ellipse farthest-corner, black, white);
background-image: -ms-radial-gradient(top center, ellipse farthest-corner, black, white);
background-image: -o-radial-gradient(top center, ellipse farthest-corner, black, white);</pre>
<p>Degradado radial, de blanco a negro, comenzando en el centro superior (top center), con distribución elíptica expandiéndose hasta la esquina más lejana (farthest-corner).</p>
<h3>Ejemplo 10</h3>
<p><a href="http://chusete.es/wp-content/uploads/2012/03/3_10.png"><img class="aligncenter size-full wp-image-1331" title="3_10" src="http://chusete.es/wp-content/uploads/2012/03/3_10.png" alt="" width="199" height="15" /></a></p>
<pre name="code" class="css">background-image: -webkit-radial-gradient(top center, ellipse farthest-side, black, white);
background-image: -moz-radial-gradient(top center, ellipse farthest-side, black, white);
background-image: -ms-radial-gradient(top center, ellipse farthest-side, black, white);
background-image: -o-radial-gradient(top center, ellipse farthest-side, black, white);</pre>
<p>Igual que el ejemplo anterior, pero en un contenedor de 15px de altura. Vemos que se produce un efecto de &#8220;destello sombra&#8221; que no podíamos obtener mediante box-shadow.</p>
<h3>Ejemplo 11</h3>
<p><a href="http://chusete.es/wp-content/uploads/2012/03/3_11.png"><img class="aligncenter size-full wp-image-1332" title="3_11" src="http://chusete.es/wp-content/uploads/2012/03/3_11.png" alt="" width="202" height="40" /></a></p>
<pre name="code" class="css">background-image:
    -webkit-radial-gradient(top center, ellipse farthest-side, rgba(255,255,255,1), rgba(255, 255, 255, 0) 50%),
    -webkit-radial-gradient(top center, ellipse farthest-side, gray, white);
background-image:
    -moz-radial-gradient(top center, ellipse farthest-side, rgba(255,255,255,1), rgba(255, 255, 255, 0) 50%),
    -moz-radial-gradient(top center, ellipse farthest-side, gray, white);
background-image:
    -ms-radial-gradient(top center, ellipse farthest-side, rgba(255,255,255,1), rgba(255, 255, 255, 0) 50%),
    -ms-radial-gradient(top center, ellipse farthest-side, gray, white);
background-image:
    -o-radial-gradient(top center, ellipse farthest-side, rgba(255,255,255,1), rgba(255, 255, 255, 0) 50%),
    -o-radial-gradient(top center, ellipse farthest-side, gray, white);
background-size: 100% 40%, 100% 100%;
background-repeat: no-repeat;</pre>
<p>En este caso tenemos un degradado radial elíptico, de blanco (rgba(255,255,255,1)) a blanco transparente (rgba(255,255,255,0)) , comenzando en el centro superior, y alcanzando el lateral más lejano. Además, hemos añadido un segundo degradado igual, pero de gris a blanco. A cada fondo le asignamos un tamaño: El primero ocupará todo el ancho y el 40% de la altura. El segundo, todo el ancho y todo el alto disponible. Para evitar que el primer degradado se repita, añadimos &#8220;background-repeat: no-repeat&#8221;. Con este ejemplo, logramos un efecto sombreado muy llamativo. Hemos añadido sobre él un contenedor para que se aprecie el efecto.</p>
<p>¡Y esto es todo por hoy! Espero que te haya sido de utilidad. Por mi parte, me ha venido de maravilla volcar todo esto en el blog como guía para futuras consultas.</p>
<p>Puedes ver todos los ejemplos en vivo <a href="/demos/shadows_gradient/sample.html">aquí</a>.
<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fchusete.es%2F2012%2F03%2F08%2Fsombras-y-degradados-en-css3%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fchusete.es%2F2012%2F03%2F08%2Fsombras-y-degradados-en-css3%2F&amp;source=chuso&amp;style=normal&amp;service=bit.ly&amp;service_api=R_86054639b9f90148987197dfdc061697&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
]]></content:encoded>
			<wfw:commentRss>http://chusete.es/2012/03/08/sombras-y-degradados-en-css3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>10 errores comunes de programadores web novatos</title>
		<link>http://chusete.es/2010/07/22/10-errores-comunes-de-programadores-web-novatos/</link>
		<comments>http://chusete.es/2010/07/22/10-errores-comunes-de-programadores-web-novatos/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 21:53:33 +0000</pubDate>
		<dc:creator>chusete</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[errores]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[novatos]]></category>
		<category><![CDATA[sitepoint]]></category>

		<guid isPermaLink="false">http://chusete.es/?p=777</guid>
		<description><![CDATA[Hace poco comentaba que en SitePoint habían publicado una lista de los 10 errores comunes de diseñadores web novatos. Pues recientemente publicaron un nuevo artículo, pero esta vez sobre los programadores web. Aquí el resumen: Ignorar los estándares web. Destacan el uso incorrecto del DOCTYPE, uso de etiquetas antiguas de HTML, o no validar el [...]]]></description>
			<content:encoded><![CDATA[<p>Hace poco comentaba que en SitePoint habían publicado una lista de los <a href="http://chusete.es/2010/06/15/10-errores-comunes-de-disenadores-web-novatos/">10 errores comunes de diseñadores web novatos</a>. Pues recientemente publicaron un <a href="http://www.sitepoint.com/blogs/2010/07/15/top-10-web-development-mistakes/">nuevo artículo</a>, pero esta vez sobre los programadores web. Aquí el resumen:</p>
<ol>
<li>Ignorar los estándares web. Destacan el uso incorrecto del DOCTYPE, uso de etiquetas antiguas de HTML, o no validar el código.</li>
<li>Delegar en software WYSIWYG. Muy acertadamente indican que, con este tipo de software uno se centra en la visualización, y no en la estructura.</li>
<li>Descuidar aspectos semánticos. El ejemplo que ponen es impagable: El programador novato, si quiere escribir un titular, lo pondrá encerrado en la etiqueta &lt;h1&gt;. Pero posteriormente es posible que &#8220;involucione&#8221;, y lo diseñe con divs anidados y estilos CSS.</li>
<li>Nombres de clases de estilos. ¿Qué tal una clase como &#8220;columna-izquierda-50px&#8221;? ¿Y si en un futuro el ancho cambia?</li>
<li>Prueba de navegadores tardía. Invitan al programador novato a revisar su página en varios navegadores desde el primer momento, y no dejarlo para el final. Personalmente, en este punto no estoy de acuerdo; Siempre he preferido desarrollar para una plataforma, y al final, corregir errores de las demás.</li>
<li>Ignorar la portabilidad. Destacan enlaces a rutas absolutas, conexiones a bases de datos sin centralizar, o realizar suposiciones sobre el entorno de ejecución.</li>
<li>Descuidar el ancho de banda. Poco más que añadir&#8230; En local un fichero de unos megas es irrelevante, no así en Internet.</li>
<li>Pésima accesibilidad. No consiste sólo en seguir unas reglas mecánicas de código, sino en tener en cuenta aspectos funcionales como poder consultar la web sin javascript, sin flash, en un móvil, o sin ratón.</li>
<li>Despreciar al SEO. Me encanta la definición que hacen del SEO: <em>Es una mezcla de psicoanálisis, complejidad técnica, y misteriosas artes oscuras</em>. En cualquier caso, indican que el desarrollador novato, dejará el SEO para el departamento de marketing una vez lanzada la página. Para entonces, ya será demasiado tarde.</li>
<li>Actualizaciones erróneas. Destacan la práctica de muchos programadores web de tener durante horas una página web en mantenimiento, cuando suele ser una tarea que no debería llevar más de unos minutos. En este punto tampoco estoy de acuerdo. Muchas actualizaciones tan sólo consisten en añadir documentos html, imágenes, y actualizar hojas de estilo y javascript. Sin embargo, hay aplicaciones web que requieren mucho más que eso a la hora de actualizar, por ejemplo cuando cambiamos la estructura de una base de datos, y se deben reestablecer todos los índices.</li>
<li>Como bonus, dejan una lista de otros 20 errores.</li>
</ol>
<p>En general, este artículo me ha parecido bastante más pobre que el anterior. Sobre todo, por lo mucho que se centra en la capa de presentación HTML, que dista mucho de ser coto exclusivo de los programadores web. En ningún punto se ha mencionado ni una sola práctica o error relacionada con la programación (Salvo el punto 6, donde sugieren no incluir <em>hard coded</em> la conexión a base de datos).
<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fchusete.es%2F2010%2F07%2F22%2F10-errores-comunes-de-programadores-web-novatos%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fchusete.es%2F2010%2F07%2F22%2F10-errores-comunes-de-programadores-web-novatos%2F&amp;source=chuso&amp;style=normal&amp;service=bit.ly&amp;service_api=R_86054639b9f90148987197dfdc061697&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
]]></content:encoded>
			<wfw:commentRss>http://chusete.es/2010/07/22/10-errores-comunes-de-programadores-web-novatos/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Facturas en CSS</title>
		<link>http://chusete.es/2009/12/08/facturas-en-css/</link>
		<comments>http://chusete.es/2009/12/08/facturas-en-css/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 15:51:58 +0000</pubDate>
		<dc:creator>chusete</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[factura]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://chusete.es/?p=650</guid>
		<description><![CDATA[Vía css-tricks veo un sencillo método para crear facturas sólo con CSS. ¿Y por qué usar este método en lugar de un software específico? Bueno, gracias a esto sólo necesitas el navegador para poder crear tus facturas. Y qué demonios, es muy ilustrativo el ejemplo. ¡Qué de cosas se pueden hacer con textarea! Además, es [...]]]></description>
			<content:encoded><![CDATA[<p>Vía <a href="http://css-tricks.com/editable-invoice-v2">css-tricks</a> veo un sencillo método para crear facturas sólo con CSS. ¿Y por qué usar este método en lugar de un software específico? Bueno, gracias a esto sólo necesitas el navegador para poder crear tus facturas. Y qué demonios, es muy ilustrativo el ejemplo. ¡Qué de cosas se pueden hacer con textarea! Además, es fácil de imprimir, y pasarlo a PDF es algo trivial.</p>
<p><a href="http://css-tricks.com/examples/EditableInvoice/">Ver demo</a>
<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fchusete.es%2F2009%2F12%2F08%2Ffacturas-en-css%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fchusete.es%2F2009%2F12%2F08%2Ffacturas-en-css%2F&amp;source=chuso&amp;style=normal&amp;service=bit.ly&amp;service_api=R_86054639b9f90148987197dfdc061697&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
]]></content:encoded>
			<wfw:commentRss>http://chusete.es/2009/12/08/facturas-en-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Botones súper increíbles con CSS3 y RGBA</title>
		<link>http://chusete.es/2009/12/08/botones-super-increibles-con-css3-y-rgba/</link>
		<comments>http://chusete.es/2009/12/08/botones-super-increibles-con-css3-y-rgba/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 04:08:16 +0000</pubDate>
		<dc:creator>chusete</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[botones]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[enlaces]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[rgba]]></category>

		<guid isPermaLink="false">http://chusete.es/?p=583</guid>
		<description><![CDATA[CSS3 ya está aquí, y ha llegado para quedarse. Gracias a él, podemos crear increíbles efectos en navegadores modernos (Teniendo en cuenta un enfoque de graceful degradation). En éste artículo voy a mostrar cómo, desde ZURB, han creado unos botones CSS que realmente son súper increíbles. Accede a la página del artículo para ver demostraciones [...]]]></description>
			<content:encoded><![CDATA[<p>CSS3 ya está aquí, y ha llegado para quedarse. Gracias a él, podemos crear increíbles efectos en navegadores modernos (Teniendo en cuenta un enfoque de <a href="http://chusete.es/2009/11/05/mejora-progresiva/">graceful degradation</a>). En éste artículo voy a mostrar cómo, desde <a href="http://www.zurb.com/playground/super-awesome-buttons">ZURB</a>, han creado unos botones CSS que realmente son súper increíbles. Accede a la página del artículo para ver demostraciones en vivo.</p>
<p><a class="button" href="#">Botón en ancla »</a></p>
<p><a class="large green button" href="#">Botón en ancla 2 »</a></p>
<p>La magia está en el CSS:</p>
<pre name="code" class="css">.button{
   background:#222 url(/wp-content/uploads/2009/12/alert-overlay.png) repeat-x 0 0;
   display:inline-block;
   padding:5px 15px 6px;
   color:#fff !important;
   font-size:13px;
   font-weight:bold;
   line-height:1;
   text-decoration:none;
   -moz-border-radius:5px;
   -webkit-border-radius:5px;
   -moz-box-shadow:0 1px 3px rgba(0,0,0,0.25);
   -webkit-box-shadow:0 1px 3px rgba(0,0,0,0.25);
   text-shadow:0 -1px 1px rgba(0,0,0,0.25);
   border-bottom:1px solid rgba(0,0,0,0.25);
   position:relative;
   cursor:pointer;
   overflow:visible;
   width:auto
}

button::-moz-focus-inner{
   border:0;
   padding:0
}

.button:hover{
   background-color: #111111;
   color: white
}

.button:active{
   top:1px
}</pre>
<p>Una sombra a la caja, otra al texto, un borde redondeado, y de fondo una imagen png que realiza el degradado (Se puede realizar también con CSS en Webkit). Una pasada hacer todo esto sólo con CSS, ¿no?</p>
<p>¡Pero espera! ¡Ahí no queda la cosa! ¿Qué ocurriría si cambiásemos el color de fondo sobre el que está el botón? La sombra se vería &#8220;rara&#8221;, al igual que el color del borde.</p>
<p><a href="http://chusete.es/wp-content/uploads/2009/12/super-awesome-buttons-fixed.png"><img class="aligncenter size-full wp-image-639" title="super-awesome-buttons-fixed" src="http://chusete.es/wp-content/uploads/2009/12/super-awesome-buttons-fixed.png" alt="super-awesome-buttons-fixed" width="413" height="66" /></a></p>
<p>Y lo mismo ocurriría con la sombra del texto si cambiásemos el color de relleno del propio botón. ¿Cómo se soluciona? Ahora es cuando llega al rescate la A de RGBA <img src='http://chusete.es/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Por ejemplo, en la sombra de la caja, lo hemos definido como:</p>
<pre>rgba(0,0,0,0.25)</pre>
<p>Es decir, color negro al 25% de transparencia. De ese modo, la sombra siempre &#8220;lucirá&#8221; del mismo modo usemos el color que usemos.</p>
<p>Espero que os haya gustado tanto como a mí.</p>
<p>Vía <a href="http://www.smashingmagazine.com/2009/12/02/pushing-your-buttons-with-practical-css3/">Smashin Magazine</a>,
<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fchusete.es%2F2009%2F12%2F08%2Fbotones-super-increibles-con-css3-y-rgba%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fchusete.es%2F2009%2F12%2F08%2Fbotones-super-increibles-con-css3-y-rgba%2F&amp;source=chuso&amp;style=normal&amp;service=bit.ly&amp;service_api=R_86054639b9f90148987197dfdc061697&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
]]></content:encoded>
			<wfw:commentRss>http://chusete.es/2009/12/08/botones-super-increibles-con-css3-y-rgba/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

