<?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>LaWebera.es &#187; Ejemplos CSS</title>
	<atom:link href="http://www.lawebera.es/como-hacer/ejemplos-css/feed" rel="self" type="application/rss+xml" />
	<link>http://www.lawebera.es</link>
	<description>Otro sitio realizado con WordPress</description>
	<lastBuildDate>Thu, 02 Feb 2012 09:29:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Formas de crear un texto vertical con CSS y HTML</title>
		<link>http://www.lawebera.es/como-hacer/ejemplos-css/formas-de-crear-un-texto-vertical-con-css-y-html.php</link>
		<comments>http://www.lawebera.es/como-hacer/ejemplos-css/formas-de-crear-un-texto-vertical-con-css-y-html.php#comments</comments>
		<pubDate>Tue, 11 Oct 2011 06:11:51 +0000</pubDate>
		<dc:creator>Daniel Ernesto Navarro Herrera</dc:creator>
				<category><![CDATA[Ejemplos CSS]]></category>

		<guid isPermaLink="false">http://www.lawebera.es/?p=3810</guid>
		<description><![CDATA[Abordamos los distintos métodos que existen para colocar un texto de manera vertical en nuestra página.]]></description>
			<content:encoded><![CDATA[<p>A lo largo de nuestros desarrollos podemos encontrarnos con varios proyectos que exijan realizar tareas que comúnmente no consideramos relevantes para un sitio, pero que con el paso del tiempo se convierten en un sostén básico de nuestros diseños. Uno de estos casos peculiares, que puede parecer poco útil en principio pero cuyo uso se presenta con gran frecuencia, es el <strong>representar un texto de manera vertical</strong>.</p>
<p>En nuestra cabeza puede parecer muy sencillo darle un <strong>formato vertical al texto</strong>, y lo es, solo que generalmente no es con la primera idea que se nos viene a la mente. Muchos pensamos que utilizar el salto de línea o hacer una imagen con texto representa una solución, pero es todo lo contrario, esta clase de contenido solo entorpecerá nuestro sitio y hará que perdamos estilo.</p>
<p>Para evitarnos darle muchas vueltas al asunto, en este artículo presentamos una serie de métodos para lograr estructurar verticalmente un texto.</p>
<h2>Saltos de línea con HTML: br</h2>
<p>Sí, lo sé, hace apenas unas líneas atrás acabo de mencionar que los <a title="Párrafos, línea y frases en HTML" href="http://www.lawebera.es/manuales/html/struct/text.html">saltos de línea</a> son junto con las imágenes la peor opción que podemos elegir, aún así siguen siendo una alternativa, la cual tenemos que evitar, pero una alternativa al fin.</p>
<p>A este método se le podría asignar el título de &#8220;clásico&#8221; para realizar esta tarea, más de uno hemos recurrido a la famosa etiqueta <strong>&#8221;<br />
&#8220;</strong> para colocarla después de cada letra de nuestra palabra y así tener un texto vertical.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;h1&gt;
    W&lt;br /&gt;E &lt;br /&gt;B &lt;br /&gt;E &lt;br /&gt;R &lt;br /&gt;A
&lt;/h1&gt;
</pre>
<p>Si bien logra su objetivo. por favor no lo uses, es un método que representa flojera y al mismo tiempo falta de estilo, tenemos que pensar más allá de un simple salto de línea y para ello vienen los siguientes métodos</p>
<h2>Uso de elementos span de HTML</h2>
<p>Una alternativa no muy correcta pero efectiva, con excepción de los casos donde usamos contenido dinámico, es utilizar elementos de tipo <strong>&#8220;span&#8221;</strong> para envolver cada letra de la palabra y después darle un formato mediante una sentencia CSS que muestre cada elemento del encabezado en <a title="Propiedad display" href="http://www.lawebera.es/como-hacer/ejemplos-css/css-avanzado-propiedad-display-i.php">forma de bloque</a>. Es decir, a una <a title="Estructura global HTML" href="http://www.lawebera.es/manuales/html/struct/global.html">estructura HTML</a> como esta:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;h1&gt;
    &lt;span&gt; W &lt;/span&gt;
    &lt;span&gt; E &lt;/span&gt;
    &lt;span&gt; B &lt;/span&gt;
    &lt;span&gt; E &lt;/span&gt;
    &lt;span&gt; R &lt;/span&gt;
    &lt;span&gt; A &lt;/span&gt;
&lt;/h1&gt;
</pre>
<p>Le aplicamos el siguiente estilo:</p>
<pre class="brush: css; title: ; notranslate">
h1 span { display: block; }
</pre>
<p>Y listo, tenemos un texto vertical, con un código muy poco estético y con el riesgo de que falle con contenido dinámico, pero una alternativa al fin.</p>
<h2>Uso de JavaScript para crear texto vertical</h2>
<p>El fiel aliado <a title="Manual de JavaScript" href="http://www.lawebera.es/manuales/javascript">JavaScript</a> sale al rescate una vez más, esta vez para trabajar en combinación con <a title="CSS Terminología" href="http://www.lawebera.es/manuales/css1/terminologia.php">CSS</a> y darnos una alternativa un poco menos inestable y sin duda con mejor código de marcado.</p>
<p>Para evitar agregar cada <a title="Introducción a los elementos y etiquetas de HTML" href="http://www.lawebera.es/de0/introduccion-elementos-etiquetas-html.php">etiqueta &#8220;span&#8221;</a> manualmente a las letras, podemos utilizar una función de JavaScript, de esta manera evitamos los problemas que mencionamos en la alternativa anterior y ahorramos unas cuantas líneas de código.</p>
<p>Su uso es bastante similar al ejemplo anterior, utilizamos el mismo estilo pero el código HTML cambiará a este:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;h1&gt; WEBERA &lt;/h1&gt;
&lt;script&gt;
    var encabezado = document.getElementsByTagName('h1')[0];
    encabezado.innerHTML = '&lt;span&gt;' + encabezado.innerHTML.split('').join('&lt;/span&gt;&lt;span&gt;') + '&lt;/span&gt;';
&lt;/script&gt;
</pre>
<p>Como se puede ver el encabezado es la palabra completa sin nada entre las letras, después mandamos llamar un código de script que se encargará de envolver en una variable el elemento &#8220;h1&#8243; para después cambiarle su contenido por cada letra que compone la palabra precedida y seguida por una etiqueta <strong>&#8220;span&#8221;</strong>.</p>
<h2>Uso de un ancho fijo para crear texto vertical</h2>
<p>Otra opción a utilizar, es aplicar una propiedad <strong>&#8220;width&#8221;</strong> fija al elemento que actúa como contenedor de nuestra palabra, en este caso el encabezado de tipo <strong>&#8220;h1&#8243;</strong>. Para ello recurriremos únicamente a utilizar CSS y lo haremos de la siguiente manera:</p>
<pre class="brush: css; title: ; notranslate">
h1 {
   width: 50px;
   font-size: 50px;
   word-wrap: break-word;
}
</pre>
<p>Como se puede ver, con este código asignamos un ancho muy pequeño que es exactamente igual al tamaño de la letra, para finalmente utilizar la propiedad <strong>&#8220;word-wrap&#8221; con valor de &#8220;break-word&#8221;</strong> y con esto forzar a que cada letra permanezca en su propia línea.</p>
<p>Sin embargo este método tiene un par de desventajas, la propiedad <strong>&#8220;word-wrap&#8221;</strong> es parte de la versión 3 de CSS por lo que no es totalmente reconocida por todos los navegadores, además si utilizamos minúsculas puede que no surja efecto. Como opción para solucionar este último problema se puede utilizar la propiedad &#8220;letter-spacing&#8221; y así de esa manera asegurarnos de que no se pondrán más de 2 letras por renglón.</p>
<h2>Uso de ems para crear texto vertical</h2>
<p>Un &#8220;em&#8221; es una medida de tipografía, alternativa a los píxeles, y se utiliza para proporcionar la distancia y espacio que tendrá una letra en base al punto donde se encuentra, en pocas palabras utilizar un <strong>&#8220;em&#8221;</strong> es como utilizar la propiedad <strong>&#8220;x-height&#8221;</strong> pero con más flexibilidad.</p>
<p>Basta con darle un ancho de <strong>&#8220;1em&#8221;</strong> al encabezado y colocar las letras separadas por un espacio para obtener resultados.</p>
<pre class="brush: css; title: ; notranslate">
h1 {
   width: 1em;
   font-size: 50px;
   letter-spacing: 50px; /* solo por precaución */
}
</pre>
<pre class="brush: xml; title: ; notranslate">
&lt;h1&gt; W e b e r a &lt;/h1&gt;
</pre>
<h2>Uso de la propiedad &#8220;white-space&#8221; de CSS</h2>
<p>Si utilizamos la <a title="CSS Avanzado: Propiedad White-space" href="http://www.lawebera.es/como-hacer/ejemplos-css/css-avanzado-propiedad-%E2%80%9Cwhite-space%E2%80%9D.php">propiedad &#8220;white-space&#8221;</a> con un valor de <strong>&#8220;pre&#8221;</strong>, entonces CSS interpretará cada espacio de nuestro texto literalmente, por lo que si agregamos los espacios suficientes en el código, el texto lucirá de igual manera en la página.</p>
<pre class="brush: css; title: ; notranslate">
h1 { white-space: pre; }
</pre>
<pre class="brush: xml; title: ; notranslate">
&lt;h1&gt;
   W
   E
   B
   E
   R
   A
&lt;/h1&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.lawebera.es/como-hacer/ejemplos-css/formas-de-crear-un-texto-vertical-con-css-y-html.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pseudo elementos CSS &#8220;:before&#8221; y &#8220;:after&#8221;</title>
		<link>http://www.lawebera.es/como-hacer/ejemplos-css/pseudo-elementos-css-before-after.php</link>
		<comments>http://www.lawebera.es/como-hacer/ejemplos-css/pseudo-elementos-css-before-after.php#comments</comments>
		<pubDate>Wed, 28 Sep 2011 14:37:00 +0000</pubDate>
		<dc:creator>Daniel Ernesto Navarro Herrera</dc:creator>
				<category><![CDATA[Ejemplos CSS]]></category>
		<category><![CDATA[Manual de Maquetacion Web]]></category>

		<guid isPermaLink="false">http://www.lawebera.es/?p=3801</guid>
		<description><![CDATA[En este artículo damos a conocer los aspectos generales sobre el uso de los pseudo elementos ":before" y ":after", así como su implementación en CSS.]]></description>
			<content:encoded><![CDATA[<p>Si tu eres de las personas que comúnmente visita sitios de enseñanza y artículos sobre <a title="La Webera" href="http://www.lawebera.es/">diseño web</a>, quizás hayas notado que últimamente se han elaborado muchos tutoriales que manejan la creación de imágenes y diseños CSS mediante el uso de los pseudo elementos <strong>&#8220;:before&#8221; y &#8220;:after&#8221;</strong>.</p>
<p>El reciente enfoque que se ha dado a esta temática quizás se ha producido por la flexibilidad de estos elementos y la capacidad de creación que nos ofrecen.</p>
<p>Si bien el uso de pseudo elementos, no es algo recien inventado, su potencial no había sido totalmente exprimido hasta hace poco, y esta experimentación con ellos ha hecho que su exposición sea mayor en estos días.</p>
<p>A lo largo de este artículo trataremos de dar a conocer y enseñar los aspectos generales sobre como utilizar dichos pseudo elementos, para que con esta información y conocimiento tengan una mejor idea de como se lograron todas esas cosas geniales que se muestran en los tutoriales.</p>
<h2>Función de un pseudo elemento CSS</h2>
<p>Primero que nada tenemos que aclarar que &#8220;:before&#8221; y &#8220;:after&#8221; no son los únicos pseudo elementos que existen, la lista completa abarca a <strong>&#8220;:first-letter&#8221;, &#8220;:first-line&#8221;, &#8220;:before&#8221;, &#8220;:after&#8221; y &#8220;::selection&#8221;</strong>, pero como en esta ocasión nos estamos enfocado únicamente a los dos ya mencionados, cada vez que nos refiramos con el termino <strong>&#8220;pseudo elemento&#8221;</strong> nos enfocaremos a <strong>&#8220;:after&#8221; y &#8220;:before&#8221;</strong>.</p>
<p>La función de un pseudo elemento es sencilla, básicamente es hacer lo que su nombre indica, crear un elemento falso para insertarlo antes o después del contenido del elemento al que se ha orientado.</p>
<p>La creación de estos elementos no cambia nada en el documento, sólo se incluyen para obtener cambios que sean visibles para el usuario. Dichos elementos nuevos son capaces de recibir un <a title="Ejemplos CSS" href="http://www.lawebera.es/como-hacer/ejemplos-css">estilo CSS</a> por lo que fueron aprovechados para hacer trazos sobre los elementos del sitio.</p>
<h2>Codificación de los pseudo elementos CSS</h2>
<p>La codificación de los pseudo elementos es bastante sencilla de realizar, basta con recordar dos sencillos aspectos para crearlos de manera correcta.</p>
<p>Primero debemos crear un selector que indique a que elemento le vamos a crear pseudo elementos, es decir tenemos que definir en que parte del documento se añadirán los elementos falsos que utilizaremos. Por ejemplo si quisieramos crear un pseudo elemento que se encuentre antes de un div identificado como &#8220;icono&#8221; entonces la sintaxis de mi selector quedaría así <strong>&#8220;#icono:before&#8221;</strong>.</p>
<p>Si omitimos darle un elemento antes de llamar a <strong>&#8220;:after&#8221; o &#8220;:before&#8221;</strong>, la sentencia funcionará pero no nos servirá de mucho, al menos de que desees que se inserte algún tipo de contenido antes o después de cada elemento que compone el <a title="Creación de elementos DOM" href="http://www.lawebera.es/como-hacer/ejemplos-jquery/creacion-elementos-dom.php">DOM de tu sitio</a>.</p>
<p>El segundo aspecto a considerar es la <strong>propiedad &#8220;content&#8221;</strong>, toda declaración de pseudo elemento debe tener dicha propiedad CSS si quiere que su creación surja efecto, ya que sin ella no podremos insertar nada en los pseudo elementos que se crearon. En pocas palabras <strong>&#8220;content&#8221;</strong>, como su nombre lo indica, es la encargada de portar el nuevo contenido.</p>
<p>Se puede presentar el caso en que no se necesite contenido, en estas ocasiones puedes utilizar la <strong>propiedad &#8220;content&#8221; vacía</strong>, pero por ningún motivo la debes de quitar. Este caso se puede presentar cuando utilizamos cajas vacías a las que únicamente agregamos estilos.</p>
<p>Una vez analizados estos dos aspectos, podemos definir que nuestra sintaxis básica quedará de esta manera:</p>
<pre class="brush: css; title: ; notranslate">
#icono:before {
   content: &quot;Hola&quot;;
}

#icono:after {
   content: &quot;Mundo&quot;;
}
</pre>
<p>Con este código insertaremos un <strong>&#8220;Hola&#8221; antes del div &#8220;icono&#8221; y un &#8220;Mundo&#8221; después</strong>.</p>
<h2>Contenido insertido</h2>
<p>El contenido que se inserta mediante pseudo elementos únicamente será visible en el <a title="Hojas de estilo" href="http://www.lawebera.es/comunidad/articulos/diseno-web/css">código CSS</a> y por defecto este se inserta con un estilo <strong>&#8220;inline&#8221;</strong>, es por ello que si queremos mostrar el contenido de manera correcta muchas veces tenemos que recurrir a propiedades CSS.</p>
<p>El uso de la propiedad <strong>&#8220;display&#8221; con un valor de &#8220;block&#8221;</strong> es muy común al momento de manejar pseudo elementos, esta propiedad nos permite mostrar al elemento con un bloque y darle una altura y anchura personalizada.</p>
<h2>Colocación del contenido</h2>
<p>Quizás si tomamos un concepto muy literal de lo que significa cada pseudo elemento, nuestra mente imagine que el contenido agregado se colocará arriba y abajo del elemento definido por el selector, esto es común de pensar pues nosotros examinamos a una página web como algo plano bidimensional donde el antes significa arriba y el después significa abajo.</p>
<p>Pero en esta ocasión, con el manejo de pseudo elementos, tenemos que imaginar a estas nuevas partes como hijos del elemento que se indico en el selector. Hijos cuyo contenido será insertado antes o después del contenido propio del elemento padre.</p>
<h2>Tipos de Contenido</h2>
<p>Como ya se pudo apreciar en el ejemplo que se dio anteriormente el contenido puede ser de tipo texto, pero qué hay de otros tipos, qué tenemos que hacer para insertar por ejemplo una imagen, es básicamente lo mismo sólo con pequeñas diferencias.</p>
<p>Si queremos plasmar una imagen en un pseudo elemento creado antes de un párrafo haríamos algo como esto:</p>
<pre class="brush: css; title: ; notranslate">
p:before {
 content: url(imagen.jpg);
}
</pre>
<p>Como se puede apreciar únicamente cambiamos el valor de la propiedad content por una URL de imagen y removimos las comillas para que no se piense que es una cadena de texto.</p>
<h2>Soporte en navegadores</h2>
<p>Como punto final para este artículo quiero mencionar que los pseudo elementos son soportados en la actualidad por casi todos los navegadores, <strong>Chrome a partir de sus versión 2, Firefox a partir de su versión 3, Safari desde la 1.3, Opera 9.2 en adelante e Internet Explorer desde su versión 8</strong> aunque con algunos bugs.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lawebera.es/como-hacer/ejemplos-css/pseudo-elementos-css-before-after.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Crear botones con propiedades CSS3</title>
		<link>http://www.lawebera.es/como-hacer/ejemplos-css/crear-botones-con-css3.php</link>
		<comments>http://www.lawebera.es/como-hacer/ejemplos-css/crear-botones-con-css3.php#comments</comments>
		<pubDate>Thu, 11 Aug 2011 06:17:24 +0000</pubDate>
		<dc:creator>Daniel Ernesto Navarro Herrera</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Ejemplos CSS]]></category>
		<category><![CDATA[CSS3]]></category>

		<guid isPermaLink="false">http://www.lawebera.es/?p=3668</guid>
		<description><![CDATA[En este artículo prácticamos la estilización de botones con CSS3, utilizando gradientes, sombras y bordes]]></description>
			<content:encoded><![CDATA[<p>Cubrir los <a href="http://www.lawebera.es/recursos/videotutoriales/hojas-estilos-css-basico.php" title="Videotutoriales de CSS Básico">conceptos básicos</a> de un tema es fundamental en cualquier ámbito donde nos desarrollemos, gracias a esto podremos establecer las bases necesarias para el correcto aprendizaje, lo que nos permitirá lograr un buen enfoque y una mejor comprensión de temas más complejos.</p>
<p>Uno de estos temas considerados por varios como <a href="http://www.lawebera.es/comunidad/articulos/diseno-web/css/confusiones-css-novatos.php" title="Confusiones CSS en novatos">elementales</a> al momento de empezar a diseñar mediante CSS, es la elaboración y estilización de elementos de un formulario, como lo es el caso de los botones los cuales siempre <strong>hacen resaltar o en otros casos deslucir el ambiente de una página</strong>.</p>
<h2>¿Cómo se hacían botones antes de CSS3?</h2>
<p>En el pasado era de lo más común tener que recurrir a programas de edición de imágenes para poder lograr un buen efecto en nuestros botones. El sombreado, las fuentes estilizadas y el aspecto tridimensional tenía que ser aplicado mediante las herramientas que nos proporcionaba Photoshop, Corel Draw o algún otro <a href="http://www.lawebera.es/diseno-grafico/" title="Herramientas Diseño Web">programa de diseño</a> que teníamos a la mano, y una vez concluida la imagen debíamos complementar con trabajo en <strong>HTML y CSS</strong>.</p>
<p>Para el caso de CSS se tenía que hacer uso de pseudo selectores, particularmente para captar los eventos de colocación del mouse y activación del botón lo que permitía cambiar la imagen de fondo o modificar su posición, para así dar un efecto de <strong>&#8220;aplastado&#8221;</strong> al botón.</p>
<p>Al principio puede parecer fácil crear tres o cuatro imágenes distintas para un sólo botón pero cuando cuentas con varios elementos del mismo tipo que tienen distintos estilos, la cosa se complica, por lo que se empezó a optar por tener una sola imagen para cada botón y en esa misma imagen tener representado cada uno de los eventos.</p>
<p>El tener una sola imagen de fondo representaba un menor tiempo de descarga de la página y agilizaba el desempeño del sitio, es por ello que era muy común encontrar en nuestras hojas de estilos sentencias como:</p>
<pre class="brush: css; title: ; notranslate">
a.btnAzul{
background: url(&quot;botonazul.png&quot;);
}
a.btnAzul:hover, a.btnAzul:focus{
background-position: 0 -124px;
}

a.btnAzul:active{
background-position: 0 -248px;
}
</pre>
<p>Las cuales mediante la propiedad <strong>&#8220;background-position&#8221;</strong> y con valores negativos se encargaban de mover la imagen que se mostraba como fondo de nuestro botón.</p>
<p>Si bien esto vino a simplificar y reducir el tiempo de carga de la página, aún así teníamos que crear de una a tres imágenes por cada botón o por cada estilo con el que contaba la página, esto representaba tiempo y la necesidad de tener conocimiento en algún programa de diseño para poder utilizarlo.</p>
<p>Pero todo esto quedo en el olvido al momento de que <strong>CSS3 implementó todos los efectos necesarios</strong> para llevar a cabo esta clase de ediciones, y ahora el <a title="botones con css3" href="http://www.blog.lawebera.es/botones-web-con-css3/">diseño de botones CSS3</a> se puede hacer directamente en nuestro código.</p>
<h2>Diseño de botones con CSS3</h2>
<p>El <a href="http://www.lawebera.es/como-hacer/ejemplos-css/fondos-con-gradientes-css3.php" title="Gradientes con CSS3">uso de gradientes</a>, <a title="sombras css3 box-shadow" href="http://www.lawebera.es/como-hacer/ejemplos-css/sombras-dimensiones-css3-box-shadow.php">sombras</a>, <a title="propiedades css3" href="http://www.lawebera.es/como-hacer/ejemplos-css/propiedades-css3-capas-div.php">bordes redondeados</a> y transiciones de manera combinada mediante CSS nos permite crear botones con estilos a granel. La poca dependencia de esta manera de desarrollo hace que el diseñador se sienta más libre y pueda experimentar con distintos colores en el mismo código fuente de la página.</p>
<p>En este artículo realizaremos un ejemplo de botón basado en los típicos estilos que vamos a encontrar en casi cualquier sitio web. Utilizaremos un div contenedor con un elemento de tipo link que funcionará como &#8220;tablet&#8221;, a dicho elemento le aplicaremos bordes, gradientes y sombreado para dar un aspecto tridimensional.</p>
<p>El texto del botón también será editado mediante CSS y lucirá con sombras para dar un efecto de profundidad.</p>
<h3>Estructura HTML del boton</h3>
<p>Nuestra estructura HTML tal y como fue descrita anteriormente, quedaría de la siguiente manera:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;div id=&quot;contenedor&quot;&gt;
    &lt;a href=&quot;#&quot; class=&quot;btnAzul&quot;&gt;Da Click&lt;/a&gt;
&lt;/div&gt;
</pre>
<p>Como se puede apreciar es una estructura bastante simple y lo fundamental de ella es elemento de anclaje, el cual recibe una clase a la que hemos llamado <strong>&#8220;btnAzul&#8221;</strong> y será la encargada de recibir todos los efectos mediante CSS.</p>
<h3>Estilos CSS3 para el botón</h3>
<p>Nuestro código CSS comenzará con algunos estilos básicos de configuración lo que nos permitirá apreciar mejor el elemento.</p>
<pre class="brush: css; title: ; notranslate">
a.btnAzul {
    display: block;
    width: 250px;
    height: 60px;
    padding: 25px 0 0 0;
    margin: 0 auto;
}
</pre>
<p>Un elemento de anclaje es por defecto de tipo <strong>&#8220;inline&#8221;</strong> ya que son utilizados para mostrar y representar links, en nuestro caso queremos un &#8220;tablet&#8221; por lo que se vuelve necesario cambiar el tipo de display a tipo bloque y para ello declaramos la sentencia <strong>&#8220;display: block&#8221;</strong>. Esto permitirá que especifiquemos un ancho y una altura para el elemento, para finalmente agregar un <strong>&#8220;padding&#8221;</strong> en la parte superior para separar el texto del borde y el margen <strong>&#8220;auto&#8221;</strong> se encargará de centrar dicho texto.</p>
<p>Después de establecer el elemento base, pasamos a darle formato y edición.</p>
<pre class="brush: css; title: ; notranslate">
a.btnAzul {
    display: block;
    width: 250px;
    height: 60px;
    padding: 25px 0 0 0;
    margin: 0 auto;

    background: #4682B4;
    background: -moz-linear-gradient(top, #87CEEB 0%, #4682B4 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#87CEEB), color-stop(100%,#4682B4));

    box-shadow: inset 0px 0px 6px #fff;
    -webkit-box-shadow: inset 0px 0px 6px #fff;
    border: 1px solid #62C2F9;
    border-radius: 10px;
}
</pre>
<p><a href="http://www.lawebera.es/como-hacer/ejemplos-css/sombras-dimensiones-css3-box-shadow.php" title="Sombras con CSS3">La propiedad &#8220;box-shadow&#8221;</a> nos servirá para darle un efecto de resplandor interno, muy parecido al que se puede dar con <a href="http://www.lawebera.es/maquetacion-web" title="Maquetar desde Photoshop">Photoshop</a>. Al agregar la propiedad &#8220;inset&#8221; hace que la sombra se coloque al interior del elemento, contrario al comportamiento natural de la propiedad que agrega el efecto en el exterior.</p>
<p>En esta ocasión no vamos a utilizar los parámetros de <strong>&#8220;offset&#8221;</strong> en ninguno de los ejes de la sombra, pero si utilizaremos la propiedad <strong>&#8220;blur&#8221;</strong> para agregar un tipo de borrando y suavizar el efecto de flujo. A esto adicionamos un borde simple de 1 píxel de ancho y las esquinas se redondean mediante la propiedad border-radius.</p>
<p>Después de tener establecido el estilo para el fondo de nuestro botón, pasamos a establecer el estilo del texto.</p>
<pre class="brush: css; title: ; notranslate">
a.btnAzul {
    display: block;
    width: 250px;
    height: 60px;
    padding: 25px 0 0 0;
    margin: 0 auto;

    background: #4682B4;
    background: -moz-linear-gradient(top, #87CEEB 0%, #4682B4 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#87CEEB), color-stop(100%,#4682B4));

    box-shadow: inset 0px 0px 6px #fff;
    -webkit-box-shadow: inset 0px 0px 6px #fff;
    border: 1px solid #62C2F9;
    border-radius: 10px;

    font: bold 25px Helvetica, Sans-Serif;
    text-align: center;
    text-transform: uppercase;
    text-decoration: none;
    color: #3090C7;
    text-shadow: 0px 1px 2px #62C2F9;
}
</pre>
<p>Establecemos el tipo de fuente, su tamaño, lo alineamos al centro del elemento, transformamos todas las letras a mayúsculas para darle uniformidad, quitamos todo tipo de decoración, definimos su color y finalmente establecemos un sombreado para darle un efecto de inserción. Lo que hacemos con la <a href="http://www.lawebera.es/comunidad/articulos/diseno-web/css/sombras-en-el-texto-la-propiedad-text-shadow-de-css3.php" title="Sombras en el texto con CSS3">propiedad &#8220;text-shadow&#8221;</a> es básicamente darle 1 píxel de offset en el eje Y y crear un blur de 2 píxeles.</p>
<p><strong>El resultado final:</strong><br />
<img src="http://i1238.photobucket.com/albums/ff491/dnavarro1/btnAzul.jpg" border="0" alt="Photobucket" /></p>
<p>Y aquí el ejemplo funcionando: <a href="/ejemplos/css3/botones-css3.html">Botones con CSS3</a></p>
<p>Con esto se logra obtener un botón de <a href="http://www.lawebera.es/comunidad/articulos/diseno-web" title="Diseño web">diseño sencillo</a> pero que atrae, a partir de aquí podemos utilizar pseudo selectores si queremos y hacer uso de estos mismos efectos para diseñar el botón cuando el mouse se posicione sobre él o le de click.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lawebera.es/como-hacer/ejemplos-css/crear-botones-con-css3.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como detectar el uso de Internet Explorer 6, 7 y 8</title>
		<link>http://www.lawebera.es/como-hacer/ejemplos-css/detectar-uso-internet-explorer-6-7-8.php</link>
		<comments>http://www.lawebera.es/como-hacer/ejemplos-css/detectar-uso-internet-explorer-6-7-8.php#comments</comments>
		<pubDate>Thu, 21 Jul 2011 06:47:07 +0000</pubDate>
		<dc:creator>Daniel Ernesto Navarro Herrera</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Ejemplos CSS]]></category>

		<guid isPermaLink="false">http://www.lawebera.es/?p=3565</guid>
		<description><![CDATA[En este artículo vemos la manera de detectar el uso de IE 6, 7 y 8 mediante cuatro caracteres en nuestro código de estilo]]></description>
			<content:encoded><![CDATA[<p>Es de casi asegurar el hecho de que todo aquel programador que ha tenido experiencia en el ámbito del desarrollo web se ha visto envuelto en alguna <a title="Solucionar problemas de visualización en IE" href="http://www.lawebera.es/como-hacer/ejemplos-css/solucionar-problemas-visualizar-web-internet-explorer.php">clase de problema</a> con <strong>Internet Explorer</strong>. Ya sea de forma directa o indirecta este navegador, identificado por el famoso icono de la <strong>&#8220;e&#8221; azul</strong>, ha representado un reto y horas extra de codificación para todos los proyectos que se emprenden.</p>
<p>Su <a title="Internet Explorer 6 no gracias" href="http://www.blog.lawebera.es/internet-explorer-6-no-gracias/">inestabilidad y falta de estándares</a> han hecho que de él no se tengan buenos conceptos, y razones no faltan para hablar mal. Desde hechos tan sencillos como el despliegue incorrecto de una imagen hasta casos extremos donde el estilo completo de una página se ve afectado, transparencias, capas flotantes, <a title="Sombras con CSS3" href="http://www.lawebera.es/como-hacer/ejemplos-css/sombras-dimensiones-css3-box-shadow.php">efectos de sombreado</a>, estilizaciones, todo esto puede verse alterado en alguna de sus versiones.</p>
<p>Si bien es cierto que este en su última versión ha presentado grandes mejoras y el soporte a nuevas tecnologías se ha puesto como prioridad, el uso de sus versiones anteriores y la poca estandarización de estas producen dolores de cabeza a por mayor, pues tenemos que afrontar la verdad y darnos cuenta de que aún existen millones de personas utilizando alguna versión vieja de este navegador por lo que tenemos que seguir brindado soporte.</p>
<p>Algunas de estas versiones, como es el caso de Internet Explorer 6, han sido oficialmente declaradas como muertas, pero en países como China este explorador sigue siendo el más utilizado y el simple hecho de dar formato a un disco duro e instalar de nueva cuenta el sistema operativo Windows XP hace que Internet Explorer 6 tome la riendas de la navegación web de nuevo, por lo que no lo podemos pasar por alto.</p>
<p>Que la innovación es importante lo sabemos, que la estandarización y las nuevas tecnologías es lo que se debe practicar sin duda, pero hay que recordar que no vivimos en un mundo de desarrolladores, allá afuera existen personas que saben poco o nada de estándares o de navegadores actualizados, ellos solo quieren entrar a Internet buscar algún producto o información y obtenerlo.</p>
<p>Esta clase de personas también serán nuestros clientes o los clientes potenciales de los sitios para los que trabajamos, no podemos llegar con la persona que nos contrató y decirle algo como &#8220;El sitio quedó muy bien, pero sólo se verá bien en <a title="Desarrolla para Firefox, hackea para Explorer" href="http://www.lawebera.es/comunidad/articulos/diseno-web/html-xhtml/desarrolla-firefox-hackea-explorer.php">Firefox</a> y Google Chrome, en IE fallará pero no importa el 40% de los visitantes la verán bien&#8221;.</p>
<p>Por esta razón principalmente tenemos que buscar <a title="Hacks CSS para IE7" href="http://www.lawebera.es/comunidad/articulos/diseno-web/css/hack-css-para-internet-explorer-7.php">&#8220;hacks&#8221;</a> y manera de adaptar nuestro sitio para que Internet Explorer pueda por lo menos simular lo que queremos lograr. En esta ocasión tratamos el tema de como detectar el uso de alguno de estos navegadores mediante caracteres en nuestro código CSS, son 3 simples expresiones que nos ayudan a determinar que un estilo para cada versión del navegador ya sea <strong>Internet Explorer 8 o inferior</strong>.</p>
<p>Antes de empezar con el desarrollo debemos aclarar que esta no es la mejor práctica y se debe utilizar sólo en casos donde sabemos que existirán pocos cambios en el estilo, la mayor parte del tiempo debemos utilizar el <strong>condicionamiento en comentarios</strong> como este:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;!--[if IE 6]&gt;
Instrucciones especiales para IE 6 aquí
&lt;![endif]--&gt;
</pre>
<p>Si deseamos un comportamiento especial en cada versión, pero estos caracteres se pueden tomar como un atajo o algo sencillo a realizar cuando no exista mucha diferencia de un estilo a otro, y al final del día es un conocimiento extra que nos puede ayudar en el futuro.</p>
<h2>IE8 y anteriores</h2>
<p>La clave para rastrear <strong>Internet Explorer 8</strong> y versiones anteriores esta conformada por dos caracteres, una diagonal invertida y el número nueve al final de la sentencia de estilo. Por ejemplo:</p>
<pre class="brush: css; title: ; notranslate">
    body {
     color : blue; /* Todos los navegadores */
     color : red\9; /* IE8 y anteriores */
    }
</pre>
<p>Desafortunadamente este hack únicamente puede ser utilizado para rastrear la versión 8 y anteriores, no podemos implementar algo como &#8220;\IE&#8221; para saber si el navegador es Internet Explorer en general.</p>
<h2>IE 7 y anteriores</h2>
<p>Para identificar al navegador <strong>IE 7</strong> o alguna versión anterior utilizamos el caracter <strong>asterisco &#8220;*&#8221;</strong>. En este caso el caracter lo usaremos al principio de la sentencia y no al final como en el ejemplo anterior, es entonces que el código nos quedaría de la siguiente manera:</p>
<pre class="brush: css; title: ; notranslate">
body {
     color : blue; /* Todos los navegadores */
     color : red\9; /* IE8 */
     *color: green; /* IE7 y anteriores */
    }
</pre>
<h2>IE6</h2>
<p>Por su parte <strong>Internet Explorer 6</strong> es representado por un <strong>guión bajo &#8220;_&#8221;</strong>, o underscore, el cual también se coloca al inicio de la declaración de estilo y en este caso únicamente servirá para rastrear la versión 6.</p>
<pre class="brush: css; title: ; notranslate">
body {
     color : blue; /* Todos los navegadores */
     color : red\9; /* IE8 */
     *color: green; /* IE7 */
     _color: purple: /* IE6 */
    }
</pre>
<h2>Conclusión</h2>
<p>De esta manera podemos incluso personalizar el sitio en base a la versión del cliente, mostrar alguna capa o ocultar algunas otras, incluso desplegarle algún mensaje que le recomiende bajar otro navegador. Como ya explique el uso de estos caracteres selectores debe hacerse con cuidado y no exagerar en su implementación, puesto que no sabemos si en un futuro estos hacks seguirán siendo utilizados o representarán lo mismo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lawebera.es/como-hacer/ejemplos-css/detectar-uso-internet-explorer-6-7-8.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS Media queries</title>
		<link>http://www.lawebera.es/como-hacer/ejemplos-css/css-media-queries.php</link>
		<comments>http://www.lawebera.es/como-hacer/ejemplos-css/css-media-queries.php#comments</comments>
		<pubDate>Tue, 19 Jul 2011 06:26:21 +0000</pubDate>
		<dc:creator>Daniel Ernesto Navarro Herrera</dc:creator>
				<category><![CDATA[Ejemplos CSS]]></category>

		<guid isPermaLink="false">http://www.lawebera.es/?p=3549</guid>
		<description><![CDATA[En este artículo explicamos como adaptar nuestros sitios al tamaño de la ventana del navegador y de los dispositivos mediante los "media queries" de CSS.]]></description>
			<content:encoded><![CDATA[<p>Brindar comodidad en la visualización y soporte para diversos tamaños de pantalla, se ha convertido en una prioridad para todos los <a title="¿Qué es un sitio web?" href="http://www.lawebera.es/comunidad/articulos/diseno-web/que-es-un-sitio-web.php">sitios web</a> que desean crear gratas experiencias en el manejo de sus sistemas por parte del usuario final. Además con la popularización de internet desde el<a title="diseño web para moviles" href="http://www.lawebera.es/manual-diseno-web/consejos-diseno-web-para-moviles-i.php"> móvil</a>, es más importante si cabe usar este tipo de recursos.</p>
<p>Con la variedad de dispositivos que actualmente existen en el mercado,  la <a title="diseño web para moviles - 2" href="http://www.lawebera.es/manual-diseno-web/consejos-diseno-web-para-moviles-ii.php">web móvil</a>, etc. el manejo adecuado del tamaño de pantalla y la manera en que se despliega el sitio es un factor determinante para que el usuario frecuente y utilice un sitio, ya que si este no puede ser observado correctamente su potencial se ve reducido.</p>
<p>Para lograr este soporte, en el pasado, era común recurrir a efectos y trucos que nos ofrecía <a title="Manual de Javascript" href="http://www.lawebera.es/manuales/javascript/intro-javascript.php">JavaScript</a>, para que de esa manera el sitio se ajustará a la medida de la ventana donde el usuario había abierto el sitio, o pero aún se modificaba arbitrariamente el ancho del navegador donde se desplegaba el sitio, actuando en contra de lo que el usuario realmente deseaba.</p>
<p>Afortunadamente en la actualidad este proceso se ha simplificado en gran manera, a tal grado que con un par de líneas podemos dar soporte a los tamaños de pantalla más utilizados por los usuarios, ya sea el tamaño de un monitor de escritorio, una tablet o un smartphone. Todo esto se ha conseguido gracias al uso de <a title="Primeros pasos con CSS" href="http://www.lawebera.es/comunidad/articulos/diseno-web/css/primeros-pasos-con-css-hojas-de-estilo.php">CSS</a> y sus nuevas estandarizaciones, entre las cuales nos encontramos a los <strong>&#8220;media queries&#8221;</strong> quienes serán los que nos ayuden a llevar a cabo esta tarea.</p>
<h2>Soporte de CSS media queries en navegadores</h2>
<p>Antes de empezar con el desarrollo, debemos establecer que los métodos que vamos a explicar en este artículo sólo tendrán efecto en ciertos navegadores, si tu deseas dar soporte a todos los navegadores que aún están en uso por parte de los usuarios, entonces puedes tomar algún otro tutorial o conseguir un truco por Internet que te permita conseguir el mismo efecto mediante <a title="Hack CSS en IE 7" href="http://www.lawebera.es/comunidad/articulos/diseno-web/css/hack-css-para-internet-explorer-7.php">&#8220;hacks&#8221;</a>, sólo recuerda que no hay que maritizarse mucho con esto pues es muy poco probable que un smartphone o una tablet venga con Internet Explorer 7 como navegador, puesto que son instrumentos relativamente recientes.</p>
<p>Los navegadores que soportan los Media Queries de CSS son Firefox en su versión 3.5 y posteriores, Google Chrome en todas sus versiones, Safari en su versión 3 y posteriores, Opera en la versión 9.5 y posteriores y finalmente Internet Explorer que los incorporó a partir de su versión 9.</p>
<p>Ahora que ya sabemos los navegadores donde se pueden utilizar hay que identificar en que partes del código podemos colocar los media queries.</p>
<h2>Donde colocar los media queries</h2>
<p>El método más común a utilizar es incluir nuestros media queries dentro de la <a title="Hoja de Estilo (CSS) La Cascada" href="http://www.lawebera.es/manuales/css1/cascada.php">hoja de estilo</a> principal. Para llamarlos basta con incluir la etiqueta &#8220;@media&#8221; en nuestra sentencia.</p>
<p>Veamos la estructura:</p>
<pre class="brush: css; title: ; notranslate">
@media screen and (min-width : 1024px){
      /* Aquí iría el estilo para este tamaño de pantalla */
}
</pre>
<p>Como se puede observar en la sentencia utilizamos la palabra <strong>&#8220;screen&#8221;</strong> después de la etiqueta <strong>&#8220;@media&#8221;</strong>, esto sirve para indicar el formato al cual aplicaremos el estilo, este puede tener distintos valores como all, screen o print, en nuestro caso nos enfocaremos únicamente a &#8220;screen&#8221; ya que nos estamos refiriendo al tamaño de pantalla.</p>
<p>Después de establecer el formato damos la siguiente parte <strong>&#8220;min-width: 1024px&#8221;</strong>, con esto especificamos cual será el tamaño mínimo que deba tener la pantalla para que el estilo pueda ser aplicado, en este caso yo le di el valor de 1024 píxeles ya que es un estándar de tamaño de monitor para las computadoras de escritorio.</p>
<p>Si definimos una hoja de estilo como la siguiente:</p>
<pre class="brush: css; title: ; notranslate">
&lt;style&gt;
#contenedor{
background: crimson;
width:200px;
height: 200px;
}

@media screen and (min-width : 1024px){
    #contenedor{
      background: blue;
    }
}
&lt;/style&gt;
</pre>
<p>Al momento de abrir nuestra página veremos un bloque contenedor de fondo carmesí, pero al momento en que disminuyamos el tamaño el browser a una cantidad menor de 1024 píxeles de ancho el contenedor cambiará de color y ahora será azul.</p>
<p>Podemos lograr el mismo efecto llevando a cabo otras manera de llamado, como por ejemplo la importación de hojas de estilo específicas para cada tamaño.</p>
<h2>Importando desde la hoja de estilo</h2>
<p>Mediante la etiqueta <strong>&#8220;@import&#8221;</strong> podemos mandar llamar a un archivo CSS externo que contenga todas las características deseadas para un tamaño de pantalla específico. Supongamos que tenemos un css definido para los monitores de de computadoras de escritorio pequeñas, cuya anchura es de 600 px en adelante, si quisiéramos llamar a esa hoja de estilo bastaría con realizar la siguiente sentencia:</p>
<pre class="brush: css; title: ; notranslate">
&lt;style&gt;
@import url( escritorioPequeno.css ) screen and ( min-width: 600px );
&lt;/style&gt;
</pre>
<p>Hay que tener en cuenta que también podemos agregar reglas mediante la aplicación de una coma, al igual que se hace al utilizar varios selectores.</p>
<h2>Enlace a una hoja de estilo</h2>
<p>Si no queremos importar en la hoja de estilo podemos <a title="Hojas de Estilo (CSS) Inclusión en HTML y Agrupamiento" href="http://www.lawebera.es/manuales/css1/inclusion.php">incluir la hoja directamente en el código HTML</a> para eso hacemos el llamado mediante la etiqueta &#8220;link&#8221; estableciendo el atributo &#8220;media&#8221; para especificar el formato y la anchura.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;link rel=&quot;stylesheet&quot; media=&quot;screen and (min-width: 600px)&quot; href=&quot;escritorioPequeno.css&quot; /&gt;
</pre>
<h2>Rastreando un dispositivo específico</h2>
<p>Finalmente si lo que deseas es rastrear por dispositivo puedes usar la propiedad &#8220;<strong>max-device-width</strong>&#8220;. Esto te permite llamar hojas de estilo que hayan sido hechas con la única finalidad de que la página se despliegue bien en otra clase de dispositivo.</p>
<p>Por ejemplo, si quisieramos mandar llamar una hoja de estilo para desplegar correctamente la página en un iPhone haríamos una llamada como la siguiente:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;link rel=&quot;stylesheet&quot; media=&quot;only screen and (max-device-width: 480px)&quot; href=&quot;dispositivoMovil.css&quot; /&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.lawebera.es/como-hacer/ejemplos-css/css-media-queries.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS: Correcto uso de capas flotantes (float) con overflow</title>
		<link>http://www.lawebera.es/como-hacer/ejemplos-css/usar-capas-flotantes-float-overflow.php</link>
		<comments>http://www.lawebera.es/como-hacer/ejemplos-css/usar-capas-flotantes-float-overflow.php#comments</comments>
		<pubDate>Thu, 07 Jul 2011 20:25:35 +0000</pubDate>
		<dc:creator>Daniel Ernesto Navarro Herrera</dc:creator>
				<category><![CDATA[Ejemplos CSS]]></category>

		<guid isPermaLink="false">http://www.lawebera.es/?p=3525</guid>
		<description><![CDATA[En este artículo explicamos como corregir el uso de flotantes dentro de un contenedor con la propiedad overflow]]></description>
			<content:encoded><![CDATA[<p>El desprestigio que adquiere un sitio al <a title="Dejar de usar tablas, aprender CSS" href="http://www.lawebera.es/comunidad/articulos/diseno-web/css/dejar-usar-tablas-html-aprender-css.php">utilizar tablas como contenedores</a> de información es conocido por todo desarrollador web que tenga un mínimo de experiencia en estandarización de código. El llamar a dichos elementos para mostrar información o imágenes únicamente para ahorrarnos unos pasos y tener alineado nuestro contenido es considerado una de las faltas más graves en la <a title="maquetacion de paginas web" href="http://www.lawebera.es/maquetacion-web">maquetación de páginas web</a>.</p>
<p>Con el paso de los años la aplicación de las tablas en sitios se fue limitando de tal manera que en la actualidad la mayoría de los sitios únicamente las utilizan para mostrar datos tabulares, lo que fue y siempre será su único motivo de existencia. Gracias a esta adecuación, dichas estructuras han caído en desuso para dar formato a contenido, por lo que varios métodos para alinear y mostrar información han tenido que surgir para cumplir con esta función.</p>
<p>La respuesta inmediata a esta clase de problemas la podemos encontrar en el lenguaje de estilo CSS. Si bien CSS3 nos ha sorprendido con el uso de <a title="Columnas múltiples con CSS3" href="http://www.lawebera.es/como-hacer/ejemplos-css/columnas-multiples-css3.php">columnas múltiples</a> en nuestros documentos, en esta ocasión nos centraremos en el uso de capas con propiedades flotantes para poder explicar nuestro ejemplo de &#8220;Overflow&#8221;.</p>
<p>Como es de saberse el uso de capas mediante elementos <a title="Introducción al uso de capas" href="http://www.lawebera.es/maquetacion-web/introduccion-uso-capas-css-xhtml-html.php">&#8220;div&#8221;</a> se ha convertido en la forma más común y adecuada de mostrar información en nuestro sitio. A cada una de estas capas se le puede dar valores que permitan editar su tamaño, posición y estilo, por ejemplo si quisiéramos colocar dos capas con bloques de contenido en un mismo nivel de manera paralela verticalmente utilizaríamos la propiedades &#8220;float&#8221; para mandar una al lado izquierdo y otra al lado derecho.</p>
<h2>Las capas flotantes con CSS</h2>
<p>El problema que vamos a abarcar en el estudio de este artículo se produce precisamente al manejar dichas propiedades de flotación. Hay que aclarar que no por ello debemos discriminar a la <a title="Guía CSS: Propiedad float" href="http://www.lawebera.es/como-hacer/ejemplos-css/guia-css-propiedad-float-clear-estructurar-web.php">propiedad &#8220;float&#8221;</a>, pues es una de las maneras más adecuadas para colocar &#8220;divs&#8221; a lo largo y ancho de la página y su implementación vino a revolucionar lo que anteriormente era <a title="Maquetación de una web" href="http://www.lawebera.es/como-hacer/ejemplos-css/maquetacion-la-propiedad-float.php">la maquetación y estructuración</a> de un sitio.</p>
<p>Básicamente lo que ocurre al crear capas en un sitio es que un elemento &#8220;div&#8221; siempre se colocaba debajo del anterior elemento del mismo tipo, lo que hace que la información se muestre en una sola columna aunque modifiquemos el tamaño y estilo de la capa. Esto se puede evitar gracias a la propiedad &#8220;float&#8221; la cual crea el efecto necesario para que las capas estén &#8220;flotando&#8221; en la página y podamos moverlas y colocarlas a disposición.</p>
<h2>La estructura</h2>
<p>Por ejemplo, si suponemos que se desea tener una estructura de sitio con tres capas de presentación, una de ellas que sirva para contener toda la información y las otras dos para representar las columnas, se debe optar por manejar tres elementos de tipo div los cuales después serán adecuados <a title="Maquetar mediante capas" href="http://www.lawebera.es/maquetacion-web/maquetar-paginas-web-posicion-capas-i.php">mediante CSS</a>.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;div id=&quot;contenedor&quot;&gt;
    &lt;div id=&quot;columnaIzq&quot;&gt;
        &lt;p&gt;Soy la columna izquierda de esta página y muestro contenido&lt;/p&gt;
    &lt;/div&gt;
    &lt;div id=&quot;columnaDer&quot;&gt;
        &lt;p&gt;Soy la columna derecha de esta página y también muestro contenido&lt;/p&gt;
    &lt;/div&gt;
&lt;/div&gt;
</pre>
<p>Como es de suponerse queremos que una de las columnas se muestre al lado izquierdo del contenedor y la otra al lado derecho, para ello debemos usar la propiedad flotadora ya mencionada y el código quedaría de la siguiente manera:</p>
<pre class="brush: css; title: ; notranslate">
#contenedor{
    background-color: SteelBlue;
    padding:5px;
}
#columnaIzq{
    width:300px;
    float:left;
}
#columnaDer{
    width:300px;
    float:right;
}
</pre>
<p>El único problema de esta estructura es que el &#8220;div&#8221; contenedor no tiene idea de que las otras dos capas existen, puesto que las dos están flotando por encima de él, por lo que actua como un contenedor vacío y simplemente no se muestra. Si pegamos el código que acabamos de realizar en nuestra página web podremos ver que apenas se alcanza a distinguir una línea con el color <strong>&#8220;SteelBlue&#8221;</strong> de fondo, ese es nuestro &#8220;div&#8221; contenedor, por su parte las columnas se muestran pero no de la manera en que queremos.</p>
<h2>La solución momentánea</h2>
<p>Muchos de nosotros improvisamos y a la carrera sacamos proyectos por cuestiones de tiempo o desesperación, existen soluciones poco prácticas o incluso momentáneas que nos pueden ayudar. El uso de algún elemento al final del &#8220;div&#8221; contenedor puede ayudar a que la capa se extienda y abarque los dos elementos de columnas.</p>
<p>Por ejemplo podemos añadir una cierta cantidad de espacios en blanco mediante el código &#8220; &#8221; al final del div o de saltos de línea mediante la etiqueta &#8221;<br />
&#8221; hasta que el contenedor abarque lo suficiente como para obtener el resultado que queremos. O incluso vernos un poco más sofisticados y utilizar esta misma etiqueta de salto de línea pero con un atributo &#8220;clear&#8221; cuyo valor sea &#8220;all&#8221;, lo que forzará al contenedor a extenderse para mostrar el contenido, por lo que si cambiamos el código HTML a este:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;div id=&quot;contenedor&quot;&gt;
    &lt;div id=&quot;columnaIzq&quot;&gt;
        &lt;p&gt;Soy la columna izquierda de esta página y muestro contenido&lt;/p&gt;
    &lt;/div&gt;
    &lt;div id=&quot;columnaDer&quot;&gt;
        &lt;p&gt;Soy la columna derecha de esta página y también muestro contenido&lt;/p&gt;
    &lt;/div&gt;
&lt;br clear=&quot;all&quot; /&gt;
&lt;/div&gt;
</pre>
<p>El resultado puede parecer el indicado, pero quizás no sea la forma más adecuada de obtenerlo.</p>
<h2>Overflow de CSS y capas flotantes</h2>
<p>Si bien con el salto de línea se pudo desplegar correctamente nuestro &#8220;div&#8221; contenedor, estamos utilizando una etiqueta de contenido que no tiene más propósito que mostrar bien la estructura, por ello es mejor pensar en una solución que venga desde el diseño y no desde el contenido.</p>
<p>Para esta situación es cuando podemos utilizar la <a title="Propiedad Overflow" href="http://www.lawebera.es/como-hacer/ejemplos-css/propiedad-overflow-css-maquetar-paginas-web.php">propiedad &#8220;overflow&#8221;</a> que nos ofrece CSS. La principal función de dicha propiedad es permitirnos modelar las capas de tal manera que el navegador sepa cómo mostrar el contenido cuando este no puede ser colocado de manera completa, pero en esta ocasión toma una función complementaría y permite que los elementos flotantes sean reconocidos por el elemento contenedor.</p>
<p>Para esta función se puede utilizar cualquier valor de los permitidos para la propiedad &#8220;Overflow&#8221;, ya sea &#8220;hidden&#8221;, &#8220;scroll&#8221; o &#8220;auto&#8221;, todas funcionan, pero por cuestiones de estética optaremos en esta ocasión por el valor &#8220;hidden&#8221; que simplemente no muestra nada. Habiendo dicho esto, modificamos el código de nuestro CSS y las propiedades del div contenedor quedan de la siguiente manera:</p>
<pre class="brush: css; title: ; notranslate">
#contenedor{
    background-color: SteelBlue;
    padding:5px;
    overflow: hidden;
}
</pre>
<p>En cuanto al <a title="Conceptos Básicos de HTML" href="http://www.lawebera.es/de0/conceptos-basicos-html.php">código HTML</a>, ya no será necesario usar el salto de línea por lo que podemos volver al código original mostrado en el primer ejemplo.</p>
<p>Finalmente debemos aclarar que este truco funciona en todos los navegadores que soportan CSS aunque en algunos casos debemos utilizar un <strong>&#8220;width&#8221; o un &#8220;height&#8221; específico</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lawebera.es/como-hacer/ejemplos-css/usar-capas-flotantes-float-overflow.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sombras y dimensiones con CSS3 &#8211; box-shadow</title>
		<link>http://www.lawebera.es/como-hacer/ejemplos-css/sombras-dimensiones-css3-box-shadow.php</link>
		<comments>http://www.lawebera.es/como-hacer/ejemplos-css/sombras-dimensiones-css3-box-shadow.php#comments</comments>
		<pubDate>Tue, 05 Jul 2011 06:49:50 +0000</pubDate>
		<dc:creator>Daniel Ernesto Navarro Herrera</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Ejemplos CSS]]></category>

		<guid isPermaLink="false">http://www.lawebera.es/?p=3492</guid>
		<description><![CDATA[En este artículo practicamos con propiedades CSS3 para agregar sombras a las imágenes y efectos de profundidad al sitio.]]></description>
			<content:encoded><![CDATA[<p>El agregar <a title="Sombras en el texto con CSS3" href="http://www.lawebera.es/comunidad/articulos/diseno-web/css/sombras-en-el-texto-la-propiedad-text-shadow-de-css3.php">efectos de sombra</a> ha sido uno de los trucos más recurridos para realzar las imágenes que desplegamos en nuestros sitios Web. Desde que el uso de Photoshop y otros programas de edición ha venido a la alza, este efecto se ha practicado cotidianamente como parte de un ritual de estilización proporcionada por los <a title="Principios de diseño web" href="http://www.lawebera.es/manual-diseno-web/principios-diseno-web.php">diseñadores gráficos</a>.</p>
<p>En la actualidad ya no es requerido el llevar un tutorial completo sobre edición de imágenes para poder aplicar esta clase de efectos, ya que CSS nos permite utilizarlos aún sin tener conocimientos previos de diseño, facilitando las cosas a los programadores que nos hemos enfocado más en el funcionamiento de los sitios y que ahora podemos tener un mejor trato del entorno visual.</p>
<h2>Box-shadow de CSS3</h2>
<p><strong>Box-shadow</strong> es una propiedad <a title="Novedades CSS3" href="http://www.lawebera.es/comunidad/articulos/diseno-web/css/novedades-css3.php">CSS3</a> que permite a los diseñadores y desarrolladores implementar fácilmente sombras sobre cualquier elemento de tipo capa. Con esta propiedad podemos especificar las propiedades de la sombra que queremos desplegar proporcionando valores de tamaño, color, offset, y el desenfoque deseado.</p>
<p>Al agregar una sombra creamos un efecto de dimensión y cambia la perspectiva de la imagen, al realizar esto con CSS nos ahorramos el hecho de tener una imagen con cada efecto ya aplicado, simplemente basta con tener la imagen base a la cual podemos añadirle y quitarle efectos mediante propiedades como la ya mencionada.</p>
<p>En este artículo nos enfocaremos a dar un efecto de sombra base para después crear una sombra que de dimensión para darle vida a nuestra imagen plana.</p>
<h2>Aplicando la propiedad CSS3 box-shadow</h2>
<h3>La imagen</h3>
<p>Lo primero que necesitamos para llevar a cabo esta práctica es una <a title="Cómo añadir imágenes web" href="http://www.lawebera.es/de0/anadir-imagenes-web.php">imagen plana</a> que no tenga ningún tipo de borde ni efecto añadido, de tal manera que podamos aplicar nuestros propios bordes con CSS sin que haya conflicto con la imagen base.</p>
<p><img src="http://i1238.photobucket.com/albums/ff491/dnavarro1/th_imagen_plana.jpg" alt="Imagen con la clase de sombra borde aplicada" /></p>
<p>Dicha imagen será colocada dentro de un elemento div, al cual posteriormente le vamos a aplicar los estilos CSS necesarios para lograr el efecto.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;div id=&quot;contenedorImg&quot;&gt;
    &lt;img src=&quot;imagenPlana.png&quot; /&gt;
&lt;/div&gt;
</pre>
<h3>Añadiendo el borde</h3>
<p>Después de definir la imagen pasamos a añadir la clase base <strong>&#8220;box-shadow&#8221;</strong>, la cual nos proporcionará un tipo de borde difuminado alrededor de la imagen que produce el <strong>efecto tridimensional</strong> que buscamos. Como buena propiedad CSS, el efecto producido por &#8220;box-shadow&#8221; puede ser modificado y alterado, podemos ajustar su tamaño añadiendo píxeles en las propiedades de los elementos.</p>
<p>Nuestro CSS quedaría definido de la siguiente manera:</p>
<pre class="brush: css; title: ; notranslate">
.sombra-borde {
    width: 600px;
    -webkit-box-shadow: 1px 2px 4px rgba(0,0,0,.5);
    -moz-box-shadow: 1px 2px 4px rgba(0,0,0,.5);
    box-shadow: 1px 2px 4px rgba(0,0,0,.5);
}
</pre>
<p>Y al aplicarlo a nuestro HTML obtendríamos una imagen así:</p>
<p><img src="http://i1238.photobucket.com/albums/ff491/dnavarro1/th_sombra_borde.jpg" alt="Imagen con la clase de sombra borde aplicada" /></p>
<h3>Sombra profunda</h3>
<p>Después de tener listo la aplicación de la sombra a la <a title="Propiedades CSS3 para capas" href="http://www.lawebera.es/como-hacer/ejemplos-css/propiedades-css3-capas-div.php">caja contenedora</a>, continuamos con la creación de una clase de estilo que agregue un efecto sombra profunda para nuestra imagen. Esta sombra nos dará una sensación de mayor profundidad y para ello definimos un código CSS como el siguiente, entorno al elemento &#8220;div&#8221; que contiene la imagen:</p>
<pre class="brush: css; title: ; notranslate">
.sombra-profunda:after {
    -moz-transform: skew(-40deg);
    -webkit-transform: skew(-40deg);
    -moz-box-shadow:  70px 0 10px 40px rgba(0,0,0,.2);
    -webkit-box-shadow:  70px 0 10px 40px rgba(0,0,0,.2);
    box-shadow: 70px 0 10px 40px rgba(0, 0, 0, 0.2);
    content: &quot;&quot;;
    height: 40px;
    left: 0;
    position: absolute;
    top: 360px;
    width: 550px;
}
</pre>
<p>Con este código la sombra queda sobre la imagen, pero esto lo vamos a corregir en el siguiente paso.</p>
<h3>Ajustar el orden del índice Z (z-index)</h3>
<p>Por último, cambiamos el orden del índice Z de nuestra sombra, dicho índice indica el orden en que se mostrarán los elementos en el sitio, con ello se evita el empalmar elementos sobre otros más importantes, en este caso lo utilizamos para lograr el efecto de profundidad necesario y evitar que la sombra quede en el primer marco del sitio.</p>
<p>Al darle un valor de &#8220;-1&#8243; a la propiedad &#8220;z-index&#8221; logramos pasar la sombra al fondo y con esto completar <strong>el marco visual que estamos buscando</strong>.</p>
<pre class="brush: css; title: ; notranslate">
z-index: -1;
</pre>
<p><img src="http://i1238.photobucket.com/albums/ff491/dnavarro1/th_sombra_profunda.jpg" alt="Imagen con las dos clases aplicadas" /></p>
<p>Como se puede apreciar en la imagen final, hemos logrado transformar lo plano en algo tridimensional y sólo con unos cuantos pasos sencillos. Basta con aplicar al &#8220;div&#8221; contenedor de la imagen las clases que creamos en este artículo, para así poder observar los resultados.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;div id=&quot;contenedorImg&quot; class=&quot;sombra-borde sombra-profunda&quot;&gt;
    &lt;img src=&quot;imagenPlana.png&quot; /&gt;
&lt;/div&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.lawebera.es/como-hacer/ejemplos-css/sombras-dimensiones-css3-box-shadow.php/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>¿Cómo cambiar el estilo de nuestro sitio dinámicamente? Parte IV &#8211; Final</title>
		<link>http://www.lawebera.es/como-hacer/ejemplos-css/cambiar-estilo-css-web-dinamicamente-iv.php</link>
		<comments>http://www.lawebera.es/como-hacer/ejemplos-css/cambiar-estilo-css-web-dinamicamente-iv.php#comments</comments>
		<pubDate>Mon, 04 Jul 2011 06:39:06 +0000</pubDate>
		<dc:creator>Alejandro Chavez</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Ejemplos CSS]]></category>

		<guid isPermaLink="false">http://www.lawebera.es/?p=3486</guid>
		<description><![CDATA[Vemos la última parte de este mini-manual sobre cómo modificar dinamicamente los estilos CSS en nuestra página web. En esta última entrega terminamos el ejemplo de las horas del día.]]></description>
			<content:encoded><![CDATA[<p>  Continuando con el tema de <a href="http://www.lawebera.es/como-hacer/ejemplos-css/cambiar-estilo-css-web-dinamicamente-iii.php" title="cambiar estilos css dinamicamente">cambiar estilos dinámicamente en base a las horas del día</a>. El primer estilo a desarrollar será el de la mañana, que contendrá colores más claros que el resto, empezando por un fondo basado en un gradiente circular que ira desde el blanco hasta un amarillo claro.</p>
<h2>Código CSS para cambiar los estilos dinámicamente</h2>
<pre class="brush: css; title: ; notranslate">
 * {
  margin: 0;
  padding: 0;
  }

  body {
  height: 100%;
  background: #DEB887;
  font-size: 14px;
  background: -moz-radial-gradient(center 45deg, circle closest-corner, #FFFFFF 0%, #FFCC66 100%);
  background: -webkit-gradient(radial, center center, 0, center center, 770, from(#FFFFFF), to(#FFCC66));
}

#contenedor {
  width: 922px;
  margin: 0px auto;
  padding: 0px;
  border: 1px solid #dfdfdf;
  background: #FFF8DC;
  color: #DEB887;
  font: 1.0em/150% 'arial', sans-serif;
  }
  #cabecera {
  float: left;
  width: 100%;
  height: 95px;
  margin: 0px;
  padding: 0px;
  background: #FFEBCD;
  }
#cabecera #titulo {
  margin: 20px 0px 0px 30px;
  padding: 0px;
  color: #DEB887;
  font: bold 2.5em 'arial black', sans-serif;
  text-align: left;
  }
#cabecera div#descripcion {
  margin: 5px 0px 0px 30px;
  padding: 0px;
  color: #DEB887;
  font-size: 1.2em;
  text-align: left;
  }

#navegacion {
  float: left;
  width: 93%;
  margin: 0px;
  padding: 10px 2% 0px 5%;
  background: #FFDEAD;
  }
