Alexander: Verhalten des IE 6 im standards-compliant mode und Mozilla

Salü,

Seit version 6 unterstützt der IE ja den standards-compliant mode, der ja CSS angeblich "besser" und "standardkonformer" darstellen soll.

Ich nutze auf einen Seiten bisher folgenden Doctype: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

Damit ist ja der standards-compliant mode deaktiviert, da ich ja die URL zu der DTD nicht angeben habe (wieso dieses Verhalten so ist, weiß ich nicht, da muß man MS fragen).

Hier zeigt der IE, Opera und Mozialla 0.9.6 (ok, ist nicht ganz der aktuelle, aber die Gecko-Engine ist doch die selbe wie beim 0.9.9, oder???) meine Seiten so an, wie ich sie haben möchte. Laut Validator gibet auch nichts zu möppern...

Wenn ich nun den Doctype nach <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> ändere, vollziehen meine Seiten im IE und im Mozilla eine wundersame Mutation:

Im IE sind alle Tabellenzellen, denen ich nicht explizit eine Ausrichtung zugewiesen haben nicht mehr linksbündig sondern zentriert ausgerichtet. Why? Mozilla (dem ich im übrigen eine standardnähere Interpretation zutraue) und Opera machen dies nicht.

Dafür zieht Mozilla meine Tabellen etwas in die Höhe, was ich aber die Tatsache zurückführe, dass in einigen Zellen nur Grafiken und kein Text ist. Eine etwas andere Ausrichtung könnte dies eventuell lösen, hier bin ich aber noch ein wenig am "experimentieren".

Der einzige Browser, der alles meinen Erwartungen entsprechend anzeigt ist nur Opera.

Wieso machen IE und Mozilla diese Dinge, nur weil ich den Doctype erweitere?

Viele Grüße...

