// // Helper classes // @mixin h5bp-helpers { .ir { @include image-replacement; } .hidden { @include hidden; } .visuallyhidden { @include visually-hidden; } .invisible { @include invisible; } .clearfix { @include micro-clearfix; } } // Image replacement @mixin image-replacement($img: none, $x: 50%, $y: 50%) { background-color: transparent; border: 0; overflow: hidden; // IE 6/7 fallback *text-indent: -9999px; &:before { content: ""; display: block; width: 0; height: 150%; } @if $img != none { background-image: image-url($img); background-position: $x $y; } } // Uses image dimensions @mixin sized-image-replacement($img, $x: 50%, $y: 50%) { @include image-replacement($img, $x, $y); width: image-width($img); height: image-height($img); } // Hide from both screenreaders and browsers: h5bp.com/u @mixin hidden { display: none !important; visibility: hidden; } // Hide only visually, but have it available for screenreaders: h5bp.com/v @mixin visually-hidden { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; // Extends the .visuallyhidden class to allow the element to be focusable // when navigated to via the keyboard: h5bp.com/p &.focusable:active, &.focusable:focus { clip: auto; height: auto; margin: 0; overflow: visible; position: static; width: auto; } } // Hide visually and from screenreaders, but maintain layout @mixin invisible { visibility: hidden; } // Clearfix: contain floats // // For modern browsers // 1. The space content is one way to avoid an Opera bug when the // `contenteditable` attribute is included anywhere else in the document. // Otherwise it causes space to appear at the top and bottom of elements // that receive the `clearfix` class. // 2. The use of `table` rather than `block` is only necessary if using // `:before` to contain the top-margins of child elements. @mixin micro-clearfix { &:before, &:after { content: " "; // 1 display: table; // 2 } &:after { clear: both; } // For IE 6/7 only // Include this rule to trigger hasLayout and contain floats. & { *zoom: 1; } }