UNPKG

initialize-css

Version:

Initialize.css is a complete and customizable collection of CSS best practices based on Normalize.css and HTML5 Boilerplate. Available in CSS and configurable SASS (SCSS) and LESS format.

680 lines (540 loc) 13.9 kB
/*! * Initialize.css (v1.4.0) is a complete and customizable collection of CSS best practices based on Normalize.css and HTML5 Boilerplate. * http://jeroenoomsnl.github.io/initialize-css * * HTML5 Boilerplate: https://github.com/h5bp/html5-boilerplate * Normalize.css: http://github.com/necolas/normalize.css */ // ========================================================================== // Config // ========================================================================== // // Predefined values // @initialize-box-sizing: border-box; @initialize-font-family: sans-serif; @initialize-font-size: 1em; @initialize-line-height: 1.4; // // Options // @initialize-dinosaur-mode: false; // toggle support for IE8, IE9 & IE10 @initialize-print-styles: false; // toggle HTML5 Boilerplate print styles @initialize-html5-boilerplate-overwrites: false; // toggle HTML5 Boilerplate overwrites // // Optional values // @initialize-color: null; @initialize-heading-color: null; @initialize-heading-margins: null; @initialize-heading-font-family: null; @initialize-block-margins: null; // ========================================================================== // Helpers // ========================================================================== // // Mixin for optional properties // .optional-prop(@property, @value) when not(@value=null) { @{property}: @value; } /* ========================================================================== General ========================================================================== */ /** * 1. Set default font family to @initialize-font-family (default: sans-serif) * 2. Prevent iOS and IE text size adjust after device orientation change, * without disabling user zoom * 3. Configurable defaults */ html { .optional-prop(color, @initialize-color); .optional-prop(box-sizing, @initialize-box-sizing); font-family: @initialize-font-family; /* 1 */ line-height: @initialize-line-height; /* 3 */ font-size: @initialize-font-size; /* 3 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ } /* * Remove default margin */ body { margin: 0; } /* * Inheriting box-sizing * https://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/ */ *, *:before, *:after { box-sizing: inherit; } /* ========================================================================== HTML5 display defenitions ========================================================================== */ /** * Add the correct display in IE 9-. * 1. Add the correct display in Edge, IE, and Firefox. * 2. Add the correct display in IE. */ .html5-display-old(@initialize-dinosaur-mode) when (@initialize-dinosaur-mode = true) { article, aside, details, /* 1 */ figcaption, figure, footer, header, hgroup, main, /* 2 */ menu, nav, section { display: block; } } .html5-display-old(@initialize-dinosaur-mode); .html5-display-new(@initialize-dinosaur-mode) when (@initialize-dinosaur-mode = true) { details, /* 1 */ main /* 2 */ { display: block; } } .html5-display-new(@initialize-dinosaur-mode); /* * Add the correct display in all browsers. */ summary { display: list-item; } /* * Correct `inline-block` display not defined in IE 8/9. */ audio, canvas, video { & when (@initialize-dinosaur-mode = true) { display: inline-block; /* 1 */ } vertical-align: baseline; /* 2 */ } /* * Prevent modern browsers from displaying `audio` without controls. * Remove excess height in iOS 5 devices. */ audio:not([controls]) { display: none; height: 0; } /* * Address `[hidden]` styling not present in IE 8/9/10. * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22. */ [hidden], template { display: none; } /* ========================================================================== Links ========================================================================== */ /* * Remove the gray background color from active links in IE 10. */ a when (@initialize-dinosaur-mode = true) { background-color: transparent; } /* * Improve readability of focused elements when they are also in an * active/hover state. */ a:active, a:hover { outline: 0; } /* ========================================================================== Text-level semantics ========================================================================== */ /** * 1. Remove the bottom border in Chrome 57- and Firefox 39-. * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. */ abbr[title] { border-bottom: none; /* 1 */ text-decoration: underline; /* 2 */ text-decoration: underline dotted; /* 2 */ } /** * Prevent the duplicate application of `bolder` by the next rule in Safari 6. */ b, strong { font-weight: inherit; } /** * Add the correct font weight in Chrome, Edge, and Safari. */ b, strong { font-weight: bolder; } /** * Add the correct font style in Android 4.3-. */ dfn { font-style: italic; } /** * Correct the font size and margin on `h1` elements within `section` and * `article` contexts in Chrome, Firefox, and Safari. */ h1 { font-size: 2em; margin: 0.67em 0; } /* * Address styling not present in IE 8/9. */ mark when (@initialize-dinosaur-mode = true) { background: #ff0; color: #000; } /** * Add the correct font size in all browsers. */ small { font-size: 80%; } /** * Prevent `sub` and `sup` elements from affecting the line height in * all browsers. */ sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } sup { top: -0.5em; } sub { bottom: -0.25em; } /* ========================================================================== Embedded content ========================================================================== */ /** * Remove the border on images inside links in IE 10-. */ img when (@initialize-dinosaur-mode = true) { border: 0; } /** * Hide the overflow in IE. */ svg:not(:root) { overflow: hidden; } /* ========================================================================== Grouping content ========================================================================== */ /* * Address margin not present in IE 8/9 and Safari. */ code, kbd, pre, samp { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ } /** * Add the correct margin in IE 8. */ figure { margin: 1em 40px; } /** * 1. Add the correct box sizing in Firefox. * 2. Show the overflow in Edge and IE. */ hr { box-sizing: content-box; /* 1 */ height: 0; /* 1 */ overflow: visible; /* 2 */ } /* ========================================================================== Forms ========================================================================== */ /** * 1. Change the font styles in all browsers (opinionated). * 2. Remove the margin in Firefox and Safari. */ button, input, select, textarea { font-family: @initialize-font-family; /* 1 */ font-size: 100%; /* 1 */ line-height: @initialize-line-height; /* 1 */ margin: 0; /* 2 */ } /** * Show the overflow in IE. * 1. Show the overflow in Edge. */ button, input { /* 1 */ overflow: visible; } /** * Remove the inheritance of text transform in Edge, Firefox, and IE. * 1. Remove the inheritance of text transform in Firefox. */ button, select { /* 1 */ text-transform: none; } /** * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` * controls in Android 4. * 2. Correct the inability to style clickable types in iOS and Safari. */ button, html [type="button"], /* 1 */ [type="reset"], [type="submit"] { -webkit-appearance: button; /* 2 */ } /** * Remove the inner border and padding in Firefox. */ button::-moz-focus-inner, [type="button"]::-moz-focus-inner, [type="reset"]::-moz-focus-inner, [type="submit"]::-moz-focus-inner { border-style: none; padding: 0; } /** * Restore the focus styles unset by the previous rule. */ button:-moz-focusring, [type="button"]:-moz-focusring, [type="reset"]:-moz-focusring, [type="submit"]:-moz-focusring { outline: 1px dotted ButtonText; } .fieldset(@initialize-html5-boilerplate-overwrites) when (@initialize-html5-boilerplate-overwrites = true) { /** * Correct the padding in Firefox. */ fieldset { padding: 0.35em 0.625em 0.75em; } } .fieldset(@initialize-html5-boilerplate-overwrites); /** * 1. Correct the text wrapping in Edge and IE. * 2. Correct the color inheritance from `fieldset` elements in IE. * 3. Remove the padding so developers are not caught out when they zero out * `fieldset` elements in all browsers. */ legend { box-sizing: border-box; /* 1 */ color: inherit; /* 2 */ display: table; /* 1 */ max-width: 100%; /* 1 */ padding: 0; /* 3 */ white-space: normal; /* 1 */ } /** * 1. Add the correct display in IE 9-. * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera. */ progress { display: inline-block; /* 1 */ vertical-align: baseline; /* 2 */ } /** * Remove the default vertical scrollbar in IE. */ textarea { overflow: auto; } .checkbox-radio(@initialize-dinosaur-mode) when (@initialize-dinosaur-mode = true) { /** * 1. Add the correct box sizing in IE 10-. * 2. Remove the padding in IE 10-. */ input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ } } .checkbox-radio(@initialize-dinosaur-mode); /** * Correct the cursor style of increment and decrement buttons in Chrome. */ [type="number"]::-webkit-inner-spin-button, [type="number"]::-webkit-outer-spin-button { height: auto; } /** * 1. Correct the odd appearance in Chrome and Safari. * 2. Correct the outline style in Safari. */ [type="search"] { -webkit-appearance: textfield; /* 1 */ outline-offset: -2px; /* 2 */ } /** * Remove the inner padding and cancel buttons in Chrome and Safari on macOS. */ [type="search"]::-webkit-search-cancel-button, [type="search"]::-webkit-search-decoration { -webkit-appearance: none; } /** * 1. Correct the inability to style clickable types in iOS and Safari. * 2. Change font properties to `inherit` in Safari. */ ::-webkit-file-upload-button { -webkit-appearance: button; /* 1 */ font: inherit; /* 2 */ } .html5-boilerplate-styles(@initialize-html5-boilerplate-overwrites) when (@initialize-html5-boilerplate-overwrites = true) { /* ========================================================================== HTML5 Boilerplate optimizations ========================================================================== */ /* * Remove text-shadow in selection highlight: * https://twitter.com/miketaylr/status/12228805301 * * These selection rule sets have to be separate. * Customize the background color to match your design. */ ::selection { background: #b3d4fc; text-shadow: none; } /* * A better looking default horizontal rule */ hr { display: block; height: 1px; border: 0; border-top: 1px solid #ccc; margin: 1em 0; padding: 0; } /* * Remove the gap between audio, canvas, iframes, * images, videos and the bottom of their containers: * https://github.com/h5bp/html5-boilerplate/issues/440 */ audio, canvas, iframe, img, svg, video { vertical-align: middle; } /* * Remove default fieldset styles. */ fieldset { border: 0; margin: 0; padding: 0; } /* * Allow only vertical resizing of textareas. */ textarea { resize: vertical; } } .html5-boilerplate-styles(@initialize-html5-boilerplate-overwrites); /* ========================================================================== Optional configurations ========================================================================== */ /* * Headings */ h1, h2, h3, h4, h5, h6 { .optional-prop(color, @initialize-heading-color); .optional-prop(margin, @initialize-heading-margins); .optional-prop(font-family, @initialize-heading-font-family); } /* * Block elements */ p, table, ul, ol, fieldset, blockquote, dl { .optional-prop(margin, @initialize-block-margins); } .print-styles(@initialize-print-styles) when (@initialize-print-styles = true) { /* ========================================================================== Print styles ========================================================================== */ @media print { *, *:before, *:after, *:first-letter, *:first-line { background: transparent !important; color: #000 !important; // Black prints faster: http://www.sanbeiji.com/archives/953 box-shadow: none !important; text-shadow: none !important; } a, a:visited { text-decoration: underline; } a[href]:after { content: " (" attr(href) ")"; } abbr[title]:after { content: " (" attr(title) ")"; } // Don't show links that are fragment identifiers, // or use the `javascript:` pseudo protocol a[href^="#"]:after, a[href^="javascript:"]:after { content: ""; } pre, blockquote { border: 1px solid #999; page-break-inside: avoid; } // Printing Tables: // http://css-discuss.incutio.com/wiki/Printing_Tables thead { display: table-header-group; } tr, img { page-break-inside: avoid; } img { max-width: 100% !important; } p, h2, h3 { orphans: 3; widows: 3; } h2, h3 { page-break-after: avoid; } } } .print-styles(@initialize-print-styles);