Ich möchte die untergeordnete Deckkraft nicht vom übergeordneten Element in CSS erben.
Ich habe eine Div, die das Elternteil ist, und ich habe eine andere Div innerhalb der ersten Div, die das Kind ist.
Ich möchte die Opazitätseigenschaft im übergeordneten Div festlegen, aber ich möchte nicht, dass das untergeordnete Div die Opazitätseigenschaft erbt.
Wie kann ich das machen?
opacity
ist ein bisschen wiedisplay: none
in diesem Sinne.Antworten:
Anstatt Deckkraft zu verwenden, legen Sie mit rgba eine Hintergrundfarbe fest, wobei 'a' die Transparenzstufe ist.
Also statt:
verwenden
quelle
.png
:)Die Deckkraft wird in CSS nicht vererbt. Es ist eine Gruppentransformation nach dem Rendern. Mit anderen Worten, wenn für a
<div>
die Deckkraft festgelegt ist, rendern Sie das div und alle seine untergeordneten Elemente in einen temporären Puffer und fügen dann den gesamten Puffer mit der angegebenen Deckkrafteinstellung in die Seite ein.Was genau Sie hier tun möchten, hängt vom genauen Rendering ab, das Sie suchen, was aus der Frage nicht klar hervorgeht.
quelle
opacity: .7;
aufdiv#container
macht jedes Kind - Element - vonul
/li
bisimg
zup
- auch die gleiche Opazität hat. Es ist mit Sicherheit vererbt.opacity: 0.7
alle Nachkommen festzulegen, um zu sehen, wie die Vererbung aussehen würde. Wie ich bereits sagte, wird stattdessen die Deckkraft auf die gesamte Gruppe "Element und alle seine Nachkommen" als Einheit angewendet, anstatt sie zu erben.Wie andere in diesem und ähnlichen Threads erwähnt haben, können Sie dieses Problem am besten vermeiden, indem Sie RGBA / HSLA oder ein transparentes PNG verwenden.
Wenn Sie jedoch eine lächerliche Lösung suchen, ähnlich der, die in einer anderen Antwort in diesem Thread (der auch meine Website ist) verlinkt ist, finden Sie hier ein brandneues Skript, das dieses Problem automatisch behebt und thatsNotYoChild.js heißt:
http://www.impressivewebs.com/fixing-parent-child-opacity/
Grundsätzlich wird JavaScript verwendet, um alle untergeordneten Elemente aus dem übergeordneten div zu entfernen und die untergeordneten Elemente wieder an die Stelle zu bringen, an der sie sich befinden sollten, ohne dass sie tatsächlich untergeordnete Elemente dieses Elements sind.
Für mich sollte dies ein letzter Ausweg sein, aber ich dachte, es würde Spaß machen, etwas zu schreiben, das dies tut, wenn jemand dies tun möchte.
quelle
Ein kleiner Trick, wenn Ihre Eltern transparent sind und Sie möchten, dass Ihr Kind dasselbe ist, aber ausschließlich definiert wird (z. B. um die Benutzeragentenstile einer ausgewählten Dropdown-Liste zu überschreiben):
quelle
Die Deckkraft des untergeordneten Elements wird vom übergeordneten Element geerbt.
Wir können jedoch die CSS-Positionseigenschaft verwenden, um unsere Leistung zu erzielen.
Das Textcontainer-Div kann außerhalb des übergeordneten Div platziert werden, wobei die absolute Positionierung den gewünschten Effekt projiziert.
Ideale Voraussetzung ------------------ >>>>>>>>>>>>
HTML
CSS
Ausgabe:--
Der Text ist nicht sichtbar, da die Deckkraft vom übergeordneten div übernommen wurde.
Lösung ------------------- >>>>>>
HTML
CSS
Ausgabe :
Der Text ist mit derselben Farbe wie der Hintergrund sichtbar, da sich das Div nicht im transparenten Div befindet
quelle
Die Frage hat nicht definiert, ob der Hintergrund eine Farbe oder ein Bild ist, aber da @Blowski bereits für farbige Hintergründe geantwortet hat, gibt es unten einen Hack für Bilder:
Auf diese Weise können Sie die Farbe Ihrer Deckkraft ändern und sogar schöne Verlaufseffekte hinzufügen.
quelle
Es scheint, dass
display: block
Elemente keine Opazität von dendisplay: inline
Eltern erben .Codepen Beispiel
Vielleicht, weil es ein ungültiges Markup ist und der Browser sie heimlich trennt? Weil die Quelle das nicht zeigt. Vermisse ich etwas
quelle
Die obigen Antworten scheinen mir kompliziert zu sein, deshalb habe ich Folgendes geschrieben:
kb-mask-overlay
Es ist dein (undurchsichtiger) Elternteil,pop-up
es sind deine (keine undurchsichtigen) Kinder. Alles darunter ist der Rest Ihrer Website.quelle
Es gibt keinen einheitlichen Ansatz, aber eine Sache, die ich besonders hilfreich fand, ist das Einstellen der Deckkraft für die direkten Kinder eines Divs, mit Ausnahme derjenigen, die Sie vollständig sichtbar halten möchten. In Code:
und css:
Wenn Sie Hintergrundfarben / -bilder auf dem übergeordneten Element haben, korrigieren Sie die Farbopazität mit rgba und Hintergrundbild, indem Sie Alphafilter anwenden
quelle
Wenn Sie ein Bild als transparenten Hintergrund verwenden müssen, können Sie es möglicherweise mit einem Pseudoelement umgehen:
html
CSS
quelle
In meiner Antwort geht es nicht um statisches Eltern-Kind-Layout, sondern um Animationen.
Ich habe heute eine SVG-Demo gemacht, und ich brauchte SVG, um innerhalb von Div zu sein (da SVG mit der Div-Breite und -Höhe des Elternteils erstellt wird, um den Pfad zu animieren), und dieses Eltern-Div musste während der SVG-Pfadanimation (und dann) unsichtbar sein Diese Div sollte
animate opacity from 0 to 1
, es ist der wichtigste Teil). Und weil Eltern-Div mitopacity: 0
mein SVG versteckt hat, bin ich auf diesen Hack mitvisibility
Option gestoßen (Kind mitvisibility: visible
kann im Elternteil mit gesehen werdenvisibility: hidden
):Und dann entfernen Sie in js eine
.invisible
Klasse mit Timeout-Funktion, fügen eine.opacity-zero
Klasse hinzu , lösen ein Layout mit so etwas auswhatever.style.top;
und entfernen eine.opacity-zero
Klasse.Überprüfen Sie besser diese Demo http://codepen.io/suez/pen/54bbb2f09e8d7680da1af2faa29a0aef?editors=011
quelle
Auf einem Mac können Sie den Vorschau- Editor verwenden, um einem weißen Rechteck, das über Ihrem PNG-Bild liegt, Deckkraft zu verleihen, bevor Sie es in Ihre CSS-Datei einfügen.
1) Bild
Logo
2) Erstellen Sie ein Rechteck um das Bild
Rectanle um Logo
3) Hintergrundfarbe ändern , um weißes
Rechteck gedreht weiß
4) Rechteck Opazität einstellen
undurchsichtiges Bild
quelle
Weisen Sie dem Kind rekursiv die Deckkraft 1.0 zu mit:
Beispiel:
quelle
Für andere Personen, die versuchen, eine Tabelle (oder etwas anderes) mit Deckkraft auf eine Zeile zu fokussieren. Wie @Blowski sagte, benutze Farbe nicht Deckkraft. Schauen Sie sich diese Geige an: http://jsfiddle.net/2en6o43d/
quelle