That is the question. And there is a lot of debate on the subject. Me, I can’t get around using hacks with the complicated designs I have to code. I’ve found that IE7, although better than IE6 by a long shot as far as standards compliance goes, still has some of the same issues as IE6.
So this is what I do. I link in an IE hacks stylesheet via conditional comments (this is what Microsoft recommends).
<link rel="stylesheet" type="text/css" href="iehacks.css" />
Then I put any hacks that apply to both IE browsers into that stylesheet. No fancy stuff needed. If I need to make an IE6-only hack, I use the good ol’ * html hack.
So, if we launch our page in IE7, it loads the stylesheet and only picks up the non-star html hacks. If we launch our page in IE6, it picks up all the hacks.
Works for me.