<?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>Niquelao &#187; CSS</title>
	<atom:link href="http://www.niquelao.net/category/css/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.niquelao.net</link>
	<description>¿Cómo dices que te ha quedado?</description>
	<lastBuildDate>Wed, 10 Feb 2010 16:59:46 +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>Más sobre CSS 3: background-origin y background-clip</title>
		<link>http://www.niquelao.net/css/2009/12/13/mas-sobre-css-3-background-origin-y-background-clip/</link>
		<comments>http://www.niquelao.net/css/2009/12/13/mas-sobre-css-3-background-origin-y-background-clip/#comments</comments>
		<pubDate>Sun, 13 Dec 2009 18:56:50 +0000</pubDate>
		<dc:creator>Rumoroso</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[background-clip]]></category>
		<category><![CDATA[background-origin]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[imagen de fondo]]></category>
		<category><![CDATA[w3c]]></category>

		<guid isPermaLink="false">http://www.niquelao.net/?p=342</guid>
		<description><![CDATA[Continuando con el repaso a las diferentes propiedades de CSS 3 que controlarán nuestros fondos, ahora les toca turno a background-origin y background-clip. Estas dos propiedades vienen para ayudarnos a controlar tanto el origen respecto al cual posicionaremos las imágenes de fondo, como la posibilidad de mostrarlas por debajo del borde.
background-origin
Determina el origen a partir [...]]]></description>
			<content:encoded><![CDATA[<p>Continuando con el repaso a las diferentes <a href="http://www.w3.org/TR/css3-background/">propiedades de CSS 3</a> que controlarán nuestros fondos, ahora les toca turno a <a href="http://www.w3.org/TR/css3-background/#background-origin">background-origin</a> y <a href="http://www.w3.org/TR/css3-background/#the-background-clip">background-clip</a>. Estas dos propiedades vienen para ayudarnos a controlar tanto el origen respecto al cual posicionaremos las imágenes de fondo, como la posibilidad de mostrarlas por debajo del borde.<span id="more-342"></span></p>
<h3>background-origin</h3>
<p>Determina el origen a partir de donde se calcula posición del fondo, es decir, el origen de coordenadas para la propiedad <strong>background-position</strong>. Sus posibles valores son:</p>
<ul>
<li><strong>border-box</strong>: la posición del fondo se determina respecto al área que incluye el borde (traducido significa que si el borde es discontinuo, el fondo se podrá llegar a ver por debajo de él).</li>
<li><strong>padding-box</strong>: es el <strong>valor por defecto</strong> y determina la posición del fondo respecto al área que incluye el padding (equivalente a la actual en CSS 2.1).</li>
<li><strong>content-box</strong>: el fondo se posiciona respecto al área de contenido.</li>
</ul>
<h3>background-clip</h3>
<p>Determina el área en el que se mostrará el fondo y admite dos posibles valores:</p>
<ul>
<li><strong>border-box</strong>: es el <strong>valor por defecto</strong> e incluye el fondo en el área ocupada por el borde.</li>
<li><strong>padding-box</strong>: limita el área en la que se mostrará el fondo a la ocupada por el padding y el contenido, es decir, aunque el origen del fondo esté en el borde, no se mostrará la imagen por debajo de este.</li>
</ul>
<h3>La explicación</h3>
<p>Como siempre, lo mejor es acudir a los ejemplos en forma de capturas para explicar ambas propiedades. En ellos he simulado el espacio ocupado por un elemento (respetando el modelo de cajas), es decir, borde (punteado gris grueso), padding (espacio entre el borde y la delgada línea discontinua) y contenido (delimitado por la línea discontinua). Empecemos:</p>
<p><strong>¿Cuál es la diferencia entre el siguiente par de imágenes?</strong></p>
<p><img src="http://www.niquelao.net/wp-content/uploads/2009/12/a.png" class="ejemplo" alt="" /></p>
<p>Resulta evidente que la diferencia entre ambas está en que en una se muestra el fondo por debajo del borde, mientras que en la otra no. La CSS de la primera es:</p>
<pre>background-origin: border-box;
background-clip: border-box;</pre>
<p>&#8230;y para la segunda:</p>
<pre>background-origin: border-box;
background-clip: padding-box;</pre>
<p>Y ahora, <strong>¿entre las siguientes imágenes?</strong></p>
<p><img src="http://www.niquelao.net/wp-content/uploads/2009/12/b.png" class="ejemplo" alt="" /></p>
<p>Ahora la diferencia está en el origen del fondo. En la primera, el origen incluye el borde:</p>
<pre>background-origin: border-box;</pre>
<p>&#8230;mientras que en la segunda estaría en el padding:</p>
<pre>background-origin: padding-box;</pre>
<p>Finalmente, <strong>¿cuál es la diferencia ahora?</strong>:</p>
<p><img src="http://www.niquelao.net/wp-content/uploads/2009/12/c.png" class="ejemplo" alt="" /></p>
<p>Nuevamente está claro. La primera imagen, al igual que la primera en el par de ejemplos anteriores, tiene como origen del fondo el área del borde, mientras que la segunda tiene dicho origen en el área de contenido:</p>
<pre>background-origin: border-box;</pre>
<p>y</p>
<pre>background-origin: content-box;</pre>
<p>Si tu navegador es una versión reciente de <strong>Firefox</strong>, <strong>Chrome</strong>, <strong>Safari</strong> o <strong>Konqueror</strong>, puedes acceder a la página con un <a href="http://www.niquelao.net/wp-content/uploads/2009/12/backgrounds-prop.html">ejemplo de aplicación de ambas propiedades</a>. Si utilizas algún otro (por ejemplo, Internet Explorer u Opera) también puedes acceder al ejemplo, aunque en este caso será para ver el resultado cuando no se soportan estas propiedades.</p>
<p><strong>nota:</strong> Mozilla y WebKit soportan estas propiedades de forma experimental con sus sintaxis particulares.</p>
<p>Como ya expliqué en otro artículo, con CSS 3 podremos <a href="http://www.niquelao.net/css/2009/11/25/multiples-imagenes-de-fondo-con-css3/">incluir más de una imagen de fondo</a>. Las propiedades <strong>background-origin</strong> y <strong>background-clip</strong> admiten la inclusión de un valor para cada una de las imágenes que se utilicen.</p>
<p>Para terminar, nuevamente comentaré algo respecto a la imagen empleada de fondo en los ejemplos. Es una deliciosa tarta de frutas que hizo Dolores y que me gané por bueno&#8230; vale, que me gané a secas&#8230;  bueno, no me la gané, pero la disfruté como un niño <img src='http://www.niquelao.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<a href='http://www.niquelao.net/css/2009/12/13/mas-sobre-css-3-background-origin-y-background-clip/' class='retweet ' startCount = '0'>Más sobre CSS 3: background-origin y background-clip</a>]]></content:encoded>
			<wfw:commentRss>http://www.niquelao.net/css/2009/12/13/mas-sobre-css-3-background-origin-y-background-clip/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fish eye menu only with CSS Transform and Transition</title>
		<link>http://www.niquelao.net/css/2009/12/11/fish-eye-menu-only-with-css-transform-and-transition/</link>
		<comments>http://www.niquelao.net/css/2009/12/11/fish-eye-menu-only-with-css-transform-and-transition/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 19:41:22 +0000</pubDate>
		<dc:creator>Rumoroso</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.niquelao.net/?p=330</guid>
		<description><![CDATA[This fish eye menu is a simple example of the things we can make with two special CSS 3 properties: transition (today only supported by Safari and Chrome with -webkit-transition) and transform (supported by Safari and Chrome with -webkit-transform and by Firefox with -moz-transform).
First of all, the demo page of fish eye menu (remember that [...]]]></description>
			<content:encoded><![CDATA[<p>This <strong>fish eye menu</strong> is a simple example of the things we can make with two <strong>special CSS 3 properties</strong>: <strong><a href="http://dev.w3.org/csswg/css3-transitions/">transition</a></strong> (today only supported by Safari and Chrome with <code>-webkit-transition</code>) and <strong><a href="http://www.w3.org/TR/2009/WD-css3-2d-transforms-20090320/">transform</a></strong> (supported by Safari and Chrome with <code>-webkit-transform</code> and by Firefox with <code>-moz-transform</code>).<span id="more-330"></span></p>
<p>First of all, the <a href="http://www.niquelao.net/wp-content/uploads/2009/12/example2.html">demo page of fish eye menu</a> (remember that only works in Chrome, Safari and Firefox. FF has not transtion property support).</p>
<p>The HTML code:</p>
<pre>&lt;ul&gt;
    &lt;li&gt;&lt;a href="#"&gt;&lt;img src="icons/opera_100.png" alt="opera browser" width="50"/&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="#"&gt;&lt;img src="icons/camino_100.png" alt="camino" width="50"/&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="#"&gt;&lt;img src="icons/chrome_100.png" alt="chrome" width="50"/&gt;&lt;/a&gt;&lt;/li&gt;
        .
        .
        .
&lt;/ul&gt;
</pre>
<p>And the CSS code (the top fish eye menu in the example). At the first, the style to display all items inline with a bit of css:</p>
<pre>ul,li {
    margin: 0;
    padding: 0;
}
ul {
    text-align: center;
}
li {
    display: inline;
}</pre>
<p>And now, the <strong>transform and transition properties</strong> to obtain the effect:</p>
<pre>a:hover, a:focus {
    z-index: 200;
      /* bring to top when the mouse is over or
         when it has the focus (for keyboard navigation) */
}
a img {
    border: none;
    -webkit-transition: all .2s;
       /* in Safari, every animatable property
          triggers an animation in .2s */
    -webkit-transform-origin: top;
       /* in Safari, the origin for
          transformation */
    -moz-transform-origin: top;
       /* in Firefox, the origin for
          transformation */
}
a:hover img, a:focus img {
    -webkit-transform: scale(2);
    -moz-transform: scale(2);
       /* transform property (for Safari and Firefox) */
}</pre>
<p>The following article will come&#8230;  soon&#8230;</p>
<a href='http://www.niquelao.net/css/2009/12/11/fish-eye-menu-only-with-css-transform-and-transition/' class='retweet ' startCount = '0'>Fish eye menu only with CSS Transform and Transition</a>]]></content:encoded>
			<wfw:commentRss>http://www.niquelao.net/css/2009/12/11/fish-eye-menu-only-with-css-transform-and-transition/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Si utilizas Safari o Chrome&#8230;</title>
		<link>http://www.niquelao.net/css/2009/12/06/si-utilizas-safari/</link>
		<comments>http://www.niquelao.net/css/2009/12/06/si-utilizas-safari/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 20:20:14 +0000</pubDate>
		<dc:creator>Rumoroso</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.niquelao.net/?p=310</guid>
		<description><![CDATA[&#8230;te desvelaré el final de Perdidos sólo con CSS. Si utilizas otro, habrás de esperar a la siguiente temporada&#8230;
Si utilizas Safari o Chrome&#8230;]]></description>
			<content:encoded><![CDATA[<p>&#8230;te desvelaré el <a href="http://niquelao.net/wp-content/uploads/2009/12/perdidos.html">final de Perdidos</a> sólo con CSS. Si utilizas otro, habrás de esperar a la siguiente temporada&#8230;</p>
<a href='http://www.niquelao.net/css/2009/12/06/si-utilizas-safari/' class='retweet ' startCount = '0'>Si utilizas Safari o Chrome&#8230;</a>]]></content:encoded>
			<wfw:commentRss>http://www.niquelao.net/css/2009/12/06/si-utilizas-safari/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS 3: Propiedades de fondo</title>
		<link>http://www.niquelao.net/css/2009/12/02/css-3-propiedades-de-fondo/</link>
		<comments>http://www.niquelao.net/css/2009/12/02/css-3-propiedades-de-fondo/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 09:53:22 +0000</pubDate>
		<dc:creator>Rumoroso</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.niquelao.net/?p=287</guid>
		<description><![CDATA[Ayer me dio por recopilar las propiedades que previsiblemente incluirá CSS 3 para controlar el fondo de cualquier elemento (en el medio visual) y sus correspondientes valores. Varias de ellas coinciden con las que habitualmente empleamos en nuestras hojas de estilo, con lo que no nos deberían resultar extrañas. El resto son nuevas propiedades que [...]]]></description>
			<content:encoded><![CDATA[<p>Ayer me dio por recopilar las propiedades que previsiblemente incluirá <a href="http://www.w3.org/TR/css3-roadmap/">CSS 3</a> para controlar <a href="http://www.w3.org/TR/css3-background/">el fondo de cualquier elemento</a> (en el medio visual) y sus correspondientes valores. Varias de ellas coinciden con las que habitualmente empleamos en nuestras hojas de estilo, con lo que no nos deberían resultar extrañas. El resto son nuevas propiedades que vienen a <strong>subsanar las carencias</strong> que los profesionales en CSS habían identificado.</p>
<p>A partir de ello he preparado la siguiente tabla:<span id="more-287"></span></p>
<table>
<thead>
<tr>
<th>Propiedad</th>
<th>valor/es</th>
<th>por defecto</th>
<th><abbr title="admite porcentajes">%</abbr></th>
</tr>
</thead>
<tbody>
<tr>
<td>background-attachment</td>
<td>[scroll | fixed | local] [ , [scroll | fixed | local] ]*</td>
<td>scroll</td>
<td>-</td>
</tr>
<tr>
<td>background-clip</td>
<td>[border-box | padding-box] [ , [border-box | padding-box] ]*</td>
<td>border-box</td>
<td>-</td>
</tr>
<tr>
<td>background-color</td>
<td>&lt;color&gt;</td>
<td>transparent</td>
<td>-</td>
</tr>
<tr>
<td>background-image</td>
<td>[&lt;image&gt; | none] [ , [&lt;image&gt; | none] ]*</td>
<td>none</td>
<td>-</td>
</tr>
<tr>
<td>background-origin</td>
<td>[border-box | padding-box | content-box] [ , [border-box | padding-box | content-box] ]*</td>
<td>padding-box</td>
<td>-</td>
</tr>
<tr>
<td>background-position</td>
<td>[ [ [ &lt;percentage&gt; | &lt;length&gt; | left | center | right ] ]  [ [ &lt;percentage&gt; | &lt;length&gt; | top | center | bottom ] ]? |  [ center | [ left | right ] [ &lt;percentage&gt; | &lt;length&gt; ]? ] ||  [ center | [ top | bottom ] [ &lt;percentage&gt; | &lt;length&gt; ]? ] ]*</td>
<td>0% 0%</td>
<td>si</td>
</tr>
<tr>
<td>background-repeat</td>
<td>[repeat-x | repeat-y | [repeat | space | round | no-repeat] ] [ , repeat-x | repeat-y | [repeat | space | round | no-repeat] ]*</td>
<td>repeat</td>
<td>-</td>
</tr>
<tr>
<td>background-size</a></td>
<td>[ [ &lt;length&gt; | &lt;percentage&gt; | auto ]{1,2} | cover | contain ] [ , [ &lt;length&gt; | &lt;percentage&gt; | auto ]{1,2} | cover | contain ]*</td>
<td>auto</td>
<td>si</td>
</tr>
</tbody>
</table>
<p>&#8230;y por supuesto, la forma <strong><a href="http://www.w3.org/TR/css3-background/#the-background">shorthand</a></strong>:</p>
<p><strong>background:</strong> <span class="codigo">[ &lt;bg-image&gt; || &lt;bg-position&gt; || / &lt;bg-size&gt; || &lt;repeat-style&gt; || &lt;attachment&gt; || &lt;bg-origin&gt; , ]* &lt;bg-image&gt; || &lt;bg-position&gt; || / &lt;bg-size&gt; || &lt;repeat-style&gt; || &lt;attachment&gt; || &lt;bg-origin&gt; || &lt;&#8217;background-color&#8217;&gt;</span></p>
<p>Algunas de las propiedades comienzan a tener soporte en las versiones más actuales de los navegadores (como ya mencioné en la entrada titulada <a href="http://www.niquelao.net/css/2009/11/25/multiples-imagenes-de-fondo-con-css3/">Multiples imágenes de fondo con CSS 3</a>), incluyéndose en algunos casos de forma experimental (por ejemplo en Firefox mediante el <a href="https://developer.mozilla.org/en/CSS_Reference/Mozilla_Extensions">prefijo -moz</a>).</p>
<p><strong>nota:</strong> Os recuerdo que ninguna de las propiedades se hereda.</p>
<p>En breve, para dejar <strong>niquelao</strong> el tema y comprender claramente lo que podemos llegar a conseguir modificando las propiedades de fondo, explicaré en detalle lo que hace cada una de ellas.</p>
<a href='http://www.niquelao.net/css/2009/12/02/css-3-propiedades-de-fondo/' class='retweet ' startCount = '0'>CSS 3: Propiedades de fondo</a>]]></content:encoded>
			<wfw:commentRss>http://www.niquelao.net/css/2009/12/02/css-3-propiedades-de-fondo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Multiples imágenes de fondo con CSS 3</title>
		<link>http://www.niquelao.net/css/2009/11/25/multiples-imagenes-de-fondo-con-css3/</link>
		<comments>http://www.niquelao.net/css/2009/11/25/multiples-imagenes-de-fondo-con-css3/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 20:04:12 +0000</pubDate>
		<dc:creator>Rumoroso</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[imagen de fondo]]></category>

		<guid isPermaLink="false">http://www.niquelao.net/?p=255</guid>
		<description><![CDATA[Una de las novedades que introduce CSS 3 (y que por mi parte es bienvenida) es la posibilidad de incluir múltiples imágenes de fondo para un mismo elemento (http://www.w3.org/TR/css3-background/#layering).
Hasta el momento, si queríamos combinar más de una imagen como fondo, lo único que podíamos hacer era utilizar alguno de los elementos que teníamos en nuestra [...]]]></description>
			<content:encoded><![CDATA[<p>Una de las <strong>novedades que introduce <a href="http://www.w3.org/TR/css3-roadmap/">CSS 3</a></strong> (y que por mi parte es bienvenida) es la posibilidad de <strong>incluir múltiples imágenes de fondo</strong> para un mismo elemento (<a href="http://www.w3.org/TR/css3-background/#layering">http://www.w3.org/TR/css3-background/#layering</a>).</p>
<p>Hasta el momento, si queríamos combinar más de una imagen como fondo, lo único que podíamos hacer era utilizar alguno de los elementos que teníamos en nuestra página, aplicando un fondo a cada uno para obtener el resultado deseado. Incluso en ocasiones, utilizábamos marcado extra, disminuyendo la calidad de la web al añadir marcado con fines únicamente presentacionales.</p>
<p>Pero ahora la cosa cambia&#8230;<span id="more-255"></span></p>
<p>Gracias a CSS 3, si queremos utilizar dos o más imágenes de fondo, a la propiedad <code>background-image:</code> le podremos añadir la ruta de cada una de ellas separándolas con comas. Por ejemplo:</p>
<pre>background-image: url('fondo1.png'), url('fondo2.png')</pre>
<p>Con algo tan sencillo como esto tenemos declarado lo necesario para que el elemento sobre el que lo apliquemos tenga las dos imágenes como fondo.</p>
<p>Claro, a partir de este punto surgen nuevas dudas&#8230;</p>
<ul>
<li>¿<strong>se superponen</strong> entre ellas?</li>
<li>¿<strong>se pueden posicionar</strong> en distintos lugares?</li>
<li>¿<strong>se puede repetir</strong> una sobre un eje y evitar que la otra lo haga?</li>
<li>&#8230;</li>
</ul>
<p>&#8230;y todas tienen como respuesta <strong>SI</strong>.</p>
<p>Respecto a la superposición, <strong>la primera imagen que se declara es la que se coloca más próxima al usuario</strong>. A continuación y por detrás de esta, se coloca la siguiente (en un eje perpendicular a la pantalla), luego la siguiente, y así sucesivamente hasta la última, que será la que se sitúe detrás de todas. Es como si cada imagen <strong>se situase en una capa</strong>. Si además declaramos un color de fondo, este se pondrá por detrás de todas las imágenes empleadas.</p>
<p>En cuanto al resto de dudas, puedo generalizar una respuesta, pues todas han surgido al pensar en las propiedades que habitualmente utilizamos, es decir, <strong>posición de la imagen</strong> de fondo (<code>background-position</code>), <strong>comportamiento al scroll</strong> (<code>background-attachment</code>) y <strong>repetición</strong> (<code>background-repeat</code>). Si queremos que cada imagen tenga un valor determinado, únicamente habremos de declararlos consecutivamente y separados por comas (al igual que hicimos al declarar las propias imágenes). Por ejemplo:</p>
<pre>background-image: url('fondo1.png'), url('fondo2.png'), url('fondo3.png');
background-position: 0 0, 150px 200px, left center;
background-repeat: no-repeat, repeat-x, no-repeat;</pre>
<p>Con esto declaramos tres imágenes como fondo, la primera se situará arriba a la izquierda, la segunda se desplazará hacia la derecha 150px y hacia abajo 200px y la tercera se colocará también a la izquierda y centrada verticalmente. Respecto a la repetición, la primera y la última no se repetirán y la segunda lo hará sobre el eje horizontal.</p>
<p>Pero aquí no se termina el tema. Para los que nos gusta optimizar el código (que deberíamos ser todos), algunas declaraciones se pueden abreviar:</p>
<pre>background-position: 0 0, 150px 200px, left center;</pre>
<p>pasa a:</p>
<pre>background-position: 0 0, 150px 200px, left;</pre>
<p>Se elimina la palabra <code>center</code>. Como todos sabemos (o deberíamos saber), cuando <strong>no se declara</strong> uno de los valores de posición del fondo, el que toma por defecto es el de centrado (<code>center</code>), en este caso vertical.</p>
<pre>background-repeat: no-repeat, repeat-x, no-repeat;</pre>
<p>pasa a:</p>
<pre>background-repeat: no-repeat, repeat-x;</pre>
<p>El tercer valor se puede eliminar. La razón es que cuando faltan valores, se repite la lista de los valores que ya declarados hasta tener uno por imagen (de ahí que si empieza la relación de valores de nuevo, el primero sea <code>no-repeat</code>). </p>
<p>Pero aún se puede optimizar más, aprovechando la propiedad <strong>shorthand</strong> <code>background:</code>:</p>
<pre>background: url('fondo1.png') 0 0 no-repeat, url('fondo2.png') 150px 200px
repeat-x, url('fondo3.png') left no-repeat;</pre>
<p>Como veréis, todo esto abre el <strong>abanico de posibilidades</strong> a nuestros diseños.</p>
<p>Algunos navegadores, en sus versiones actuales,<strong> comienzan a tener soporte</strong> para múltiples imágenes de fondo. Entre ellos están <strong>Firefox</strong> (a partir de la versión 3.6),  <strong>Chrome</strong>, <strong>Safari</strong> y <strong>Konqueror</strong>. Si estáis utilizando uno de ellos, podéis ver el resultado en el <a href="http://www.niquelao.net/wp-content/uploads/2009/11/multipleS.html">ejemplo que he preparado</a>. Lamentándolo mucho, aun no hay soporte en Internet Explorer (ya se verá si lo incluyen en su futura versión 9) ni en Opera. A continuación os incluyo un pantallazo con lo que se muestra en el ejemplo cuando hay soporte (si accedéis con un navegador sin soporte, únicamente veréis el borde punteado):</p>
<p><img class="ejemplo" src="http://www.niquelao.net/wp-content/uploads/2009/11/multipleSS.png" alt="multiples imágenes de fondo" /></p>
<p>Aparte de lo comentado, CSS 3 también incluye <strong>nuevos valores</strong> para algunas de las propiedades mencionadas, además de <strong>nuevas propiedades</strong> que darán gran versatilidad a nuestros diseños. En un próximo artículo las trataré en detalle. Para ir abriendo boca os menciono <code>background-size</code>&#8230;  <strong>¡sí, es lo que estáis pensando!</strong></p>
<p><strong>nota:</strong> Supongo que aparte del contenido técnico del artículo, lo más apetecible es la <a href="http://www.flickr.com/photos/talycomosuena/3777661280/in/set-72157621910947716/">tarta de la foto</a>. Pues para daros un poco de envidia os diré que la foto la hice yo y es una tarta de frutas que me preparó Dolores&#8230; Es evidente que ella también domina el tema de controlar la presentación, pero además os garantizo que el domina la gestión de contenidos, pues estaba deliciosa&#8230; <img src='http://www.niquelao.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<a href='http://www.niquelao.net/css/2009/11/25/multiples-imagenes-de-fondo-con-css3/' class='retweet ' startCount = '0'>Multiples imágenes de fondo con CSS 3</a>]]></content:encoded>
			<wfw:commentRss>http://www.niquelao.net/css/2009/11/25/multiples-imagenes-de-fondo-con-css3/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Otro toque de estilo en el Curso de CSS</title>
		<link>http://www.niquelao.net/css/2009/11/11/otro-toque-de-estilo-en-el-curso-de-css/</link>
		<comments>http://www.niquelao.net/css/2009/11/11/otro-toque-de-estilo-en-el-curso-de-css/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 21:37:56 +0000</pubDate>
		<dc:creator>Rumoroso</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.niquelao.net/?p=221</guid>
		<description><![CDATA[Como ya hice en la entrada anterior (estilando el curso de CSS Avanzado), voy a seguir comentando alguno de los estilos que utilicé en la presentación del curso de CSS para Zaragoza.
Hoy uno rapidíto  
En una determinada diapositiva tuve que categorizar una lista de propiedades. Esta lista resultaba ligeramente larga como para acomodarla de [...]]]></description>
			<content:encoded><![CDATA[<p>Como ya hice en la entrada anterior (<a href="http://www.niquelao.net/css/2009/11/08/estilando-curso-css-avanzado/">estilando el curso de CSS Avanzado</a>), voy a seguir comentando alguno de los <strong>estilos que utilicé en la presentación</strong> del curso de CSS para Zaragoza.</p>
<p>Hoy uno rapidíto <img src='http://www.niquelao.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> <span id="more-221"></span></p>
<p>En una determinada diapositiva tuve que categorizar una lista de propiedades. Esta lista resultaba ligeramente larga como para <strong>acomodarla de forma vertical en la pantalla</strong> (máxime cuando quería añadir otra lista más en la misma diapo), con lo que <strong>decidí estilarla en línea</strong>. Nuevamente mi intención era <strong>aprovechar la propia presentación como ejemplo</strong> (os recuerdo que la hice con el <a href="http://niquelao.net/wp-content/uploads/2007/4/acc_slide/mini/">rumoslide</a>, el cual es básicamente XHTML, CSS y javascript) para demostrar lo que se puede conseguir con las hojas de estilo.</p>
<p>A continuación incluyo la lista en cuestión. Lo hago en forma de imagen para que se vea su aspecto sin estilar (únicamente muestra los estilos que <strong>Firefox le aplica por defecto</strong>):</p>
<p><img src="http://www.niquelao.net/wp-content/uploads/2009/11/Pantallazo-1.png" alt="Pantallazo-1" title="Pantallazo-1" width="180" height="581" class="ejemplo" /></p>
<p>El HTML empleado es simple. Se trata de una lista en la que cada item está constituido por un elemento <code>code</code> con texto en su interior:</p>
<pre>&lt;ul class="herencia"&gt;
	&lt;li&gt;&lt;code&gt;border-collapse&lt;/code&gt;&lt;/li&gt;
	&lt;li&gt;&lt;code&gt;border-spacing&lt;/code&gt;&lt;/li&gt;
	&lt;li&gt;&lt;code&gt;caption-side&lt;/code&gt;&lt;/li&gt;
	&lt;li&gt;&lt;code&gt;color&lt;/code&gt;&lt;/li&gt;
	...
	&lt;li&gt;&lt;code&gt;widows&lt;/code&gt;&lt;/li&gt;
	&lt;li&gt;&lt;code&gt;word-spacing&lt;/code&gt;
&lt;/ul&gt;</pre>
<p>&#8230;y el resultado que quise obtener (y que evidentemente obtuve) es el siguiente (nuevamente incluyo un pantallazo):</p>
<p><img class="ejemplo" src="http://www.niquelao.net/wp-content/uploads/2009/11/Pantallazo-4.png" alt="Pantallazo de la lista estilada con CSS" width="412" height="236" /></p>
<p>Los estilos empleados para conseguir este resultado son:</p>
<pre>code {
	font: .8em monospace;
	color: #009;
}
.herencia li {
	display: inline;
}
.herencia li:after {
	content: ', ';
}
.herencia li:last-child:after {
	content: ' ';
}</pre>
<p>Lo primero que hice fue estilar el elemento <code>code</code> para poder diferenciarlo del resto de texto. Para ello jugué con el <strong>tamaño de la fuente, su familia y su color</strong>. Como se ve, todo muy simple.</p>
<p>Para que la lista inicialmente en vertical pasase a alinearse cambié la propiedad <code>display</code> de los items a <code>inline</code>. Luego <strong>hice aparecer una coma</strong> tipográfica y un espacio (&#8220;, &#8220;) mediante la propiedad <code>content</code> (<a href="http://www.w3.org/TR/CSS2/generate.html">contenido generado</a>). Esta la apliqué sobre el pseudoelemento <code>:after</code>. Finalmente, como esto hace aparecer la coma también en el último item, lo que hice fue indicar que su contenido generado estuviese vacío (<code>content: ' '</code>).</p>
<p>Vale, es evidente que hay una pega en algo que aun no he comentado y que espero que alguien se haya dado cuenta (idealmente alguno de los alumnos/as asistentes al curso). Para <strong>seleccionar el último item</strong> utilicé la pseudoclase <code>:last-child</code> de <a href="http://www.w3.org/TR/css3-selectors/#last-child-pseudo">CSS 3</a>, cuyo soporte está muy poco extendido. Pensaréis que podría <strong>haber utilizado únicamente selectores de CSS 2.1</strong>. Por ejemplo, podría haber generado el contenido antes de cada item (en lugar de después) usando <code>:before</code> y luego seleccionar con <code>:first-child</code> el primer item para quitarle la coma de delante. ¿Por qué no lo hice?&#8230; por lo siguiente:</p>
<p><img class="ejemplo" src="http://www.niquelao.net/wp-content/uploads/2009/11/Pantallazo-5.png" alt="Pantallazo de la lista con el selector before"  width="436" height="214" class="ejemplo" /></p>
<p>La coma se dispone <strong>al comienzo de cada línea</strong> cuando un item se sitúa en dicha posición, lo cual es evidentemente <strong>una incorrección</strong>. Para evitar esto, y sabiendo que el navegador que iba a utilizar tiene soporte para ello, decidí emplear CSS3&#8230; Lo se, <code>:last-child</code> no está suficientemente extendido entre los navegadores, pero al menos en las ultimísimas versiones si&#8230;  y para la presentación me sirvió perfectamente.</p>
<p>Después de todo este rollo se puede extraer una conclusión: <strong>CSS me mola, y el poder usar la presentación del curso como ejemplo me mola aun más</strong>. Eso si, por favor,&#8230; <strong>navegadores con más soporte y que llegue pronto CSS 3</strong>.</p>
<p>Os dejo el enlace a un par de listas en las que se detalla el grado de soporte de CSS en base al navegador:</p>
<ul>
<li><a href="http://www.webdevout.net/browser-support-css#css3standards">http://www.webdevout.net/browser-support-css#css3standards</a></li>
<li><a href="http://www.quirksmode.org/css/contents.html">http://www.quirksmode.org/css/contents.html</a></li>
</ul>
<p>Por cierto, en la presentación no me pude aguantar y utilicé un poco más de CSS 3&#8230; evidentemente no me podía quedar sin <strong>redondear algunas esquinas</strong>. En un próximo artículo os lo comentaré&#8230;</p>
<a href='http://www.niquelao.net/css/2009/11/11/otro-toque-de-estilo-en-el-curso-de-css/' class='retweet ' startCount = '0'>Otro toque de estilo en el Curso de CSS</a>]]></content:encoded>
			<wfw:commentRss>http://www.niquelao.net/css/2009/11/11/otro-toque-de-estilo-en-el-curso-de-css/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Estilando el curso de CSS Avanzado</title>
		<link>http://www.niquelao.net/css/2009/11/08/estilando-curso-css-avanzado/</link>
		<comments>http://www.niquelao.net/css/2009/11/08/estilando-curso-css-avanzado/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 20:00:20 +0000</pubDate>
		<dc:creator>Rumoroso</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.niquelao.net/?p=153</guid>
		<description><![CDATA[Hace unos días estuve en Zaragoza impartiendo un curso sobre CSS avanzado (incluido en el catálogo de cursos de CTIC). Como es lógico, y especialmente por tratarse de un curso sobre hojas de estilo y técnicas avanzadas, preparé la presentación en rumoslide (como el 95% de los usuarios lo llaman así, al final se quedará [...]]]></description>
			<content:encoded><![CDATA[<p>Hace unos días estuve en Zaragoza impartiendo un curso sobre <strong>CSS avanzado</strong> (incluido en el catálogo de cursos de <a href="http://fundacionctic.org">CTIC</a>). Como es lógico, y especialmente por tratarse de un curso sobre hojas de estilo y técnicas avanzadas, preparé la presentación en <a href="http://niquelao.net/wp-content/uploads/2007/4/acc_slide/mini/"><strong>rumoslide</strong></a> (como el 95% de los usuarios lo llaman así, al final se quedará con ese nombre).<span id="more-153"></span></p>
<p>La cuestión es que lo extenso del temario (o lo ajustado del tiempo) hizo que me quedase con las ganas de comentar algún detalle sobre los <strong>estilos que empleé en la presentación</strong>. Precisamente para ello me he puesto a escribir este artículo (bueno, y para retomar la costumbre de escribir periódicamente en el blog).</p>
<p>Como es lógico, el comienzo es el comienzo, con lo que <strong>hoy le toca a la portada</strong>:</p>
<p><a href="http://www.niquelao.net/wp-content/uploads/2009/11/portada.png"><img  src="http://www.niquelao.net/wp-content/uploads/2009/11/portada-300x206.png" alt="portada de la presentación" title="portada de la presentación" width="300" height="206" class="ejemplo" /></a></p>
<p>De la portada lo que quiero comentar es lo que hice con <strong>el título de la presentación</strong>. Mi idea era destacar ambas palabras (<strong>CSS</strong> y <strong>avanzado</strong>), tratando de hacerlo con suficiente énfasis individual para cada una, pero cuidando que no perdiesen su unión. Para ello, entre otras cosas, jugué con el tamaño y color de las fuentes (grande y claro vs menor y oscuro) y con su posición (superposición parcial).</p>
<p>Lo primero, el código HTML que utilicé:</p>
<pre>&lt;h1&gt;
	CSS
	&lt;span&gt;Avanzado&lt;/span&gt;
	&lt;span&gt;&lt;/span&gt;
&lt;/h1&gt;</pre>
<p>Y a continuación la CSS y su explicación:</p>
<pre>h1  {
	font-size: 7em;
	color: #ffc8a3;
	line-height: .8;
	font-style: italic;
	margin: .5em 0 .2em 20%;
	border-bottom: 3px solid;
	position: relative;
	overflow: hidden;
}</pre>
<p>La idea ha sido estilar primero las letras <em>CSS</em> del encabezado. Como el resto del texto se incluye en un <code>span</code>, se puede <strong>aplicar un estilo genérico</strong> para el <code>h1</code> para luego compensar el efecto sobre este. Así pues, declaré un tamaño de fuente suficientemente vistoso (7em), un color que combinase de forma adecuada con el resto de los estilos empleados y que no fuese demasiado intenso, el alto de línea y el estilo cursiva. Además le apliqué unos márgenes, teniendo en cuenta que quería separarlo de la izquierda un 20% del ancho total. Finalmente le puse una línea inferior de 3px (el color lo hereda de la tipografía).</p>
<p>Junto con estos estilos, como la superposición de palabras la conseguí con posicionamiento absoluto (más adelante lo comento), recurrí a <strong>inicializar las coordenadas</strong> de los descendientes del encabezado posicionándolo en relativo. El control sobre lo que desborda (overflow: hidden) lo añadí a posteriori (porque vi que el resultado quedaba elegante) tras estilar el resto del encabezado. Con esto se consigue que la parte inferior de la palabra <strong>avanzado</strong> oculte al sobresalir sobre los límites del <code>h1</code>.</p>
<p>A continuación estile la palabra <strong>avanzado</strong>:</p>
<pre>h1 :first-child {
	font-size: .5em;
	font-style: normal;
	color: #222;
	position: absolute;
	top: 60%;
	left: 15%;
	opacity: 0.75;
	-moz-opacity: 0.75;
	-ms-filter: alpha(opacity=75);
}</pre>
<p>Para <strong>evitar el marcado adicional</strong> jugué con los selectores. El término <strong>avanzado</strong> está en el primer elemento descendiente del <code>h1</code>, con lo que la selección se realiza mediante <a href="http://www.w3.org/TR/CSS21/selector.html#first-child">la pseudoclase</a> <code>:first-child</code>. Lo primero, cambiar las propiedades de la fuente (reducir tamaño, cambiar color y eliminar la cursiva). La superposición la hice mediante posicionamiento absoluto (las coordenadas se toman respecto a la posición del <code>h1</code> al haberle declarado posicionamiento relativo a este). Finalmente le di un toque extra jugando con su opacidad (recurrí a las propiedades con prefijos específicos que permiten que se vea correctamente en las versiones más actuales de los navegadores).</p>
<p>Y ahora la pregunta ¿cómo conseguí el efecto del degradado blanco?. La respuesta es sencilla y se basa en el siguiente código:</p>
<pre>h1 span + span {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
 	background: transparent url(img/degrada.png) left bottom repeat-x;
}</pre>
<p>El <code>span</code> vacío que añadí (y que seguro que a alguno ya le sonaba raro) es el que se encarga de este efecto. En realidad la idea es simple. Se puede conseguir el efecto poniendo sobre el texto una imagen png con un <strong>degradado de color</strong> que vaya de blanco a transparente (el blanco es por el fondo de la página). Para ello seleccioné el <code>span</code> mediante <a href="http://www.w3.org/TR/CSS21/selector.html#adjacent-selectors"><strong>un selector contextual</strong></a> (es el <code>span</code> que va detrás de otro <code>span</code>, con lo que <code>span + span</code>), lo posicioné en absoluto e hice que ocupase el 100% del ancho y alto del encabezado (al posicionar el <code>span</code>, pasa a admitir dimensiones). Luego le añadí la imagen del degradado como fondo alineado en la parte inferior (como es una imagen estrecha, hice que se repitiese sobre el eje x). Y listo&#8230;</p>
<p>El resto de estilos aplicados a la portada (pié y logo) se mantienen constantes a lo largo de las diapositivas de la presentación. En general son bastante sencillos, por lo que los comentaré rápidamente (quizás lo detalle cuando mencione los estilos de otras secciones en artículos posteriores). Decir que el pié es un contendedor genérico que incluye una lista (a la que le he quitado los bullets). Le puse un color de fondo intenso próximo al naranja CTIC y una imagen (también de fondo) colocada a la derecha. Además lo posicioné <code>fixed</code> en la parte inferior de la pantalla porque <strong>no quería que se desplazase con el scroll</strong> vertical (esto me sirvió de ejemplo durante el curso).</p>
<p>Respecto al logo, es un <code>svg</code> incluido en el elemento <code>object</code>. Lo que hice fue posicionarlo en absoluto ahí arriba y mantenerlo así durante toda la presentación.</p>
<p>En brevé comentaré algunos otros ejemplos de estilo que apliqué a lo largo de la presentación, como por ejemplo, la forma en que conseguí el fondo bicolor con las letras CSS, etc.</p>
<p><a href="http://www.niquelao.net/wp-content/uploads/2009/11/Pantallazo.png"><img class="ejemplo" src="http://www.niquelao.net/wp-content/uploads/2009/11/Pantallazo-150x150.png" alt="Pantallazo de la presentación" width="150" height="150" /></a></p>
<a href='http://www.niquelao.net/css/2009/11/08/estilando-curso-css-avanzado/' class='retweet ' startCount = '0'>Estilando el curso de CSS Avanzado</a>]]></content:encoded>
			<wfw:commentRss>http://www.niquelao.net/css/2009/11/08/estilando-curso-css-avanzado/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The best&#8230; made with CSS</title>
		<link>http://www.niquelao.net/css/2009/11/07/the-best-made-with-css/</link>
		<comments>http://www.niquelao.net/css/2009/11/07/the-best-made-with-css/#comments</comments>
		<pubDate>Sat, 07 Nov 2009 18:11:08 +0000</pubDate>
		<dc:creator>Rumoroso</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.niquelao.net/?p=147</guid>
		<description><![CDATA[The CSS Awards gallery are given to the best CSS websites in the world from the top designers, agencies and bloggers working today. Read more in The CSS awards.
The best&#8230; made with CSS]]></description>
			<content:encoded><![CDATA[<p>The CSS Awards gallery are given to the <strong>best CSS websites in the world</strong> from the top designers, agencies and bloggers working today. Read more in <a href="http://www.thecssawards.com/index.php">The CSS awards</a>.</p>
<a href='http://www.niquelao.net/css/2009/11/07/the-best-made-with-css/' class='retweet ' startCount = '0'>The best&#8230; made with CSS</a>]]></content:encoded>
			<wfw:commentRss>http://www.niquelao.net/css/2009/11/07/the-best-made-with-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pequeña sugerencia de diseño: coherencia</title>
		<link>http://www.niquelao.net/css/2009/11/05/pequena-sugerencia-diseno-w3c/</link>
		<comments>http://www.niquelao.net/css/2009/11/05/pequena-sugerencia-diseno-w3c/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 22:15:43 +0000</pubDate>
		<dc:creator>Rumoroso</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[coherencia]]></category>
		<category><![CDATA[iluminación]]></category>
		<category><![CDATA[sombra]]></category>
		<category><![CDATA[w3c]]></category>

		<guid isPermaLink="false">http://www.niquelao.net/?p=108</guid>
		<description><![CDATA[Recientemente hemos recibido una grata sorpresa al ver que la web del W3C ha modificado su diseño. Y digo grata sorpresa porque el nuevo diseño resulta más elegante y actual que el anterior. El conjunto de estilos incluye una gama cromática más sencilla, pero sensiblemente menos estridente y más eficaz.

Aun así, hoy me di cuenta [...]]]></description>
			<content:encoded><![CDATA[<p>Recientemente hemos recibido <strong>una grata sorpresa</strong> al ver que la web del <a href="http://www.w3.org">W3C</a> ha modificado su diseño. Y digo grata sorpresa porque el nuevo diseño resulta más elegante y actual que el anterior. El conjunto de estilos incluye una gama cromática más sencilla, pero sensiblemente menos estridente y más eficaz.</p>
<p><span id="more-108"></span></p>
<p>Aun así, hoy me di cuenta de un detalle que me sirve para comentar una idea. Cuando queremos jugar con la simulación de sombras, es importante <strong>mantener una cierta coherencia</strong>. Mejor será que lo ilustre (las imágenes funcionan como enlaces para acceder a su ampliación):</p>
<p>
<a href="http://niquelao.net/wp-content/uploads/2009/11/peorAgraciado.png"><br />
<img class="ejemplo" src="http://niquelao.net/wp-content/uploads/2009/11/peorAgraciado-300x77.png" alt="Cabecera de la web del w3c" /></a><br />
Esta es la cabecera actual de una sección cualquiera de la web, en concreto del <a href="http://www.w3.org/News/2009.html">área de noticias</a>. De ella me gustaría destacar tres zonas concretas:<br />
<a href="http://niquelao.net/wp-content/uploads/2009/11/pocoAgraciado.png"><br />
<img class="ejemplo" src="http://niquelao.net/wp-content/uploads/2009/11/pocoAgraciado-300x157.png" alt="cabecera del w3c con ligeras modificaciones" /></a></p>
<p>Como se puede observar, hay tres efectos de sombra, dos de ellos conseguidos con imágenes y el tercero con el color de los bordes superior e izquierdo. El problema es que la sombra que genera el área azul (la que incluye el logo) trata de simular que la capa inferior es ligeramente cóncava (o la superior convexa), mientras que la que genera la cabecera con la palabra <em>NEWS</em> es totalmente plana. Para rematar el terceto tenemos la sombra de la capa para intercambiar las <em>Views</em> y es la que generada con el color de borde. Mientras que en las dos primeras la luz proyecta la sombra hacia la parte inferior, en la tercera la sombra se sitúa por encima de la capa, con lo que no existe una coherencia en la dirección de la luz o en la ubicación de la misma.</p>
<p>Por este motivo, me atrevo a hacer una simple sugerencia que creo que mejora la situación (os recuerdo que la imagen funciona como enlace para acceder a su ampliación):<br />
<a href="http://niquelao.net/wp-content/uploads/2009/11/mejorAgraciado.png"><br />
<img class="ejemplo" src="http://niquelao.net/wp-content/uploads/2009/11/mejorAgraciado-300x77.png" alt="cabecera del w3c con ligeras modificaciones" /></a></p>
<p>Únicamente se trata de hacer dos simples cambios:</p>
<ul>
<li>Las dos sombras principales podrían pasar a unificarse (en el ejemplo opté por el segundo tipo de sombra, más recto y definido).</li>
<li>Por otro lado, en el submenú <em>Views</em> podría haber sugerido intercambiar los colores de los bordes de arriba a abajo y de izquierda a derecha, pero como la sombra creada por estos no considero que sea eficaz, pienso que una opción podría ser desplazar dicho submenú hacia la derecha, alineándolo con el buscador. No creo acertado el que deba tener tanto peso visual como para situarse en un área destacada (como está actualmente). Y ya puestos, al emplear esquinas redondeadas, yo lo pondría como una pseudopestaña que surje de la parte superior de la web. Opcionalmente, lo simplificaría eliminando la opción de la vista actual (por ejemplo, si estamos en la vista <em>desktop</em>, no es necesario incluir dicha opción).</li>
</ul>
<p>En conclusión, cuando simulemos efectos de sombreado, <strong>seamos coherentes</strong>. Si queremos que el resultado parezca natural, debemos tener en cuenta la <strong>posición de la luz y su direccionalidad</strong>.</p>
<p><strong>nota:</strong> De acuerdo, enviaré esta sugerencia al propio W3C. Ya os contaré&#8230;</p>
<a href='http://www.niquelao.net/css/2009/11/05/pequena-sugerencia-diseno-w3c/' class='retweet ' startCount = '0'>Pequeña sugerencia de diseño: coherencia</a>]]></content:encoded>
			<wfw:commentRss>http://www.niquelao.net/css/2009/11/05/pequena-sugerencia-diseno-w3c/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Atiende, pequeño saltamontes</title>
		<link>http://www.niquelao.net/css/2007/11/13/atiende-pequeno-saltamontes/</link>
		<comments>http://www.niquelao.net/css/2007/11/13/atiende-pequeno-saltamontes/#comments</comments>
		<pubDate>Tue, 13 Nov 2007 19:51:55 +0000</pubDate>
		<dc:creator>Maroto</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.niquelao.net/css/2007/11/13/atiende-pequeno-saltamontes/</guid>
		<description><![CDATA[
Puedo ofrecerte tres tipos de trabajo.
Si lo quieres rápido y bueno, no será barato.
Si lo quieres bueno y barato, no será rápido.
Si lo quieres barato y rápido, no será bueno.

Vía: un cartel en Oxys´s Hell.
Aplicación práctica: a elegir.
Atiende, pequeño saltamontes]]></description>
			<content:encoded><![CDATA[<blockquote>
<p>Puedo ofrecerte tres tipos de trabajo.</p>
<p>Si lo quieres rápido y bueno, no será barato.</p>
<p>Si lo quieres bueno y barato, no será rápido.</p>
<p>Si lo quieres barato y rápido, no será bueno.</p>
</blockquote>
<p>Vía: un cartel en <em>Oxys´s Hell</em>.</p>
<p>Aplicación práctica: a elegir.</p>
<a href='http://www.niquelao.net/css/2007/11/13/atiende-pequeno-saltamontes/' class='retweet ' startCount = '0'>Atiende, pequeño saltamontes</a>]]></content:encoded>
			<wfw:commentRss>http://www.niquelao.net/css/2007/11/13/atiende-pequeno-saltamontes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Presentación vs Comportamiento</title>
		<link>http://www.niquelao.net/css/2007/10/17/presentacion-vs-comportamiento/</link>
		<comments>http://www.niquelao.net/css/2007/10/17/presentacion-vs-comportamiento/#comments</comments>
		<pubDate>Wed, 17 Oct 2007 18:59:23 +0000</pubDate>
		<dc:creator>Rumoroso</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.niquelao.net/css/2007/10/17/%c2%bfpresentacion-o-comportamiento/</guid>
		<description><![CDATA[Pues si, todo parecía ir bien en la ponencia que Bert Bos nos ofreció en Fundamentos Web 2007. Pero de repente, lo dijo, planteó que como prioridad para el siguiente nivel de CSS (nuestras muy amadas, queridas y respetadas CSS) estaría el comportamiento de los enlaces en lo que se refiere al lugar donde aparecerá [...]]]></description>
			<content:encoded><![CDATA[<p>Pues si, todo parecía ir bien en la ponencia que <a href="http://www.w3.org/People/Bos/" hreflang="en" lang="en" xml:lang="en" class="externo">Bert Bos</a> nos ofreció en <a href="http://www.fundamentosweb.org" class="externo">Fundamentos Web 2007</a>. Pero de repente, lo dijo, planteó que como prioridad para el siguiente nivel de <a xml:lang="en" lang="en" href="http://www.w3.org/TR/css3-hyperlinks/" class="externo">CSS</a> (nuestras muy amadas, queridas y respetadas CSS) estaría el <strong>comportamiento de los enlaces</strong> en lo que se refiere al lugar donde aparecerá el recurso al que apuntan.</p>
<p>Algunos no le dieron más importancia que la que tiene dentro del propio contexto. Sin embargo, otros empezamos a darle vueltas a lo que a primera vista era algo que no podíamos comprender: ¿vamos a retroceder y volver a mezclar lo que entendemos por presentación con lo que entendemos por comportamiento?</p>
<p><span id="more-82"></span></p>
<p>Rápidamente muchos se apresuraron a decir&#8230; a murmurar&#8230; a escribir en listas de correo&#8230; que aquello era algo así como sacrílego. Lo confieso, esa fue mi primera tentación. Pero no me tapé los oidos, pues suponía que el <a href="http://www.w3.org/" hreflang="en" lang="en" xml:lang="en" class="externo">W3C</a> no podía estar haciendo algo así, algo en contra de un principio fundamental, la &#8220;<strong>máxima</strong>&#8221; que los buenos tratan de respetar, &#8220;<strong>la separación entre contenido, presentación y comportamiento</strong>&#8220;. Recapitulé, repensé y me posicioné&#8230;</p>
<p>El error no está en la propuesta de controlar con CSS el comportamiento de los enlaces. El error reside en nuestra <strong>interpretación del término &#8220;comportamiento&#8221;</strong>, o más bien en lo que creemos que abarca. Está claro que la forma en la que se muestra el contenido pertenece a la capa de presentación. En base a esto&#8230; ¿el que se muestre en una ventana nueva qué es: comportamiento o presentación? Yo tengo clara la respuesta&#8230;</p>
<p>Cito textualmente (extracto de <a xml:lang="en" lang="en" href="http://www.w3.org/TR/css3-hyperlinks/" class="externo">CSS3 Hyperlink Presentation Module</a>):</p>
<blockquote xml:lang="en" lang="en" cite="http://www.w3.org/TR/css3-hyperlinks/">
<p>Some parts of behavior are presentational; e.g., CSS can say that<br />
activation of a hyperlink causes a new window to pop up (but not, e.g., that<br />
the activation sends a POST request to a server). The specifiable behaviors<br />
include:</p>
<ul>
<li>replace current document or portion of a document by target</li>
<li>pop up a temporary window (possibly modal) with the target</li>
<li>ditto, but pop &#8220;under&#8221;</li>
<li>show target in a specific window</li>
<li>using tabs in a tabbed interface rather than windows in the above</li>
</ul>
</blockquote>
<p>Yo creo que está bastante claro.</p>
<p>Por ahí alguien escribió irónicamente que, por ejemplo, el segundo punto se referiría a algo parecido al <a href="http://www.huddletogether.com/projects/lightbox2/" hreflang="en" xml:lang="en" lang="en" class="externo">lightbox</a>, como si fuese algo que se ha de hacer con javascript y fuese una tontería (por no utilizar un adjetivo peor) considerarlo como presentacion. En mi humilde opinión, básicamente el <strong>lightbox</strong> no consiste más que en mostrar dentro de una capa un contenido (objetivo del enlace), posicionándolo, poniendole un fondo, etc. ¿Acaso eso no es presentacional? Evidentemente, todo menos la petición al sevidor pertenece a la capa de presentación.</p>
<p>En conclusión&#8230; <strong>el comportamiento es una parte fundamental de la trilogía</strong>. Comencemos a demostrar que entendemos qué es y que sabemos diferenciarlo del resto.</p>
<a href='http://www.niquelao.net/css/2007/10/17/presentacion-vs-comportamiento/' class='retweet ' startCount = '0'>Presentación vs Comportamiento</a>]]></content:encoded>
			<wfw:commentRss>http://www.niquelao.net/css/2007/10/17/presentacion-vs-comportamiento/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>acc_slide: Presentaciones con XHTML, CSS y javascript</title>
		<link>http://www.niquelao.net/css/2007/04/15/acc_slide-presentaciones-con-xhtml-css-y-javascript/</link>
		<comments>http://www.niquelao.net/css/2007/04/15/acc_slide-presentaciones-con-xhtml-css-y-javascript/#comments</comments>
		<pubDate>Sun, 15 Apr 2007 19:24:50 +0000</pubDate>
		<dc:creator>Rumoroso</dc:creator>
				<category><![CDATA[(X)HTML]]></category>
		<category><![CDATA[Accesibilidad]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.niquelao.net/css/2007/04/15/acc_slide-presentaciones-con-xhtml-css-y-javascript/</guid>
		<description><![CDATA[Por fin ha llegado el momento de publicarlo. Hacía tiempo que estaba en ello pero por un motivo u otro no pude hacerlo hasta ahora. Aquí está el nuevo sistema para realizar presentaciones con XHTML, CSS y javascript.

Supongo que alguno ya conocerá más de un sistema de los que habitualmente se utilizan, como por ejemplo [...]]]></description>
			<content:encoded><![CDATA[<p>Por fin ha llegado el momento de publicarlo. Hacía tiempo que estaba en ello pero por un motivo u otro no pude hacerlo hasta ahora. Aquí está el nuevo sistema para realizar presentaciones con XHTML, CSS y javascript.</p>
<p><span id="more-61"></span></p>
<p>Supongo que alguno ya conocerá más de un sistema de los que habitualmente se utilizan, como por ejemplo el <a href="http://www.w3.org/Talks/Tools/Slidy/" title="enlace externo" class="externo">HTML Slidy</a> del W3C o el <a href="http://meyerweb.com/eric/tools/s5/s5-intro.html" title="enlace externo" class="externo">S5</a> de Eric Meyer. Tras utilizarlos llegué a la conclusión de que, aunque buenos, había algo que quizás podría ser mejorable (según mi criterio, claro).</p>
<p>Como he dicho, ambos sistemas son buenos y válidos, pero en ambos se hace necesario utilizar marcado cuya única finalidad es la de servir para que el script lo utilice y aplique estilos sobre él. Si realmente se quiere tener algo eficaz, <strong>¿por qué no hacer que el propio script genere el marcado que necesita de forma inteligente?</strong></p>
<h3>El desarrollo</h3>
<p>Me puse manos a la obra con la siguiente premisa: Si tenemos un documento correctamente estructurado y marcado (con sus encabezados, párrafos, listas&#8230;), el script debe ser lo suficientemente inteligente como para organizar y generar la presentación, todo ello sin incluir ningún contenedor adicional, ni clases, ni id. Únicamente ha de ser la propia estructura del documento la que permita diferenciar lo que se tiene que incluir en cada diapositiva.</p>
<p>Tras pegarme con ello, aquí está el resultado. El <strong>acc_slide</strong>, o como Andrés y Maroto lo llaman, <strong>rumo_slide</strong> o <strong>slide_oso</strong>. En lugar de seguir escribiendo más acerca de ello, lo mejor es demostrar de lo que estoy hablando. He preparado dos presentaciones, ambas con la descripción del sistema y de su utilización. La diferencia entre ambas es el grado de resumen. No dudéis en echar un vistazo al marcado que he empleado para ver de lo que estoy hablando:</p>
<p><strong>nota:</strong> aunque la forma de navegación por la presentación se trata en la misma, la forma básica de moverse por los contenidos se realiza con las flechas (arriba y abajo) del teclado.</p>
<ul>
<li><a href="http://niquelao.net/wp-content/uploads/2007/4/acc_slide/mini/">Versión reducida</a> y <a href="http://niquelao.net/wp-content/uploads/2007/4/acc_slide/mini/acc_slide.zip" title="archivo comprimido en formato zip">Versión reducida descargable</a></li>
<li><a href="http://niquelao.net/wp-content/uploads/2007/4/acc_slide/">Versión extendida (si, muy extendida)</a> y <a href="http://niquelao.net/wp-content/uploads/2007/4/acc_slide/version_ampliada/acc_slide_ampl.zip" title="archivo comprimido en formato zip">Versión extendida descargable</a></li>
</ul>
<h3>Características básicas</h3>
<p><em>acc_slide</em> ha sido creado teniendo como objetivo la separación absoluta entre el contenido y el comportamiento, evitando cualquier consideración acerca de este al crear y marcar la información que se quiera mostrar.</p>
<p>Entre las características que el sistema de presentaciones <em>acc_slide</em> posee se pueden destacar:</p>
<ul>
<li>Únicamente requiere de una correcta y lógica estructuración del contenido mediante el uso de encabezados. No necesita de elementos adicionales más allá de los necesarios para el marcado semántico del contenido. El sistema reconstruye y adapta el árbol DOM, con lo que no impone la necesidad de un marcado concreto. Esto lo hace compatible con cualquier documento (X)HTML bien estructurado (incluso con los que incluyen el marcado empleado por otros sistemas de presentaciones). Esto lo hace totalmente versatil. Se podría utilizar sobre un documento web, sobre el marcado empleado en los otros sistemas de presentaciones, etc.</li>
<li>Respetuoso con los estándares y la accesibilidad.</li>
<li>Separación absoluta de contenido, presentación y comportamiento.</li>
<li>Fácil integración y fácil utilización. No requiere conocimientos específicos, y si se utiliza uno de los temas propuestos, no es necesario conocer CSS.</li>
<li>Permite crear secciones con grupos de diapositivas.</li>
<li>El aspecto gráfico ofrece gran versatilidad y se controla totalmente con CSS. Además se pueden crear varios estilos y jugar con la especificidad de selector para aplicarlos (y combinarlos) en caliente (mientras se ejecuta la presentación).</li>
<li>Sistema <em>autoplay</em> de reproducción automática.</li>
<li>Incorpora un sistema para abrir enlaces de forma integrada a la presentación. Si se incluye el atributo <code>title</code> en el enlace, el contenido de este se mostrará al pié de la ventana. Además, el destino del enlace puede ser una URL o una imagen.</li>
<li>Cada diapositiva se asocia con un ancla de tal manera que se puede ir directamente a la que se desee. El ancla coincide con la posición de la diapositiva en la presentación.</li>
</ul>
<p>Llegados a este punto, espero vuestro feedback. También estaba pensando crear un repositorio público de estilos para el sistema. Si os parece una buena idea y queréis participar con los vuestros, no lo dudéis. Podéis enviar vuestros temas a <a href="mailto:rumoroso@niquelao.net">rumoroso@niquelao.net</a></p>
<a href='http://www.niquelao.net/css/2007/04/15/acc_slide-presentaciones-con-xhtml-css-y-javascript/' class='retweet ' startCount = '0'>acc_slide: Presentaciones con XHTML, CSS y javascript</a>]]></content:encoded>
			<wfw:commentRss>http://www.niquelao.net/css/2007/04/15/acc_slide-presentaciones-con-xhtml-css-y-javascript/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Yo también lo he visto&#8230;</title>
		<link>http://www.niquelao.net/css/2006/11/11/yo-lo-he-visto-a-pesar-de-ser-oculto/</link>
		<comments>http://www.niquelao.net/css/2006/11/11/yo-lo-he-visto-a-pesar-de-ser-oculto/#comments</comments>
		<pubDate>Sat, 11 Nov 2006 18:47:23 +0000</pubDate>
		<dc:creator>Rumoroso</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.niquelao.net/css/2006/11/11/yo-lo-he-visto-a-pesar-de-ser-oculto/</guid>
		<description><![CDATA[Este artículo lo voy a comenzar a la inversa. No es que me proponga escribirlo de espaldas sino que voy a comenzar citando (blockquote-ando) el consejo con el que lo concluiré:
Salvo que seamos originales y queramos mostrar ese recuadro generado por el campo oculto (&#8220;casi oculto&#8221;), la solución es simple. Le aplicamos &#8220;display: none&#8221; y [...]]]></description>
			<content:encoded><![CDATA[<p>Este artículo lo voy a comenzar a la inversa. No es que me proponga escribirlo de espaldas sino que voy a comenzar citando (blockquote-ando) el consejo con el que lo concluiré:</p>
<blockquote><p>Salvo que seamos originales y queramos mostrar ese recuadro generado por el campo oculto (&#8220;casi oculto&#8221;), la solución es simple. Le aplicamos &#8220;<code>display: none</code>&#8221; y arreglado. Mi consejo es que <strong>no se traten de marcar</strong> los campos ocultos con una clase para luego aplicarle la propiedad que acabo de escribir. En su lugar se puede aprovechar el que Firefox entiende e interpreta los <strong>selectores de atributos</strong>:</p>
<p>[css]input[type=hidden] { display: none; }[/css]</p></blockquote>
<p><span id="more-43"></span></p>
<h3>Al turrón&#8230;</h3>
<p>No, no es que este artículo trate sobre cómo maquetar lo que <strong>teóricamente debería ir oculto</strong> (un campo tipo <code>hidden</code>), y digo teóricamente porque ocurre que en el <a href="http://www.mozilla-europe.org/es/products/firefox/" class="externo">navegador Firefox</a>, cuando tenemos activa la <abbr title="Cascading Style Sheets" xml:lang="en" lang="en">CSS</abbr> y declaramos determinados valores para la propiedad &#8220;<code>display</code>&#8221; sobre los campos de formulario, los campos ocultos dejan de serlo pasando a ser renderizados por el navegador (tal y como se puede apreciar si se observa <a href="http://www.niquelao.net/wp-content/uploads/2006/11/hidden/casi_oculto.html">el ejemplo</a> con el navegador Firefox o, si confias en nosotros y crees lo que decimos, en los siguientes pantallazos).</p>
<p class="ejemplo"><img src="http://www.niquelao.net/wp-content/uploads/2006/11/hidden/firefox.png" alt="formulario mostrando campo oculto en Firefox" class="ejemplo" /></p>
<p class="ejemplo"><img src="http://www.niquelao.net/wp-content/uploads/2006/11/hidden/IE.png" alt="formulario sin mostrar el campo oculto en Explorer" class="ejemplo" /></p>
<p class="ejemplo"><img src="http://www.niquelao.net/wp-content/uploads/2006/11/hidden/opera.png" alt="formulario sin mostrar el campo oculto en Opera" class="ejemplo" /></p>
<p>Llegados a este punto podrían surgir preguntas: ¿por qué aplicar un display sobre un campo &#8220;<code>hidden</code>&#8220;?; si la finalidad de un campo oculto es pasar información sin mostrarse, ¿por qué se iba a querer mostrar?;&#8230; La respuesta es fácil y quizás se comprenda mejor con un ejemplo:</p>
<p>Tenemos el siguiente formulario:<br />
[html]</p>
<form method="post">
<fieldset>
<legend>Datos personales</legend>
<p>       <label for="nombre">Nombre:</label></p>
<input name="nombre" id="nombre" type="text" />       <label for="apellido">Apellido:</label></p>
<input name="apellido" id="apellido" type="text" />       <label for="mail">Correo electrónico:</label></p>
<input name="mail" id="mail" type="text" />
<input name="suscrito" value="si" type="hidden" />   </fieldset>
<input value="enviar" type="submit" /> </form>
<p>[/html]&#8230;al que le aplicamos unos estilos básicos:<br />
[css]form {<br />
border: 2px outset;<br />
background-color: #CCCCCC;<br />
}<br />
fieldset {<br />
margin: 20px auto;<br />
width: 500px;<br />
border: 1px solid;<br />
padding: 10px;<br />
}<br />
legend {<br />
font-size: 1.5em;<br />
color: #000;<br />
}<br />
label {<br />
font-weight: bold;<br />
font-size: 1.1em;<br />
}<br />
fieldset input {<br />
display: block;<br />
width: 90%;<br />
height: 1.3em;<br />
line-height: 1.3em;<br />
margin-left: 5%;<br />
font-size: 1em;<br />
}<br />
p {<br />
text-align: center;<br />
margin: 1em 0;<br />
}<br />
fieldset p {<br />
text-align: left<br />
}[/css]</p>
<p>Le hemos aplicado un <code>display: block</code> a los campos de formulario para que provoquen el salto permitiendo que el texto que los etiqueta quede por encima. La disposición inmediatamente por encima de los campos de texto de las etiquetas favorece que la <a href="http://www.sidar.org/recur/desdi/traduc/es/css/visuren.html#anonymous" class="externo">caja anónima de texto</a> que generan tenga mayor superficie de contacto sobre la caja del campo, con lo que visualmente transmite mejor y de manera más rápida la asociación entre ambos (además, es la manera en la que me gusta ponerlo, y punto). Quizás se entienda mejor visualmente:</p>
<p class="ejemplo"><img src="http://www.niquelao.net/wp-content/uploads/2006/11/hidden/tres.png" alt="tres ejemplos de formulario" class="ejemplo" /></p>
<p>En la imagen anterior se muestran tres formas de maquetar el mismo formulario. En la primera se coloca el texto del <code>label</code> por encima del campo, con lo que su superficie de contacto es mayor. En las otras dos se puede apreciar cómo disminuye dicha superficie si el texto se situa junto al campo que etiqueta. Además, la tercera muestra el problema de querer alinear los campos entre si.</p>
<p>Además, de esta manera se podrían alinear a la izquierda todos los campos de texto, cosa que puede ser desable en muchas ocasiones y que puede crear conflictos cuando la etiqueta antecede al campo (dado que estas no suelen tener la misma longitud).</p>
<p>La cuestión es que al darle esta propiedad a los &#8220;<code>input</code>&#8220;, en Firefox, y únicamente en Firefox, se renderiza el campo oculto, haciéndolo como un bloque vacío. ¿Comportamiento correcto o bug? Si observamos el comportamiento de <acronym title="Internet Explorer">IE</acronym> se apreciará que esto no ocurre. A estas alturas, los detractores de <acronym>IE</acronym> ya estarán diciendo que Firefox hace lo correcto, pues en los castings le suelen seleccionar para el papel del bueno. En este caso que cada uno saque sus conclusiones, no sin antes plantear un par de cosas (bueno, cuatro, lo de &#8220;un par&#8221; es una forma de hablar):</p>
<ul>
<li>¿Acaso algún programador quiere mostrar la caja creada por un campo oculto?</li>
<li>¿Acaso el diseñador piensa ignorar lo que el programador hace y pretende mostrarlo por su cuenta?</li>
<li>¿Acaso no dice la especificación: <q xml:lang="en" lang="en">hidden controls: Authors may create <strong>controls that are not rendered</strong> but whose values are submitted with a form. Authors generally use this control type to store information between client/server exchanges that would otherwise be lost due to the stateless nature of HTTP. <strong>The INPUT element is used to create a hidden control</strong></q>. (<a href="http://www.w3.org/TR/html401/interact/forms.html#hidden-control" xml:lang="en" hreflang="en" class="externo" lang="en">hidden control</a>)?</li>
<li>¿Qué finalidad puede tener el mostrar la caja vacía creada por el campo oculto?</li>
</ul>
<h3>Una solución</h3>
<p>Salvo que seamos originales y queramos mostrar ese recuadro generado por el campo oculto (o mejor &#8220;casi oculto&#8221;), la solución es simple. Le aplicamos &#8220;display: none&#8221; y arreglado. Mi consejo es que no se traten de marcar los campos ocultos con una clase para luego aplicarle la propiedad que acabo de escribir. En su lugar se puede aprovechar el que Firefox entiende e interpreta los <strong>selectores de atributos</strong>:</p>
<p>[css]input[type=hidden] { display: none; }[/css]<!--more--></p>
<h3>&#8230;y una reflexión</h3>
<p>¿Se habrán planteado los desarrolladores de Firefox el tratar de mostrar otras cosas ocultas tales como el aura, el alma, fantasmas,&#8230;? ¿Esperaré a que consigan hacerlo antes de enviar este artículo a <a href="http://www.cuatro.com/programas/entretenimiento/cuartomilenio/" class="externo">Iker Jiménez</a>?</p>
<a href='http://www.niquelao.net/css/2006/11/11/yo-lo-he-visto-a-pesar-de-ser-oculto/' class='retweet ' startCount = '0'>Yo también lo he visto&#8230;</a>]]></content:encoded>
			<wfw:commentRss>http://www.niquelao.net/css/2006/11/11/yo-lo-he-visto-a-pesar-de-ser-oculto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Efecto inesperado (uno más) en IE 7</title>
		<link>http://www.niquelao.net/css/2006/10/22/efecto-no-deseado-uno-mas-en-ie-7/</link>
		<comments>http://www.niquelao.net/css/2006/10/22/efecto-no-deseado-uno-mas-en-ie-7/#comments</comments>
		<pubDate>Sun, 22 Oct 2006 10:10:32 +0000</pubDate>
		<dc:creator>Rumoroso</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.niquelao.net/css/2006/10/22/efecto-no-deseado-uno-mas-en-ie-7/</guid>
		<description><![CDATA[Es muy curioso el efecto que el recien llegado IE7 aplica cuando incluimos el elemento address dentro de un item de lista y a su vez flotamos esta a la derecha. Podréis preguntaros en qué situación se aplicarían estas propiedades a estos elementos&#8230; pues fácil: cuando ponemos nuestra dirección a la derecha en el pié [...]]]></description>
			<content:encoded><![CDATA[<p>Es muy curioso el efecto que el recien llegado <acronym title="Internet Explorer 7">IE7</acronym> aplica cuando incluimos el elemento <strong><code>address</code></strong> dentro de un item de lista y a su vez flotamos esta a la derecha. Podréis preguntaros en qué situación se aplicarían estas propiedades a estos elementos&#8230; pues fácil: cuando ponemos nuestra dirección a la derecha en el pié de nuestra página&#8230;<span id="more-39"></span></p>
<h3>El Efecto</h3>
<p>El efecto consiste en que crea a a la derecha del elemento un espacio igual de largo que el espacio que hay entre los extremos izquierdos del documento y del propio elemento. Evidentemente no hace nada más que molestar&#8230;</p>
<p>Se puede apreciar usando <acronym title="Internet Explorer 7">IE7</acronym> para acceder al <a href="http://www.niquelao.net/wp-content/uploads/2006/10/item_address/efecto.html">ejemplo</a>.</p>
<h3>La Solución</h3>
<p>Lo que está ocurriendo es un desbordamiento del contenido (<em>ese contenido imaginario que sólo <acronym title="Internet Explorer">IE</acronym> ve</em>), con lo que la solución pasa por aplicar un <strong><code>overflow: hidden</code></strong> al item de lista y&#8230;  listo.</p>
<p>Si lo aplicásemos al <strong><code>body</code></strong> podría no aparecer el scroll vertical. Si lo aplicamos a la <strong><code>ul</code></strong>, tendríamos que compensar el que en Firefox la lista se pone a la derecha pero los items se alinean entre ellos a la izquierda (curioso).</p>
<a href='http://www.niquelao.net/css/2006/10/22/efecto-no-deseado-uno-mas-en-ie-7/' class='retweet ' startCount = '0'>Efecto inesperado (uno más) en IE 7</a>]]></content:encoded>
			<wfw:commentRss>http://www.niquelao.net/css/2006/10/22/efecto-no-deseado-uno-mas-en-ie-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Problemas de espacio y pseudo-elementos</title>
		<link>http://www.niquelao.net/css/2006/09/07/problemas-de-espacio-y-pseudo-elementos/</link>
		<comments>http://www.niquelao.net/css/2006/09/07/problemas-de-espacio-y-pseudo-elementos/#comments</comments>
		<pubDate>Thu, 07 Sep 2006 08:55:42 +0000</pubDate>
		<dc:creator>Maroto</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.niquelao.net/css/2006/09/07/problemas-de-espacio-y-pseudo-elementos/</guid>
		<description><![CDATA[Se hace raro descubrir un bug de este tipo, es decir, una puta chorrada que, o bien no tienes nada que hacer o es la casualidad más casual la que hace que te des cuenta. Y además, que sea tarde. Ya se ha escrito sobre lo mismo hace más de un año en Maxgeek, Satzansatz [...]]]></description>
			<content:encoded><![CDATA[<p>Se hace raro descubrir un bug de este tipo, es decir, una puta chorrada que, o bien no tienes nada que hacer o es la casualidad más casual la que hace que te des cuenta. Y además, que sea tarde. Ya se ha escrito sobre lo mismo hace más de un año en <a href="http://www.maxgeek.com/ie6pebug/" title="Enlace externo a Maxgeek">Maxgeek</a>, <a href="http://www.satzansatz.de/cssd/pseudocss.html" title="Enlace externo al sitio de Ingo Chao">Satzansatz</a> y seguramente algún otro por ahí.</p>
<p><span id="more-27"></span></p>
<h3>Al temario. ¿Qué es lo que pasa?</h3>
<p>Cuando utilizamos los pseudo-elementos definidos por la especificación de <a href="http://www.w3.org/TR/CSS21" title="Enlace externo a la especificación de Hojas de Estilo en Cascada, versión 2, revisión 1"> <acronym title="Cascading Style Sheets">CSS</acronym> 2.1</a> <code>:first-letter</code> y <code>:first-line</code> (obviamos el pseudo-elemento <code>:first-child</code> y similares ya que nuestro amigo <acronym title="Internet Explorer">IE</acronym> pasa un poco de ellos) podemos comprobar que en ocasiones no obtenemos los resultados esperados.</p>
<p>¿Qué pasa?. Incompresiblemente, <acronym>IE</acronym> falla a la hora interpretar la sintáxis de <acronym>CSS</acronym>. Si a continuación de estos pseudo-elementos utilizamos la llave ( <strong>{</strong> ) para comenzar nuestra declaración sin dejar un espacio entre ambos, <acronym>IE</acronym> no lo interpreta. Lo puedes ver en el <a href="/wp-content/uploads/2006/09/pseudo/ejemplo_uno.html">ejemplo uno</a>.</p>
<pre>
	p:first-line<strong>{</strong>
		 color: blue;
		 font-weight: bold;
	}</pre>
<p>Lo mismo sucede si tratamos de ofrecer propiedades comunes a varios elementos en una misma declaración, donde los mismos aparecen separados por comas ( <strong>,</strong> ). Lo puedes ver en el <a href="/wp-content/uploads/2006/09/pseudo/ejemplo_dos.html">ejemplo dos</a>.</p>
<pre>
	 p:first-letter<strong>,</strong> blockquote p:first-letter<strong>{</strong>
		color: #000;
		font: 2.3em serif;
		float: left;
		margin: .2em .2em 0 0;
	 }</pre>
<h3>Y la solución, ¿si la hubiera o hubiese?</h3>
<p>En este caso, existe y es relativamente fácil. Simplemente dejar un espacio en blanco entre el pseudo-elemento y el símbolo que tengamos que aplicar, bien sea la coma ( <strong>,</strong> ) o la llave ( <strong>{</strong> ). Si no te lo crees, aquí tienes el <a href="/wp-content/uploads/2006/09/pseudo/ejemplo_tres.html">ejemplo tres</a>.</p>
<pre>
	p:first-letter <strong>,</strong> blockquote p:first-letter <strong>{</strong>
		color: #000;
		font: 2.3em serif;
		float: left;
		margin: .2em .2em 0 0;
	 }</pre>
</p>
<h3>Eh!! Que aquí no acaba todo!</h3>
<p>Otro problemilla que encontramos viene de la mano de las listas. Y ahora, ¿que pasa?. Si aplicamos un estilo al pseudo-elemento <code>:first-letter</code> a elementos de lista, <acronym>IE</acronym> de forma agradable lo propaga al marcador del propio elemento de lista (bullet en caso de lista desordenada, número o letra en caso de lista ordenada). Qué incrédulo, mira el <a href="/wp-content/uploads/2006/09/pseudo/ejemplo_cuatro.html">ejemplo cuatro</a>.</p>
<h3>¿Y la solución para este lío?</h3>
<p>Si aceptais pulpo como animal de compañía, diremos que con eliminar los marcadores de las listas mediante:</p>
<pre>
	 li {list-style:none}</pre>
<p>Si no, pués na.</p>
<p>Otro detalle sin importancia, es que a <acronym title="Internet Explorer 7 beta 2">IE7b2</acronym> le da igual que no haya espacios entre el pseudo-elemento y el caracter <strong>{</strong>. Eso sí, a su hermano pequeño si le importa, así que respetemos su espacio vital.</p>
<h3>Y ya puestos, ¿qué pasa con la especificidad?</h3>
<p>Pués que va a pasar, pués nada, al menos con <acronym>IE</acronym>. En primer lugar debemos saber que estos pseudo-elementos solo (que no es poco), afectan a elementos a nivel de bloque. Bien, si definimos unas propiedades para, por ejemplo, un párrafo y a continuación definimos otras propiedades para otro párrafo que aparece dentro de un bloque de cita (<code>blockquote</code>) tendremos las mismas características en los 2 párrafos (claro, eso si nos hemos dado cuenta de darle el espacio correspondiente entre el pseudo-elemento y su maravilloso símbolo. Todo resumido en el último <a href="/wp-content/uploads/2006/09/pseudo/ejemplo_cinco.html">ejemplo</a>.</p>
<h3>Y la solución?</h3>
<p>Como hoy ya me cansé, la buscas tú.</p>
<a href='http://www.niquelao.net/css/2006/09/07/problemas-de-espacio-y-pseudo-elementos/' class='retweet ' startCount = '0'>Problemas de espacio y pseudo-elementos</a>]]></content:encoded>
			<wfw:commentRss>http://www.niquelao.net/css/2006/09/07/problemas-de-espacio-y-pseudo-elementos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Identificando tipos de enlace</title>
		<link>http://www.niquelao.net/css/2006/09/03/enlaces-con-estilo/</link>
		<comments>http://www.niquelao.net/css/2006/09/03/enlaces-con-estilo/#comments</comments>
		<pubDate>Sun, 03 Sep 2006 17:40:44 +0000</pubDate>
		<dc:creator>Rumoroso</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.niquelao.net/javascript/2006/09/03/enlaces-con-estilo/</guid>
		<description><![CDATA[Una buena práctica que afecta positivamente a la accesibilidad y usabilidad de nuestras páginas es la de identificar el tipo de enlaces que tenemos en nuestra web en función de su destino. Para ello, además de las correspondientes medidas a adoptar respecto a temas de accesibilidad, podríamos crear diferencias de estilo mediante la CSS (procurando [...]]]></description>
			<content:encoded><![CDATA[<p>Una buena práctica que <strong>afecta positivamente a la accesibilidad y usabilidad de nuestras páginas</strong> es la de identificar el tipo de enlaces que tenemos en nuestra web en función de su destino. Para ello, además de las correspondientes medidas a adoptar respecto a temas de accesibilidad, podríamos crear diferencias de estilo mediante la <abbr title="Cascading Style Sheets" lang="en">CSS</abbr> (procurando siempre mantener la <strong>consistencia que permita identificar los enlaces como tal</strong>).<span id="more-25"></span> Mediante esta práctica, los usuarios con acceso a los navegadores gráficos podrán reconocer si el documento al que van a acceder es, por ejemplo, un pdf o si el destino se encuentra fuera de nuestro portal.</p>
<h3>Problemas</h3>
<ul>
<li>Tendremos que identificar cada tipo de enlace mediante una clase que permita aplicarle el estilo.</li>
<li>En muchas ocasiones las personas que introducen los enlaces son los responsables del contenido y no tienen acceso a marcar el código.</li>
</ul>
<h3>Solución</h3>
<p>Mediante una sencilla función escrita en javascript, e introducida de forma no intrusiva, podremos identificar el tipo de documento en función del contenido del atributo &#8220;title&#8221; (si está presente) y/o de la extensión del archivo destino.</p>
<p><del>Para</del> <strong>nota</strong>: es una buena práctica el que los editores/responsables de contenido adopten el protocolo común de identificar el tipo de destino del enlace en el atributo &#8220;title&#8221; del mismo, pues la mayor parte de las herramientas de edición permiten su introducción.</p>
<p>Adicionálmente, se le ha añadido al script la funcionalidad de incluir un texto en el atributo &#8220;title&#8221; de aquellos enlaces que no lo posean y que apunten a un documento reconocible por el propio script.</p>
<h3>Enlaces de Ejemplo</h3>
<ul class="lista_normal">
<li><a href="http://www.google.com" title="Enlace externo al buscador">Google</a></li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/09/enlaces/ejemplo.pdf" title="Documento en formato pdf">Documento en formato pdf</a></li>
<li> Este enlace no posee atributo &#8220;title&#8221; y con la función se le añade: <a href="http://www.niquelao.net/wp-content/uploads/2006/09/enlaces/ejemplo.doc">Archivo de Word</a></li>
</ul>
<h3>El script</h3>
<p>El script se detalla a continuación y lo puedes <a href="http://www.niquelao.net/wp-content/uploads/2006/09/enlaces/funciones.zip" title="archivo comprimido">descargar directamente</a></p>
<p>Lo primero es declarar un array con el fragmento de texto a introducir por el editor/responsable del contenido y que describe el tipo de destino del enlace:</p>
<pre>var tFormat = ["enlace externo", "formato pdf", "formato word"];</pre>
<p>Declaramos una tipología de enlaces (declarado en el mismo orden que el anterior):</p>
<pre>var Format = ["externo", "pdf", "doc"];</pre>
<p>Declaramos las clases para formatear cada tipo de enlace (declarado en el mismo orden que los anteriores). Estas tendrán su correspondiente estilo en la CSS:</p>
<pre>var classFormat = ["externo", "pdf", "doc"];

function enlaces() {
// Seleccionamos todos los enlaces del documento
 var links = document.getElementsByTagName("a");
 for (var i = 0; i &lt; links.length; i++) {
   // Comprobamos que no son anclas
   if(links[i].href.indexOf(".") &gt; -1) {
     // Comprobamos si tienen atributo "title"
     if(links[i].getAttribute("title")) {
       // Obtenemos el atributo "title" en minúscula
       var title = links[i].getAttribute("title").toLowerCase();
       // Hacemos un bucle que comprueba si en el "title" se
       // encuentra uno de los textos indicados en el array
       // tFormat. Si lo encuentra, le añade la clase
       // declarada en la misma posición que el texto
       // en el array classFormat
       for(var f = 0; f &lt; tFormat.length; f++)
         if(title.indexOf(tFormat[f]) &gt; -1)
           links[i].className += " " + classFormat[f];
     }
     // Dado que no siempre todos los enlaces tienen atributo "title"
     // comprobaremos, por si acaso, el atributo "href" obteniendo
     // la extensión del documento destino y comparándolo
     // con las declaradas en el array Format.
     var ini = links[i].href.length-4;
     var fin = links[i].href.length;
     var wFormat = links[i].href.substring(ini,fin).toLowerCase();
     for(var f = 0; f &lt; Format.length; f++)
       if(wFormat.indexOf(Format[f]) &gt; -1) {
         links[i].className += " " + classFormat[f];
          // Si no tiene el atributo "title" se lo añade
          if(!links[i].getAttribute("title"))
             links[i].setAttribute("title", tFormat[f])
       }

   }
 }
}</pre>
<p>Finalmente cargamos el script:</p>
<pre>window.onload = enlaces;</pre>
<a href='http://www.niquelao.net/css/2006/09/03/enlaces-con-estilo/' class='retweet ' startCount = '0'>Identificando tipos de enlace</a>]]></content:encoded>
			<wfw:commentRss>http://www.niquelao.net/css/2006/09/03/enlaces-con-estilo/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Layout a tres columnas y marcado&#8230; &quot;el justo&quot;</title>
		<link>http://www.niquelao.net/css/2006/06/04/layout-a-tres-columnas/</link>
		<comments>http://www.niquelao.net/css/2006/06/04/layout-a-tres-columnas/#comments</comments>
		<pubDate>Sun, 04 Jun 2006 13:53:08 +0000</pubDate>
		<dc:creator>Rumoroso</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.niquelao.net/css/2006/06/04/layout-a-tres-columnas/</guid>
		<description><![CDATA[Cuando se pretende estructurar el contenido de un documento web, se debe evitar por todos los medios el tener presente cual va a ser el diseño visual, y en especial el layout. Esto es fundamental si se quiere conseguir un contenido estructurado de forma correcta desde el punto de vista del flujo de la información, [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando se pretende estructurar el contenido de un documento web, se debe evitar por todos los medios el tener presente cual va a ser el diseño visual, y en especial el <span xml:lang="en" lang="en">layout</span>. Esto es fundamental si se quiere conseguir un contenido estructurado de forma correcta desde el punto de vista del flujo de la información, así como un marcado semántico y un código óptimo. Para la consecución de este objetivo se ha de utilizar como premisa indiscutible el uso de los <strong>estándares del <acronym lang="en" xml:lang="en" title="World Wide Web Consortium">W3C</acronym></strong>, evitando el marcado extra cuya finalidad sea servir a la hoja de estilos para presentación.</p>
<p><span id="more-18"></span><strong>Caso desarrollado</strong>.- El contenido del documento se estructura en <strong>tres áreas o grupos funcionales</strong>: contenido específico, menú de navegación principal y un área de carácter transversal al sitio (relacionada bien con el documento actual, como podrían ser noticias de la sección, bien con el sitio web o portal, como por ejemplo enlaces de interés relacionados con la temática del portal o un conjunto de banners).</p>
<p>La organización del contenido en el código se debe establecer en función de su nivel de especificidad y relevancia con respecto a la página actual. Así, el grupo de información específico del documento debería aparecer primero en el código, seguido del área de caracter transversal si esta se relaciona específicamente con la información anterior y varía en función del contenido. A continuación vendría el menú de navegación principal. En el caso de que la información transversal sea común a todo el sitio y no tenga caracter específico en cada sección, esta se dispondrá al final precedida por el menú. En todos los casos se deberían crear enlaces cuya finalidad sea la de poder moverse por el documento saltando entre cada uno de los tres grupos para ir al siguiente o al anterior.</p>
<p>Tratando de conseguir un código lo más limpio y óptimo, el planteamiento del mismo es el siguiente:</p>
<ol class="articulolayout">
<li><code>&lt;div id="cabecera"&gt;</code>&#8230;<code>&lt;/div&gt;</code></li>
<li><code>&lt;div id="contenido1"&gt;</code>Contenido principal&#8230;<code>&lt;/div&gt;</code></li>
<li><code>&lt;div id="contenido2"&gt;</code>&#8230;<code>&lt;/div&gt;</code></li>
<li><code>&lt;div id="contenido3"&gt;</code>&#8230;<code>&lt;/div&gt;</code></li>
<li><code>&lt;div id="pie"&gt;</code>&#8230;<code>&lt;/div&gt;</code></li>
</ol>
<p>Se han añadido una cabecera y un pie al ser esta una de las situaciones más comunes que se puede dar. Se emplean contenedores genéricos de bloque (<code>div</code>) para mostrar el ejemplo. En el caso de que estos incluyesen un único bloque (por ejemplo, una lísta), no serían necesarios, pues el identificador se podría aplicar directamente sobre él. Por el afán de conseguir un <strong>código límpio y óptimo</strong>, no se emplean contenedores que agrupen a uno o más de estos.</p>
<p>El marcado aplicado y su organización se ha mantenido intacto entre los ejemplos. Los estilos que se han aplicado de forma genérica se han incluido en una css común. El conjunto de estilos específicos para cada uno se ha incluido dentro de la cabecera del documento para facilitar su revisión. En todos los casos se ha mantenido el bloque de contenido principal con un comportamiento fluido.</p>
<p>Se ha utilizado el selector universal para aplicar márgenes a los primeros descendientes del bloque llamado &#8220;contenido1&#8243;. Dado que no todos los navegadores reconocen correctamente el pseudoelemento &#8220;<code>:first-child</code>&#8220;, se ha recurrido a aplicar las propiedades a todos los descendientes del bloque y luego anulárselas a todos los descendientes cuyo padre sea descendiente del mismo. Se pueden emplear otros métodos, como por ejemplo el uso de el pseudoelemento anteriormente citado junto a comentarios condicionales para Internet Explorer (IE). Otra forma hubiera sido crear un bloque dentro de &#8220;contenido1 &#8221; y aplicar los estilos necesarios sobre este. Se ha evitado este método para conseguir un marcado más límpio y sin la presencia de elementos cuya finalidad sea servir en la maquetación. En realidad, la/s propiedad/es que se podrían ver modificadas para los descendientes son los márgenes laterales, propiedades fácilmente controlables, con lo que la solución propuesta se considera la más optima para este caso.</p>
<p>Es importante tener en cuenta qué propiedades y atributos se han declarado de cara a la aparición de posibles efectos inesperados al aplicar estilos. Por ejemplo, en IE, cuando se incluyen listas dentro de elementos flotados y posicionados en relativo, no se muestran los estilos aplicados al fondo ni los colores aplicados a los bordes (esto se puede subsanar posicionándolas en relativo).</p>
<p>La idea es conseguir un <span xml:lang="en" lang="en">layout</span> a tres columnas con un orden determinado en función de las necesidades del sitio.</p>
<p>Los diferentes layouts se muestran organizados en función del orden de los bloques y de la característica fluida de los mismos. La fluidez de los bloques se consigue definiendo su ancho en porcentaje (siendo para todos los ejemplos un 20% del total de su contenedor) y la riguidez en unidades absolutas (siendo en todos los ejemplos 150px). Así mismo, en lugar de utilizar unidades absolutas, se podrían utilizar unidades relativas (em). Todo dependerá de las necesidades particulares de cada caso:</p>
<h3 class="articulolayout">Orden en el <span xml:lang="en" lang="en">layout</span> 1 2 3</h3>
<ul class="articulolayout" id="orden123">
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/06/1_2_3_fluido.html">Ejemplo de diseño fluido: Fluido Fluido Fluido</a></li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/06/1_2_3_semihibridoI.html">Ejemplo de diseño híbrido: Fluido Rígido Fluido</a></li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/06/1_2_3_semihibridoII.html">Ejemplo de diseño híbrido: Fluido Fluido Rígido</a></li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/06/1_2_3_hibrido.html">Ejemplo de diseño híbrido: Fluido Rígido Rígido</a></li>
</ul>
<h3 class="articulolayout">Orden en el <span xml:lang="en" lang="en">layout</span> 1 3 2</h3>
<ul class="articulolayout" id="orden132">
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/06/1_3_2_fluido.html">Ejemplo de diseño fluido: Fluido Fluido Fluido</a></li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/06/1_3_2_semihibridoI.html">Ejemplo de diseño híbrido: Fluido Fluido Rígido</a></li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/06/1_3_2_semihibridoII.html">Ejemplo de diseño híbrido: Fluido Rígido Fluido</a></li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/06/1_3_2_hibrido.html">Ejemplo de diseño híbrido: Fluido Rígido Rídigo</a></li>
</ul>
<h3 class="articulolayout">Orden en el <span xml:lang="en" lang="en">layout</span> 2 1 3</h3>
<ul class="articulolayout" id="orden213">
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/06/2_1_3_fluido.html">Ejemplo de diseño fluido: Fluido Fluido Fluido</a></li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/06/2_1_3_semihibridoI.html">Ejemplo de diseño híbrido: Rígido Fluido Fluido</a></li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/06/2_1_3_semihibridoII.html">Ejemplo de diseño híbrido: Fluido Fluido Rígido</a></li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/06/2_1_3_hibrido.html">Ejemplo de diseño híbrido: Rígido Fluido Rígido</a></li>
</ul>
<h3 class="articulolayout">Orden en el <span xml:lang="en" lang="en">layout</span> 2 3 1</h3>
<ul class="articulolayout" id="orden231">
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/06/2_3_1_fluido.html">Ejemplo de diseño fluido: Fluido Fluido Fluido</a></li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/06/2_3_1_semihibridoI.html">Ejemplo de diseño híbrido: Rígido Fluido Fluido</a></li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/06/2_3_1_semihibridoII.html">Ejemplo de diseño híbrido: Fluido Rígido Fluido</a></li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/06/2_3_1_hibrido.html">Ejemplo de diseño híbrido: Rígido Rígido Fluido</a></li>
</ul>
<h3 class="articulolayout">Orden en el <span xml:lang="en" lang="en">layout</span> 3 1 2</h3>
<ul class="articulolayout" id="orden312">
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/06/3_1_2_fluido.html">Ejemplo de diseño fluido: Fluido Fluido Fluido</a></li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/06/3_1_2_semihibridoI.html">Ejemplo de diseño híbrido: Fluido Fluido Rígido</a></li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/06/3_1_2_semihibridoII.html">Ejemplo de diseño híbrido: Rígido Fluido Fluido</a></li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/06/3_1_2_hibrido.html">Ejemplo de diseño híbrido: Rígido Fluido Rígido</a></li>
</ul>
<h3 class="articulolayout">Orden en el <span xml:lang="en" lang="en">layout</span> 3 2 1</h3>
<ul class="articulolayout" id="orden321">
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/06/3_2_1_fluido.html">Ejemplo de diseño fluido: Fluido Fluido Fluido</a></li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/06/3_2_1_semihibridoI.html">Ejemplo de diseño híbrido: Fluido Rígido Fluido</a></li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/06/3_2_1_semihibridoII.html">Ejemplo de diseño híbrido: Rígido Fluido Fluido</a></li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/06/3_2_1_hibrido.html">Ejemplo de diseño híbrido: Rígido Rígido Fluido</a></li>
</ul>
<p>En alguno de los casos y para algún navegador (como puede ser Internet Explorer) pudiera darse un comportamiento anómalo al redimensionar la ventana. Básicamente, el comportamiento incorrecto se debe a que aunque se le indique al contenedor cuál debe ser su ancho, al rediemensionar, el texto influye empujando ligéramente los bordes del mismo. Si el conjunto de bloques han de ocupar el 100% del contenedor, podría ocurrir que uno de los que tenga dimensiones relativas, por el efecto antes mencionado, ocupase algo más de lo que debe, empujando a los demás, los cuales, al estar flotados y no caber, saltan hacia abajo. Para darle solución se puede declarar una dimensión en uno de ellos ligéramente inferior a la ideal (por ejemplo, 19.9% en lugar de 20%).</p>
<a href='http://www.niquelao.net/css/2006/06/04/layout-a-tres-columnas/' class='retweet ' startCount = '0'>Layout a tres columnas y marcado&#8230; &quot;el justo&quot;</a>]]></content:encoded>
			<wfw:commentRss>http://www.niquelao.net/css/2006/06/04/layout-a-tres-columnas/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tamaños de fuente y herencia en controles de formulario</title>
		<link>http://www.niquelao.net/css/2006/05/30/tamanos-de-fuente-y-herencia-en-controles-de-formulario/</link>
		<comments>http://www.niquelao.net/css/2006/05/30/tamanos-de-fuente-y-herencia-en-controles-de-formulario/#comments</comments>
		<pubDate>Tue, 30 May 2006 14:23:57 +0000</pubDate>
		<dc:creator>Maroto</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.niquelao.net/general/2006/05/30/tamanos-de-fuente-y-herencia-en-controles-de-formulario/</guid>
		<description><![CDATA[Y ahora algo en serio
Supuestamente, el tamaño de fuente debería heredarse del elemento padre. Por casualidad (no sabemos quien lo dijo), hemos sabido que los elementos reemplazados (basicamente, controles de formulario, input) no siguen este comportamiento (algunas veces). Aquí estamos para daros la solución.
Se trata de realizar una batería de pruebas para determinar un patrón [...]]]></description>
			<content:encoded><![CDATA[<p>Y ahora algo en serio</p>
<p>Supuestamente, el tamaño de fuente debería heredarse del elemento padre. Por casualidad (no sabemos quien lo dijo), hemos sabido que los elementos reemplazados (basicamente, controles de formulario, input) no siguen este comportamiento (algunas veces). Aquí estamos para daros la solución.</p>
<p><span id="more-8"></span>Se trata de realizar una batería de pruebas para determinar un patrón de comportamiento entre diferentes navegadores y proporcionar una solución compatible con todos ellos.</p>
<p>La solución, al final.</p>
<p>La lista de navegadores utilizada es la que sigue:</p>
<ul>
<li>Internet Explorer 5.5</li>
<li>Internet Explorer 6</li>
<li>Internet Explorer 7</li>
<li>Mozilla Firefox 1.5.0.3 (W)</li>
<li>Opera 8.54 (W)</li>
<li>Mozilla Firefox 1.5.0.3 (L)</li>
<li>Opera 9 (L)</li>
<li>Konqueror 3.5.2</li>
<li>Galeon 2.0.1</li>
</ul>
<p>La prueba consiste en realizar diferentes cambios en las propiedades de fuente aplicadas a los elementos del siguiente código:</p>
<pre><code>&lt;p&gt;Lorem ipsum dolor sit amet, consectetuer
adipiscing elit. Curabitur commodo. Phasellus quis dui ut est
scelerisque tempus. Sed faucibus nisl consequat dolor.
Vestibulum ornare laoreet nunc. Nunc euismod nulla et libero.
In dictum. Sed fringilla. Ut nisi neque, porttitor vitae, pretium vel,
sodales a, massa. Vestibulum orci. Quisque pellentesque, leo
vel posuere luctus, ante nisl lobortis mauris, in tempus pede
nibh at nibh. Etiam vehicula varius felis. Sed dapibus risus
nec ante. In ultricies. Ut lacinia felis ac eros. Integer
ultricies libero at velit. Vestibulum adipiscing venenatis
purus. Mauris consequat, libero eget lacinia aliquam, risus
nibh gravida ante, eu consequat neque nibh ut lorem. Nam quam.&lt;/p&gt;
&lt;form&gt;
	&lt;p&gt;
		&lt;input type="text" name="nombre" value="Lorem" /&gt;
	&lt;/p&gt;
&lt;/form&gt;</code></pre>
<p>A continuación se ofrecen los enlaces a las distintas pruebas realizadas. A la derecha del enlace se indican las propiedades modificadas en cada caso.</p>
<ol>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/05/inputa.html">Ejemplo 1</a> (no-style)</li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/05/inputb.html">Ejemplo 2</a> (body: font-size)</li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/05/inputc.html">Ejemplo 3</a> (body: font-family)</li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/05/inputd.html">Ejemplo 4</a> (body: font)</li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/05/inpute.html">Ejemplo 5</a> (body,input: font-family)</li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/05/inputf.html">Ejemplo 6</a> (body: font-family / input: font-size)</li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/05/inputg.html">Ejemplo 7</a> (body: font-family / input: font)</li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/05/inputh.html">Ejemplo 8</a> (body: font-size / input: font-family)</li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/05/inputi.html">Ejemplo 9</a> (body,input: font-size)</li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/05/inputj.html">Ejemplo 10</a> (body: font-size / input: font)</li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/05/inputk.html">Ejemplo 11</a> (body,input: font)</li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/05/inputl.html">Ejemplo 12</a> (input: font-family)</li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/05/inputm.html">Ejemplo 13</a> (input: font-size)</li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/05/inputn.html">Ejemplo 14</a> (input: font)</li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/05/inputo.html">Ejemplo 15</a> (body: font / input: font-family)</li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/05/inputp.html">Ejemplo 16</a> (body: font / input: font-size)</li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/05/inputq.html">Ejemplo 17</a> (body,input: font-family inherit)</li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/05/inputr.html">Ejemplo 18</a> (body: font-family inherit/ input: font-size inherit)</li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/05/inputs.html">Ejemplo 19</a> (body,input: font-size inherit)</li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/05/inputt.html">Ejemplo 20</a> (body: font-size inherit/ input: font-family inherit)</li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/05/inputu.html">Ejemplo 21</a> (body: font / input: font-family inherit)</li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/05/inputv.html">Ejemplo 22</a> (body: font / input: font-size inherit)</li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/05/inputw.html">Ejemplo 23</a> (input: font inherit)</li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/05/inputx.html">Ejemplo 24</a> (input: font-size font-family inherit)</li>
<li><a href="http://www.niquelao.net/wp-content/uploads/2006/05/inputy.html">Ejemplo 25</a> (body,input: inherit)</li>
</ol>
<p>Se ha observado un comportamiento similar entre navegadores Firefox y Galeón, también similar entre Konqueror e IE y con ciertas variantes tenemos a Opera.</p>
<p>Podemos concluir, <del>con un porcentaje de acierto mínimo</del>, que sería suficiente con definir un tamaño de fuente relativo (x.ej. <code>1em</code>) para los input. Si se ha definido un tamaño de fuente en el cuerpo (font-size), el tamaño de fuente del control de formulario se redimensionará adecuadamente, y si no se ha definido nada en el cuerpo, se adaptará al tamaño de texto del resto del documento.</p>
<pre><code>body {
	font-size: 62.5%;
}
input {
	font-size: 1em;
}</code></pre>
<p>Seguramente se observará una pequeña diferencia, según el navegador utilizado. Para terminar de rematar la faena se puede igualar el tipo de fuente, mediante su correspondiente declaración en el cuerpo.</p>
<pre><code>body {
	font: 62.5% Arial,Verdana,sans-serif;
}
input {
	font-size: 1em;
}</code></pre>
<a href='http://www.niquelao.net/css/2006/05/30/tamanos-de-fuente-y-herencia-en-controles-de-formulario/' class='retweet ' startCount = '0'>Tamaños de fuente y herencia en controles de formulario</a>]]></content:encoded>
			<wfw:commentRss>http://www.niquelao.net/css/2006/05/30/tamanos-de-fuente-y-herencia-en-controles-de-formulario/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
