PNG transparentes en fondos de CSS válido
Por lo visto IE7 soportará transparencias en los png, pero de momento nos tenemos que apañar con IE6 que no los soporta. Es una lástima no poder usar png con transparencias, ya que los gráficos tienen muchos más colores que los gif y nos permiten hacer diseños mucho más elaborados.
A pesar de todo, hay un filtro de IE que permite usar PNG con transparencias. Buscando encontré este hack, PNG behaviour, que usa el filtro para el fondo de una imagen y bahaviour en el css. Como imagen usa un gif transparente. El problema de este sistema es que solo funciona para imágenes inline, además de necesitar el AddType text/x-component .htc en el httpd.config de tu apache o utilizar el htaccess, para que funcione (esta solución truculenta la encontré aquÃ).
¿Qué se puede hacer para usarlo en el fondo, o propiedad “background” en CSS? El primer sistema que encontré usaba el filtro directamente en el CSS. Es un buen método si no te importa que no valide en CSS, pero como esta es una prioridad para muchos de nosotros la única alternativa es usar javascript.
El siguiente método incluye un javascript que solo lee i.e. al ponerle entre comentarios para ie. También se puede poner crear un css externo para i.e. y comentarlo de la misma manera. Puedes encontrar el javascript aquÃ.
El javascript es relativamente sencillo. También necesitarás de un gif en blanco de 1px. Tendrás que especificar donde se encuentra en el javascript. Y eso es todo lo que hay que hacer. El javascript sustituye cualquier background que tenga un png.
Solo quedan dos problemas. Uno es que si estas usando rollovers css con png no te funcionaran porque el javascript se ejecuta sobre todos los fondos con png. Intenta usar gif en los rollovers si es posible. Lo segundo es que el javascript se carga después del css asi que en i.e veras el png sin transparencia durante un instante mientras se carga.
Seguramente tendré que usar algún detector de version i.e. para que no use el javascript cuando se use IE7.
Tags: css, Desarrollo web, IE6, IE7, javascript, png

