Was ich nicht verstehe, wie der IE damit umgeht. Wenn er inline-block nicht kennt
Kennt er aber! Aber nicht, wie es der Standard vorschreibt. Wie gesagt hat inline-block keine andere Wirkung, als hasLayout zu triggern. An der Anzeigeweise ändert es nichts - Blockelemente werden als Block und Inline-Elemente inline angezeigt.
http://www.brunildo.org/test/InlineBlockLayout.html
Denn um ehrlich zu sein ich verstehe Gunnars Hack nicht so ganz.
* html li{display: inline;}
Ist ein Selektor-Hack, den nur der IE 6 interpretiert.
Aus Sicht von HTML ist dieser Selektor Unsinn, weil es kein Element oberhalb von html gibt. IE 6 interpretiert den Selektor trotzdem.
*:first-child+html li{ display: inline;}
Ein weiterer Selektor-Hack, der m.W. darauf beruht, dass der IE 7 den DOCTYPE irrtümlicherweise als DOM-Knoten ansieht, der im CSS berücksichtigt wird.
Andere Browser ignorieren diese Regel, weil es kein Element vor dem html-Element gibt. Das html-Element hat keine Geschwister-Elemente.
Warum ingnoriert der IE dann die das vorhande display:inline-block;?
Weil eine späterer Regel mit display:inline (mit einem Selektor mit gleicher oder höherer Spezifität) die vorherige Regel mit display:inline-block überschreibt.
Mathias