UNPKG

o-

Version:

A collection of functions, mixins, and placeholders for sass

307 lines (283 loc) 79.2 kB
<!doctype html><html lang="en"><head><meta charset="utf-8"><title>O- - v0.7.0</title><link rel="stylesheet" href="assets/css/main.css"><link href="http://fonts.googleapis.com/css?family=Open+Sans:400,500,700" rel="stylesheet" type="text/css"><meta name="viewport" content="width=device-width"><meta content="IE=edge, chrome=1" http-equiv="X-UA-Compatible"><!-- Open Graph tags --><meta property="og:title" content="O- - SassDoc"><meta property="og:type" content="website"><meta property="og:description" content="<p>A collection of functions, mixins, and placeholders for sass</p> "><!-- Thanks to Sass-lang.com for the icons --><link href="assets/images/favicon.png" rel="shortcut icon"></head><body><aside class="sidebar" role="nav"><div class="sidebar__header"><h1 class="sidebar__title">O- - 0.7.0</h1></div><div class="sidebar__body"><button type="button" class="btn-toggle js-btn-toggle" data-alt="Open all">Close all</button><p class="sidebar__item sidebar__item--heading" data-slug="color"><a href="#color">color</a></p><div><p class="sidebar__item sidebar__item--sub-heading" data-slug="color-function"><a href="#color-function">functions</a></p><ul class="list-unstyled"><li class="sidebar__item sassdoc__item" data-name="o-gray" data-type="function"><a href="#color-function-o-gray">o-gray</a></li><li class="sidebar__item sassdoc__item" data-name="o-random-color" data-type="function"><a href="#color-function-o-random-color">o-random-color</a></li><li class="sidebar__item sassdoc__item" data-name="o-md-color" data-type="function"><a href="#color-function-o-md-color">o-md-color</a></li><li class="sidebar__item sassdoc__item" data-name="o-closest-md-color" data-type="function"><a href="#color-function-o-closest-md-color">o-closest-md-color</a></li></ul></div><p class="sidebar__item sidebar__item--heading" data-slug="form"><a href="#form">form</a></p><div><p class="sidebar__item sidebar__item--sub-heading" data-slug="form-mixin"><a href="#form-mixin">mixins</a></p><ul class="list-unstyled"><li class="sidebar__item sassdoc__item" data-name="o-checkbox" data-type="mixin"><a href="#form-mixin-o-checkbox">o-checkbox</a></li><li class="sidebar__item sassdoc__item" data-name="o-radio" data-type="mixin"><a href="#form-mixin-o-radio">o-radio</a></li><li class="sidebar__item sassdoc__item" data-name="o-range" data-type="mixin"><a href="#form-mixin-o-range">o-range</a></li></ul></div><p class="sidebar__item sidebar__item--heading" data-slug="grid"><a href="#grid">grid</a></p><div><p class="sidebar__item sidebar__item--sub-heading" data-slug="grid-variable"><a href="#grid-variable">variables</a></p><ul class="list-unstyled"><li class="sidebar__item sassdoc__item" data-name="o-auto-break" data-type="variable"><a href="#grid-variable-o-auto-break">o-auto-break</a></li><li class="sidebar__item sassdoc__item" data-name="o-break-at" data-type="variable"><a href="#grid-variable-o-break-at">o-break-at</a></li></ul><p class="sidebar__item sidebar__item--sub-heading" data-slug="grid-placeholder"><a href="#grid-placeholder">placeholders</a></p><ul class="list-unstyled"><li class="sidebar__item sassdoc__item" data-name="o-grid" data-type="placeholder"><a href="#grid-placeholder-o-grid">o-grid</a></li></ul><p class="sidebar__item sidebar__item--sub-heading" data-slug="grid-mixin"><a href="#grid-mixin">mixins</a></p><ul class="list-unstyled"><li class="sidebar__item sassdoc__item" data-name="o-span" data-type="mixin"><a href="#grid-mixin-o-span">o-span</a></li><li class="sidebar__item sassdoc__item" data-name="o-generate-grid-classes" data-type="mixin"><a href="#grid-mixin-o-generate-grid-classes">o-generate-grid-classes</a></li></ul></div><p class="sidebar__item sidebar__item--heading" data-slug="undefined"><a href="#undefined">General</a></p><div><p class="sidebar__item sidebar__item--sub-heading" data-slug="undefined-placeholder"><a href="#undefined-placeholder">placeholders</a></p><ul class="list-unstyled"><li class="sidebar__item sassdoc__item" data-name="o-clearfix" data-type="placeholder"><a href="#undefined-placeholder-o-clearfix">o-clearfix</a></li><li class="sidebar__item sassdoc__item" data-name="o-nopaque" data-type="placeholder"><a href="#undefined-placeholder-o-nopaque">o-nopaque</a></li><li class="sidebar__item sassdoc__item" data-name="o-opaque" data-type="placeholder"><a href="#undefined-placeholder-o-opaque">o-opaque</a></li><li class="sidebar__item sassdoc__item" data-name="o-v-center-child" data-type="placeholder"><a href="#undefined-placeholder-o-v-center-child">o-v-center-child</a></li><li class="sidebar__item sassdoc__item" data-name="o-v-center-parent" data-type="placeholder"><a href="#undefined-placeholder-o-v-center-parent">o-v-center-parent</a></li></ul><p class="sidebar__item sidebar__item--sub-heading" data-slug="undefined-mixin"><a href="#undefined-mixin">mixins</a></p><ul class="list-unstyled"><li class="sidebar__item sassdoc__item" data-name="o-input-range" data-type="mixin"><a href="#undefined-mixin-o-input-range">o-input-range <span class="sidebar__annotation sidebar__annotation--alias">alias</span></a></li><li class="sidebar__item sassdoc__item" data-name="o-border-box" data-type="mixin"><a href="#undefined-mixin-o-border-box">o-border-box</a></li><li class="sidebar__item sassdoc__item" data-name="o-box-shadow" data-type="mixin"><a href="#undefined-mixin-o-box-shadow">o-box-shadow</a></li><li class="sidebar__item sassdoc__item" data-name="o-minimal-box-shadow" data-type="mixin"><a href="#undefined-mixin-o-minimal-box-shadow">o-minimal-box-shadow <span class="sidebar__annotation sidebar__annotation--alias">alias</span></a></li><li class="sidebar__item sassdoc__item" data-name="o-center" data-type="mixin"><a href="#undefined-mixin-o-center">o-center</a></li><li class="sidebar__item sassdoc__item" data-name="o-ellipsis" data-type="mixin"><a href="#undefined-mixin-o-ellipsis">o-ellipsis</a></li><li class="sidebar__item sassdoc__item" data-name="o-emboss" data-type="mixin"><a href="#undefined-mixin-o-emboss">o-emboss</a></li><li class="sidebar__item sassdoc__item" data-name="o-horizontal-list" data-type="mixin"><a href="#undefined-mixin-o-horizontal-list">o-horizontal-list</a></li><li class="sidebar__item sassdoc__item" data-name="o-hlist" data-type="mixin"><a href="#undefined-mixin-o-hlist">o-hlist <span class="sidebar__annotation sidebar__annotation--alias">alias</span></a></li><li class="sidebar__item sassdoc__item" data-name="o-list-unstyled" data-type="mixin"><a href="#undefined-mixin-o-list-unstyled">o-list-unstyled</a></li><li class="sidebar__item sassdoc__item" data-name="o-unstyled-list" data-type="mixin"><a href="#undefined-mixin-o-unstyled-list">o-unstyled-list</a></li><li class="sidebar__item sassdoc__item" data-name="o-media" data-type="mixin"><a href="#undefined-mixin-o-media">o-media</a></li><li class="sidebar__item sassdoc__item" data-name="o-trickle" data-type="mixin"><a href="#undefined-mixin-o-trickle">o-trickle</a></li><li class="sidebar__item sassdoc__item" data-name="o-size" data-type="mixin"><a href="#undefined-mixin-o-size">o-size</a></li><li class="sidebar__item sassdoc__item" data-name="o-square" data-type="mixin"><a href="#undefined-mixin-o-square">o-square</a></li><li class="sidebar__item sassdoc__item" data-name="o-underline-on-hover" data-type="mixin"><a href="#undefined-mixin-o-underline-on-hover">o-underline-on-hover</a></li><li class="sidebar__item sassdoc__item" data-name="o-underline-text-on-hover" data-type="mixin"><a href="#undefined-mixin-o-underline-text-on-hover">o-underline-text-on-hover <span class="sidebar__annotation sidebar__annotation--alias">alias</span></a></li></ul><p class="sidebar__item sidebar__item--sub-heading" data-slug="undefined-function"><a href="#undefined-function">functions</a></p><ul class="list-unstyled"><li class="sidebar__item sassdoc__item" data-name="o-as-percent" data-type="function"><a href="#undefined-function-o-as-percent">o-as-percent</a></li><li class="sidebar__item sassdoc__item" data-name="o-golden-ratio" data-type="function"><a href="#undefined-function-o-golden-ratio">o-golden-ratio</a></li><li class="sidebar__item sassdoc__item" data-name="o-golden" data-type="function"><a href="#undefined-function-o-golden">o-golden <span class="sidebar__annotation sidebar__annotation--alias">alias</span></a></li><li class="sidebar__item sassdoc__item" data-name="o-grey" data-type="function"><a href="#undefined-function-o-grey">o-grey <span class="sidebar__annotation sidebar__annotation--alias">alias</span></a></li><li class="sidebar__item sassdoc__item" data-name="o-rand-color" data-type="function"><a href="#undefined-function-o-rand-color">o-rand-color <span class="sidebar__annotation sidebar__annotation--alias">alias</span></a></li><li class="sidebar__item sassdoc__item" data-name="o-strip-unit" data-type="function"><a href="#undefined-function-o-strip-unit">o-strip-unit</a></li><li class="sidebar__item sassdoc__item" data-name="o-strip" data-type="function"><a href="#undefined-function-o-strip">o-strip <span class="sidebar__annotation sidebar__annotation--alias">alias</span></a></li></ul><p class="sidebar__item sidebar__item--sub-heading" data-slug="undefined-variable"><a href="#undefined-variable">variables</a></p><ul class="list-unstyled"><li class="sidebar__item sassdoc__item" data-name="o-phi" data-type="variable"><a href="#undefined-variable-o-phi">o-phi</a></li><li class="sidebar__item sassdoc__item" data-name="o-break-small" data-type="variable"><a href="#undefined-variable-o-break-small">o-break-small</a></li><li class="sidebar__item sassdoc__item" data-name="o-break-large" data-type="variable"><a href="#undefined-variable-o-break-large">o-break-large</a></li></ul></div></div></aside><article class="main" role="main"><header class="header" role="banner"><div class="container"><div class="sassdoc__searchbar searchbar"><label for="js-search-input" class="visually-hidden">Search</label><div class="searchbar__form" id="js-search"><input name="search" type="search" class="searchbar__field" autocomplete="off" autofocus id="js-search-input" placeholder="Search"><ul class="searchbar__suggestions" id="js-search-suggestions"></ul></div></div></div></header><section class="main__section"><div class="container"><h1 id="o-">o-</h1><h6 id="pronounced-oh-dash-">pronounced &quot;Oh Dash&quot;</h6><blockquote><p>A collection of functions, mixins, and placeholders for <a href="http://sass-lang.com">sass</a></p></blockquote><h2 id="install">Install</h2><p>via npm</p><pre><code class="lang-bash">npm install o- --save-dev </code></pre><p>or through bower</p><pre><code class="lang-bash">bower install o-dash --save </code></pre><h2 id="usage">Usage</h2><p>Import <strong>o-</strong> into your sass/scss</p><pre><code class="lang-scss">@import &#39;node_modules/o-&#39;; </code></pre><p>As of <a href="https://github.com/sass/node-sass">node-sass</a> &gt;= v3.0.0, js functions can be registered at configuration time, which is needed for <code>o-md-color</code> and <code>o-closest-md-color</code> functions. You will need <a href="https://github.com/sass/node-sass">node-sass</a>, <a href="https://github.com/dlmanning/gulp-sass">gulp-sass</a>, or <a href="https://github.com/sindresorhus/grunt-sass">grunt-sass</a> depending on your build setup.</p><p>Grunt:</p><pre><code class="lang-js">// ... sass: { options: { functions: require(&#39;o-&#39;) }, build: { files: { &#39;style.css&#39;: &#39;style.scss&#39; } } } // ... </code></pre><p>Gulp:</p><pre><code class="lang-js">// ... gulp.task(&#39;sass&#39;, () =&gt; { return gulp.src(&#39;style.scss&#39;) .pipe(sass({ functions: require(&#39;o-&#39;) })) .pipe(gulp.src(&#39;style.css&#39;)) }) // ... </code></pre><p>Node:</p><pre><code class="lang-js">// ... sass.render({ data: ` body { color: o-closest-md-color(o-random-color()) } `, functions: require(&#39;o-&#39;) }, (err, result) =&gt; {/*...*/}) // ... </code></pre><h2 id="api">API</h2><p>You can refer to the documentation online at <a href="http://lokua.github.io/o-">lokua.github.io/o-</a>, or internally by opening <a href="doc/index.html">doc/index.html</a>.</p><h2 id="dev">Dev</h2><p><code>NODE_ENV=development &amp;&amp; npm install</code></p><p>If adding a new file, run <code>npm run gen</code> afterword to repopulate the <code>lib/_index.scss</code> imports file.</p><p>Documentation is generated with the much awesome <a href="http://sassdoc.com/">sassdoc</a>. <code>npm run doc</code></p><h2 id="license">License</h2><p><a href="http://lokua.net/license-mit.html">MIT</a></p></div></section><section class="main__section"><h1 class="main__heading" id="color"><div class="container">color</div></h1><section class="main__sub-section" id="color-function"><h2 class="main__heading--secondary"><div class="container">functions</div></h2><section class="main__item container item" id="color-function-o-gray"><h3 class="item__heading"><a class="item__name" href="#function-o-gray">o-gray</a> <span class="item__aliased">(aliased as <a href="#function-o-grey"><code>o-grey</code></a> )</span></h3><div class="item__code-wrapper"><pre class="item__code item__code--togglable language-scss" data-current-state="collapsed" data-expanded="@function o-gray($value: 50, $alpha: 1) { $x: round(($value / 100) * 255); @return rgba($x, $x, $x, $alpha); }" data-collapsed="@function o-gray($value: 50, $alpha: 1) { ... }"><code>@function o-gray($value: 50, $alpha: 1) { ... }</code></pre></div><h3 class="item__sub-heading">Description</h3><div class="item__description"><p>Create a grayscale color range 0-100 with optional alpha value</p></div><h3 class="item__sub-heading">Parameters</h3><table class="item__parameters"><thead><tr><th scope="col"><span class="visually-hidden">parameter</span>Name</th><th scope="col"><span class="visually-hidden">parameter</span>Description</th><th scope="col"><span class="visually-hidden">parameter</span>Type</th><th scope="col"><span class="visually-hidden">parameter</span>Default value</th></tr></thead><tbody><tr class="item__parameter"><th scope="row" data-label="name"><code>$value</code></th><td data-label="desc"><p>range [0, 100]</p></td><td data-label="type"><code>Number</code></td><td data-label="default"><code>50</code></td></tr><tr class="item__parameter"><th scope="row" data-label="name"><code>$alpha</code></th><td data-label="desc"><p>range [0, 1]</p></td><td data-label="type"><code>Number</code></td><td data-label="default"><code>1</code></td></tr></tbody></table><h3 class="item__sub-heading">Returns</h3><div class="item__description item__description--inline"><code>Color</code> &mdash;<p>rgba color</p></div><h3 class="item__sub-heading">Used by</h3><ul class="list-unstyled"><li><span class="item__cross-type">[function]</span> <a href="#function-o-grey"><code>o-grey</code></a></li></ul><h3 class="item__sub-heading">Links</h3><ul class="list-unstyled"><li><a href="http://codepen.io/Lokua/pen/zxKQWG?editors=110">http://codepen.io/Lokua/pen/zxKQWG?editors=110</a></li></ul></section><section class="main__item container item" id="color-function-o-random-color"><h3 class="item__heading"><a class="item__name" href="#function-o-random-color">o-random-color</a> <span class="item__aliased">(aliased as <a href="#function-o-rand-color"><code>o-rand-color</code></a> )</span></h3><div class="item__code-wrapper"><pre class="item__code item__code--togglable language-scss" data-current-state="collapsed" data-expanded="@function o-random-color($alpha: false) { @if ($alpha == true) { @return rgba(random(256)-1, random(256)-1, random(256)-1, random(100) / 100); } @return rgb(random(256)-1, random(256)-1, random(256)-1); }" data-collapsed="@function o-random-color($alpha: false) { ... }"><code>@function o-random-color($alpha: false) { ... }</code></pre></div><h3 class="item__sub-heading">Description</h3><div class="item__description"><p>Get a random rgb[a] color</p></div><h3 class="item__sub-heading">Parameters</h3><table class="item__parameters"><thead><tr><th scope="col"><span class="visually-hidden">parameter</span>Name</th><th scope="col"><span class="visually-hidden">parameter</span>Description</th><th scope="col"><span class="visually-hidden">parameter</span>Type</th><th scope="col"><span class="visually-hidden">parameter</span>Default value</th></tr></thead><tbody><tr class="item__parameter"><th scope="row" data-label="name"><code>$alpha</code></th><td data-label="desc"><p>if true, randomize the alpha value in addition to the rgb</p></td><td data-label="type"><code>Boolean</code></td><td data-label="default"><code>false</code></td></tr></tbody></table><h3 class="item__sub-heading">Returns</h3><div class="item__description item__description--inline"><code>Color</code> &mdash;<p>rgb or rgba if <code>$alpha</code> is true</p></div><h3 class="item__sub-heading">Used by</h3><ul class="list-unstyled"><li><span class="item__cross-type">[function]</span> <a href="#function-o-rand-color"><code>o-rand-color</code></a></li></ul></section><section class="main__item container item" id="color-function-o-md-color"><h3 class="item__heading"><a class="item__name" href="#function-o-md-color">o-md-color</a></h3><div class="item__code-wrapper"><pre class="item__code item__code--togglable language-scss" data-current-state="collapsed" data-expanded="@function o-md-color($color, $shade: 500) { // this function requires registration of o- with node-sass:options.functions }" data-collapsed="@function o-md-color($color, $shade: 500) { ... }"><code>@function o-md-color($color, $shade: 500) { ... }</code></pre></div><h3 class="item__sub-heading">Description</h3><div class="item__description"><p>Material design colors accessor.</p><h1 id="note-">Note:</h1><p>this function requires registration of <code>o-</code> with node-sass:options.functions</p></div><h3 class="item__sub-heading">Parameters</h3><table class="item__parameters"><thead><tr><th scope="col"><span class="visually-hidden">parameter</span>Name</th><th scope="col"><span class="visually-hidden">parameter</span>Description</th><th scope="col"><span class="visually-hidden">parameter</span>Type</th><th scope="col"><span class="visually-hidden">parameter</span>Default value</th></tr></thead><tbody><tr class="item__parameter"><th scope="row" data-label="name"><code>$color</code></th><td data-label="desc"><p>The material design color name (must be wrapped in quotes)</p></td><td data-label="type"><code>String</code></td><td data-label="default">&mdash;<span class="visually-hidden">none</span></td></tr><tr class="item__parameter"><th scope="row" data-label="name"><code>$shade</code></th><td data-label="desc">&mdash;<span class="visually-hidden">none</span></td><td data-label="type"><code>Number</code></td><td data-label="default"><code>500</code></td></tr></tbody></table></section><section class="main__item container item" id="color-function-o-closest-md-color"><h3 class="item__heading"><a class="item__name" href="#function-o-closest-md-color">o-closest-md-color</a></h3><div class="item__code-wrapper"><pre class="item__code item__code--togglable language-scss" data-current-state="collapsed" data-expanded="@function o-closest-md-color($color) { // this function requires registration of o- with node-sass:options.functions }" data-collapsed="@function o-closest-md-color($color) { ... }"><code>@function o-closest-md-color($color) { ... }</code></pre></div><h3 class="item__sub-heading">Description</h3><div class="item__description"><p>Find the material design color that is closest to <code>$color</code></p><h1 id="note-">Note:</h1><p>this function requires registration of <code>o-</code> with node-sass:options.functions</p></div><h3 class="item__sub-heading">Parameters</h3><table class="item__parameters"><thead><tr><th scope="col"><span class="visually-hidden">parameter</span>Name</th><th scope="col"><span class="visually-hidden">parameter</span>Description</th><th scope="col"><span class="visually-hidden">parameter</span>Type</th><th scope="col"><span class="visually-hidden">parameter</span>Default value</th></tr></thead><tbody><tr class="item__parameter"><th scope="row" data-label="name"><code>$color</code></th><td data-label="desc"><p>Any valid SassColor</p></td><td data-label="type"><code>Color</code></td><td data-label="default">&mdash;<span class="visually-hidden">none</span></td></tr></tbody></table></section></section></section><section class="main__section"><h1 class="main__heading" id="form"><div class="container">form</div></h1><section class="main__sub-section" id="form-mixin"><h2 class="main__heading--secondary"><div class="container">mixins</div></h2><section class="main__item container item" id="form-mixin-o-checkbox"><h3 class="item__heading"><a class="item__name" href="#mixin-o-checkbox">o-checkbox</a></h3><div class="item__code-wrapper"><pre class="item__code item__code--togglable language-scss" data-current-state="collapsed" data-expanded="@mixin o-checkbox($class: checkbox, $size: 18px, $color: #222, $background: #ddd, $border: 2px solid lighten($color, 10%), $border-radius: 0) { .#{$class} { position: relative; display: inline-block; input[type=checkbox] { opacity: 0; position: absolute; top: 0; left: 0; width: $size; height: $size; margin: 0; padding: 0; cursor: pointer; baseline-shift: super; &amp;:checked + label:after { position: absolute; top: $size * 0.125 * -1; display: inline-block; margin: 0; padding: 0; text-align: center; content: &#39;\2713&#39;; font-family: monospace; font-weight: bold; font-size: $size; width: $size; height: $size; } &amp;:not(checked) + label { content: &#39;&#39;; } } label { display: inline-block; width: $size; height: $size; color: $color; background: $background; border: $border; border-radius: $border-radius; pointer-events: none; } } }" data-collapsed="@mixin o-checkbox($class: checkbox, $size: 18px, $color: #222, $background: #ddd, $border: 2px solid lighten($color, 10%), $border-radius: 0) { ... }"><code>@mixin o-checkbox($class: checkbox, $size: 18px, $color: #222, $background: #ddd, $border: 2px solid lighten($color, 10%), $border-radius: 0) { ... }</code></pre></div><h3 class="item__sub-heading">Description</h3><div class="item__description"><p>Custom checkbox factory. Customizations not available through parametes can be applied to the label element child of classname <code>$class</code> as follows:</p><ul><li>Using the mixins defaults, the colors and appearence of the checkbox can be targeted via <code>.checkbox label</code>.</li><li>For the checkmark itself, target <code>.checkbox input:checked + label:after</code></li></ul><p>See the example for required markup:</p></div><h3 class="item__sub-heading">Parameters</h3><table class="item__parameters"><thead><tr><th scope="col"><span class="visually-hidden">parameter</span>Name</th><th scope="col"><span class="visually-hidden">parameter</span>Description</th><th scope="col"><span class="visually-hidden">parameter</span>Type</th><th scope="col"><span class="visually-hidden">parameter</span>Default value</th></tr></thead><tbody><tr class="item__parameter"><th scope="row" data-label="name"><code>$class</code></th><td data-label="desc"><p>the classname for your checkbox container</p></td><td data-label="type"><code>Number</code></td><td data-label="default"><code>checkbox</code></td></tr><tr class="item__parameter"><th scope="row" data-label="name"><code>$size</code></th><td data-label="desc">&mdash;<span class="visually-hidden">none</span></td><td data-label="type"><code>Number</code></td><td data-label="default"><code>18px</code></td></tr><tr class="item__parameter"><th scope="row" data-label="name"><code>$color</code></th><td data-label="desc">&mdash;<span class="visually-hidden">none</span></td><td data-label="type"><code>Number</code></td><td data-label="default"><code>#222</code></td></tr><tr class="item__parameter"><th scope="row" data-label="name"><code>$background</code></th><td data-label="desc">&mdash;<span class="visually-hidden">none</span></td><td data-label="type"><code>Number</code></td><td data-label="default"><code>#ddd</code></td></tr><tr class="item__parameter"><th scope="row" data-label="name"><code>$border</code></th><td data-label="desc">&mdash;<span class="visually-hidden">none</span></td><td data-label="type"><code>Number</code></td><td data-label="default"><code>2px solid lighten($color, 10%)</code></td></tr><tr class="item__parameter"><th scope="row" data-label="name"><code>$border-radius</code></th><td data-label="desc">&mdash;<span class="visually-hidden">none</span></td><td data-label="type"><code>Number</code></td><td data-label="default"><code>0</code></td></tr></tbody></table><h3 class="item__sub-heading">Example</h3><div class="item__example example"><pre class="example__code language-html"><code>&lt;div class=&quot;checkbox&quot;&gt; &lt;input type=&quot;checkbox&quot; checked&gt; &lt;label&gt;&lt;/label&gt; &lt;/div&gt;</code></pre></div><h3 class="item__sub-heading">Links</h3><ul class="list-unstyled"><li><a href="http://codepen.io/Lokua/pen/jWOZJd?editors=110">http://codepen.io/Lokua/pen/jWOZJd?editors=110</a></li></ul></section><section class="main__item container item" id="form-mixin-o-radio"><h3 class="item__heading"><a class="item__name" href="#mixin-o-radio">o-radio</a></h3><div class="item__code-wrapper"><pre class="item__code item__code--togglable language-scss" data-current-state="collapsed" data-expanded="@mixin o-radio($class: checkbox, $size: 18px, $color: #222, $background: #ddd, $border: 2px solid lighten($color, 10%)) { .#{$class} { position: relative; display: inline-block; input[type=radio] { opacity: 0; position: absolute; top: 0; left: 0; width: $size; height: $size; margin: 0; padding: 0; cursor: pointer; &amp;:checked + label:after { $bullet-size: $size / 1.5; display: block; position: absolute; text-align: center; top: $bullet-size/4; left: $bullet-size/4; width: $bullet-size; height: $bullet-size; background: $color; border-radius: 50%; content: &#39;&#39;; } &amp;:not(:checked) + label:after { opacity: 0; } } label { box-sizing: border-box; display: inline-block; width: $size; height: $size; color: $color; background: $background; border: $border; border-radius: 50%; pointer-events: none; } } }" data-collapsed="@mixin o-radio($class: checkbox, $size: 18px, $color: #222, $background: #ddd, $border: 2px solid lighten($color, 10%)) { ... }"><code>@mixin o-radio($class: checkbox, $size: 18px, $color: #222, $background: #ddd, $border: 2px solid lighten($color, 10%)) { ... }</code></pre></div><h3 class="item__sub-heading">Description</h3><div class="item__description"><p>Custom radio factory. Customizations not available through parameters can be applied to the label element child of classname <code>$class</code> as follows:</p><ul><li>Using the mixins defaults, the colors and appearence of the radio can be targeted via <code>.radio label</code>.</li><li>For the bullet inside the radio, target <code>.radio input:radio + label:after</code></li></ul><p>See the example for required markup:</p></div><h3 class="item__sub-heading">Parameters</h3><table class="item__parameters"><thead><tr><th scope="col"><span class="visually-hidden">parameter</span>Name</th><th scope="col"><span class="visually-hidden">parameter</span>Description</th><th scope="col"><span class="visually-hidden">parameter</span>Type</th><th scope="col"><span class="visually-hidden">parameter</span>Default value</th></tr></thead><tbody><tr class="item__parameter"><th scope="row" data-label="name"><code>$class</code></th><td data-label="desc"><p>the classname for your checkbox container</p></td><td data-label="type"><code>Number</code></td><td data-label="default"><code>checkbox</code></td></tr><tr class="item__parameter"><th scope="row" data-label="name"><code>$size</code></th><td data-label="desc">&mdash;<span class="visually-hidden">none</span></td><td data-label="type"><code>Number</code></td><td data-label="default"><code>18px</code></td></tr><tr class="item__parameter"><th scope="row" data-label="name"><code>$color</code></th><td data-label="desc">&mdash;<span class="visually-hidden">none</span></td><td data-label="type"><code>Number</code></td><td data-label="default"><code>#222</code></td></tr><tr class="item__parameter"><th scope="row" data-label="name"><code>$background</code></th><td data-label="desc">&mdash;<span class="visually-hidden">none</span></td><td data-label="type"><code>Number</code></td><td data-label="default"><code>#ddd</code></td></tr><tr class="item__parameter"><th scope="row" data-label="name"><code>$border</code></th><td data-label="desc">&mdash;<span class="visually-hidden">none</span></td><td data-label="type"><code>Number</code></td><td data-label="default"><code>2px solid lighten($color, 10%)</code></td></tr></tbody></table><h3 class="item__sub-heading">Example</h3><div class="item__example example"><pre class="example__code language-html"><code>&lt;div class=&quot;radio&quot;&gt; &lt;input type=&quot;radio&quot; name=&quot;a&quot;/&gt; &lt;label&gt;&lt;/label&gt; &lt;/div&gt; &lt;div class=&quot;radio&quot;&gt; &lt;input type=&quot;radio&quot; name=&quot;a&quot;/&gt; &lt;label&gt;&lt;/label&gt; &lt;/div&gt;</code></pre></div><h3 class="item__sub-heading">Links</h3><ul class="list-unstyled"><li><a href="http://codepen.io/Lokua/pen/YwzaGe?editors=110">http://codepen.io/Lokua/pen/YwzaGe?editors=110</a></li></ul></section><section class="main__item container item" id="form-mixin-o-range"><h3 class="item__heading"><a class="item__name" href="#mixin-o-range">o-range</a> <span class="item__aliased">(aliased as <a href="#mixin-o-input-range"><code>o-input-range</code></a> )</span></h3><div class="item__code-wrapper"><pre class="item__code item__code--togglable language-scss" data-current-state="collapsed" data-expanded="@mixin o-range($track-color: #aaa, $knob-color: #444, $rounded: false) { $track-height: 2px; $knob-height: 14px; $knob-width: 8px; $webkit-knob-margin-top: -3px; @if ($rounded == false) { $webkit-knob-margin-top: -6px; } input[type=range] { -webkit-appearance: none; margin: 10px 0; width: 100%; &amp;:focus { outline: none; } &amp;::-webkit-slider-runnable-track { width: 100%; height: $track-height; cursor: pointer; animate: 0.2s; background: $track-color; } &amp;::-webkit-slider-thumb { background: $knob-color; cursor: pointer; -webkit-appearance: none; margin-top: $webkit-knob-margin-top; @if $rounded == true { border-radius: 50%; height: $knob-width; width: $knob-width; } @else { height: $knob-height; width: $knob-width; } } &amp;:focus::-webkit-slider-runnable-track { background: $track-color; } &amp;::-moz-range-track { width: 100%; height: $track-height; cursor: pointer; animate: 0.2s; background: $track-color; } &amp;::-moz-range-thumb { border: none; background: $knob-color; cursor: pointer; @if $rounded == true { border-radius: 50%; height: $knob-width; width: $knob-width; } @else { border-radius: 0%; height: $knob-height; width: $knob-width; } } &amp;::-ms-track { width: 100%; height: $track-height; cursor: pointer; animate: 0.2s; background: transparent; border-color: transparent; border-width: $knob-width 0; color: transparent; } &amp;::-ms-fill-lower { background: $track-color; border: 0px solid #000101; box-shadow: 0px 0px 0px #000000, 0px 0px 0px #0d0d0d; } &amp;::-ms-fill-upper { background: $track-color; border: 0px solid #000101; box-shadow: 0px 0px 0px #000000, 0px 0px 0px #0d0d0d; } &amp;::-ms-thumb { box-shadow: 0px 0px 0px #000000, 0px 0px 0px #0d0d0d; border: 0px solid #000000; height: 20px; width: $knob-width; background: $knob-color; cursor: pointer; } &amp;:focus::-ms-fill-lower { background: $track-color; } &amp;:focus::-ms-fill-upper { background: $track-color; } } }" data-collapsed="@mixin o-range($track-color: #aaa, $knob-color: #444, $rounded: false) { ... }"><code>@mixin o-range($track-color: #aaa, $knob-color: #444, $rounded: false) { ... }</code></pre></div><h3 class="item__sub-heading">Description</h3><div class="item__description"><p>Cross-browser css input[type=range], implemented as a mixin to enable coloring of the track and thumb, as well as rounded or square thumb option.</p></div><h3 class="item__sub-heading">Parameters</h3><table class="item__parameters"><thead><tr><th scope="col"><span class="visually-hidden">parameter</span>Name</th><th scope="col"><span class="visually-hidden">parameter</span>Description</th><th scope="col"><span class="visually-hidden">parameter</span>Type</th><th scope="col"><span class="visually-hidden">parameter</span>Default value</th></tr></thead><tbody><tr class="item__parameter"><th scope="row" data-label="name"><code>$track-color</code></th><td data-label="desc">&mdash;<span class="visually-hidden">none</span></td><td data-label="type"><code>Number</code></td><td data-label="default"><code>#aaa</code></td></tr><tr class="item__parameter"><th scope="row" data-label="name"><code>$knob-color</code></th><td data-label="desc">&mdash;<span class="visually-hidden">none</span></td><td data-label="type"><code>Number</code></td><td data-label="default"><code>#444</code></td></tr><tr class="item__parameter"><th scope="row" data-label="name"><code>$rounded</code></th><td data-label="desc">&mdash;<span class="visually-hidden">none</span></td><td data-label="type"><code>Bool</code></td><td data-label="default"><code>false</code></td></tr></tbody></table><h3 class="item__sub-heading">Links</h3><ul class="list-unstyled"><li><a href="https://css-tricks.com/styling-cross-browser-compatible-range-inputs-css/">https://css-tricks.com/styling-cross-browser-compatible-range-inputs-css/</a></li><li><a href="http://codepen.io/Lokua/pen/ogaaPd">http://codepen.io/Lokua/pen/ogaaPd</a></li></ul></section></section></section><section class="main__section"><h1 class="main__heading" id="grid"><div class="container">grid</div></h1><section class="main__sub-section" id="grid-variable"><h2 class="main__heading--secondary"><div class="container">variables</div></h2><section class="main__item container item" id="grid-variable-o-auto-break"><h3 class="item__heading"><a class="item__name" href="#variable-o-auto-break">o-auto-break</a></h3><div class="item__code-wrapper"><pre class="item__code language-scss"><code>$o-auto-break: true;</code></pre></div><h3 class="item__sub-heading">Description</h3><div class="item__description"><p>If true, <code>%o-col-*</code> placeholders will expand to 100% width on screens smaller than <code>$o-break-at</code></p></div><h3 class="item__sub-heading">Type</h3><p><code>{bool}</code></p><h3 class="item__sub-heading">See</h3><ul class="list-unstyled"><li><span class="item__cross-type">[variable]</span> <a href="#variable-o-break-at"><code>o-break-at</code></a></li></ul></section><section class="main__item container item" id="grid-variable-o-break-at"><h3 class="item__heading"><a class="item__name" href="#variable-o-break-at">o-break-at</a></h3><div class="item__code-wrapper"><pre class="item__code language-scss"><code>$o-break-at: 768px;</code></pre></div><h3 class="item__sub-heading">Description</h3><div class="item__description"><p>If <code>$o-auto-break</code> is true, sets the breakpoint at which screens smaller than will force all grid placeholders to assume full width</p></div><h3 class="item__sub-heading">Type</h3><p><code>{number}</code></p></section></section><section class="main__sub-section" id="grid-placeholder"><h2 class="main__heading--secondary"><div class="container">placeholders</div></h2><section class="main__item container item" id="grid-placeholder-o-grid"><h3 class="item__heading"><a class="item__name" href="#placeholder-o-grid">o-grid</a></h3><div class="item__code-wrapper"><pre class="item__code item__code--togglable language-scss" data-current-state="collapsed" data-expanded="%o-grid { @extend %o-clearfix; width: 100%; }" data-collapsed="%o-grid { ... }"><code>%o-grid { ... }</code></pre></div><h3 class="item__sub-heading">Description</h3><div class="item__description"><p>Generic grid container</p></div><h3 class="item__sub-heading">Requires</h3><ul class="list-unstyled"><li class="item__description item__description--inline"><span class="item__cross-type">[placeholder]</span> <a href="#placeholder-o-clearfix"><code>o-clearfix</code></a></li></ul><h3 class="item__sub-heading">Used by</h3><ul class="list-unstyled"><li><span class="item__cross-type">[mixin]</span> <a href="#mixin-o-generate-grid-classes"><code>o-generate-grid-classes</code></a></li></ul></section></section><section class="main__sub-section" id="grid-mixin"><h2 class="main__heading--secondary"><div class="container">mixins</div></h2><section class="main__item container item" id="grid-mixin-o-span"><h3 class="item__heading"><a class="item__name" href="#mixin-o-span">o-span</a></h3><div class="item__code-wrapper"><pre class="item__code item__code--togglable language-scss" data-current-state="collapsed" data-expanded="@mixin o-span() { width: 100 * ($cols/12) + 0%; float: $float; }" data-collapsed="@mixin o-span() { ... }"><code>@mixin o-span() { ... }</code></pre></div><h3 class="item__sub-heading">Description</h3><div class="item__description"><p>Dynamically add <code>$cols</code> number of columns to an element. Assumes a 12 column grid with no gutters.</p></div><h3 class="item__sub-heading">Parameters</h3><p>None.</p></section><section class="main__item container item" id="grid-mixin-o-generate-grid-classes"><h3 class="item__heading"><a class="item__name" href="#mixin-o-generate-grid-classes">o-generate-grid-classes</a></h3><div class="item__code-wrapper"><pre class="item__code item__code--togglable language-scss" data-current-state="collapsed" data-expanded="@mixin o-generate-grid-classes() { .o-grid { @extend %o-grid; } @for $i from 1 through 12 { .o-col-#{$i} { @extend %o-col-#{$i}; } } }" data-collapsed="@mixin o-generate-grid-classes() { ... }"><code>@mixin o-generate-grid-classes() { ... }</code></pre></div><h3 class="item__sub-heading">Description</h3><div class="item__description"><p>Use this mixin if you&#39;d prefer to generate static bootstrap-style <code>.o-grid</code> and <code>o-col-*</code> (<code>.o-col-1</code> through <code>.o-col-12</code>) classes.</p></div><h3 class="item__sub-heading">Parameters</h3><p>None.</p><h3 class="item__sub-heading">Requires</h3><ul class="list-unstyled"><li class="item__description item__description--inline"><span class="item__cross-type">[placeholder]</span> <a href="#placeholder-o-grid"><code>o-grid</code></a></li></ul></section></section></section><section class="main__section"><h1 class="main__heading" id="undefined"><div class="container">General</div></h1><section class="main__sub-section" id="undefined-placeholder"><h2 class="main__heading--secondary"><div class="container">placeholders</div></h2><section class="main__item container item" id="undefined-placeholder-o-clearfix"><h3 class="item__heading"><a class="item__name" href="#placeholder-o-clearfix">o-clearfix</a></h3><div class="item__code-wrapper"><pre class="item__code item__code--togglable language-scss" data-current-state="collapsed" data-expanded="%o-clearfix { &amp;:after { content: &#39;&#39;; display: table; clear: both; } }" data-collapsed="%o-clearfix { ... }"><code>%o-clearfix { ... }</code></pre></div><h3 class="item__sub-heading">Description</h3><div class="item__description"><p>modern clearfix</p></div><h3 class="item__sub-heading">Used by</h3><ul class="list-unstyled"><li><span class="item__cross-type">[placeholder]</span> <a href="#placeholder-o-grid"><code>o-grid</code></a></li></ul></section><section class="main__item container item" id="undefined-placeholder-o-nopaque"><h3 class="item__heading"><a class="item__name" href="#placeholder-o-nopaque">o-nopaque</a></h3><div class="item__code-wrapper"><pre class="item__code item__code--togglable language-scss" data-current-state="collapsed" data-expanded="%o-nopaque { opacity: 0; }" data-collapsed="%o-nopaque { ... }"><code>%o-nopaque { ... }</code></pre></div><h3 class="item__sub-heading">Description</h3><div class="item__description"><p>&quot;no opacity&quot; - you can&#39;t see me</p></div><h3 class="item__sub-heading">See</h3><ul class="list-unstyled"><li><span class="item__cross-type">[placeholder]</span> <a href="#placeholder-o-opaque"><code>o-opaque</code></a></li></ul></section><section class="main__item container item" id="undefined-placeholder-o-opaque"><h3 class="item__heading"><a class="item__name" href="#placeholder-o-opaque">o-opaque</a></h3><div class="item__code-wrapper"><pre class="item__code item__code--togglable language-scss" data-current-state="collapsed" data-expanded="%o-opaque { opacity: 1; }" data-collapsed="%o-opaque { ... }"><code>%o-opaque { ... }</code></pre></div><h3 class="item__sub-heading">Description</h3><div class="item__description"><p>Maximum opacity</p></div><h3 class="item__sub-heading">See</h3><ul class="list-unstyled"><li><span class="item__cross-type">[placeholder]</span> <a href="#placeholder-o-opaque"><code>o-opaque</code></a></li></ul></section><section class="main__item container item" id="undefined-placeholder-o-v-center-child"><h3 class="item__heading"><a class="item__name" href="#placeholder-o-v-center-child">o-v-center-child</a></h3><div class="item__code-wrapper"><pre class="item__code item__code--togglable language-scss" data-current-state="collapsed" data-expanded="%o-v-center-child { vertical-align: middle; }" data-collapsed="%o-v-center-child { ... }"><code>%o-v-center-child { ... }</code></pre></div><h3 class="item__sub-heading">Description</h3><div class="item__description"><p>Vertically center an element that is a direct descendent of an element that extends <code>%o-v-center-parent</code>.</p></div><h3 class="item__sub-heading">See</h3><ul class="list-unstyled"><li><span class="item__cross-type">[placeholder]</span> <a href="#placeholder-o-v-center-parent"><code>o-v-center-parent</code></a></li></ul><h3 class="item__sub-heading">Links</h3><ul class="list-unstyled"><li><a href="http://codepen.io/Lokua/pen/zxKQWG?editors=110">http://codepen.io/Lokua/pen/zxKQWG?editors=110</a></li></ul></section><section class="main__item container item" id="undefined-placeholder-o-v-center-parent"><h3 class="item__heading"><a class="item__name" href="#placeholder-o-v-center-parent">o-v-center-parent</a></h3><div class="item__code-wrapper"><pre class="item__code item__code--togglable language-scss" data-current-state="collapsed" data-expanded="%o-v-center-parent { display: table-cell; vertical-align: middle; }" data-collapsed="%o-v-center-parent { ... }"><code>%o-v-center-parent { ... }</code></pre></div><h3 class="item__sub-heading">Description</h3><div class="item__description"><p>Container for vertically centering child elements. To comply, child elements must have <code>vertical-align: middle;</code> or you can simply <code>@extend %o-v-center-child</code>. Note that <code>%o-center-parent</code> also has <code>vertical-align: middle</code>, so parents can be nested.</p></div><h3 class="item__sub-heading">See</h3><ul class="list-unstyled"><li><span class="item__cross-type">[placeholder]</span> <a href="#placeholder-o-v-center-child"><code>o-v-center-child</code></a></li></ul><h3 class="item__sub-heading">Links</h3><ul class="list-unstyled"><li><a href="http://codepen.io/Lokua/pen/zxKQWG?editors=110">http://codepen.io/Lokua/pen/zxKQWG?editors=110</a></li></ul></section></section><section class="main__sub-section" id="undefined-mixin"><h2 class="main__heading--secondary"><div class="container">mixins</div></h2><section class="main__item container item item--alias item--deprecated" id="undefined-mixin-o-input-range"><h3 class="item__heading"><a class="item__name" href="#mixin-o-input-range">o-input-range</a> <span class="item__alias">(alias for <a href="#mixin-o-range"><code>o-range</code></a>)</span></h3><div class="item__deprecated"><strong>Deprecated!</strong><p>Keeping for backwards compatibility. Use <code>o-range</code> instead</p></div><div class="item__code-wrapper"><pre class="item__code item__code--togglable language-scss" data-current-state="collapsed" data-expanded="@mixin o-input-range() { @return o-range($track-color, $knob-color, $rounded); }" data-collapsed="@mixin o-input-range() { ... }"><code>@mixin o-input-range() { ... }</code></pre></div><p>Refer to <a href="#mixin-o-range">o-range</a>.</p></section><section class="main__item container item" id="undefined-mixin-o-border-box"><h3 class="item__heading"><a class="item__name" href="#mixin-o-border-box">o-border-box</a></h3><div class="item__code-wrapper"><pre class="item__code item__code--togglable language-scss" data-current-state="collapsed" data-expanded="@mixin o-border-box() { *, *:before, *:after { box-sizing: border-box; } }" data-collapsed="@mixin o-border-box() { ... }"><code>@mixin o-border-box() { ... }</code></pre></div><h3 class="item__sub-heading">Description</h3><div class="item__description"><p>Paul Irish box-sizing:border-box for errthang</p></div><h3 class="item__sub-heading">Parameters</h3><p>None.</p></section><section class="main__item container item" id="undefined-mixin-o-box-shadow"><h3 class="item__heading"><a class="item__name" href="#mixin-o-box-shadow">o-box-shadow</a> <span class="item__aliased">(aliased as <a href="#mixin-o-minimal-box-shadow"><code>o-minimal-box-shadow</code></a> )</span></h3><div class="item__code-wrapper"><pre class="item__code item__code--togglable language-scss" data-current-state="collapsed" data-expanded="@mixin o-box-shadow($color: rgba(#000, 0.25)) { box-shadow: 0px 1px 2px 1px $color; }" data-collapsed="@mixin o-box-shadow($color: rgba(#000, 0.25)) { ... }"><code>@mixin o-box-shadow($color: rgba(#000, 0.25)) { ... }</code></pre></div><h3 class="item__sub-heading">Description</h3><div class="item__description"><p>Opinionated minimal box shadow</p></div><h3 class="item__sub-heading">Parameters</h3><table class="item__parameters"><thead><tr><th scope="col"><span class="visually-hidden">parameter</span>Name</th><th scope="col"><span class="visually-hidden">parameter</span>Description</th><th scope="col"><span class="visually-hidden">parameter</span>Type</th><th scope="col"><span class="visually-hidden">parameter</span>Default value</th></tr></thead><tbody><tr class="item__parameter"><th scope="row" data-label="name"><code>$color</code></th><td data-label="desc">&mdash;<span class="visually-hidden">none</span></td><td data-label="type"><code>Color</code></td><td data-label="default"><code>rgba(#000, 0.25)</code></td></tr></tbody></table></section><section class="main__item container item item--alias item--deprecated" id="undefined-mixin-o-minimal-box-shadow"><h3 class="item__heading"><a class="item__name" href="#mixin-o-minimal-box-shadow">o-minimal-box-shadow</a> <span class="item__alias">(alias for <a href="#mixin-o-box-shadow"><code>o-box-shadow</code></a>)</span></h3><div class="item__deprecated"><strong>Deprecated!</strong><p>Keeping for backwards compatibility. Use <code>o-box-shadow</code> instead</p></div><div class="item__code-wrapper"><pre class="item__code item__code--togglable language-scss" data-current-state="collapsed" data-expanded="@mixin o-minimal-box-shadow() { @return o-box-shadow($color); }" data-collapsed="@mixin o-minimal-box-shadow() { ... }"><code>@mixin o-minimal-box-shadow() { ... }</code></pre></div><p>Refer to <a href="#mixin-o-box-shadow">o-box-shadow</a>.</p></section><section class="main__item container item" id="undefined-mixin-o-center"><h3 class="item__heading"><a class="item__name" href="#mixin-o-center">o-center</a></h3><div class="item__code-wrapper"><pre class="item__code item__code--togglable language-scss" data-current-state="collapsed" data-expanded="@mixin o-center($top: 0, $bottom: $top) { margin: $top auto $bottom; }" data-collapsed="@mixin o-center($top: 0, $bottom: $top) { ... }"><code>@mixin o-center($top: 0, $bottom: $top) { ... }</code></pre></div><h3 class="item__sub-heading">Description</h3><div class="item__description"><p>Symantic shorthand for <code>margin: 0 auto</code></p></div><h3 class="item__sub-heading">Parameters</h3><table class="item__parameters"><thead><tr><th scope="col"><span class="visually-hidden">parameter</span>Name</th><th scope="col"><span class="visually-hidden">parameter</span>Description</th><th scope="col"><span class="visually-hidden">parameter</span>Type</th><th scope="col"><span class="visually-hidden">parameter</span>Default value</th></tr></thead><tbody><tr class="item__parameter"><th scope="row" data-label="name"><code>$top</code></th><td data-label="desc">&mdash;<span class="visually-hidden">none</span></td><td data-label="type"><code>Number</code></td><td data-label="default"><code>0</code></td></tr><tr class="item__paramet