No quiero heredar la opacidad del niño del padre en CSS.
Tengo un div que es el padre, y tengo otro div dentro del primer div que es el hijo.
Quiero establecer la propiedad de opacidad en el div padre, pero no quiero que el div hijo herede la propiedad de opacidad.
¿Cómo puedo hacer eso?
opacity
es un poco comodisplay: none
en este sentido.Respuestas:
En lugar de usar opacidad, establezca un color de fondo con rgba, donde 'a' es el nivel de transparencia.
Entonces en lugar de:
utilizar
fuente
.png
:)La opacidad no se hereda realmente en CSS. Es una transformación de grupo posterior a la representación. En otras palabras, si a
<div>
tiene un conjunto de opacidad, renderiza el div y todos sus elementos secundarios en un búfer temporal, y luego compone todo ese búfer en la página con la configuración de opacidad dada.Lo que desea hacer exactamente aquí depende de la representación exacta que está buscando, lo que no está claro en la pregunta.
fuente
opacity: .7;
dediv#container
hace que cada elemento hijo - deul
/li
aimg
ap
- también tienen la misma opacidad. Ciertamente se hereda.opacity: 0.7
en todos los descendientes para ver cómo se vería la herencia. Como dije, lo que sucede es que la opacidad se aplica a todo el grupo "elemento y todos sus descendientes" como una unidad en lugar de heredar.Como otros han mencionado en este y otros hilos similares, la mejor manera de evitar este problema es usar RGBA / HSLA o usar un PNG transparente.
Pero, si desea una solución ridícula, similar a la vinculada en otra respuesta en este hilo (que también es mi sitio web), aquí hay un script nuevo que escribí que soluciona este problema automáticamente, llamado thatsNotYoChild.js:
http://www.impressivewebs.com/fixing-parent-child-opacity/
Básicamente, usa JavaScript para eliminar todos los elementos secundarios del elemento primario principal, luego vuelve a colocar los elementos secundarios de nuevo donde deberían estar sin ser realmente elementos secundarios de ese elemento.
Para mí, esto debería ser un último recurso, pero pensé que sería divertido escribir algo que hiciera esto, si alguien quiere hacer esto.
fuente
Un pequeño truco si su padre es transparente y desea que su hijo sea el mismo, pero definido exclusivamente (por ejemplo, para sobrescribir los estilos de agente de usuario de un menú desplegable de selección):
fuente
La opacidad del elemento hijo se hereda del elemento padre.
Pero podemos usar la propiedad de posición css para lograr nuestro logro.
El contenedor de texto div se puede colocar fuera del padre primario pero con un posicionamiento absoluto que proyecta el efecto deseado.
Requisito ideal ------------------ >>>>>>>>>>>>
HTML
CSS
Salida:--
el texto no es visible porque hereda la opacidad del div padre.
Solución ------------------- >>>>>>
HTML
CSS
Salida:
el texto es visible con el mismo color que el fondo porque el div no está en el div transparente
fuente
La pregunta no definió si el fondo es un color o una imagen, pero dado que @Blowski ya ha respondido para fondos de color, hay un truco para las imágenes a continuación:
De esta manera, puede manipular el color de su opacidad e incluso agregar buenos efectos de degradado.
fuente
Parece que los
display: block
elementos no heredan la opacidad de losdisplay: inline
padres.Ejemplo de codepen
¿Tal vez porque es un marcado no válido y el navegador los está separando en secreto? Porque la fuente no muestra que eso suceda. ¿Me estoy perdiendo de algo?
fuente
Las respuestas anteriores me parecen complicadas, así que escribí esto:
kb-mask-overlay
es su padre (opacidad),pop-up
son sus hijos (sin opacidad). Todo lo que está debajo es el resto de tu sitio.fuente
No existe un enfoque único para todos, pero una cosa que encontré particularmente útil es establecer la opacidad para los hijos directos de un div, excepto el que desea mantener completamente visible. En codigo:
y css:
En caso de que tenga colores / imágenes de fondo en el padre, arregle la opacidad del color con rgba e imagen de fondo aplicando filtros alfa
fuente
Si tiene que usar una imagen como fondo transparente, es posible que pueda evitarla utilizando un pseudo elemento:
html
css
fuente
Mi respuesta no se trata del diseño estático padre-hijo, se trata de animaciones.
Estaba haciendo una demostración de svg hoy, y necesitaba que svg estuviera dentro de div (porque svg se crea con el ancho y la altura del div principal, para animar la ruta), y este div primario debía ser invisible durante la animación de la ruta svg (y luego se suponía que este div era
animate opacity from 0 to 1
la parte más importante). Y debido a que parent div withopacity: 0
estaba ocultando mi svg, me encontré con este hack con lavisibility
opción (child withvisibility: visible
se puede ver dentro de parent withvisibility: hidden
):Y luego, en js, elimina la
.invisible
clase con la función de tiempo de espera, agrega la.opacity-zero
clase, activa el diseño con algo comowhatever.style.top;
y elimina la.opacity-zero
clase.Es mejor consultar esta demostración http://codepen.io/suez/pen/54bbb2f09e8d7680da1af2faa29a0aef?editors=011
fuente
En Mac , puede usar el editor de vista previa para aplicar opacidad a un rectángulo blanco sobre su imagen .png antes de ponerlo en su .css.
1)
Logotipo
de la imagen 2) Crear un rectángulo alrededor de la imagen
Rectángulo alrededor del logotipo
3) Cambiar el color de fondo a un
rectángulo blanco convertido en blanco
4) Ajustar la opacidad del rectángulo
imagen opaca
fuente
Asigne opacidad 1.0 al niño de forma recursiva con:
Ejemplo:
fuente
Para otras personas que intentan hacer que una tabla (o algo) se vea enfocada en una fila usando opacidad. Como dijo @Blowski, use color, no opacidad. Echa un vistazo a este violín: http://jsfiddle.net/2en6o43d/
fuente