#contenido {
  float: left;
  width: 450px;
  margin: 20px 0px 0px;
  padding: 0px;
  background: #FFEBCD;
  font-size: 1.0em;
  text-align: left;
  }
#contenido p {
  margin: 15px 25px;
  padding: 0px;
  }
#contenido h3 {
  margin: 20px 25px 10px;
  font: bold 1.0em 'arial', sans-serif;
  text-align: left;
  }

.lateral {
  width: 200px;
  float: left;
  margin: 20px 5px 10px 0px;
  padding: 0px 0px 0px 20px;
  background: #F5DEB3;
  font-size: 1.0em;
  text-align: left;
  }
#pie {
  clear:both;
  width: 100%;
  height: 35px;
  margin: 0px;
  padding: 20px 0px 0px;
  background: #FFDEAD;
  font-size: 0.8em;
  text-align: right;
  }
  </pre>
<p>En la definición de este estilo CSS podemos identificar los puntos claves para trabajar con el resto. Los elementos background, color y border, son los responsables de adaptar los colores al fondo, letra y borde de cada div, estos serán los elementos que cambiaremos para agregar la particularidad de cada etapa del día.</p>
<p><strong>Estilo CSS para la tarde:</strong></p>
<pre class="brush: css; title: ; notranslate">
 * {
  margin: 0;
  padding: 0;
  }
