243 lines
6.0 KiB
SCSS
243 lines
6.0 KiB
SCSS
//
|
|
// Mixins
|
|
// --------------------------------------------------
|
|
|
|
|
|
// Create REM values with PX fall back
|
|
//
|
|
// Generate a REM with PX fallback from
|
|
// $baseFontSize. Enter the desired size based
|
|
// on pixels in numerical form. Supports shorthand.
|
|
//
|
|
// Forked from: http://codepen.io/thejameskyle/pen/JmBjc
|
|
//
|
|
// @author Greg Rickaby
|
|
// @since 1.0
|
|
//
|
|
// Usage: @include rem($property, $values);
|
|
// Example Usage:
|
|
// @include rem(font-size, 16px);
|
|
// @include rem(margin, 0 24px 0 12px);
|
|
//
|
|
// Outputs:
|
|
// font-size: 16px;
|
|
// font-size: 1.6rem;
|
|
// margin: 0 24px 0 12px;
|
|
// margin: 0 2.4rem 0 1.2rem;
|
|
// ----------------------------------
|
|
$baseFontSize: 10; // Based on HTML reset html { font-size: 62.5%; }
|
|
|
|
@function parseInt($n) {
|
|
@return $n / ($n * 0 + 1);
|
|
}
|
|
|
|
@mixin rem($property, $values) {
|
|
$px : ();
|
|
$rem: ();
|
|
|
|
$root: $baseFontSize;
|
|
|
|
@each $value in $values {
|
|
@if $value == 0 or $value == auto {
|
|
$px : append($px , $value);
|
|
$rem: append($rem, $value);
|
|
}
|
|
|
|
@else if type-of($value) == number {
|
|
$unit: unit($value);
|
|
$val: parseInt($value);
|
|
|
|
@if $unit == "px" {
|
|
$px : append($px, $value);
|
|
$rem: append($rem, ($val / $root + rem));
|
|
}
|
|
|
|
@if $unit == "rem" {
|
|
$px : append($px, ($val * $root + px));
|
|
$rem: append($rem, $value);
|
|
}
|
|
}
|
|
|
|
@else {
|
|
$px : append($px, $value);
|
|
$rem: append($rem, $value);
|
|
}
|
|
}
|
|
|
|
@if $px == $rem {
|
|
#{$property}: $px;
|
|
} @else {
|
|
#{$property}: $px;
|
|
#{$property}: $rem;
|
|
}
|
|
}
|
|
|
|
@function rem($value) {
|
|
$root: $baseFontSize;
|
|
$val: parseInt($value);
|
|
$return: ();
|
|
|
|
@if unit($value) == "px" {
|
|
$return: append($return, ($val / $root + rem));
|
|
} @else {
|
|
$return: append($return, ($val * $root + px));
|
|
}
|
|
|
|
@return $return;
|
|
}
|
|
|
|
// Responsive Breakpoints
|
|
// ----------------------------------
|
|
|
|
@mixin breakpoint($point) {
|
|
@if $point == smallscreen {
|
|
@media screen and (max-width: 1380px) { @content; }
|
|
}
|
|
|
|
@else if $point == desktop {
|
|
@media screen and (max-width: 1140px) { @content; }
|
|
}
|
|
|
|
@else if $point == tablet {
|
|
@media screen and (max-width: 800px) { @content; }
|
|
}
|
|
|
|
@else if $point == tablet-small {
|
|
@media screen and (max-width: 700px) { @content; }
|
|
}
|
|
|
|
@else if $point == mobilelandscape {
|
|
@media screen and (max-width: 600px) { @content; }
|
|
}
|
|
|
|
@else if $point == mobile {
|
|
@media screen and (max-width: 480px) { @content; }
|
|
}
|
|
}
|
|
|
|
|
|
// Border Radius
|
|
// ----------------------------------
|
|
@mixin border-radius($radius) {
|
|
-webkit-border-radius: $radius;
|
|
-moz-border-radius: $radius;
|
|
border-radius: $radius;
|
|
}
|
|
|
|
// Single Corner Border Radius
|
|
// ----------------------------------
|
|
@mixin border-top-left-radius($radius) {
|
|
-webkit-border-top-left-radius: $radius;
|
|
-moz-border-radius-topleft: $radius;
|
|
border-top-left-radius: $radius;
|
|
}
|
|
@mixin border-top-right-radius($radius) {
|
|
-webkit-border-top-right-radius: $radius;
|
|
-moz-border-radius-topright: $radius;
|
|
border-top-right-radius: $radius;
|
|
}
|
|
@mixin border-bottom-right-radius($radius) {
|
|
-webkit-border-bottom-right-radius: $radius;
|
|
-moz-border-radius-bottomright: $radius;
|
|
border-bottom-right-radius: $radius;
|
|
}
|
|
@mixin border-bottom-left-radius($radius) {
|
|
-webkit-border-bottom-left-radius: $radius;
|
|
-moz-border-radius-bottomleft: $radius;
|
|
border-bottom-left-radius: $radius;
|
|
}
|
|
|
|
// Single Side Border Radius
|
|
// ----------------------------------
|
|
@mixin border-top-radius($radius) {
|
|
@include border-top-right-radius($radius);
|
|
@include border-top-left-radius($radius);
|
|
}
|
|
@mixin border-right-radius($radius) {
|
|
@include border-top-right-radius($radius);
|
|
@include border-bottom-right-radius($radius);
|
|
}
|
|
@mixin border-bottom-radius($radius) {
|
|
@include border-bottom-right-radius($radius);
|
|
@include border-bottom-left-radius($radius);
|
|
}
|
|
@mixin border-left-radius($radius) {
|
|
@include border-top-left-radius($radius);
|
|
@include border-bottom-left-radius($radius);
|
|
}
|
|
|
|
// Drop shadows
|
|
// ----------------------------------
|
|
@mixin box-shadow($shadow...) {
|
|
-webkit-box-shadow: $shadow;
|
|
-moz-box-shadow: $shadow;
|
|
box-shadow: $shadow;
|
|
}
|
|
|
|
// Box Sizing
|
|
// ----------------------------------
|
|
@mixin box-sizing($sizing...) {
|
|
-webkit-box-sizing: $sizing;
|
|
-moz-box-sizing: $sizing;
|
|
box-sizing: $sizing;
|
|
}
|
|
|
|
// Transitions
|
|
// ----------------------------------
|
|
@mixin transition($transition...) {
|
|
-webkit-transition: $transition;
|
|
-moz-transition: $transition;
|
|
-o-transition: $transition;
|
|
transition: $transition;
|
|
}
|
|
@mixin transition-delay($transition-delay) {
|
|
-webkit-transition-delay: $transition-delay;
|
|
-moz-transition-delay: $transition-delay;
|
|
-o-transition-delay: $transition-delay;
|
|
transition-delay: $transition-delay;
|
|
}
|
|
@mixin transition-duration($transition-duration) {
|
|
-webkit-transition-duration: $transition-duration;
|
|
-moz-transition-duration: $transition-duration;
|
|
-o-transition-duration: $transition-duration;
|
|
transition-duration: $transition-duration;
|
|
}
|
|
|
|
// 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: skewX($x) skewY($y); // See https://github.com/twitter/bootstrap/issues/4885
|
|
-o-transform: skew($x, $y);
|
|
transform: skew($x, $y);
|
|
-webkit-backface-visibility: hidden; // See https://github.com/twitter/bootstrap/issues/5319
|
|
}
|
|
@mixin translate3d($x, $y, $z) {
|
|
-webkit-transform: translate3d($x, $y, $z);
|
|
-moz-transform: translate3d($x, $y, $z);
|
|
-o-transform: translate3d($x, $y, $z);
|
|
transform: translate3d($x, $y, $z);
|
|
}
|