JotKa: text-ident und DOCTYPE beim IE

Hallo Leute,

bei folgender html-Seite:
   <html>
      <head>
         <style type="text/css">
            p    { text-indent:3ex; }
            .foo { text-indent=0; }
         </style>
      </head>
      <body>
         <p>blabla standard</p>
         <p class="foo">blabla mit foo</p>
      </body>
   </html>

bekomme ich im IE 5.5 ebenso wie im IE 6 das, was ich erwarte: erster Absatz eingerückt, zweiter nicht eingerückt. So weit, so gut.

Füge ich nun am Anfang der Seite folgendes DOCTYPE-Statement hinzu:
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

dann liefert der IE 5.5 weiterhin das Erwartete, der IE 6 dagegen rückt nun auch den zweiten Absatz ein.

Bug oder Feature? Wer kann mir weiterhelfen? Sind die Spezifikationen von HTML und XHTML da wirklich unterschiedlich? Ich kann es mir nicht vorstellen, habe dazu auch nichts gefunden.

Herzlichen Dank für jeden Tip!

JotKa

  1. Hallo,

    bei der Angabe Deiner DTD schaltet der IE 6 in den Standards-Mode und haut Dir den Syntaxfehler in der CSS-Definition für Deinen zweiten Absatz gnadenlos um die Ohren.

    Viele Grüße
    Carsten

    1. bei der Angabe Deiner DTD schaltet der IE 6 in den Standards-Mode und haut Dir den Syntaxfehler in der CSS-Definition für Deinen zweiten Absatz gnadenlos um die Ohren.

      Ein paar Sekunden vor der Antwort habe ich's selbst gesehen. Gleichwohl herzlichen Dank!

      JotKa

  2. Hallo, JotKa.

    Füge ich nun am Anfang der Seite folgendes DOCTYPE-Statement hinzu:
       <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

    Das löst u.a. den standards compliant rendering mode aus, sodass der MSIE das CSS-Boxmodell gemäß dem CSS-Standard interpretiert, außerdem ist die Fehlertolerenz geringer. Näheres dürfte sich im MSDN finden, z.B.: http://msdn.microsoft.com/library/en-us/dnie60/html/cssenhancements.asp.

    dann liefert der IE 5.5 weiterhin das Erwartete, der IE 6 dagegen rückt nun auch den zweiten Absatz ein.

    .foo { text-indent=0; }

    ^
    Eigenschaft und Wert müssen mit einem Doppelpunkt getrennt werden, es ist voraussehbar, dass IE 6 diesen Fehler im standards compliant mode als Fehler erkennt. Beim IE 5.5 war diese Syntax AFAIK anscheinend Gang und Gebe, jedoch ist sie eine Erfindung von Microsoft, deshalb ist es richtig, dass IE 6 die komplette Deklaration ignoriert, wenn die dokumenttypdefinition selbigen strikten Interpretationsmodus auslöst.

    Bug oder Feature? Wer kann mir weiterhelfen? Sind die Spezifikationen von HTML und XHTML da wirklich unterschiedlich?

    Dein Fall hat m.M.n. nichts mit den Unterschieden zwischen HTML und XHTML zu tun. Wenn du eine volle HTML 4.01-DTD mit SYSTEM identifier an den Anfang des Dokuments stellen würdest, würdest du vermutlich dieselbe Beobachtung wie mit der XHTML-DTD machen. Das Problem dürfte alleinig an der fehlerhaften CSS-Deklaration liegen.

    Mich würde sehr interessieren, woher du das mit dem Gleichheitszeichen als Trennzeichen zwischen Eigenschaft und Wert hast. Selfhtml verbreitet nicht so einen Unsinn. Vielleicht war es nur ein Flüchtigkeitsfehler (siehe HTML-Attribute oder Wertzuweisungen bei Programmiersprachen).

    Mathias

    1. .foo { text-indent=0; }
                           ^
      Mich würde sehr interessieren, woher du das mit dem Gleichheitszeichen als Trennzeichen zwischen Eigenschaft und Wert hast. Selfhtml verbreitet nicht so einen Unsinn. Vielleicht war es nur ein Flüchtigkeitsfehler (siehe HTML-Attribute oder Wertzuweisungen bei Programmiersprachen).

      Das habe ich nirgends gelesen, es ist in der Tat ein Flüchtigkeitsfehler ... und vermutlich unbewußt einfach so geschrieben wie bei Attributen. Ich habe es beim vorherigen Drüberschauen einfach nicht gesehen. Darum umsomehr meinen herzlichen Dank ... manchmal bin ich auch bei offenen Augen blind!

      JotKa