body {
  height: 100%;
  background: #FF8C00;
  font-size: 14px;
  background: -moz-radial-gradient(center 45deg, circle closest-corner, #D2B48C 0%, #FF8C00 100%);
  background: -webkit-gradient(radial, center center, 0, center center, 770, from(#D2B48C), to(#FF8C00));
}
#contenedor {
  width: 922px;
  margin: 0px auto;
  padding: 0px;
  border: 1px solid #FFAD04;
  background: #FFCC66;
  color: #FF8C00;
  font: 1.0em/150% 'arial', sans-serif;
  }
#cabecera {
  float: left;
  width: 100%;
  height: 95px;
  margin: 0px;
  padding: 0px;
  background: #F0A300;
  }
#cabecera #titulo {
  margin: 20px 0px 0px 30px;
  padding: 0px;
  color: #FFDB91;
  font: bold 2.5em 'arial black', sans-serif;
  text-align: left;
  }
#cabecera div#descripcion {
  margin: 5px 0px 0px 30px;
  padding: 0px;
  color: #FFDB91;
  font-size: 1.2em;
  text-align: left;
  }

#navegacion {
  float: left;
  width: 93%;
  margin: 0px;
  padding: 10px 2% 0px 5%;
  background: #FFAD04;
  }
#contenido {
  float: left;
  width: 450px;
  margin: 20px 0px 0px;
  padding: 0px;
  background: #FFDB91;
  font-size: 1.0em;
  text-align: left;
  }