Alex (:

  1. hi

    Im IE sind alle Tabellenzellen, denen ich nicht explizit eine Ausrichtung zugewiesen haben nicht mehr linksbündig sondern zentriert ausgerichtet. Why? Mozilla (dem ich im übrigen eine standardnähere Interpretation zutraue) und Opera machen dies nicht.

    ihmo wäre 'left' logischer.. Einen Grund gibt's in der HTML-Spec nicht!

    Dafür zieht Mozilla meine Tabellen etwas in die Höhe, was ich aber die Tatsache zurückführe, dass in einigen Zellen nur Grafiken und kein Text ist. Eine etwas andere Ausrichtung könnte dies eventuell lösen, hier bin ich aber noch ein wenig am "experimentieren".

    Per default sitzt eine Grafik auf 'vertical-align:baseline'. Dies ändert sich in den meisten Browsern ungefragt zu 'bottom', wenn nur Grafiken in der Zelle sind.

    Grüße aus Lüneburg

    Kai

    1. Moin,

      ihmo wäre 'left' logischer.. Einen Grund gibt's in der HTML-Spec nicht!

      Jepp, sehe ich genauso (;  Leider hilft mir dies aber nicht, wenn der IE es anders sieht...

      Per default sitzt eine Grafik auf 'vertical-align:baseline'. Dies ändert sich in den meisten Browsern ungefragt zu 'bottom', wenn nur Grafiken in der Zelle sind.

      Ja, aber eine eigentliche baseline gibt es ja nicht, weshalb es unten bündig ausgerichtet sein sollte. Ein explizites 'vertical-align: baseline' half da auch nichts, es mußte ein explizites 'vertical-align: bottom' her.

      Aber die eigentliche Überraschung, die ich dabei erlebt habe ist, daß auch der Mozilla eine Art standards-compliant mode unterstützt, da diese Veränderungen in der Darstellung erst nach dem Ändern bzw. Erweitern des Doctypes auftraten.

      Diese ganze Geschichte ist in sofern ärgerlich, daß ich wg. eines kleinen Änderung im Doctype die Seiten zwar nicht umschreiben aber doch zumindest mit den entsprechenden Atributten erweitern muß.

      Eine unendliche Geschichte...

      Alex |:

      1. hi

        Ja, aber eine eigentliche baseline gibt es ja nicht, weshalb es unten bündig ausgerichtet sein sollte. Ein explizites 'vertical-align: baseline' half da auch nichts, es mußte ein explizites 'vertical-align: bottom' her.

        wieso sollte da keine baseline sein, nur weil kein Text dort steht?

        Aber die eigentliche Überraschung, die ich dabei erlebt habe ist, daß auch der Mozilla eine Art standards-compliant mode unterstützt, da diese Veränderungen in der Darstellung erst nach dem Ändern bzw. Erweitern des Doctypes auftraten.

        manche Websize hat so ein dreckiges HTML, dass man da mit normalem Browserverhalten nichts erreicht. Selbst im compliant-Mode läßt sich Mozilla noch immer vieles gefallen, da anständige Websites fast eine Rarität sind :(

        Diese ganze Geschichte ist in sofern ärgerlich, daß ich wg. eines kleinen Änderung im Doctype die Seiten zwar nicht umschreiben aber doch zumindest mit den entsprechenden Atributten erweitern muß.

        das kennt man ja langsam von jedem neuen Browser...

  2. Hallo Alexander,

    Wieso machen IE und Mozilla diese Dinge, nur weil ich den Doctype erweitere?

    Mozilla kennt die Unterscheidung zwischen Quirks und Strict Mode, d.h.
    in Deinem Fall liegt einmal der erste Fall und einmal der zweite Fall
    vor, so dass es zu dem unterschiedlichen Aussehen der Seite kommt:

    http://mozilla.org/docs/web-developer/quirks/
    http://mozilla.org/docs/web-developer/quirks/doctypes.html
    http://www.mozilla.org/docs/web-developer/quirks/quirklist.html

    Mit der Verwendung der CSS-Eigenschaften line-heigt und/oder padding
    sollten Deine Problem zumindest im Mozilla lösbar sein:
    http://de.selfhtml.org/css/eigenschaften/ausrichtung.htm#line_height
    http://de.selfhtml.org/css/eigenschaften/innenabstand.htm#padding

    Viele Grüße,
    Stefan

    1. Hi,

      Mozilla kennt die Unterscheidung zwischen Quirks und Strict Mode, d.h.
      in Deinem Fall liegt einmal der erste Fall und einmal der zweite Fall
      vor, so dass es zu dem unterschiedlichen Aussehen der Seite kommt:

      Das wußte ich nicht. Ich hatte bisher nur gedacht, daß der IE eine solche Funktion hat. Danke für die Info.

      Mit der Verwendung der CSS-Eigenschaften line-heigt und/oder padding
      sollten Deine Problem zumindest im Mozilla lösbar sein:
      http://de.selfhtml.org/css/eigenschaften/ausrichtung.htm#line_height
      http://de.selfhtml.org/css/eigenschaften/innenabstand.htm#padding

      Wie schon in der Antwort auf Kais Posting konnte ich im Mozilla das Problem mit "vertical-align: bottom" lösen und eine einfache Textausrichtung ist auch im IE kein Problem. Das "doofe" ist nur, daß man sämtliche Seiten abändern muß.

      Trotzdem danke...

      Alex (:

  3. Hallo,

    Im IE sind alle Tabellenzellen, denen ich nicht explizit eine Ausrichtung zugewiesen haben nicht mehr linksbündig sondern zentriert ausgerichtet. Why?

    Vermutung: Es steht align="center" im <table>-Tag und damit wird eben der folgende _Tabelleninhalt_ und nicht die Tabelle selbst zentriert. Ansonsten sollte linksbuendig (also left) der default-Wert fuer td sein.

    MfG, Thomas

    1. Hi,

      Vermutung: Es steht align="center" im <table>-Tag und damit wird eben der folgende _Tabelleninhalt_ und nicht die Tabelle selbst zentriert. Ansonsten sollte linksbuendig (also left) der default-Wert fuer td sein.

      Dies kann ich definitiv ausschließen, daß ein align="center" im <table>-tag steht. Ich habe aber, um die gesamte Seite zentriert auszurichten, ein <div align="center"> am Anfang der Seite stehen, was ich aufgrund Deiner Vermutung mal entfernt habe. Dies löste das Problem _NICHT_. Es gibt also scheinbar keinen Grund, weswegen der IE die Tabellenzelleninhalte zentriert.

      Viele Grüße...

      Alex |:

      1. Hallo,

        Es gibt also scheinbar keinen Grund, weswegen der IE die Tabellenzelleninhalte zentriert.

        Also in diesem Beispiel, welches im IE 6 in den genannten Modus schaltet - stehen die td-Werte schoen linksbuendig.

        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
        <html>
        <head>
        <title>Test by TM</title>
        </head>
        <body onload="if(document.compatMode && document.compatMode=='CSS1Compat')alert('IE 6 im standards-compliant mode')">
        <table border="1" width="100%">
        <tr>
        <td>1</td><td>2</td><td>3</td>
        </tr>
        </table>
        </body>
        </html>

        Es wird also doch eine andere Angabe mit center in HTML oder CSS geben.

        MfG, Thomas

        1. Hallo Thomas,

          Es wird also doch eine andere Angabe mit center in HTML oder CSS geben.

          Du hattest Recht, allerdings trat ein "Effekt" auf/ein, den ich so nicht erwartet hätte: Der IE scheint eine Ausrichtung, solange diese nicht aufgehoben ist, auf alle in der Verschachtelung tiefer liegende Elemente anzuwenden und nicht nur auf das nächst liegende Element.

          Hört sich komisch an, darum erkläre ich es noch mal anders:

          Ich habe die Tabelle in Deinem Beispiel mit <div align="center"> eingeschlossen. Bisher (im _NICHT_ standards-compliant mode) bezog der IE die Center-Angabe im <div> nur auf die gesamte Tabellenausrichtung, nicht auf den Inhalt in den Tabellenzellen.

          Im standards-compliant mode wendet der IE diese Ausrichtung solange an, bis diese "beendet" wird, sprich das <div> geschlossen wird, oder eine neue Ausrichtung ausgewiesen wird (also eine Verschachtelung angewendet wird). In diesem Beispiel werden also sowohl die gesamte Tabelle als auch die Tabelleninhalte/Zellen zentriert.

          Ob dies nur bei Ausrichtungen oder auch anderen Formatierungen der Fall ist, kann ich (noch) nicht sagen...

          Im Beispiel habe ich die zweite Zelle mal rechtsseitig ausgerichtet, die gesamte Tabelle in ein <div align="center"> gesetzt und zur besseren Betrachtung die tabellenbreite auf 50% gesetzt.

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
          <html>
          <head>
          <title>Test by TM</title>
          </head>
          <body onload="if(document.compatMode && document.compatMode=='CSS1Compat')alert('IE 6 im standards-compliant mode')">
          <div align="center">
          <table border="1" width="50%">
          <tr>
          <td>1</td><td align="right">2</td><td>3</td>
          </tr>
          </table>
          </div>
          </body>
          </html>

          Die Fragestellung hat sich nun geändert: Sie lautet nicht mehr, weshalb der IE im standards-compliant mode Tabellenzellen per default zentriert, sondern weshalb der IE Ausrichtungen nicht nur beim Nachfolge-Element sondern, auch auf dessen Nachfolge-Elemente anwendet?

          Viele Grüße...

          Alex - langsam kommt Licht ins Dunkel - (;