vererbung auflösen
Kuno
- css
0 Kuno0
Struppi
0
Gunnar Bittersmann
0 Jeena Paradies0
MudGuard
Kleines Beispiel:
#top {
background:url(..) left top repeat-x;
}
<div id=top>
<div>hier kein Background</div>
</div>
weiss jemand von euch, wie man im o.g. Beispiel die Vererbung auf den inneren Container auflösen kann, OHNE dass man hierfür eine eigene Klasse/ID definieren muss?
ich könnte ja einfach einfach: background:url(white_background.gif) machen, aber irgendwie finde ich das etwas hirnverbrannt.
Und NEIN, ich will keine Liste (für die Herrschaften Schlauberger)
Ups hab mich vertippt:
#top div {
background:url(..) left top repeat-x;
}
<div id=top>
<div>hier Background<br>
<div>Kein Background</div>
</div>
</div>
<div id=top>
<div>hier Background<br>
<div>Kein Background</div>
</div>
</div>
Das ist eine DIV Suppe, sowas ist selten überhaupt nötig, deine Frage deutet darauf hin dass du noch am lernen bist, du solltest dich auch sematische Auszeichnung informieren.
der IE kann zumindest >
Ist aber auch egal, da:
1. DIV:
div#top { ... }
2. DIV
div#top div { ... }
3. DIV
div#top div div { ... }
entspricht.
Struppi.
Hello out there!
#top {
background:url(..) left top repeat-x;
}<div id=top>
<div>hier kein Background</div>
</div>weiss jemand von euch, wie man im o.g. Beispiel die Vererbung auf den inneren Container auflösen kann,
Indem du ihn mittels Nachfahrenselektor [CSS2 §5.5] ansprichst und dafür kein Hintergrundbild [CSS2 §14.2.1] angibst.
Evtl. möchtest du die background-Eigenschaften einzeln setzen. Und dem Wert des id-Attributs Anführungszeichen spendieren.
See ya up the road,
Gunnar
na doll, der IE kann kein > und +
Hello out there!
na doll, der IE kann kein > und +
Na doll, wie du lesen kannst. Sagte ich was von Kindselektor? Oder Nachbarselektor?
See ya up the road,
Gunnar
Hallo,
#top {
background:url(..) left top repeat-x;
}
#top div {
background: white; /* oder die Farbe die du haben möchtest */
}
<div id=top>
Hier solltest du den Attributwert unbedingt in Anführungszeichen setzen:
<div id="top">
Grüße
Jeena Paradies
komisch, normalerweise kann man ja background-color und background gleichzeitig angeben. Aber dass man bei background auch farbwerte angeben kann war mir bislang unbekannt. Leider hilft mir das auch nicht weiter, da hier der <BODY>-Background weiss überschrieben wird.
Ich möchte aber nur die Hintergrundfarbe des untergelagerten Blockes weghaben. Wenn ich ihn mit der Farbe weiss überschreibe, sieht man den Hintergrund vom BODY nichtmehr.
Hi,
komisch, normalerweise kann man ja background-color und background gleichzeitig angeben.
background setzt immer alle background-Eigenschaften auf den Initial-value und dann die explizit angegebenen Eigenschaften auf die angegebenen Werte.
Verwechselst Du etwa background mit background-image?
Aber dass man bei background auch farbwerte angeben kann war mir bislang unbekannt. Leider hilft mir das auch nicht weiter, da hier der <BODY>-Background weiss überschrieben wird.
Ich möchte aber nur die Hintergrundfarbe des untergelagerten Blockes weghaben. Wenn ich ihn mit der Farbe weiss überschreibe, sieht man den Hintergrund vom BODY nichtmehr.
Natürlich.
Stell Dir die Elemente als Glasplatten (farblos, durchsichtig) vor, die übereinandergestapelt werden (das äußerste Element ganz unten).
Gibst Du für ein Element eine Hintergrundfarbe vor, wird die farblose durchsichtige Glasplatte durch eine undurchsichtige Platte in der angegebenen Farbe ersetzt.
Gibst Du für ein Element ein Hintergrundbild vor, wird dieses auf die Oberseite der Glasplatte gesprüht.
Du hast auf die body-Glasplatte ein Hintergrundbild aufgesprüht.
Dies ist zunächst im ganzen Bereich sichtbar.
Jetzt legst Du darauf eine weitere Glasplatte (mit id top), auf der sich ein Hintergrundbild befindet. An den nicht-transparenten Stellen dieses Hintergrundbildes ist also das Hintergrundbild des body nicht mehr zu sehen.
Darauf legst Du eine weitere (transparente, farblose) Glasplatte (Dein inneres div).
Wenn Du jetzt von oben auf den Stapel guckst - was siehst Du im Bereich des inneren div?
Und wie ändert sich das, wenn Du auf der obersten Glasplatte malst? Können dadurch Teile der untersten Glasplatte sichtbar werden?
Um hier das background-Bild des body sichtbar zu machen, müßtest Du entweder auf der mittleren Glasplatte im entsprechenden Bereich das Hintergrundbild abkratzen (dafür gibt es aber im CSS-Werkzeugkasten kein geeignetes Gerät) oder aber dafür sorgen, daß auf der obersten Platte wieder das entsprechende Hintergrundbild aufgesprüht wird. Zumindest moderne Browser sollten das unterstützen - background-attachment:fixed, dazu das Hintergrundbild sowie dessen Positionierung exakt wie beim body (hab's jetzt aber nicht getestet). Ob der IE das in irgendeiner existenten Version hinkriegt, weiß ich nicht, bis Version 6 positioniert er das Bild falsch, wenn ich mich richtig erinnere, Version 7 hab ich's noch nicht probiert.
(Effekte wie opacity sind in diesem Beispiel nicht berücksichtigt)
cu,
Andreas
Hallo Andreas,
Hi,
[lange ausführliche Erklärung]
cu,
Andreas
Also, wenn Du hier recht hat, dann habe ich die Frage flasch verstanden und natürlich Blödsinn geschrieben. Beruhigend zumindest, daß mir das nicht als einzigem passiert :-D
Beste Grüße von da, wo ich bin
Masin
Hallo Kuno,
komisch, normalerweise kann man ja background-color und background gleichzeitig angeben. Aber dass man bei background auch farbwerte angeben kann war mir bislang unbekannt. Leider hilft mir das auch nicht weiter, da hier der <BODY>-Background weiss überschrieben wird.
Ich möchte aber nur die Hintergrundfarbe des untergelagerten Blockes weghaben. Wenn ich ihn mit der Farbe weiss überschreibe, sieht man den Hintergrund vom BODY nichtmehr.
Wie wäre es dann mit
#top div{
background.color: inherit;
}
Alternativ kannst Du auch transparent versuchen.
Beste Grüße aus Berlin-Lichtenberg
Masin
Wenn ich es transparent mache, schimmert ja wieder der Hintergrund aus der untergelagerten DIV durch!
Hi,
#top div{
background.color: inherit;
}
Das kann schon wegen der nicht-existenten Eigenschaft nicht funktionieren (Punkt statt Bindestrich).
Und Kuno will ja nicht erben, er will ja ein Loch in das äußere Div schneiden, durch das der dahinterliegende body-Hintergrund durchgucken soll.
cu,
Andreas
--
[Warum nennt sich Andreas hier MudGuard?](http://MudGuard.de/)
[Schreinerei Waechter](http://www.schreinerei-waechter.de/)
[O o ostern ...](http://ostereier.andreas-waechter.de/)
Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
Das kann schon wegen der nicht-existenten Eigenschaft nicht funktionieren (Punkt statt Bindestrich).
Ich habe mich nicht nur vertippt ...
Und Kuno will ja nicht erben, er will ja ein Loch in das äußere Div schneiden, durch das der dahinterliegende body-Hintergrund durchgucken soll.
... ich habe mich sogar geirrt! Tja, in dem Fall kann wohl nur das bereits erwähnte background-position:fixed; helfen.
Beste Grüße
Masin
... ich habe mich sogar geirrt! Tja, in dem Fall kann wohl nur das bereits erwähnte background-position:fixed; helfen.
Bevor jemand drauf rumreitet: Vergessen wir's für heute einfach, ist wohl nicht meine Woche ...
Beste Grüße
Masin
PS: es sollte natürlich das bereits erwähnte background-attachment:fixed; gemeint sein. Aber ich habe heute wohl Probleme, das zu schreiben, was ich meine ...
Hi,
Kleines Beispiel:
#top {
background:url(..) left top repeat-x;
}<div id=top>
<div>hier kein Background</div>
</div>
> weiss jemand von euch, wie man im o.g. Beispiel die Vererbung auf den inneren Container auflösen kann,
Die Hintergrund-Eigenschaften werden nicht vererbt, wie man bei den Beschreibungen der background-Eigenschaften (siehe <http://www.w3.org/TR/CSS21/colors.html#q2>) nachlesen kann, dort steht jeweils "Inherited: no".
Das einzige, was Du also tun mußt, um eine Vererbung zu verhindern, ist: Du darfst für die background-Eigenschaften des inneren Elements nicht den Wert inherit angeben.
Da bei keiner der background-Eigenschaften inherit der Initial-Value ist, läuft das im Normalfall darauf raus, die background-Eigenschaften einfach nicht zu setzen.
> OHNE dass man hierfür eine eigene Klasse/ID definieren muss?
Es gibt sehr viele andere Selektoren als class- und id-Selektoren. Unter anderem den Nachfahrenselektor.
> ich könnte ja einfach einfach: background:url(white\_background.gif) machen, aber irgendwie finde ich das etwas hirnverbrannt.
Aha, Du willst also, daß Dein inneres Element eine vom default transparent abweichende Hintergrundfarbe hat, damit das Hintergrundbild des äußeren Elements nicht sichtbar ist. Dafür wie von Dir angedeutet ein Bild vom Server anzufordern ist allerdings hirnverbrannt, wo doch die einfache Angabe einer Hintergrundfarbe reicht.
cu,
Andreas
--
[Warum nennt sich Andreas hier MudGuard?](http://MudGuard.de/)
[Schreinerei Waechter](http://www.schreinerei-waechter.de/)
[O o ostern ...](http://ostereier.andreas-waechter.de/)
Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.