The first method:
@mixin has-layout-block {
@if $legacy-support-for-ie {
// This makes ie6 get layout
display: inline-block;
// and this puts it back to block
& {
display: block; } } }
will compile to something like:
selector {
display: inline-block;
}
selector {
display: block;
}
And the second method:
@mixin has-layout-zoom {
@if $legacy-support-for-ie6 or $legacy-support-for-ie7 {
*zoom: 1; } }
will compile to something like:
selector {
*zoom: 1;
}
Both methods will successfully give an element hasLayout, so purely from that perspective it doesn't matter which you use.
The first method will pass validation, whereas the second method will not. However, the validation failing in the second method is a complete non-issue; the hack used is "safe".
I use the second method everywhere because it's shorter and doesn't involve two rules.
It's not really worth worrying about (IE6/7 are dying), but if you want more information read this and this.