$breakpoints: ( xs: 576px, sm: 768px, md: 992px, lg: 1200px ); @mixin respond-above($breakpoint) { @if map-has-key($breakpoints, $breakpoint) { $breakpoint-value: map-get($breakpoints, $breakpoint); @media (min-width: $breakpoint-value) { @content; } } @else { @warn 'Invalid breakpoint: #{$breakpoint}.'; } } @mixin respond-below($breakpoint) { @if map-has-key($breakpoints, $breakpoint) { $breakpoint-value: map-get($breakpoints, $breakpoint); @media (max-width: ($breakpoint-value - 1)) { @content; } } @else { @warn 'Invalid breakpoint: #{$breakpoint}.'; } } @mixin respond-between($lower, $upper) { @if map-has-key($breakpoints, $lower) and map-has-key($breakpoints, $upper) { $lower-breakpoint: map-get($breakpoints, $lower); $upper-breakpoint: map-get($breakpoints, $upper); @media (min-width: $lower-breakpoint) and (max-width: ($upper-breakpoint - 1)) { @content; } } @else { @if (map-has-key($breakpoints, $lower) == false) { @warn 'Your lower breakpoint was invalid: #{$lower}.'; } @if (map-has-key($breakpoints, $upper) == false) { @warn 'Your upper breakpoint was invalid: #{$upper}.'; } } } @mixin border-radius($px: 0) { -webkit-border-radius: $px; -moz-border-radius: $px; border-radius: $px; } @mixin box-shadow($value) { -webkit-box-shadow: $value; -moz-box-shadow: $value; box-shadow: $value; } @mixin transition($element: all, $time: .5s, $option: ease) { -webkit-transition: $element $time $option !important; transition: $element $time $option !important; } @mixin opacity($value) { $IEValue: $value*100; opacity: $value; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity="+$IEValue+")"; filter: alpha(opacity=$IEValue); }@mixin flexbox() { display: -webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex; } // The 'flex' shorthand // - applies to: flex items // , initial, auto, or none @mixin flex($values) { -webkit-box-flex: $values; -moz-box-flex: $values; -webkit-flex: $values; -ms-flex: $values; flex: $values; } // Flex Flow Direction // - applies to: flex containers // row | row-reverse | column | column-reverse @mixin flex-direction($direction) { -webkit-flex-direction: $direction; -moz-flex-direction: $direction; -ms-flex-direction: $direction; flex-direction: $direction; } // Flex Line Wrapping // - applies to: flex containers // nowrap | wrap | wrap-reverse @mixin flex-wrap($wrap) { -webkit-flex-wrap: $wrap; -moz-flex-wrap: $wrap; -ms-flex-wrap: $wrap; flex-wrap: $wrap; } // Flex Direction and Wrap // - applies to: flex containers // || @mixin flex-flow($flow) { -webkit-flex-flow: $flow; -moz-flex-flow: $flow; -ms-flex-flow: $flow; flex-flow: $flow; } // Display Order // - applies to: flex items // @mixin order($val) { -webkit-box-ordinal-group: $val; -moz-box-ordinal-group: $val; -ms-flex-order: $val; -webkit-order: $val; order: $val; } // Flex grow factor // - applies to: flex items // @mixin flex-grow($grow) { -webkit-flex-grow: $grow; -moz-flex-grow: $grow; -ms-flex-grow: $grow; flex-grow: $grow; } // Flex shrink // - applies to: flex item shrink factor // @mixin flex-shrink($shrink) { -webkit-flex-shrink: $shrink; -moz-flex-shrink: $shrink; -ms-flex-shrink: $shrink; flex-shrink: $shrink; } // Flex basis // - the initial main size of the flex item // - applies to: flex itemsnitial main size of the flex item // @mixin flex-basis($width) { -webkit-flex-basis: $width; -moz-flex-basis: $width; -ms-flex-basis: $width; flex-basis: $width; } // Axis Alignment // - applies to: flex containers // flex-start | flex-end | center | space-between | space-around @mixin justify-content($justify) { -webkit-justify-content: $justify; -moz-justify-content: $justify; -ms-justify-content: $justify; justify-content: $justify; -ms-flex-pack: $justify; } // Packing Flex Lines // - applies to: multi-line flex containers // flex-start | flex-end | center | space-between | space-around | stretch @mixin align-content($align) { -webkit-align-content: $align; -moz-align-content: $align; -ms-align-content: $align; align-content: $align; } // Cross-axis Alignment // - applies to: flex containers // flex-start | flex-end | center | baseline | stretch @mixin align-items($align) { -webkit-align-items: $align; -moz-align-items: $align; -ms-align-items: $align; align-items: $align; } // Cross-axis Alignment // - applies to: flex items // auto | flex-start | flex-end | center | baseline | stretch @mixin align-self($align) { -webkit-align-self: $align; -moz-align-self: $align; -ms-align-self: $align; align-self: $align; } @mixin firefox { @at-root { @-moz-document url-prefix() { & { @content; } } } }