Phil Marx: Was heisst html>body #klasse?

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?

--

CU
Phil Marx
http://www.yubb.de - Die Webmaster-Community
  1. 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

    --
    ie:{ fl:( br:^ va:) ls:# fo:) rl:( n4:& ss:{ de:] js:| ch:? mo:) zu:$
    http://www.smartbytes.de
    1. Hi!
      Ja, danke erstmal für die Info, aber was unterscheidet dann

      html>body #klasse {...}

      von

      .klasse {...}

      ? Versteh den Unterschied noch nicht ganz :(

      --

      CU
      Phil Marx
      http://www.yubb.de - Die Webmaster-Community
      1. 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

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
      2. 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

        --
        Selfcode: sh:( fo:| br: n4:& ie:% mo:| mo:| de:] zu:) fl:| ss:| ls:[ js:|
      3. 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

        --
        ie:{ fl:( br:^ va:) ls:# fo:) rl:( n4:& ss:{ de:] js:| ch:? mo:) zu:$
        http://www.smartbytes.de
    2. Hi,

      In diesem Fall verstehen IEs die Angaben nicht

      Mac-IEs schon.

      Cheatah

      --
      X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
      X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
      X-Will-Answer-Email: No
      X-Please-Search-Archive-First: Absolutely Yes
      1. 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

        --
        ie:{ fl:( br:^ va:) ls:# fo:) rl:( n4:& ss:{ de:] js:| ch:? mo:) zu:$
        http://www.smartbytes.de
        1. 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

          --
          X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
          X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
          X-Will-Answer-Email: No
          X-Please-Search-Archive-First: Absolutely Yes
    3. 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

  2. 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:

    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.

    Grüße,
     Roland

    1. 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

      --
      MudGuard? Siehe http://www.Mud-Guard.de/
      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
      1. 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 ;-)

    2. html>body #klasse {

      Da ist ein Leerzeichen verlorengegangen. So ist's korrekt:

      http://penguin.theopalgroup.com/cgi-bin/css3explainer/selectoracle.py?lang=de&direct=html>body %23klasse

      | 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

  3. 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

    1. 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

      --
      MudGuard? Siehe http://www.Mud-Guard.de/
      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
      1. 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

        1. 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

    2. 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