#contenido p {
  margin: 15px 25px;
  padding: 0px;
  }
#contenido h3 {
  margin: 20px 25px 10px;
  font: bold 1.0em 'arial', sans-serif;
  text-align: left;
  }

.lateral {
  width: 200px;
  float: left;
  margin: 20px 5px 10px 0px;
  padding: 0px 0px 0px 20px;
  background: #FFC753;
  font-size: 1.0em;
  text-align: left;
  }
#pie {
  clear:both;
  width: 100%;
  height: 35px;
  margin: 0px;
  padding: 20px 0px 0px;
  background: #FFAD04;
  font-size: 0.8em;
  text-align: right;
  }
  </pre>
<p><strong>Estilo CSS para la noche:</strong></p>
<pre class="brush: css; title: ; notranslate">
 * {
  margin: 0;
  padding: 0;
  }
body {
  height: 100%;
  background: #dfdfdf;
  font-size: 14px;
  background: -moz-radial-gradient(center 45deg, circle closest-corner, #333333 0%, #000000 100%);
  background: -webkit-gradient(radial, center center, 0, center center, 770, from(#333333), to(#000000));
}
#contenedor {
  width: 922px;
  margin: 0px auto;
  padding: 0px;
  border: 1px solid #000000;
  background: #555555;
  color: #333333;
  font: 1.0em/150% 'arial', sans-serif;
  }
#cabecera {
  float: left;
  width: 100%;
  height: 95px;
  margin: 0px;
  padding: 0px;
  background: #333333;
  }
#cabecera #titulo {
  margin: 20px 0px 0px 30px;
  padding: 0px;
  color: #666666;
  font: bold 2.5em 'arial black', sans-serif;
  text-align: left;
  }
