Created
April 21, 2014 16:54
-
-
Save luk3thomas/11148644 to your computer and use it in GitHub Desktop.
Bootstraps's less mixins for sass, way back when
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Mixins.less | |
// Snippets of reusable CSS to develop faster and keep code readable | |
// ----------------------------------------------------------------- | |
// IE7 inline-block | |
// ---------------- | |
@mixin ie7-inline-block() { | |
*display: inline; /* IE7 inline-block hack */ | |
*zoom: 1; | |
} | |
// IE7 likes to collapse whitespace on either side of the inline-block elements. | |
// Ems because we're attempting to match the width of a space character. Left | |
// version is for form buttons, which typically come after other elements, and | |
// right version is for icons, which come before. Applying both is ok, but it will | |
// mean that space between those elements will be .6em (~2 space characters) in IE7, | |
// instead of the 1 space in other browsers. | |
@mixin ie7-restore-left-whitespace() { | |
*margin-left: .3em; | |
&:first-child { | |
*margin-left: 0; | |
} | |
} | |
@mixin ie7-restore-right-whitespace() { | |
*margin-right: .3em; | |
&:last-child { | |
*margin-left: 0; | |
} | |
} | |
// Sizing shortcuts | |
// ------------------------- | |
@mixin size($width, $height) { | |
width: $width; | |
height: $height; | |
} | |
@mixin square($size) { | |
@include size($size, $size); | |
} | |
// Placeholder text | |
// ------------------------- | |
@mixin placeholder($color: $placeholderText) { | |
:-moz-placeholder { | |
color: $color; | |
} | |
::-webkit-input-placeholder { | |
color: $color; | |
} | |
} | |
// Text overflow | |
// ------------------------- | |
// Requires inline-block or block for proper styling | |
@mixin text-overflow() { | |
overflow: hidden; | |
text-overflow: ellipsis; | |
white-space: nowrap; | |
} | |
// CSS image replacement | |
// ------------------------- | |
// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 | |
@mixin hide-text { | |
font: 0/0 a; | |
color: transparent; | |
text-shadow: none; | |
background-color: transparent; | |
border: 0; | |
} | |
// FORMS | |
// -------------------------------------------------- | |
// Block level inputs | |
@mixin input-block-level { | |
display: block; | |
width: 100%; | |
min-height: 28px; // Make inputs at least the height of their button counterpart | |
@include box-sizing(border-box); // Makes inputs behave like true block-level elements | |
} | |
// CSS3 PROPERTIES | |
// -------------------------------------------------- | |
// Border Radius | |
@mixin border-radius($radius) { | |
-webkit-border-radius: $radius; | |
-moz-border-radius: $radius; | |
border-radius: $radius; | |
} | |
// Drop shadows | |
@mixin box-shadow($shadow) { | |
-webkit-box-shadow: $shadow; | |
-moz-box-shadow: $shadow; | |
box-shadow: $shadow; | |
} | |
// Transitions | |
@mixin transition($transition) { | |
-webkit-transition: $transition; | |
-moz-transition: $transition; | |
-ms-transition: $transition; | |
-o-transition: $transition; | |
transition: $transition; | |
} | |
// Transformations | |
@mixin rotate($degrees) { | |
-webkit-transform: rotate($degrees); | |
-moz-transform: rotate($degrees); | |
-ms-transform: rotate($degrees); | |
-o-transform: rotate($degrees); | |
transform: rotate($degrees); | |
} | |
@mixin scale($ratio) { | |
-webkit-transform: scale($ratio); | |
-moz-transform: scale($ratio); | |
-ms-transform: scale($ratio); | |
-o-transform: scale($ratio); | |
transform: scale($ratio); | |
} | |
@mixin translate($x, $y) { | |
-webkit-transform: translate($x, $y); | |
-moz-transform: translate($x, $y); | |
-ms-transform: translate($x, $y); | |
-o-transform: translate($x, $y); | |
transform: translate($x, $y); | |
} | |
@mixin skew($x, $y) { | |
-webkit-transform: skew($x, $y); | |
-moz-transform: skew($x, $y); | |
-ms-transform: skew($x, $y); | |
-o-transform: skew($x, $y); | |
transform: skew($x, $y); | |
} | |
@mixin translate3d($x, $y, $z) { | |
-webkit-transform: translate($x, $y, $z); | |
-moz-transform: translate($x, $y, $z); | |
-ms-transform: translate($x, $y, $z); | |
-o-transform: translate($x, $y, $z); | |
transform: translate($x, $y, $z); | |
} | |
// Backface visibility | |
// Prevent browsers from flickering when using CSS 3D transforms. | |
// Default value is `visible`, but can be changed to `hidden | |
// See git pull https://github.com/dannykeane/bootstrap.git backface-visibility for examples | |
@mixin backface-visibility($visibility){ | |
-webkit-backface-visibility: $visibility; | |
-moz-backface-visibility: $visibility; | |
-ms-backface-visibility: $visibility; | |
backface-visibility: $visibility; | |
} | |
// Background clipping | |
// Heads up: FF 3.6 and under need "padding" instead of "padding-box" | |
@mixin background-clip($clip) { | |
-webkit-background-clip: $clip; | |
-moz-background-clip: $clip; | |
background-clip: $clip; | |
} | |
// Background sizing | |
@mixin background-size($size){ | |
-webkit-background-size: $size; | |
-moz-background-size: $size; | |
-o-background-size: $size; | |
background-size: $size; | |
} | |
// Box sizing | |
@mixin box-sizing($boxmodel) { | |
-webkit-box-sizing: $boxmodel; | |
-moz-box-sizing: $boxmodel; | |
-ms-box-sizing: $boxmodel; | |
box-sizing: $boxmodel; | |
} | |
// User select | |
// For selecting text on the page | |
@mixin user-select($select) { | |
-webkit-user-select: $select; | |
-moz-user-select: $select; | |
-ms-user-select: $select; | |
-o-user-select: $select; | |
user-select: $select; | |
} | |
// Resize anything | |
@mixin resizable($direction) { | |
resize: $direction; // Options: horizontal, vertical, both | |
overflow: auto; // Safari fix | |
} | |
// CSS3 Content Columns | |
@mixin content-columns($columnCount, $columnGap: $gridGutterWidth) { | |
-webkit-column-count: $columnCount; | |
-moz-column-count: $columnCount; | |
column-count: $columnCount; | |
-webkit-column-gap: $columnGap; | |
-moz-column-gap: $columnGap; | |
column-gap: $columnGap; | |
} | |
// Opacity | |
@mixin opacity($opacity) { | |
opacity: $opacity / 100; | |
//filter: ~"alpha(opacity=${opacity})"; | |
} | |
// BACKGROUNDS | |
// -------------------------------------------------- | |
// Gradients | |
@mixin horizontal-three-colors($startColor: #00b3ee, $midColor: #7a43b6, $colorStop: 50%, $endColor: #c3325f) { | |
background-color: mix($startColor, $endColor, 60%); | |
background-image: -moz-linear-gradient(left, $startColor 0%, $midColor $colorStop, $endColor 100%); /* FF3.6+ */ | |
background-image: -webkit-gradient(linear, left top, right top, color-stop(0%,$startColor), color-stop($colorStop,$midColor), color-stop(100%,$endColor)); /* Chrome,Safari4+ */ | |
background-image: -webkit-linear-gradient(left, $startColor 0%,$midColor $colorStop,$endColor 100%); /* Chrome10+,Safari5.1+ */ | |
background-image: -o-linear-gradient(left, $startColor 0%,$midColor $colorStop,$endColor 100%); /* Opera 11.10+ */ | |
background-image: -ms-linear-gradient(left, $startColor 0%,$midColor $colorStop,$endColor 100%); /* IE10+ */ | |
background-image: linear-gradient(to right, $startColor 0%,$midColor $colorStop,$endColor 100%); /* W3C */ | |
} | |
@mixin horizontal($startColor: #555, $endColor: #333) { | |
background-color: $endColor; | |
background-image: -moz-linear-gradient(left, $startColor, $endColor); // FF 3.6+ | |
background-image: -ms-linear-gradient(left, $startColor, $endColor); // IE10 | |
background-image: -webkit-gradient(linear, 0 0, 100% 0, from($startColor), to($endColor)); // Safari 4+, Chrome 2+ | |
background-image: -webkit-linear-gradient(left, $startColor, $endColor); // Safari 5.1+, Chrome 10+ | |
background-image: -o-linear-gradient(left, $startColor, $endColor); // Opera 11.10 | |
background-image: linear-gradient(left, $startColor, $endColor); // Le standard | |
background-repeat: repeat-x; | |
} | |
@mixin vertical($startColor: #555, $endColor: #333) { | |
background-color: mix($startColor, $endColor, 60%); | |
background-image: -moz-linear-gradient(top, $startColor, $endColor); // FF 3.6+ | |
background-image: -ms-linear-gradient(top, $startColor, $endColor); // IE10 | |
background-image: -webkit-gradient(linear, 0 0, 0 100%, from($startColor), to($endColor)); // Safari 4+, Chrome 2+ | |
background-image: -webkit-linear-gradient(top, $startColor, $endColor); // Safari 5.1+, Chrome 10+ | |
background-image: -o-linear-gradient(top, $startColor, $endColor); // Opera 11.10 | |
background-image: linear-gradient(top, $startColor, $endColor); // The standard | |
background-repeat: repeat-x; | |
} | |
@mixin directional($startColor: #555, $endColor: #333, $deg: 45deg) { | |
background-color: $endColor; | |
background-repeat: repeat-x; | |
background-image: -moz-linear-gradient($deg, $startColor, $endColor); // FF 3.6+ | |
background-image: -ms-linear-gradient($deg, $startColor, $endColor); // IE10 | |
background-image: -webkit-linear-gradient($deg, $startColor, $endColor); // Safari 5.1+, Chrome 10+ | |
background-image: -o-linear-gradient($deg, $startColor, $endColor); // Opera 11.10 | |
background-image: linear-gradient($deg, $startColor, $endColor); // The standard | |
} | |
@mixin vertical-three-colors($startColor: #00b3ee, $midColor: #7a43b6, $colorStop: 50%, $endColor: #c3325f) { | |
background-color: mix($midColor, $endColor, 80%); | |
background-image: -webkit-gradient(linear, 0 0, 0 100%, from($startColor), color-stop($colorStop, $midColor), to($endColor)); | |
background-image: -webkit-linear-gradient($startColor, $midColor $colorStop, $endColor); | |
background-image: -moz-linear-gradient(top, $startColor, $midColor $colorStop, $endColor); | |
background-image: -ms-linear-gradient($startColor, $midColor $colorStop, $endColor); | |
background-image: -o-linear-gradient($startColor, $midColor $colorStop, $endColor); | |
background-image: linear-gradient($startColor, $midColor $colorStop, $endColor); | |
background-repeat: no-repeat; | |
} | |
@mixin radial($innerColor: #555, $outerColor: #333) { | |
background-color: $outerColor; | |
background-image: -webkit-gradient(radial, center center, 0, center center, 460, from($innerColor), to($outerColor)); | |
background-image: -webkit-radial-gradient(circle, $innerColor, $outerColor); | |
background-image: -moz-radial-gradient(circle, $innerColor, $outerColor); | |
background-image: -ms-radial-gradient(circle, $innerColor, $outerColor); | |
background-image: -o-radial-gradient(circle, $innerColor, $outerColor); | |
background-repeat: no-repeat; | |
} | |
@mixin striped($color, $angle: -45deg) { | |
background-color: $color; | |
background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,.15)), color-stop(.75, rgba(255,255,255,.15)), color-stop(.75, transparent), to(transparent)); | |
background-image: -webkit-linear-gradient($angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent); | |
background-image: -moz-linear-gradient($angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent); | |
background-image: -ms-linear-gradient($angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent); | |
background-image: -o-linear-gradient($angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent); | |
background-image: linear-gradient($angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent); | |
} | |
// Reset filters for IE | |
@mixin pseudo { | |
position:absolute; | |
content:''; | |
display:block; | |
} | |
@mixin font-smoothing() { | |
font-smoothing:antialiased; | |
-moz-font-smoothing:antialiased; | |
-webkit-font-smoothing:antialiased; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment