You are on page 1of 4

Efecto de sombra con CSS

Veremos varios mtodos para realizar un efecto de sombreado utilizando hojas de estilo en cascada.

He encontrado 3 mtodos distintos para hacer un efecto de sombra. Son los siguientes, que veremos comentados en este artculo: 1. Mtodo background-color 2. Mtodo canal alpha 3. Mtodo estirar imagen Mtodo Background color Este mtodo es bastante simple. Se basa en definir tres cajas trasladadas, con diversos colores de fondo. Los elementos con las clases "blur" y "shadow" se definirn con tonos grisceos para crear el efecto de sombreado. Cdigo HTML:
<div class="blur"> <div class="shadow"> <div class="content">bla bla</div> </div> </div>

Cdigo CSS:
.blur{ background-color: #ccc; /*shadow color*/ color: inherit; margin-left: 4px; margin-top: 4px; } .shadow, .content{ position: relative; bottom: 2px; right: 2px; } .shadow{ background-color: #666; /*shadow color*/ color: inherit; } .content{ background-color: #fff; /*background color of content*/ color: #000; /*text color of content*/ border: 1px solid #000; /*border color*/ padding: .5em 2ex; }

La nica desventaja de este mtodo es que usa colores definidos para las sombras y ello puede dar lugar a que no se pueda mezclar este efecto con otros elementos. Con un fondo blanco, las sombras en grises quedan bien, pero pongamos el caso de que el fondo de la pgina fuera de color rojo. Entonces el efecto de sombreado debera realizarse con tonos rojos oscuros. Podemos ver el ejemplo en funcionamiento en una pgina aparte.

Mtodo canal alpha Este mtodo es muy parecido al anterior, pero soluciona el problema de mezclarse con otros elementos. Es indiferente cual sea el fondo de la pgina donde se va a mostrar el elemento sombreado, incluso si el sombreado se realiza en la misma pgina sobre distintos fondos. Utiliza imgenes de fondo en formato PNG "alpha transparentes", en lugar de colores definidos en la hoja de estilo. El cdigo HTML necesario es el mismo que para el ejemplo anterior, simplemente debes modificar el cdigo CSS, en concreto para las clases "blur" y "shadow". Mostramos el cdigo CSS para este ejemplo.
<style type=text/css> .blur{ background: transparent url(shadow1.png); /*ruta para el 80%-transparente 1x1 pixel coloreado de negro */ color: inherit; margin-left: 4px; margin-top: 4px; } .shadow{ background: transparent url(shadow2.png); /*ruta para el 60%-transparent 1x1pixel coloreado de negro */ color: inherit; } .shadow, .content{ position: relative; bottom: 2px; right: 2px; } .content{ background-color: #fff; /*background color of content*/ color: #000; /*text color of content*/ border: 1px solid #000; /*border color*/ padding: .5em 2ex; } </style>

Para probar la ventaja de este tipo de fondo, podemos cambiar el color de fondo de la pgina web y veremos como la sombra tambin cambia de color. Las dos imgenes, de 1x1 pixel medio transparentes que se necesitan para componer este ejemplo estn aqu: Pulsar para descargar imagenes-transparentes.zip Podemos ver el ejemplo en funcionamiento en una pgina aparte . Mtodo estirar imagen Opino que los dos mtodos anteriores no son demasiado buenos, debido a que la sombra no parece muy natural. Dicho de otro modo, no resulta un efecto suficientemente realista. De modo que abro mi editor grfico, creo una caja rectangular con efecto de sombra y lo exporto a una imagen. Posiblemente pueda utilizar esa imagen para crear el efecto de sombra. El cdigo HTML experimental

<div class="shade"> <img src="shadow.png" width="0" height="0" alt="" class="shade" /> bla bla</div>

El cdigo CSS experimental


img.shade{ width: 37ex; height: 9em; /* specify the dimension of the image */ display: block; position: absolute; z-index: -1; /* force the image to show below the content */ right: -3ex; bottom: -1em; } div.shade{ width: 30ex; height: 6em; /* specify the dimension of the content, slightly smaller than the image */ position: relative; z-index: 1; /* force the content to show above the image */ background-color: #fff; border: 1px solid #000; padding: 1em 2ex; margin-right: 6ex; margin-bottom: 3em; }

Tenemos tres desventajas en este mtodo 1. Como la imagen se estira, puede que no quede muy bonito. 2. En Mozilla Firefox la imagen a veces desaparece (se puede recuperar refrescando o desplazando la pgina). En Internet Explorer no se muestra bien el efecto, por lo menos en la versin 6. 3. El contenido no puede flotar (no podemos utilizar el atributo float) Podemos obtener la imagen para hacer el ejemplo. Podemos ver este ejemplo en marcha en una pgina aparte. Un momento. Cmo haramos texto con sombreado? Si utilizas un navegador basado en Gecko, podras visualizar otro efecto interesante para realizar sombreado de textos sin utilizar imgenes y redimensionable simplemente cambiando el tamao del texto o las fuentes que usa el navegador (con el men view>text size > increase / Decrease). El cdigo HTML sera el siguiente:
<span id="text">Texto sombreado</span>

El cdigo CSS
#text{ font-size: 3em; /* optional. just to increase the font size. */ display: block; line-height: 1em; color: #666; /* shadow color */ background-color: transparent; white-space: nowrap; /* wrapping breaks the effect */

} #text:before, #text:after{ content: "Texto sombreado"; /* El mismo texto que queramos mostrar sombreado */ display: block; } #text:before{ margin-bottom: -1.05em; margin-left: 0.1ex; color: #ccc; /* shadow color */ background-color: transparent; } #text:after{ margin-top: -1.05em; margin-left: -0.1ex; color: #fff; /* text color */ background-color: transparent; }

Este efecto puede ser til por ahora. Sin embargo, las especificaciones de CSS2 incluyen una propiedad CSS llamada text-shadow, que sirve para definir un efecto de sombra a un texto. Sin embargo, la mayora de los navegadores todava no soportan esta propiedad. Interesantes recursos sobre este tema: Simple CSS drop shadows http://www.saila.com/usage/shadow/ A List Apart: CSS Drop Shadows http://alistapart.com/articles/cssdropshadows/ de Sergio Villarreal (revisin del artculo Easy CSS drop shadows http://1976design.com/blog/archive/2003/11/14/shadows/ de Dunstan Orchard) CSS Drop Shadows II: Fuzzy Shadows http://alistapart.com/articles/cssdrop2/ by Sergio Villarreal Este artculo es una traduccin del ingls. El original est en: http://www.phoenity.com/newtedge/drop_shadow/

You might also like