Why are inline-block elements not displayed correctly in Internet Explorer 8?
The old versions of IE don't understand the inline-block
for block-level elements.
The reason why inline-block
works for inline elements is because they did it so it triggers hasLayout
. And the has layout for inline elements works exactly like an inline-block
.
So, to make inline-block
work with block-level elements, make them inline and somehow trigger the hasLayout
, like, using zoom: 1
.
So, for you code, there are two ways: change div
s to span
s, or add inline hacks (or move the code to external stylesheets and use conditional comments). The version with inline hacks would look like this:
<div style='width: 200px; border: 1px solid black;'>
<div style='display: inline-block; width: 70px; border: 1px solid green;*display:inline;zoom:1;'>
asdfasdf<br />asdf
</div>
<div style='display: inline-block; width: 70px; border: 1px solid green;*display:inline;zoom:1;'>
asdfasdf<br />were
</div>
</div>
display: inline-block;
*zoom: 1;
*display: inline;
you can add inline-block for other browser but for IE you can add style with *. it only works in ie