Gerrit: Warum "* html img"?

Hi,
würde statt  "* html img"
nicht schon "img" genügen?
Frohes Fest

  1. Moin Gerrit,

    würde statt  "* html img"
    nicht schon "img" genügen?

    Naja, das ist ein CSS-Hack. Hintergrund ist, dass * html eigentlich nicht matchen kann, weil html das Root-Element ist und damit kein Eltern-Element hat. Hier wird also ein Bug im IE6 ausgenutzt, um Browser-spezifisches CSS zu schreiben.

    LG,
     CK

    1. Tach!

      würde statt  "* html img"
      nicht schon "img" genügen?
      Naja, das ist ein CSS-Hack.

      Und selbst wenn es keiner wäre, also das * mal weggelassen, hat auch html img mitunter seine Daseinsberechtigung, obwohl img im Prinzip ausreichend wäre. Durch das zweite Element erhöht sich die Spezifität, weswegen html img ein einfaches img überschreibt.

      dedlfix.

      1. [latex]Mae  govannen![/latex]

        würde statt  "* html img"
        nicht schon "img" genügen?
        Naja, das ist ein CSS-Hack.

        Und selbst wenn es keiner wäre, also das * mal weggelassen, hat auch html img mitunter seine Daseinsberechtigung, obwohl img im Prinzip ausreichend wäre. Durch das zweite Element erhöht sich die Spezifität, weswegen html img ein einfaches img überschreibt.

        Diese Kombination ist aber in diesem speziellen Fall trotzdem vollkommen sinnfrei, da <img/> außerhalb von <html> nicht vorkommt, also html img immer greift.

        Stur lächeln und winken, Männer!
        Kai

        --
        var jQuery = $(hit);
        Wir sind die Schlumpf. Widerschlumpf ist schlumpflos. Wir werden Sie einschlumpfen.
        SelfHTML-Forum-Stylesheet
        1. Tach!

          Durch das zweite Element erhöht sich die Spezifität, weswegen html img ein einfaches img überschreibt.
          Diese Kombination ist aber in diesem speziellen Fall trotzdem vollkommen sinnfrei, da <img/> außerhalb von <html> nicht vorkommt, also html img immer greift.

          "html irgendwas" greift immer, soweit richtig. Aber die Spezifität ist mit 0-0-0-2 höher als 0-0-0-1 bei einfachem "irgendwas". Genau das soll in der Form passieren, wenn man Eigenschaften überschreiben möchte und dies nicht durch einen gleichwertigen Selektor hinter den bereits vorhandenen Regeln für "irgendwas" notiert bekommt. Dies lässt sich manchmal nicht erreichen, wenn man keine grundlegenden Eingriffe in bestehende Systeme machen möchte und nur vorher Regeln hinzufügen kann.

          Ebenso "sinnlos" ist #foo #bar, .foo #bar oder foo#bar, weil #bar allein bereits eindeutig genug ist. Auch hier erhöht sich durch die "überflüssigen" Selektoren die Spezifität und hat Einfluss darauf, welche Regel am Ende gewinnt.

          dedlfix.

          1. Hallo dedlfix

            Ebenso "sinnlos" ist #foo #bar, .foo #bar oder foo#bar, weil #bar allein bereits eindeutig genug ist.

            Nicht unbedingt. Bei einem CSS, das üblicherweise für mehrere Dokumente verwendet wird, kann es in jedem dieser Dokument #bar geben.
            Da kann es durchaus sein, dass eine Regel nur gelten soll, wenn #bar ein ganz bestimmtes Vorfahrenelement oder einen bestimmten Elementtyp hat.

            Auf Wiederlesen
            Detlef

            --
            - Wissen ist gut
            - Können ist besser
            - aber das Beste und Interessanteste ist der Weg dahin!
        2. Hi,

          Diese Kombination ist aber in diesem speziellen Fall trotzdem vollkommen sinnfrei, da <img/> außerhalb von <html> nicht vorkommt, also html img immer greift.

          Du gehst davon aus, daß das CSS nicht auch noch für Dokumente in anderen Sprachen verwendet wird.

          cu,
          Andreas

          --
          Warum nennt sich Andreas hier MudGuard?
          O o ostern ...
          Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
        3. Om nah hoo pez nyeetz, Kai345!

          Diese Kombination ist aber in diesem speziellen Fall trotzdem vollkommen sinnfrei, da <img/> außerhalb von <html> nicht vorkommt, also html img immer greift.

          Ergänzend und konkretisierend zu dedlfix' Antwort:

          In einem Blog oder Wiki greift man auf vorbereitete Templates zurück. Die gewünschten Änderungen möchte man nicht in den Originaltemplates unterbringen, weil man sie sonst bei updates verlieren würde. Wenn man jetzt nicht dafür sorgen kann, dass das eigene Stylesheet nach dem originalen geladen wird, kann man durch spezifischere Selektoren die Vorgaben des Originals überschreiben. Und da ist

          html selektor {  
            foo: bar;  
            baz: quz;  
            ...  
          }
          

          deutlich weniger aufwändig als

          selektor {  
            foo: bar !important;  
            baz: quz !important;  
            ...  
          }
          

          Matthias

          --
          1/z ist kein Blatt Papier.

          1. Moin Matthias,

            […] deutlich weniger aufwändig als

            selektor {

            foo: bar !important;
              baz: quz !important;
              ...
            }

              
            Der Aufwand sollte hier eine untergeordnete Rolle spielen. `!important` sollte man NIE benutzen, ausser es ist durch die Umstände überhaupt nicht anders möglich. Die Gründe sollten hinreichend bekannt sein.  
              
            LG,  
             CK  
            
            -- 
            <http://ck.kennt-wayne.de/>
            
    2. Hi,
      in dem Zusammenhang habe ich noch folgendes gefunden:
      /*\*//*/
      Hat dies auch eine bestimmte Bedeutung oder nur ein missglückter Kommentar?

      1. Tach!

        /*\*//*/
        Hat dies auch eine bestimmte Bedeutung oder nur ein missglückter Kommentar?

        Sieht aus, als ob es hat (siehe Abschitt The Commented Backslash Hack).

        dedlfix.

        1. Om nah hoo pez nyeetz, dedlfix!

          Sieht aus, als ob es hat (siehe Abschitt The Commented Backslash Hack).

          hatte. Diese Browser sind ausgestorben.

          Matthias

          --
          1/z ist kein Blatt Papier.