El opacity
estilo afecta a todo el elemento y a todo lo que contiene. La respuesta correcta a esto es usar un color de fondo rgba en su lugar.
El CSS es bastante simple:
.myelement {
background: rgba(200, 54, 54, 0.5);
}
... donde los primeros tres números son los valores rojo, verde y azul para su color de fondo, y el cuarto es el valor del canal 'alfa', que funciona de la misma manera que el opacity
valor.
Consulte esta página para obtener más información: http://css-tricks.com/rgba-browser-support/
La desventaja es que esto no funciona en IE8 o versiones anteriores. La página que vinculé anteriormente también enumera algunos otros navegadores en los que no funciona, pero ya son muy antiguos; todos los navegadores en uso actual excepto IE6 / 7/8 funcionarán con colores rgba.
La buena noticia es que puede obligar a IE a trabajar con esto también, usando un truco llamado CSS3Pie . CSS3Pie agrega una serie de características modernas de CSS3 a versiones anteriores de IE, incluidos los colores de fondo rgba.
Para usar CSS3Pie para fondos, debe agregar una -pie-background
declaración específica a su CSS, así como el behavior
estilo PIE , por lo que su hoja de estilo terminaría luciendo así:
.myelement {
background: rgba(200, 54, 54, 0.5);
-pie-background: rgba(200, 54, 54, 0.5);
behavior: url(PIE.htc);
}
Espero que ayude.
[EDITAR]
Por lo que vale, como otros han mencionado, puede usar el filter
estilo de IE , con la gradient
palabra clave. La solución CSS3Pie en realidad usa esta misma técnica detrás de escena, pero elimina la necesidad de jugar directamente con los filtros de IE, por lo que sus hojas de estilo son mucho más limpias. (también agrega un montón de otras características interesantes, pero eso no es relevante para esta discusión)