¿Opacidad del fondo de div sin afectar el elemento contenido en IE 8?

Quiero establecer la opacidad del fondo de div sin afectar el elemento contenido en IE 8. Tengo una solución cualquiera y no respondo para establecer 1 x 1 imagen .png y establecer la opacidad de esa imagen porque estoy usando opacidad dinámica y el administrador de color puede cambiar ese

Lo usé pero no funcionaba en IE 8

#alpha { filter: alpha(opacity=30); -moz-opacity: 0.3; -khtml-opacity: 0.3; opacity: 0.3; } 

y

 rgba(0,0,0,0.3) 

además.

El estilo de opacity afecta al elemento completo y a todo lo que contiene. La respuesta correcta a esto es utilizar un color de fondo rgba en su lugar.

El CSS es bastante simple:

 .myelement { background: rgba(200, 54, 54, 0.5); } 

… donde los tres primeros números son los valores rojo, verde y azul para el color de fondo, y el cuarto es el valor del canal “alfa”, que funciona de la misma manera que el valor de opacity .

Consulte esta página para obtener más información: http://css-tricks.com/rgba-browser-support/

El lado negativo es que esto no funciona en IE8 o inferior. La página que he vinculado arriba también enumera algunos otros navegadores en los que no funciona, pero a esta altura ya son muy antiguos; todos los navegadores en uso actual excepto IE6 / 7/8 funcionarán con colores rgba.

La buena noticia es que puedes 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 las versiones anteriores de IE, incluidos los colores de fondo de rgba.

Para usar CSS3Pie para fondos, debe agregar una -pie-background específica de -pie-background a su CSS, así como el estilo de behavior PIE, para que su hoja de estilo termine 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 han mencionado otros, puede usar el estilo de filter de IE con la palabra clave de gradient . La solución CSS3Pie realmente utiliza esta misma técnica detrás de escena, pero elimina la necesidad de que te metas directamente con los filtros de IE, por lo que tus hojas de estilo son mucho más limpias. (También agrega un montón de otras características agradables también, pero eso no es relevante para esta discusión)

es simple, solo tienes que hacer es dar

 background: rgba(0,0,0,0.3) 

y para IE utiliza este filtro

 background: transparent; zoom: 1; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4C000000,endColorstr=#4C000000); /* IE 6 & 7 */ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#4C000000,endColorstr=#4C000000)"; /* IE8 */ 

puedes generar tu filtro de rgba desde aquí http://kimili.com/journal/rgba-hsla-css-generator-for-internet-explorer/

opacity en el elemento padre lo establece para todo el árbol sub DOM

Realmente no se puede establecer la opacidad para cierto elemento que tampoco se aplicaría en cascada a los descendientes. Así no es como funciona la opacity CSS, me temo.

Lo que puede hacer es tener dos elementos hermanos en un contenedor y establecer el posicionamiento transparente:

 

luego debe establecer la position: absolute/relative transparente position: absolute/relative para que su hermano de contenido se represente sobre ella.

rgba puede hacer transparencia de fondo de fondos de color

rgba configuración del color rgba color de background-color del elemento funcionará, por supuesto, pero limitará el uso del color como fondo. No hay imágenes, me temo Por supuesto, puede usar degradados de CSS3 si proporciona colores de parada de degradado en rgba . Eso también funciona

Pero tenga en cuenta que rgba puede no ser compatible con los navegadores necesarios.

Funcionalidad de diálogo modal libre de alertas

Pero si buscas algo así como enmascarar toda la página, esto generalmente se hace agregando un div separado con este conjunto de estilos:

 position: fixed; width: 100%; height: 100%; z-index: 1000; /* some high enough value so it will render on top */ opacity: .5; filter: alpha(opacity=50); 

Luego, cuando muestre el contenido, debería tener un z-index más alto. Pero estos dos elementos no están relacionados en términos de hermanos ni nada. Simplemente se muestran como deberían ser. Uno sobre el otro.

Tal vez haya una respuesta más simple, intente agregar cualquier color de fondo que desee al código, como color de fondo: #fff;

 #alpha { background-color: #fff; opacity: 0.8; filter: alpha(opacity=80); } 

Intente configurar el índice Z más alto en el elemento contenido.

¿Qué pasa con este enfoque?

      
Text

Afecta a las divisiones secundarias enteras cuando utiliza la función de opacidad con posiciones distintas de absolutas. Entonces, otra forma de lograrlo es no poner divs dentro de cada uno y luego usar la posición absoluta para los divs. No use ningún color de fondo para la div superior.