txapelgorri - Software Libre
El blog de txapelgorri


Logo sinanimodelucro

Este weblog va sobre...

txapelgorri - Software Libre, es un weblog que trata de mi experiencia con Debian GNU/Linux, Ubuntu GNU/Linux, el Software Libre (sí, con mayúsculas) y la cara social del movimiento GNU en general, o al menos lo que representa para mi. Vas a poder encontrar material, reflexiones, ideas y un montón de buenas intenciones.

Contacto

Este blog forma parte de un sitio web mas amplio. La página inicial esta:http://sinanimodelucro.net
En este correo electrónico puedes localizarme para hacerme llegar aquello que consideres digno de interés.


Historias del weblog

Suscríbete

Suscripción a este weblog, gracias a las maravillas de RSS.


Sabores

Existe mas de una manera de ver este weblog; pruébalos.


Enlaces

Estos son algunos de los enlaces que mas me gustan:


Logo Blosxom

22 Oct 2007

Cómo crear transparencias opacas con CSS (y añadirles efectos con Javascript)


Recientemente he tenido que hacer un pequeño proyecto con XHTML y CSS (y algo de Javascript), en el que me he topado de bruces con varios problemas, uno de los cuales era este: "Un menú horizontal de tres fotos en miniatura que estén oscurecidas por defecto y que al pasar sobre ellas se aclaren".

Evidentemente Flash no voy a utilizar para esto, por tratarse de una tecnología privativa y no accesible. Como muchos sabréis existen una serie de propiedades en CSS para cambiar la opacidad de una imagen, básicamente para los navegadores mas utilizados. Con "-moz-opacity:0.7", siendo 0.7 un número decimal entre 0 y 1 en notación anglosajona para navegadores Mozilla y derivados, y/o "filter:alpha(opacity=40)", siendo 40 un número entero entre 0 y 100, para IE de Microsoft, creamos una trasparencia "aclarando" la capa que estemos editando, pero ¿cómo oscurecemos una capa?.

Burdos intentos al estilo "-moz-opacity:1.5" no sirven de nada, y no dejan de ser eso, "burdos".
Tras darle un par de vueltas se me ocurre lo siguiente:
Para el XHTML
div class='contenedor'
p class='color' /p
/div

Para el CSS
div.contenedor {background: url('imgs/prueba.png') no-repeat;} p.color {margin:0; background-color:\#000; -moz-opacity:0.3; height:50px; width: 30px;} Este trozo de código genera un DIV con una imagen como fondo de la capa y un párrafo en su interior con la altura y anchura de la imagen de fondo del DIV, con una capa negra pero con opacidad 0.3. ¡Objetivo conseguido! Para hacer un menú horizontal, basta con añadir "float" a las capas "contenedor" y luego recolocar todo eso.

¿Qué pasa si queremos hacer que al pasar con el ratón por encima de la imagen esta se aclare?. Pues con un poquito de Javascript podemos hacerlo sin ningún problema, con los eventos "onmouseover" y "onmouseout" y cambiando la propiedad "-moz-opacity" desde una nueva clase en CSS. Pero eso se lo dejo al lector como prueba.
Salud.


[] enlace permanente