Robert: CSS-Hack, der nur für IE 6 gilt

Hallöle,

ich suche eine Möglichkeit (wenn irgend möglich rein CSS-basiert, also ohne zusätzliche CSS-Datei, die über conditional comments eingebunden wird).

Ich muß ein ul-Element mit id "Hauptnavigation", welches direktes Kind des body ist, selektieren. Aber wie gesagt so, daß nur der IE 6.0 diesen Selektor wahrnimmt. IE 5.5 oder IE 5.0 dürfen die zugehörigen Deklarationen NICHT anwenden.

Ok, mit

* html ul#Hauptnavigation { /* Deklarationen */ }

bekomme ich schon mal

  • alle modernen Browser (Opera, Geckos) aussortiert, die diesen Selektor korrekt interpretieren (also nicht beachten, da html kein Elternelement hat)
  • Netscape 4.x aussortiert, weil dieser den * als Selektor gar nicht kennt.

Aber wie halte ich IE 5.x davon ab, die Deklarationen anzuwenden?

Muchachos Garcia (oder so ähnlich),
cu,
Robert

  1. Hi,

    IE 5.5 oder IE 5.0 dürfen die zugehörigen Deklarationen NICHT anwenden.

    diese Browser interpretieren den Backslash falsch. Kombiniere dies mit dem Star-HTML-Hack und ggf. dem Escaped-Comment-Hack, um den Macintosh auszuschließen.

    Ok, mit
    * html ul#Hauptnavigation { /* Deklarationen */ }
    bekomme ich schon mal

    ... alle (bisherigen) IEs auf allen Betriebssystemen, niemanden sonst. Guter Anfang also :-)

    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. Hallöle,

      IE 5.5 oder IE 5.0 dürfen die zugehörigen Deklarationen NICHT anwenden.

      diese Browser interpretieren den Backslash falsch. Kombiniere dies mit dem Star-HTML-Hack und ggf. dem Escaped-Comment-Hack, um den Macintosh auszuschließen.

      s.o., blöder Cache - der IE 5.5 müßte die Deklarationen auch sehen ...

      Den Escaped-Comment-Hack hab ich gefunden und eingesetzt - hab aber grad keinen Mac zum testen da (mach ich morgen auf Arbeit).

      Star-HTML hab ich ja schon benutzt ...

      * html ul#Hauptnavigation { /* Deklarationen */ }

      Mit backslash, also z.B.

      * html ul#Hauptna\vigation { /* Deklarationen */ }

      werden IE 5.0 und IE 5.5 von den Deklarationen abgehalten.

      Jetzt bräuchte ich noch einen Selektor, der nur für IE 5.5 greift, dann könnt ich den noch extra behandeln (der bräuchte eh ne minimal andere Position) ...

      Danke schon mal,

      Robert

      1. Hi,

        Jetzt bräuchte ich noch einen Selektor, der nur für IE 5.5 greift, dann könnt ich den noch extra behandeln (der bräuchte eh ne minimal andere Position) ...

        mir fällt spontan keiner ein; allerdings muss ich sagen, dass ich zwischen IE 5.0 und 5.5 keine Unterschiede in der Position erwarten würde. Kannst Du das spezifizieren, vielleicht sogar per Beispielseite?

        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. Hallöle,

          Jetzt bräuchte ich noch einen Selektor, der nur für IE 5.5 greift, dann könnt ich den noch extra behandeln (der bräuchte eh ne minimal andere Position) ...
          mir fällt spontan keiner ein; allerdings muss ich sagen, dass ich zwischen IE 5.0 und 5.5 keine Unterschiede in der Position erwarten würde. Kannst Du das spezifizieren, vielleicht sogar per Beispielseite?

          Kann im Moment nichts hochladen, daher hier als Sourcecode:

          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
          <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"><head>
          <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
          <title>Testseite</title>
          <style type="text/css"> /* nur zu Testzwecken direkt im Dokument */
          * div#all
          {
           max-width:76.5em;
           padding-left:85px;
           padding-right:60px;
           position:relative;
           margin:0 auto 0.1em auto;
          }
          ul { background:yellow; } /* fuer bessere Sichtbarkeit */
          * ul#Hauptnavigation
          {
           width:80px;
           position:absolute; left:0; top:0; padding:0; margin:0;
           list-style-type:none;
          }
          /* \*/
          * html ul#Hauptna\vigation { left:-80px; top:0.5em; }
          /* */
          </style>
          </head>
          <body>
          <div id="all">
            <ul id='Hauptnavigation'><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul>
            <div id='Inhalt'>
              <h1>Testseite</h1><p>Ach was muß man oft von bösen<br/>Hackern hören oder lesen</p>
            </div>
          </div></body></html>

          Die gelb hinterlegte ul wird im IE 5.5 über den Text gelegt, bei IE 5.0 und IE 6.0 liegt sie links daneben.

          Robert

          1. Hi,

            was spricht gegen eine Umsetzung mit float statt posdition?
            Das würde Hacks weitgehend ersparen.

            freundliche Grüße
            Ingo

            1. Hallöle,

              was spricht gegen eine Umsetzung mit float statt posdition?
              Das würde Hacks weitgehend ersparen.

              Die Tatsache, daß da, wo auf der Testseite h1 und p stehen, im Original  schon diverse float/clear benutzt werden - und da clear global cleared, kann die linke Liste nicht auch floaten, weil der erste clear für ein Weitermachen unterhalb dieser Liste sorgen würde.

              Robert

              1. Hi,

                ok. aber weitergefragt (weil ich mir vorstellen kann, daß es auch ohne große Hacks gehen könnte):
                Ist das padding für div#all nötig bzw. könnte der Abstand anders erzeugt werden?
                Ist position:relative für div#all nötig für andere Positionierungen außer dem Menü?

                freundliche Grüße
                Ingo

  2. Tachchen!

    Aber wie halte ich IE 5.x davon ab, die Deklarationen anzuwenden?

    Kannst du es mit Tantek kombinieren?

    Gruß

    Die schwarze Piste

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

      Kannst du es mit Tantek kombinieren?

      statt Tantek benutzt man[tm] meistens den Simplified Box Model Hack. Dessen Wirkungsursache kommt auch im Selektor zur Geltung.

      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. Hallöle,

        Kannst du es mit Tantek kombinieren?
        statt Tantek benutzt man[tm] meistens den Simplified Box Model Hack. Dessen Wirkungsursache kommt auch im Selektor zur Geltung.

        Hm. Damit komm ich irgendwie nicht klar ...
        Vielleicht findet Google auch nur Seiten, wo die beiden Hacks nur schlecht erklärt sind ...
        Trotzdem Danke für die Such-Stichworte.

        Robert

  3. Hallöle,

    verfluchter Cache!

    Korrektur der Problemstellung:

    IE 5.5 und IE 6.0 müssen die Deklarationen sehen, alle anderen nicht.

    Danke,

    cu,
    Robert

    1. Hallo Robert,

      Korrektur der Problemstellung:

      IE 5.5 und IE 6.0 müssen die Deklarationen sehen, alle anderen nicht.

      vielleicht helfen dir diese CSS-Weichen:
      http://www.lipfert-malik.de/webdesign/tutorial/css.html#BrowserweichenIE5
      http://www.lipfert-malik.de/webdesign/tutorial/bsp/css-weiche-filter.html

      Grüsse

      Cyx23

  4. Hallo,

    also ohne zusätzliche CSS-Datei, die über conditional comments
    eingebunden wird.

    Was spricht denn gegen einen condional comment? Wenn du den nur für eine
    CSS-Angabe brauchst, mußt du doch dafür keine eigne CSS-Datei einbinden.

    Die Lösung über conditial comments ist in dem Fall m.E. jedem CSS-Hack
    vorzuziehen. Man weiß ja nicht wie zuküftige Browser auf diese Hacks
    reagieren.

    Gruß, Jan

    1. Hallöle,

      Was spricht denn gegen einen condional comment? Wenn du den nur für eine
      CSS-Angabe brauchst, mußt du doch dafür keine eigne CSS-Datei einbinden.

      CSS kommt bei mir grundsätzlich in externe Ressourcen.

      Gegen conditional comments spricht, daß ich lieber nur eine einzige CSS-Datei ändere als Tausende von HTML-Dokumenten.

      Wegen
      * html
      sind sowieso nur IEs betroffen.
      Und sollte da wirklich mal ne neue Version rauskommen, wird eben das CSS angepaßt, falls nötig ...

      cu,
      Robert

      1. Hallo,

        CSS kommt bei mir grundsätzlich in externe Ressourcen.

        OK, wenn es um grundsätzliche Dinge geht, erübrigt sich eine Diskussion,
        ...

        Gegen conditional comments spricht, daß ich lieber nur eine einzige
        CSS-Datei ändere als Tausende von HTML-Dokumenten.

        aber, wenn es wirklich um tausende von HTML-Dokumenten geht, werden die
        ja wohl sowieso irgendwie serverseitig generiert. Damit wäre der Aufwand
        (und auch die minimal größere Menge an Daten, die zum Client geschickt
        werden) nicht relevant.

        Gruß, Jan

      2. Hallo.

        Gegen conditional comments spricht, daß ich lieber nur eine einzige CSS-Datei ändere als Tausende von HTML-Dokumenten.

        Es besteht aber ein himmelweiter Unterschied zwischen der Pflege tausender von HTML-Dokumenten und einer zweiten mittels Conditional Comments eingebundenen CSS-Datei.
        MfG, at

  5. Hallo Robert

    ich suche eine Möglichkeit (wenn irgend möglich rein CSS-basiert, also ohne zusätzliche CSS-Datei, die über conditional comments eingebunden wird).

    Kennst du dies?
    http://www.lipfert-malik.de/webdesign/tutorial/css.html

    Auf Wiederlesen
    Detlef

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

      Kennst du dies?
      http://www.lipfert-malik.de/webdesign/tutorial/css.html

      Genau, dachte ich mir auch gerade, und dort dann:

      Weiche für IE 5.5 - 6

      /* 2002-2003 Kristof Lipfert Duesseldorf  */
        html.*  #test { color:red; }

      Grüße
      Jeena Paradies

  6. Hallo Robert,

    hast du es schon mit dem Comment-Hack probiert? http://w3development.de/css/hide_css_from_browsers/comment/

    aus

    * html ul#Hauptnavigation { /* Deklarationen */ }

    mach

    * html ul#Hauptnavigation/* */ { /* Deklarationen */ }

    Das dürften dann eigentlich nur IE 5.5 und 6 lesen. IE 5, sowie die Mac-IEs bleiben draussen.

    MfG, Mülli

    --
    Viva Colonia!
    1. Hallöle,

      hast du es schon mit dem Comment-Hack probiert? http://w3development.de/css/hide_css_from_browsers/comment/

      Ja, jetzt gerade eben!

      aus

      * html ul#Hauptnavigation { /* Deklarationen */ }
      mach
      * html ul#Hauptnavigation/* */ { /* Deklarationen */ }

      Juhuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu!
      Das funktioniert wie gewünscht!

      Und mit nachgeschaltetem
      * html ul#Hauptnavig\ation/* */ { /* Deklarationen für IE 6 */ }
      krieg ich auch noch die kleinen Unterschiede beseitigt.

      Also

      * html ul#Hauptnavigation/* */ { /* Deklarationen für IE 5.5 und 6 */ }
      * html ul#Hauptnavig\ation/* */ { /* Deklarationen nur für IE 6 */ }

      Ganz herzlichen Dank!
      Natürlich auch an die anderen, die mir Tipps gegeben haben!

      Ein glücklicher Robert

      1. http://centricle.com/ref/css/filters/

        (Kein Text)