ie schließt tags normalerweise am seitenende, der ff da wo die logik es verlangt.
so ein blödsinn - html bzw sgml hat exakte regeln, wann ein nicht explizit geschlossenes element geschlossen wird - in dem fall wird das p-element mit dem inhalt "foo" direkt nach seinem inhalt geschlossen
an diese regeln hält sich auch der ie - lediglich mit css hat er seine schwierigkeiten
»»im ie steht der rote block auf der linken seite. im ff ist er (als ob kein systaxfehler drin währe) zentriert.
das liegt nicht am ie oder firefox sondern am rendermodus - ohne doctype zwingst zudindest den ie6 in den quirksmode - dort kann er nichts mit margin: auto anfangen und stellt es linksbündig dar - womit wir wieder zum schluss kommen: mit valdem code funktionierts wie es soll - das hat nichts mit fehlertoleranz zu tun sondern schlichtweg mit empirischen fakten
wenn du absichtlich fehler einbaust, und der browser darum im quirksmode css-fehler produziert, hat ds NICHTS mit html-fehlern oder dem html/sgml-parser zu tun, sondern lediglich mit dem rendermodus der daraus ermittelt wird
dein beispiel wäre übrigens mit einem passenden doctype auch valide und wird damit wie zu erwarten richtig gerendert
ja, wahrscheinlich ist es valide aber ich bezweifle das es gewollt ist
dass der code nicht valide ist (genauergesagt eine katastrophe), hat der validator bereits festgestellt
dass es gewollt ist oder nicht weiss ich auch nicht - ich denke auch nicht, dass es gewollt sein wird - aber ohne validen code oder eine nachvollziehbare fehlerbeschreibung