Je ne veux pas hériter l'opacité enfant du parent en CSS.
J'ai un div qui est le parent, et j'ai un autre div à l'intérieur du premier div qui est l'enfant.
Je veux définir la propriété d'opacité dans la div parent, mais je ne veux pas que la div enfant hérite de la propriété d'opacity.
Comment puis je faire ça?
opacity
est un peu commedisplay: none
dans ce sens.Réponses:
Au lieu d'utiliser l'opacité, définissez une couleur d'arrière-plan avec rgba, où «a» est le niveau de transparence.
Donc au lieu de:
utilisation
la source
.png
:)L'opacité n'est pas réellement héritée en CSS. C'est une transformation de groupe post-rendu. En d'autres termes, si un
<div>
opacité est définie, vous rendez le div et tous ses enfants dans un tampon temporaire, puis composez l'ensemble de ce tampon dans la page avec le paramètre d'opacité donné.Ce que vous voulez faire exactement ici dépend du rendu exact que vous recherchez, ce qui n'est pas clair à la question.
la source
opacity: .7;
dediv#container
fait chaque élément enfant - deul
/li
àimg
dep
- ont également la même opacité. Il est très certainement hérité.opacity: 0.7
tous les descendants pour voir à quoi ressemblerait l'héritage. Comme je l'ai dit, ce qui se passe à la place, c'est que l'opacité est appliquée à l'ensemble du groupe «élément et à tous ses descendants» en tant qu'unité au lieu d'hériter.Comme d'autres l'ont mentionné dans ce fil et dans d'autres fils similaires, la meilleure façon d'éviter ce problème est d'utiliser RGBA / HSLA ou bien d'utiliser un PNG transparent.
Mais, si vous voulez une solution ridicule, similaire à celle liée dans une autre réponse de ce fil (qui est également mon site Web), voici un tout nouveau script que j'ai écrit qui résout ce problème automatiquement, appelé thatsNotYoChild.js:
http://www.impressivewebs.com/fixing-parent-child-opacity/
Fondamentalement, il utilise JavaScript pour supprimer tous les enfants de la div parent, puis repositionner les éléments enfants à l'endroit où ils devraient être sans être réellement les enfants de cet élément.
Pour moi, cela devrait être un dernier recours, mais j'ai pensé que ce serait amusant d'écrire quelque chose qui a fait ça, si quelqu'un veut le faire.
la source
Une petite astuce si votre parent est transparent et que vous souhaitez que votre enfant soit le même, mais défini exclusivement (par exemple pour écraser les styles d'agent utilisateur d'une liste déroulante sélectionnée):
la source
L'opacité de l'élément enfant est héritée de l'élément parent.
Mais nous pouvons utiliser la propriété css position pour accomplir notre réussite.
Le div de conteneur de texte peut être placé en dehors du div parent mais avec un positionnement absolu projetant l'effet souhaité.
Exigence idéale ------------------ >>>>>>>>>>>>>
HTML
CSS
Production:--
le texte n'est pas visible car il hérite de l'opacité de la div parent.
Solution ------------------- >>>>>>
HTML
CSS
Production :
le texte est visible avec la même couleur que le fond car le div n'est pas dans le div transparent
la source
La question n'a pas défini si l'arrière-plan est une couleur ou une image mais comme @Blowski a déjà répondu pour les arrière-plans colorés, il y a un hack pour les images ci-dessous:
De cette façon, vous pouvez manipuler la couleur de votre opacité et même ajouter de jolis effets de dégradé.
la source
Il semble que les
display: block
éléments n'héritent pas de l'opacité desdisplay: inline
parents.Exemple de Codepen
Peut-être parce que c'est un balisage invalide et que le navigateur les sépare secrètement? Parce que la source ne montre pas que cela se produit. Suis-je en train de manquer quelque chose?
la source
Les réponses ci-dessus semblent compliquées pour moi, j'ai donc écrit ceci:
kb-mask-overlay
c'est votre parent (d'opacité),pop-up
ce sont vos enfants (pas d'opacité). Tout en dessous, c'est le reste de votre site.la source
Il n'y a pas d'approche universelle, mais une chose que j'ai trouvée particulièrement utile est de définir l'opacité pour les enfants directs d'une div, à l'exception de celle que vous souhaitez garder pleinement visible. Dans du code:
et css:
Dans le cas où vous avez des couleurs / images d'arrière-plan sur le parent, vous fixez l'opacité des couleurs avec rgba et l'image d'arrière-plan en appliquant des filtres alpha
la source
Si vous devez utiliser une image comme arrière-plan transparent, vous pourrez peut-être la contourner à l'aide d'un pseudo-élément:
html
css
la source
Ma réponse ne concerne pas la disposition parent-enfant statique, mais les animations.
Je faisais une démo svg aujourd'hui, et j'avais besoin que svg soit à l'intérieur de div (parce que svg est créé avec la largeur et la hauteur de div du parent, pour animer le chemin), et ce div parent devait être invisible pendant l'animation du chemin svg (et ensuite ce div était censé le faire
animate opacity from 0 to 1
, c'est la partie la plus importante). Et parce que le parent div avecopacity: 0
masquait mon svg, je suis tombé sur ce hack avecvisibility
option (l'enfant avecvisibility: visible
peut être vu à l'intérieur du parent avecvisibility: hidden
):Et puis, dans js, vous supprimez la
.invisible
classe avec la fonction timeout, ajoutez la.opacity-zero
classe, déclenchez la disposition avec quelque chose commewhatever.style.top;
et supprimez la.opacity-zero
classe.Mieux vaut vérifier cette démo http://codepen.io/suez/pen/54bbb2f09e8d7680da1af2faa29a0aef?editors=011
la source
Sur Mac, vous pouvez utiliser l' éditeur d' aperçu pour appliquer l'opacité à un rectangle blanc posé sur votre image .png avant de la placer dans votre .css.
1)
Logo d' image
2) Créer un rectangle autour de l'image
Rectanle autour du logo
3) Changer la couleur d'arrière-plan en
rectangle blanc devenu blanc
4) Ajuster l'opacité du rectangle
image opaque
la source
Attribuez récursivement l'opacité 1.0 à l'enfant avec:
Exemple:
la source
Pour les autres personnes essayant de faire en sorte qu'un tableau (ou quelque chose) ait l'air concentré sur une ligne en utilisant l'opacité. Comme @Blowski a dit d'utiliser la couleur et non l'opacité. Découvrez ce violon: http://jsfiddle.net/2en6o43d/
la source