Definitive Guide to Taming the IE6 Beast
sixrevisions.com
sixrevisions.com
But I prefer to use a different approach: conditional classes on the body tag. For example:
<!--[if lt IE 7 ]> <body class="ie6"> <![endif]-->
<!--[if IE 7 ]> <body class="ie7"> <![endif]-->
<!--[if IE 8 ]> <body class="ie8"> <![endif]-->
<!--[if !IE]><!--> <body> <!--<![endif]-->
Then you can write IE-specific rules without CSS hacks: body div#container { background-color: white; }
body.ie6 div#container { background-color: red; }
And all your related styles can be grouped together in the same file.via http://paulirish.com/2008/conditional-stylesheets-vs-css-hac... and http://www.paulhammond.org/2008/10/conditional/
It's also much, much easier to maintain and minimizes the code you need to write, allowing for proper style cascades.
Those of us who were around back in the day recall both IE4 and NN3 allowing one to specify the Width of an object at 100px, with the refreshing expectation that nomatter what padding or borders you applied to it, the width of the rendered element would be 100px.
That was the universal standard at the time that the CSS specifications were written. For reasons nobody can explain, the W3C came out with a box model that broke that convention, and that's the model that NN6 followed.
Netscape Navigator 6, you will recall, was incapable of rendering Netscape.com correctly when it was first released. That's because Netscape.com was designed to be viewed by the current state of the art browsers on the market, both of which interpreted the box model the way that Internet Explorer did until recently.
The casual observer who is still using such a dinosaur is never going to be bothered.
This has solved about 90% of the CSS-related cross-browser layout problems I've experienced.
Do not use hacks unless you absolutely must!
You should never need to target a non-Microsoft browser. When you need to target IE,
* html selector (IE6-inclusive)
and html:not([dummy]) selector (IE7-exclusive)
Even though they work, these are for last resorts and should pretty much never be used. Most of the time that I see a cross-browser hack used, it really was due to the author's poor understanding of the CSS issue at hand and would've been corrected with good defensive styling using simple, well-supported styles.IE6 isn't as bad as y'all make it out to be. Sure, we can't use fancy CSS3 selectors or HTML5, but you can't on IE7 or 8 either...