// FROM The Compass Framework (compass-style.org) // // Copyright (c) 2009 Christopher M. Eppstein // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in // the Software without restriction, including without limitation the rights to // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of // the Software, and to permit persons to whom the Software is furnished to do so, // subject to the following conditions: // // The above copyright notice and this permission notice shall be included in all // copies or substantial portions of the Software. No attribution is required by // products that make use of this software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // // Except as contained in this notice, the name(s) of the above copyright holders // shall not be used in advertising or otherwise to promote the sale, use or other // dealings in this Software without prior written authorization. // // Contributors to this project agree to grant all rights to the copyright holder // of the primary product. Attribution is maintained in the source control history // of the product. // // Based on [Eric Meyer's reset](http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/) // Global reset rules. // For more specific resets, use the reset mixins provided below // // *Please Note*: tables still need `cellspacing="0"` in the markup. @mixin global-reset { html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td { @include reset-box-model; @include reset-font; } body { @include reset-body; } ol, ul { @include reset-list-style; } table { @include reset-table; } caption, th, td { @include reset-table-cell; } q, blockquote { @include reset-quotation; } a img { @include reset-image-anchor-border; } } // Reset all elements within some selector scope. To reset the selector itself, // mixin the appropriate reset mixin for that element type as well. This could be // useful if you want to style a part of your page in a dramatically different way. // // *Please Note*: tables still need `cellspacing="0"` in the markup. @mixin nested-reset { div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, pre, a, abbr, acronym, address, code, del, dfn, em, img, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, caption, tbody, tfoot, thead, tr { @include reset-box-model; @include reset-font; } table { @include reset-table; } caption, th, td { @include reset-table-cell; } q, blockquote { @include reset-quotation; } a img { @include reset-image-anchor-border; } } // Reset the box model measurements. @mixin reset-box-model { margin: 0; padding: 0; border: 0; outline: 0; } // Reset the font and vertical alignment. @mixin reset-font { font: { weight: inherit; style: inherit; size: 100%; family: inherit; }; vertical-align: baseline; } // Resets the outline when focus. // For accessibility you need to apply some styling in its place. @mixin reset-focus { outline: 0; } // Reset a body element. @mixin reset-body { line-height: 1; color: black; background: white; } // Reset the list style of an element. @mixin reset-list-style { list-style: none; } // Reset a table @mixin reset-table { border-collapse: separate; border-spacing: 0; vertical-align: middle; } // Reset a table cell (`th`, `td`) @mixin reset-table-cell { text-align: left; font-weight: normal; vertical-align: middle; } // Reset a quotation (`q`, `blockquote`) @mixin reset-quotation { quotes: "" ""; &:before, &:after { content: ""; } } // Resets the border. @mixin reset-image-anchor-border { border: none; } // Unrecognized elements are displayed inline. // This reset provides a basic reset for html5 elements // so they are rendered correctly in browsers that don't recognize them // and reset in browsers that have default styles for them. @mixin reset-html5 { article, aside, canvas, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary { @include reset-box-model; display: block; } } // Resets the display of inline and block elements to their default display // according to their tag type. Elements that have a default display that varies across // versions of html or browser are not handled here, but this covers the 90% use case. // Usage Example: // // // Turn off the display for both of these classes // .unregistered-only, .registered-only // display: none // // Now turn only one of them back on depending on some other context. // body.registered // +reset-display(".registered-only") // body.unregistered // +reset-display(".unregistered-only") @mixin reset-display($selector: "", $important: false) { #{append-selector(elements-of-type("inline"), $selector)} { @if $important { display: inline !important; } @else { display: inline; } } #{append-selector(elements-of-type("block"), $selector)} { @if $important { display: block !important; } @else { display: block; } } }