Quote Originally Posted by oddz
Straight from Web Standards Creativity with some class name changes. Its the one I prefer.

Code:
.encapsulate:after {
    content: ".";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden;
}

/* IE7 still a ******* */
*+html .encapsulate:after {
    display: inline-block;
    display: block;
}

/* trigger hasLayout in <=IE6 \*/
* html .encapsulate {
       height: 1&#37;;
}
/* end trigger */
Either you have copied it incorrectly or the original is flawed but the example above will not work in IE7 for reasons I have already mentioned.

First of all IE7 has no support for the pseudo element :after so the IE7 hacks you added (*+html) will do nothing at all.

If you meant to write it without the :after element like this instead:
Code:
/* IE7 still a ******* */
*+html .encapsulate {
display: inline-block;
display: block;
}
Then it still won't work for the issues I mentioned and linked to in suzy's article above.

For the method to work properly it would need to look like this;

Code:
.encapsulate:after {
    content: ".";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden;
}

/* IE7 still a ******* */
*+html .encapsulate {
    display: inline-block;
}
*+html .encapsulate {
    display: block;
}
/* trigger hasLayout in <=IE6 \*/
* html .encapsulate {
       height: 1%;
}
/* end trigger */
Which in the end is a total waste of time from the original version as you have simply added more hacks into the mix and made it longer than before

I don't see any need to change the name from .clearfix as it is long established name now and everyone now knows what it means and therefore aids readability. It may have been the wrong choice originally but I see little point in changing it now.