I am using the following code from Rachel Andrew book to style my horizontal menu. I want to make all the boxes of the menu same width so they don’t depend on the length of the word itself e.g now box containing word “blog” is shorter than box containing “contact” etc.
If you place the display:inline in the same rules as the display:inline-block then the element never gets haslayout because the display:inline-block is ignored and only display:inline is seen.
If you separate the rule as above then what happens is that IE6/7 see the display:inline-block and apply haslayout to the element (this is probably the only real use of display:inline-block). In the next rule you set the element to display:inline and in IE6/7 an inline element that is in haslayout mode behaves just like inline-block (this is probably a throwback to ie5 which allowed dimensions on inline elements by default).
The display:inline-block is a haslayout trigger for both inline and block elements which is why you can’t use some of the other haslayout triggers. zoom:1.0 is also a haslayout trigger for both inline and block elements and you can can actually create an inline-block element in IE6/7 without using inline-block. All you do is make the element inline and apply haslayout suitable for an inline element.