//
// Mixins
// --------------------------------------------------
// General
// --------------------------------------------------
// Utilities
// -------------------------
// Clearfix
// Source: http://nicolasgallagher.com/micro-clearfix-hack/
//
// 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 are clearfixed.
// 2. The use of `table` rather than `block` is only necessary if using
// `:before` to contain the top-margins of child elements.
@mixin clearfix() {
&:before,
&:after {
display: table; // 2
content: " "; // 1
}
&:after {
clear: both;
}
}
// Box shadow
@mixin box-shadow($shadow...) {
-webkit-box-shadow: $shadow;
box-shadow: $shadow;
}
// Gradients
@mixin linear-gradient($color-from, $color-to) {
background-color: $color-from; // Old browsers
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%,$color-from), color-stop(100%,$color-to)); // Chrome, Safari4+
background-image: -webkit-linear-gradient(top, $color-from 0%, $color-to 100%); // Chrome10+, Safari5.1+
background-image: -moz-linear-gradient(top, $color-from 0%, $color-to 100%); // FF3.6+
background-image: -ms-linear-gradient(top, $color-from 0%, $color-to 100%); // IE10+
background-image: -o-linear-gradient(top, $color-from 0%, $color-to 100%); // Opera 11.10+
background-image: linear-gradient(to bottom, $color-from 0%, $color-to 100%); // W3C
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#{$color-from}', endColorstr='#{$color-to}', GradientType=0 ); // IE6-9
}
@mixin directional-gradient($color-from, $color-to, $deg: 45deg) {
background-color: $color-from; // Old browsers
background-image: -webkit-gradient(linear, left bottom, right top, color-stop(0%,$color-from), color-stop(100%,$color-to)); // Chrome, Safari4+
background-image: -webkit-linear-gradient($deg, $color-from 0%, $color-to 100%); // Chrome10+, Safari5.1+
background-image: -moz-linear-gradient($deg, $color-from 0%, $color-to 100%); // FF3.6+
background-image: -ms-linear-gradient($deg, $color-from 0%, $color-to 100%); // IE10+
background-image: -o-linear-gradient($deg, $color-from 0%, $color-to 100%); // Opera 11.10+
background-image: linear-gradient($deg, $color-from 0%, $color-to 100%); // W3C
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#{$color-from}', endColorstr='#{$color-to}', GradientType=1 ); // IE6-9
}
// Transforms
// --------------------------------------------------
@mixin transform($transform...) {
-webkit-transform: $transform;
-ms-transform: $transform;
transform: $transform;
}
// Transitions
// --------------------------------------------------
@mixin transition($transition...) {
-webkit-transition: $transition;
-moz-transition: $transition;
transition: $transition;
}
@mixin transition-property($property...) {
-webkit-transition-property: $property;
-moz-transition-property: $property;
transition-property: $property;
}
@mixin transition-duration($duration...) {
-webkit-transition-duration: $duration;
-moz-transition-duration: $duration;
transition-duration: $duration;
}
@mixin transition-timing-function($function...) {
-webkit-transition-timing-function: $function;
-moz-transition-timing-function: $function;
transition-timing-function: $function;
}
// Animations
// --------------------------------------------------
@mixin animation-name($name) {
-webkit-animation-name: $name;
-moz-animation-name: $name;
animation-name: $name;
}
@mixin animation-duration($duration) {
-webkit-animation-duration: $duration;
-moz-animation-duration: $duration;
animation-duration: $duration;
}
@mixin animation-direction($direction) {
-webkit-animation-direction: $direction;
-moz-animation-direction: $direction;
animation-direction: $direction;
}
// Misc
// --------------------------------------------------
@mixin hairline($type, $color, $offset) {
@if $type == single {
background-image: url("data:image/svg+xml;utf8,");
background-position: $offset 100%;
} @else if $type == double {
background-image: url("data:image/svg+xml;utf8,"),
url("data:image/svg+xml;utf8,");
background-position: $offset 100%, $offset 0;
}
background-repeat: no-repeat;
}