I learned today what actually causes the majority of the CSS problems I run into with IE. It’s a property of each page element called hasLayout. Only the standard HTML tags (P, H1, BLOCKQUOTE, etc) have layout by default. There are a number of ways to force hasLayout to be enabled without affecting the layout of the element. The easiest and most fool proof that I’ve found is to add the following style to your object:
If you are familiar with the underscore hack you know that only IE will respect this rule.
For a much more detailed explaination you can visit this well written page: