ricardozea
11/10/2014 - 2:40 AM

Utility Mixins

Utility Mixins

//MIXINS PARTIAL

//SAME WIDTH & HEIGHT
//Demo: http://codepen.io/ricardozea/pen/hftIe
//Usage: @include wh(20px,40px); or @include wh(20px);
@mixin size($width, $height:$width) {
  width:$width;
  height:$height;
}

//LINKS
@mixin linksColors-lvhaf($link, $visited, $hover, $active, $focus) {
  a { transition:.2s; padding:1%; margin:-1%; text-decoration:underline;
    &         { color:$link; }
    &:visited { color:$visited; }
    &:hover   { color:$hover; text-decoration:none; }
    &:active  { color:$active; outline:#ccc 1px dotted; }
    &:focus   { color:$focus; }
  }
}

//INSIDE BORDERS
  //Demo: http://codepen.io/ricardozea/pen/5d729855e63d404f0dfa46bda3bb56d1/
  //Usage: @include ib(2em, orange, .5);
$ib-defaults: (
  thickness : 2px,
  color     : black,
  alpha     : .1
) !default;

//Use a "variable argument" to accept any number of values.
@mixin inside-border($values...) {
  $border-thickness: map-get($ib-defaults, "thickness");
  $border-color: map-get($ib-defaults, "color");
  $border-alpha: map-get($ib-defaults, "alpha");

  @each $value in $values {
    @if type-of($value) == "number" {
      @if unitless($value) {
        $border-alpha: $value;
      }

      @else {
        $border-thickness: $value;
      }
    }

    @else if type-of($value) == "color" {
      $border-color: $value;
    }

    @else {
      @warn "Warning! Unexpected value: `#{$value}`.";
    }
  }

  box-shadow: inset 0 0 0 $border-thickness rgba($border-color, $border-alpha);
}

@mixin ib($values...) {
  @include inside-border($values...);
}

//PLACEHOLDERS
  //Top Nav: Style for hover and active links
  %link-hover-active { position:relative; top:-1px; z-index:1; color:black; @extend %border-drop-shadow; }

  //Borders and drop shadow on nav items and Category Page headings
  %border-drop-shadow { box-shadow:0 1px 0 rgba(black,.4), inset 0 0 0 1px rgba(black,.05); }