#cabecera div#descripcion {
  margin: 5px 0px 0px 30px;
  padding: 0px;
  color: #666666;
  font-size: 1.2em;
  text-align: left;
  }

#navegacion {
  float: left;
  width: 93%;
  margin: 0px;
  padding: 10px 2% 0px 5%;
  background: #000000;
  }
#contenido {
  float: left;
  width: 450px;
  margin: 20px 0px 0px;
  padding: 0px;
  background: #999999;
  font-size: 1.0em;
  text-align: left;
  }
#contenido p {
  margin: 15px 25px;
  padding: 0px;
  }
#contenido h3 {
  margin: 20px 25px 10px;
  font: bold 1.0em 'arial', sans-serif;
  text-align: left;
  }

.lateral {
  width: 200px;
  float: left;
  margin: 20px 5px 10px 0px;
  padding: 0px 0px 0px 20px;
  background: #666666;
  font-size: 1.0em;
  text-align: left;
  }
#pie {
  clear:both;
  width: 100%;
  height: 35px;
  margin: 0px;
  padding: 20px 0px 0px;
  background: #000000;
  font-size: 0.8em;
  text-align: right;
  }
  </pre>
<p>  Una vez concluidos los estilos CSS, empezaremos a idear un sistema de condicionamiento basado en horas, si definimos que mostraremos un &quot;<a href="http://www.lawebera.es/de0/html-y-css-ejemplos-de-layouts.php" title="ejemplos de layout HTML">layout</a>&quot; distinto cada ocho horas entonces debemos estructurarlo en base a este período.</p>
<p>  JavaScript como la mayoría de los lenguajes de programación, cuenta con un número de funciones y atributos predefinidos que nos ayudan a obtener valores específicos para realizar operaciones con ellos. </p>
<p>  En cuestión de Tiempo, existen funciones como <strong>getTime</strong> y <strong>getHours</strong> que podemos utilizar para obtener los valores necesarios para estructurar el condicionamiento mencionado, con datos directamente extraídos de nuestro cliente.</p>
<p>  Tomando los valores obtenidos como base, podemos iniciar la codificación de condiciones necesarias para desplegar el estilo que diseñamos para ese valor específico, algo como lo siguiente:</p>
<h2>Código JavaScript para cambiar el CSS dinámicamente</h2>
<pre class="brush: jscript; title: ; notranslate">
function obtenerCSS()
{
fechadehoy = new Date();
tiempoactual=fechadehoy.getTime();
fechadehoy.setTime(tiempoactual);
horaactual = fechadehoy.getHours(); 

if (horaactual &gt; 20)
colores = &quot;noche.css&quot;;
else if (horaactual &gt; 12)
colores  = &quot;tarde.css&quot;;
else if (horaactual &gt; 4)
colores  = &quot;manana.css&quot;;
else if (horaactual &gt; 1)
colores  = &quot;noche.css&quot;;
else
colores  = &quot;tarde.css&quot;; 

var css = '&lt;';  css+='link rel=&quot;stylesheet&quot; href=&quot;' + colores  + '&quot; \/';  css+='&gt;'; 

document.write(css);
}
</pre>
<p>Básicamente lo que realizamos es obtener el tiempo en base a la fecha actual y extraerle la hora para poder utilizar el valor en las condiciones que determinan que combinación de colores utilizar. Una vez definida la combinación formamos la etiqueta &quot;link&quot; para agregar el css y lo escribimos en el documento.</p>
<p>  Dicho código lo guardamos en un archivo con extensión .js, el cual agregaremos en nuestro código HTML principal, para mandar llamar a dicha función, esto lo haremos dentro del campo <head> de la siguiente manera:</head></p>
<pre class="brush: jscript; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot;&gt;obtenerCSS();&lt;/script&gt;
</pre>
<p>  Hay que recordar que este código funcionará en base al reloj de la computadora del usuario por lo que funcionará correctamente si este se encuentra bien ajustado; es decir, si el usuario por alguna razón tiene su reloj adelantado o atrasado recibirá un estilo que no corresponde a la verdadera etapa del día.</p>
<p>  A pesar de este problema, por razones de personalización es preferente usar el tiempo obtenido del lado cliente en vez del servidor, para que el usuario reciba el CSS correspondiente a la hora actual de su ciudad.</p>
<p>  El utilizar estilos de CSS dinámicos se puede llevar a un nivel más avanzado, utilizar aplicaciones externas y web services para obtener información relevante y utilizarla para llevar a cabo cambios de estilo, en el siguiente artículo de esta serie veremos como poder utilizar esta clase de información.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lawebera.es/como-hacer/ejemplos-css/cambiar-estilo-css-web-dinamicamente-iv.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Expansión de una imagen de fondo con CSS</title>
		<link>http://www.lawebera.es/como-hacer/ejemplos-css/expandir-imagen-fondo-css.php</link>
		<comments>http://www.lawebera.es/como-hacer/ejemplos-css/expandir-imagen-fondo-css.php#comments</comments>
		<pubDate>Wed, 29 Jun 2011 06:13:15 +0000</pubDate>
		<dc:creator>Daniel Ernesto Navarro Herrera</dc:creator>
				<category><![CDATA[Ejemplos CSS]]></category>

		<guid isPermaLink="false">http://www.lawebera.es/?p=3476</guid>
		<description><![CDATA[En este artículo explicamos dos métodos CSS distintos para expandir la imagen de fondo y tome el tamaño de la ventana del navegador.]]></description>
			<content:encoded><![CDATA[<p>Muchas son las ocasiones en las que se nos presenta la necesidad de utilizar una <strong>imagen de fondo para nuestro sitio</strong> que se encuentre en estado expandido, y de tal manera abarque toda la ventana del navegador, sea cual sea su medidas. El común uso del escritorio como entorno de trabajo y su facilidad de adaptar una <a title="Imágenes en sitios web" href="http://www.lawebera.es/comunidad/articulos/diseno-web/empleo-imagenes-sitio-web.php">imagen</a> al tamaño de la pantalla, hace que nos sea muy familiar el uso de imágenes expandidas de fondo y aunque para adaptarlas en un sitio web no resulte tan sencillo como pueda parecer, el uso de técnicas como las siguientes nos pueden facilitar el trabajo.</p>
<p>Antes de la incorporación de las <a title="Especificidad en las hojas de estilo" href="http://www.lawebera.es/como-hacer/ejemplos-css/especificidad-hojas-de-estilo-css.php">hojas de estilo</a> a nuestros desarrollos, era bastante complicado lograr esta adaptación de imágenes, se tenía que recurrir a varios trucos para lograr el efecto deseado, e incluso se tenía que personalizar de navegador en navegador, teniendo que recurrir muchas veces al uso de JavaScript.</p>
<p>En la actualidad CSS, y sobre todo CSS3, nos han extendido la mano para llevarnos por un camino de simplicidad y estandarización al realizar esta clase de funciones, permitiéndonos utilizar un mismo código para cada navegador obteniendo resultados exactos o muy similares, con las claras excepciones de los navegadores antiguos que no soportan la tecnología.</p>
<p>Desgraciadamente, debido a estas excepciones mencionadas, CSS3 sigue siendo un tema tabú para muchos desarrolladores, temiendo que usuarios que tengan una versión instalada de Internet Explorer que sea anterior a la 9, no puedan ver correctamente el sitio. Es por esto, que en consideración a los gustos de cada programador, hemos agregado dos métodos distintos para lograr el mismo resultado, explicando en que navegadores funcionará cada uno de ellos.</p>
<p>El objetivo es sencillo, queremos lograr que la imagen de fondo del sitio cubra toda la ventana del navegador, en todo momento, sin que existan espacios en blanco y logrando que la imagen este correctamente escalada, respete su proporción de altura y anchura, no genere barras de desplazamiento y que se encuentre centrada, todo esto utilizando código sencillo sin recurrir a herramientas elegantes, y tratando de que sea visible en la mayoría de los navegadores.</p>
<h2>Método con CSS3</h2>
<p>La maravilla del uso de <a title="Fondos con gradientes CSS3" href="http://www.lawebera.es/como-hacer/ejemplos-css/fondos-con-gradientes-css3.php">CSS3</a> es que no solo nos convierte en desarrolladores progresivos y vanguardistas, cosa de la que muchos presumen, si no que nos hace ser más pragmáticos y resolver problemas de manera mucho más sencilla.</p>
<p>Gracias al uso de la propiedad <a title="Novedades CSS3" href="http://www.lawebera.es/comunidad/articulos/diseno-web/css/novedades-css3.php">&#8220;background-size&#8221;</a>, el efecto de fondo extendido puede hacerse posible utilizando exclusivamente CSS. Para definirlo, utilizaremos el elemento &#8220;html&#8221; y dentro de su sentencia de estilo definiremos las propiedades para el ajuste del tamaño de la imagen:</p>
<pre class="brush: css; title: ; notranslate">
html {
        background: url(imagenes/fondo.png) no-repeat center center fixed;
        background-size: cover;
        -moz-background-size: cover;
        -webkit-background-size: cover;
        -o-background-size: cover;
}
</pre>
<p>En dicha sentencia, con la propiedad <strong>&#8220;background&#8221;</strong> establecemos un fondo fijo que llevara la imagen cuyo nombre es &#8220;fondo.png&#8221;, dicha imagen es centrada y arreglada para que <a title="Fondos con repetición" href="http://www.lawebera.es/maquetacion-web/maquetacion-paginas-web-repeticion-posicion-imagen-fondo.php">no sea repetida</a>. Finalmente mediante la propiedad &#8220;background-size&#8221;, ya mencionada, ajustamos el tamaño para que cubra la ventana del navegador.</p>
<p>Como se puede observar se utilizaron 3 variaciones de la propiedad, esto es para que la sentencia pueda funcionar en tres distintos navegadores, &#8220;moz&#8221; para firefox y los derivados del proyecto Mozilla, &#8220;webkit&#8221; para safari y chrome, y finalmente &#8220;o&#8221; para Opera.</p>
<p>Esta medida es únicamente de prevención, y con ello nuestro efecto se podrá observar perfectamente en cualquier navegador Firefox que sea igual o superior a la version 3.6, en Safari 3 o superior, Opera 9.5 en adelante, Google Chrome y en la más reciente versión de Internet Explorer, la número 9.</p>
<h2>Método con CSS básico</h2>
<p>En caso de que CSS3 te resulte complicado, o simplemente quieras tener un mayor rango de navegadores a abarcar podemos utilizar este método que utiliza únicamente <a title="Ejemplos CSS" href="http://www.lawebera.es/como-hacer/ejemplos-css">CSS básico</a>. Si bien es un poco más de código por programar, resulta más digerible para las versiones antiguas de navegadores, incluidos los famosos <a title="Hacks CSS para IE7" href="http://www.lawebera.es/comunidad/articulos/diseno-web/css/hack-css-para-internet-explorer-7.php">Internet Explorer 6 y 7</a>.</p>
<p>En este método utilizamos el elemento <strong>&#8220;img&#8221;</strong>, al cual le establecemos una altura mínima con <strong>&#8220;min-height&#8221;</strong>, lo que permite llenar la ventana del navegador de manera vertical, después establecemos una anchura (<strong>width</strong>) de 100% para realizar el llenado horizontal. De igual manera establecemos una anchura mínima (<strong>min-width</strong>) para que la imagen no se haga más pequeña que su tamaño original.</p>
<p>El truco aquí consiste en verificar si la ventana del navegador es menor que el tamaño verdadero de la imagen, al saberlo podemos utilizar porcentajes y margenes negativos para mantener centrada la imagen sin importar el tamaño de la ventana. Para ello utilizamos una búsqueda de tamaño mediante la sentencia &#8220;@media&#8221;, esto podemos observarlo en el siguiente código:</p>
<pre class="brush: css; title: ; notranslate">
img#imagen_de_fondo {
        /* Rellenamos el fondo */
        min-height: 100%;
        min-width: 800px;

        /* Escalamiento proporcional */
        width: 100%;
        height: auto;

        /* Posicionamiento */
        position: fixed;
        top: 0;
        left: 0;
}

@media screen and (max-width: 800px) { /* Hacemos la búsqueda y si coincide modificamos las propiedades de la imagen */
        img#imagen_de_fondo {
                left: 50%;
                margin-left: -400px;   /* Agregamos un margen negativo que represente el 50% */
        }
}
</pre>
<p>Este método funcionará de manera correcta en cualquier versión de los navegadores <strong>Firefox, Chrome, Opera y Safari</strong>, por su parte también funcionará a la perfección en <strong>Internet Explorer 9</strong>, mientras que en las versiones 7 y 8 puede fallar con imágenes muy pequeñas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lawebera.es/como-hacer/ejemplos-css/expandir-imagen-fondo-css.php/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Columnas múltiples con CSS3: column-count, column-gap, column-width y column-rule</title>
		<link>http://www.lawebera.es/como-hacer/ejemplos-css/columnas-multiples-css3.php</link>
		<comments>http://www.lawebera.es/como-hacer/ejemplos-css/columnas-multiples-css3.php#comments</comments>
		<pubDate>Fri, 13 May 2011 06:19:16 +0000</pubDate>
		<dc:creator>Alejandro Chavez</dc:creator>
				<category><![CDATA[Ejemplos CSS]]></category>

		<guid isPermaLink="false">http://www.lawebera.es/?p=3288</guid>
		<description><![CDATA[Vemos como hacer con CSS3 columnas múltiples, un método muy sencillo de crear una estructura en columnas para tu web.]]></description>
			<content:encoded><![CDATA[<h2>El oscuro pasado de las tablas en la maquetación web</h2>
<p>El uso de tablas para estructurar un sitio resulta únicamente cómodo para quienes se reusan a aprender los <a href="http://www.lawebera.es/comunidad/articulos/diseno-web/css-paso-por-delante.php">nuevos estándares</a> que ofrecen varias y mejores alternativas, el simple hecho de seguir utilizándolas para presentar información que no es propiamente tabular resulta abrumador.</p>
<p>La culpable de todo esto es la maldita costumbre, muchos crecimos como <a href="http://www.lawebera.es/diseno-web-freelance">diseñadores web</a> utilizando las tablas como un elemento omnipresente que tenía cabida en cada parte de nuestros sitios, para casi todo lo que necesitaba presentar información existía una celda o una tabla completa que entraba al rescate.</p>
<p>Con ellas matábamos la <a href="http://www.lawebera.es/de0/accesibilidad.php">accesibilidad</a> y la flexibilidad del sitio pero en aquel entonces no nos importaba, era preferible complicarnos la vida utilizando gifs como separadores dentro de las celdas para que el sitio funcionará y se viera bonito, a adaptarlo para utilizar tecnologías emergentes como el CSS, limitadamente utilizado en aquellos años.</p>
<p>Gracias a nosotros que crecimos con ese estilo y propagamos el código por la red, hoy existen muchos desarrolladores principiantes confundidos que se preguntan ¿Cuándo y cómo debo utilizar tablas?, es fácil detectar que en Internet aún existen sitios que utilizan estos elementos para <a href="http://www.lawebera.es/maquetacion-web">maquetación web</a>, existen ejemplos por la red y métodos de solución que aún recomiendan el uso de tablas incorrectamente, y por otro lado se encuentran con la nueva era de la estandarización donde van surgiendo cada vez más nuevos estándares y mejores maneras de estructurar el código.</p>
<h2>La nueva era, divs para crear estructuras</h2>
<p>Si tú haz llegado hasta aquí con esa encrucijada de utilizarlas o no, te tengo una respuesta muy sencilla, utiliza las tablas únicamente para presentar datos que lo ameriten, ya sea un conjunto de listas compuestas por varios datos, información estructurada de manera tabular, y aquella que es obtenida mediante una consulta a una base de datos. Por nada del mundo las utilices para maquetación, para crear headers, o footers, si lo que deseas es <a href="http://www.lawebera.es/manual-diseno-web/estructura-de-una-pagina-web-diseno-de-plantilla.php">estructurar las partes de tu sitio web</a> debes utilizar las capas, representadas por la etiqueta “div”, y verás que con ello reduces el tiempo de carga de tu sitio, así como muchas otras ventajas relacionadas tanto con el hosting, semántica y con el ahorro de tiempo tanto para ti como para el usuario.</p>
<p>Una vez definido esto, reconoceremos a las capas “div” como las auténticas salvadoras que han venido a aclarar el panorama de la estructuración de nuestros sitios, pero ¿Podemos manejarlas de una mejor manera para optimizar aún más dicha estructura?, por supuesto para ello existen lenguajes como <a href="http://www.lawebera.es/category/como-hacer/ejemplos-css">CSS3</a> que nos vienen a ambientar aún más la fiesta.</p>
<h2>CSS3 o cómo flexibilizar nuestras maquetas</h2>
<p>Desde 2005, año en que vio la luz por primera vez el proyecto de CSS3, se empezaron a desarrollar especificaciones con distintas funciones y tareas adaptables para la<strong> estructuración de nuestro sitio web,</strong> estilos aplicables a nuestras capas para hacer de estás más flexibles y adaptables al medio donde se desplegará la información.</p>
<p>Una de estás funcionalidades son las <strong>columnas múltiples</strong>, las cuales son generadas única y exclusivamente por estilos, sin necesidad de agregar separadores ni mucho menos celdas para desplegar la información en forma de tabloide. </p>
<p>En la actualidad son poco conocidas y raramente utilizadas, todo esto producido por la falta de soporte en Internet Explorer, ya que sólo son admitidas y desplegadas en los navegadores basados en WebKit y en Mozilla, por lo que si tienen pensado desarrollar un proyecto para todos los navegadores deben considerar crear una versión alterna para aquellos que usen IE8 o inferior.</p>
<p>Básicamente lo que produciremos al agregar esta propiedad a los elementos de nuestro sitio, es convertir una línea continua o un párrafo grande en varias columnas, tomando como base los atributos “<strong>column-count</strong>”, “<strong>column-gap</strong>”, “<strong>column-rule</strong>” y “<strong>column width</strong>” para darle la forma deseada.</p>
<p>Lo primero que debemos hacer es crear nuestra estructura del sitio de la siguiente manera:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
	&lt;meta charset=&quot;utf-8&quot;&gt;
	&lt;title&gt;Columnas Múltiples con CSS3&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt; 

&lt;div id=&quot;contenedor&quot;&gt;
	&lt;h1&gt;Diario &quot;El Amarillista&quot;&lt;/h1&gt;
	&lt;img src=&quot;http://www.dirjournal.com/info/images/roswell-crash.jpg&quot; alt=&quot;Cae Nave en Kuala Lumpur&quot; /&gt;
	&lt;h2&gt;Cae nave espacial en Kuala Lumpur&lt;/h2&gt;
	&lt;p&gt;
	Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque a lectus nec felis bibendum bibendum quis nec dolor. Etiam dignissim elit quis leo posuere et viverra mauris tristique. Vestibulum lacinia sapien a purus bibendum iaculis nec vitae sapien. Quisque hendrerit, leo quis pellentesque scelerisque, ipsum ligula luctus purus, ut viverra dolor mi et orci. Donec feugiat cursus consectetur. Nunc scelerisque, nisl sed feugiat faucibus, sem augue dapibus erat, congue lobortis diam dolor ac ligula. Suspendisse fringilla lacus ut mi accumsan quis commodo sapien aliquam. Donec sapien nulla, placerat quis ullamcorper sed, rhoncus non lectus. Ut a dui in magna lacinia mattis ut et leo. Nullam malesuada pellentesque est et dictum. Vivamus ac erat vel augue facilisis rhoncus. Cras quis augue ut purus ullamcorper mollis.
	&lt;/p&gt;
&lt;/div&gt; 

&lt;/body&gt;
&lt;/html&gt;
  </pre>
<p>Agregamos un gran párrafo con el famoso “Lorem ipsum” para ver como funciona la propiedad, dicho párrafo está dentro de una capa llamada “contenedor” y en base a esto aplicaremos el siguiente estilo a la relación:</p>
<pre class="brush: css; title: ; notranslate">
#contenedor p {
  -webkit-column-count: 3;
  -webkit-column-gap: 10px;
  -moz-column-count: 3;
  -moz-column-gap: 10px;
  column-count: 3;
  column-gap: 10px;
  }
  </pre>
<p>Como se puede apreciar escribimos las mismas dos líneas de atributos en tres ocasiones pero con diferentes prefijos, esto lo hacemos para que la función sea compatible con la mayoría de los navegadores, el prefijo “webkit” es para Safari y Chrome, “moz” para Mozilla y los atributos sin prefijo son para aquellos navegadores que así lo requieran.</p>
<p>El<strong> atributo “column-count”</strong> sirve para especificar en cuantas columnas queremos que se despliegue la información, en nuestro caso son tres. Por su parte el <strong>atributo “column-gap”</strong> sirve para establecer el espacio que existirá como separador entre cada columna, a lo que nosotros le damos el valor de 10 píxeles.</p>
<p>Si deseamos agregar más control sobre el funcionamiento de las columnas podemos utilizar otros dos atributos, <strong>“column-width”</strong> que nos permite determinar cuanto medirá cada columna y <strong>“column-rule”</strong> que permite agregar especificaciones a las divisiones entre cada columna, comúnmente usado para establecer un borde (column-rule: solid #000000 1px;).</p>
<p>Podemos detallar más el estilo de los diferentes elementos del sitio agregando más gama de colores y creando efectos como el difuminado sobre el encabezado; todo lo que creamos necesario para que nuestro sitio luzca de la mejor manera. A nuestra página de ejemplo he decidido agregar lo siguiente:</p>
<pre class="brush: css; title: ; notranslate">
body{
  background: #282828;
  }
  #contenedor {
  width: 500px;
  margin: auto;
  background: #F0F0F0;
  padding: 10px;
  font: 12px helvetica, arial, sans-serif;
  }

  img {
  width: 100%;
  }
  h1{
  color: #303030;
  font-size: 48px;
  text-shadow: 2px 2px 5px #505050;
  }
  #contenedor p {
  -webkit-column-count: 3;
  -webkit-column-gap: 10px;

  -moz-column-count: 3;
  -moz-column-gap: 10px;

  column-count: 3;
  column-gap: 10px;
  }
  </pre>
<p>Dicho estilo deberá añadirse a nuestro código con alguno de los dos métodos conocidos, ya sea escribiéndolo directamente dentro de las etiquetas “head” o agregándolo como un archivo externo con extensión “.css”. Cualquiera que sea la manera de hacerlo obtendremos como resultado una página en forma de tabloide en colores grises lista para ser publicada.</p>
<p>Como pudimos observar es un método bastante sencillo, fácil de aplicar y sobre todo de aprender, no hay necesidad de complicarnos la vida con tablas, ni de utilizar métodos aún más arcaicos como el salto de línea ni los gifs transparentes para separar, con esto nuestro código quedará limpio y claro.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lawebera.es/como-hacer/ejemplos-css/columnas-multiples-css3.php/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 8/21 queries in 0.016 seconds using disk: basic

Served from: www.lawebera.es @ 2012-02-08 09:27:12 -->
