I want to remove the clearfix
class from my HTML and include a clearfix mixin in my SCSS (Rails 3.1 application). What is the best approach to this?
I am thinking of just taking the HTML 5 Boilerplate clearfix and turning it into a mixin, then @including it within the CSS for elements that need clearfixing.
Copied from HTML5 Boilerplate:
/* The Magnificent Clearfix: Updated to prevent margin-collapsing on child elements. http://j.mp/bestclearfix */
.clearfix:before, .clearfix:after { content: "\0020"; display: block; height: 0; overflow: hidden; }
.clearfix:after { clear: both; }
/* Fix clearfix: blueprintcss.lighthouseapp.com/projects/15318/tickets/5-extra-margin padding-bottom-of-page */
.clearfix { zoom: 1; }
Is there a drawback to this? Is there a better way? Can I safely remove clearfix from my HTML markup this way?
Why not use the Compass framework? It already provides mixins for clearfix among a host of other useful mixins and utilities. It's always better to look for existing tools rather than to have to maintain additional code yourself.
To achieve less code output by using
@extend
, define clearfix as placeholder (here just for modern browsers w/o IE 6+7):Sass code:
CSS output will be:
I should probably have added - this is the solution I came up with. I am still pretty new to all this so I don't know if this will actually do the same job as setting an element's class to clearfix and using the HTML5 boilerplate code above.
Edit: It's best to use
@extend
instead of a mixin as it will produce much less CSS code. Also, it's useful to use a silent class (denoted by%
) when using@extend
. This prevents unexpected CSS rules and eliminates the rule you're extending if it's not being used directly.