Was heisst html>body #klasse?
Phil Marx
- css
Tach!
Tja, Frage steht im Topic: ich habe mir nun einige CSSSeiten angeschaut und auf einigen finde ich Codezeilen, die wie folgt lauten:
html>body #klasse {
...
}
Was ist das für eine Zuweisung bzw. auf was springt die an?
Tachchen!
html>body #klasse {
...
}
Sie spricht die ID "Klasse" im body in html an.
Da wärst du auch noch allein drauf gekommen, gleichzeitig ist es aber auch ein sog. CSS-Hack. In diesem Fall verstehen IEs die Angaben nicht und ignorieren sie folglich.
Gruß
Die schwarze Piste
Hi!
Ja, danke erstmal für die Info, aber was unterscheidet dann
html>body #klasse {...}
von
.klasse {...}
? Versteh den Unterschied noch nicht ganz :(
Hi,
Ja, danke erstmal für die Info, aber was unterscheidet dann
html>body #klasse {...}
von
.klasse {...}
ersteres trifft ein <html><body>...<irgendwas id="klasse">, zweiteres ein <wasanderes class="klasse">. Genauer gesagt haben beide Dinge also nichts miteinander zu tun. Die Bezeichnung "#klasse" ist irreführend.
Cheatah
Moin!» Hi!
html>body #klasse {...}
steht im queltext:
<html>
...
<body>
<[element] id="klasse"></[element]>
.klasse {...}
steht im quelltext:
<html>
...
<body>
<[element] class="klasse"></[element]>
hoffe ich konnte helfen
ichen
Tachchen!
html>body #klasse {...}
Hier wird eine ID des Namens "Klasse" angesprochen ... mit Ausnahme von einigen Browser (mehr dazu bei Cheatah ;-))
.klasse {...}
Hier wird eine Klasse des Namens "Klasse" angesprochen ... von so ziemlich jedem Browser.
Gruß
Die schwarze Piste
Hi,
In diesem Fall verstehen IEs die Angaben nicht
Mac-IEs schon.
Cheatah
Tachchen!
Mac-IEs schon.
Mac-IEs 4.x nicht ... quitt? ;-)
Ich glaube, es ging hauptsächlich darum, das System zu erklären, nicht den spezellen Hack.
Gruß
Die schwarze Piste
Hi,
Mac-IEs schon.
Mac-IEs 4.x nicht ... quitt? ;-)
ja *g*
Ich glaube, es ging hauptsächlich darum, das System zu erklären, nicht den spezellen Hack.
Stimmt schon. Nur wird allzu oft vergessen, dass der Mac-IE eine andere Rendering-Engine besitzt als der Windows-IE, und dass die Browser daher anders reagieren. Drum die Korrektur.
Cheatah
Hallo,
[...] aber auch ein sog. CSS-Hack. In diesem Fall verstehen IEs die Angaben nicht und ignorieren sie folglich.
das klappt so als IE-Filter aber nur wenn auf beiden Seiten des ">" wie gepostet keine Leerzeichen stehen, vgl. auch http://www.lipfert-malik.de/webdesign/tutorial/bsp/css-weiche-filter.html, sonst werden IE 4 und IE 5 auch bedient (s. Nr.39-42).
Grüsse
Cyx23
Hi Phil,
html>body #klasse {
...
}
das wird in folgenden Kapiteln beschrieben:
http://de.selfhtml.org/css/formate/zentrale.htm#verschachtelte_elemente
http://de.selfhtml.org/css/formate/zentrale.htm#individualformate
http://de.selfhtml.org/css/formate/zentrale.htm#klassen
Um einen Selektor zu erklären kannst du auch folgende Angebote in Anspruch nehmen:
http://gallery.theopalgroup.com/selectoracle/
http://www.tntluoma.com/sidebars/selectoracle/
http://penguin.theopalgroup.com/cgi-bin/css3explainer/selectoracle.py
In diesem Fall lautet die Antwort:
| Selektor 1: html > body#klasse
|
| Selektiert jedes body-Element mit einem id-Attribut
| mit dem Wert "klasse" das ein direktes Unterelement
| ist von einem html-Element.
Grüße,
Roland
Hi,
html>body #klasse {
In diesem Fall lautet die Antwort:
http://penguin.theopalgroup.com/cgi-bin/css3explainer/selectoracle.py?lang=de&direct=html>body%23klasse
| Selektor 1: html > body#klasse
| Selektiert jedes body-Element mit einem id-Attribut
| mit dem Wert "klasse" das ein direktes Unterelement
| ist von einem html-Element.
Falsche Antwort, da falscher Selektor. Bei CSS-Selektoren kann Whitespace einen entscheidenden Unterschied ausmachen.
http://penguin.theopalgroup.com/cgi-bin/css3explainer/selectoracle.py?lang=de&direct=html>body %23klasse
ergibt dann eine Erklärung, die näher an die Wahrheit kommt:
Selektiert jedes Element mit einem id-Attribut mit dem Wert klasse das ein direktes oder indirektes Unterelement ist von einem body-Element das ein direktes Unterelement ist von einem html-Element.
Das zweite Wort "jedes" müßte m.E. "das" lauten - denn wegen der Eindeutigkeit der id kann es (pro Dokument) nur ein solches Element geben.
cu,
Andreas
Hi Andreas,
Das zweite Wort "jedes" müßte m.E. "das" lauten - denn wegen der Eindeutigkeit der id kann es (pro Dokument) nur ein solches Element geben.
wenn es nur eines gibt, ist jedes eines und eines jedes, somit einerlei. Einig?
Grüße,
Roland ;-)
html>body #klasse {
Da ist ein Leerzeichen verlorengegangen. So ist's korrekt:
| Selektiert jedes Element mit einem id-Attribut mit
| dem Wert "klasse" das ein direktes oder indirektes
| Unterelement ist von einem body-Element das ein
| direktes Unterelement ist von einem html-Element.
Grüße,
Roland
Hallo Phil,
html>body #klasse {
Man könnte übrigens behaupten, daß dieser Selektor Unsinn bzw. redundant ist.
#klasse springt nur auf die ID 'klasse' an. Eine ID darf jeweils nur einmal in
einem Dokument auftauchen. Weswegen man ebensogut nur #klasse als Selektor
benutzen könnte.
(Einschränkung: Es sei denn, es handelt sich um ein Stylesheet für sehr
viel mehrere Dokumente, unter denen sich auch Dokumente befinden, wo die
ID 'klasse' auch in anderen Konstellationen auftreten kann, beispielsweise
am body. Und man irgendwelche Gründe hat, diese auszuschließen. Aber da
versagt meine Phantasie, ich kann mir nicht wirklich Gründe dafür vorstellen.)
Tim
Hi,
Man könnte übrigens behaupten, daß dieser Selektor Unsinn bzw. redundant ist.
#klasse springt nur auf die ID 'klasse' an. Eine ID darf jeweils nur einmal in
einem Dokument auftauchen. Weswegen man ebensogut nur #klasse als Selektor
benutzen könnte.
Naja, das zusätzliche html>body könnte ja auch dazu dienen, die "specificity" des Selektors zu erhöhen.
cu,
Andreas
Hallo Andreas,
Naja, das zusätzliche html>body könnte ja auch dazu dienen, die
"specificity" des Selektors zu erhöhen.
Äh, wozu? Ich habe gerade noch mal das im CSS Standard nachgeschlagen.
Damit komme ich für dieses Beispiel auf die Spezifizität a=0, b=1, c=0, d=2.
Ohne das html>body wäre die Spezifizität a=0, b=1, c=0, d=0.
Wozu will man die Spezifizität eines Selektors erhöhen? Um einen anderen
Selektor zu schlagen. Diese Steigerung wäre aber nur relevant, wenn der
andere Selektor ebenfalls eine ID beherbergt. Eine andere ID geht nicht,
weil aus mir unerfindlichen Gründen (Hallo an Thomas J.S.!) Elemente in
HTML und XML nur eine ID besitzen dürfen. Es müßte sich also um die gleiche
ID handeln.
So und jetzt fragen wir uns: Welcher Autor, der noch halbwegs bei Verstand
ist, will eine Extraregel, eine Ausnahme, für eine ID schaffen, die doch eh
nur einmal vorkommen kann? ;-)
Tim
Hi Tim,
So und jetzt fragen wir uns: Welcher Autor, der noch halbwegs bei Verstand
ist, will eine Extraregel, eine Ausnahme, für eine ID schaffen, die doch eh
nur einmal vorkommen kann? ;-)
man darf/muss ja nicht nur ein einziges Stylesheet verwenden.
Erforderlich ist dieser Selektor vielleicht auch für eine Korrektur M$IE-notwendiger Werte auf die korrekten für (wert)gute ;-) Browser, Stichwort CSS-Hack.
Grüße,
Roland
Hi,
html>body #klasse {
daß dieses Konstrukt in aller Regel als CSS-Weiche, um Definitionen vor IEs zu verbergen, eingesetzt wird, ist ja klar, aber
wo die ID 'klasse' auch in anderen Konstellationen auftreten kann, beispielsweise
am body. Und man irgendwelche Gründe hat, diese auszuschließen. Aber da
versagt meine Phantasie, ich kann mir nicht wirklich Gründe dafür vorstellen.)
dieser Grund könnte tatsächlich auch mal auftauchen. Nämlich wenn Teile der für diese ID verwendeten Definitionen auf einigen Seiten z.B. ein DIV formatieren sollen, die grundsätzlichen Definitionen nur über #klasse {} jedoch in anderen Seiten auf den body angewendet werden sollen. Gesehen habe ich sowas allerdings noch nicht..;-)
freundliche Grüße
Ingo