hacketyhack/hackety-hack.com

View on GitHub
app/assets/stylesheets/lib/bootstrap/preboot.scss

Summary

Maintainability
Test Coverage
/* Preboot.less
 * Variables and mixins to pre-ignite any new web development project
 * ------------------------------------------------------------------ */


// VARIABLES
// ---------

// Links
$linkColor:         #04BFBF;
$linkColorHover:    darken($linkColor, 10);

// Grays
$black:             #000;
$grayDark:          lighten($black, 25%);
$gray:              lighten($black, 50%);
$grayLight:         lighten($black, 75%);
$grayLighter:       lighten($black, 90%);
$white:             #fff;

// Accent Colors
$blue:              #04BFBF;
$blueDark:          #008a8a;
$green:             #C0D966 - #111;
$red:               #9d261d;
$yellow:            #ffc40d;
$orange:            #f89406;
$pink:              #c3325f;
$purple:            #7a43b6;

// Baseline grid
$basefont:          13px;
$baseline:          18px;

// Griditude
$gridColumns:       16;
$gridColumnWidth:   40px;
$gridGutterWidth:   20px;
$extraSpace:        ($gridGutterWidth * 2); // For our grid calculations
$siteWidth:         ($gridColumns * $gridColumnWidth) + ($gridGutterWidth * ($gridColumns - 1));

// Color Scheme
$baseColor:         $blue;                  // Set a base color
$complement:        spin($baseColor, 180);  // Determine a complementary color
$split1:            spin($baseColor, 158);  // Split complements
$split2:            spin($baseColor, -158);
$triad1:            spin($baseColor, 135);  // Triads colors
$triad2:            spin($baseColor, -135);
$tetra1:            spin($baseColor, 90);   // Tetra colors
$tetra2:            spin($baseColor, -90);
$analog1:           spin($baseColor, 22);   // Analogs colors
$analog2:           spin($baseColor, -22);


// MIXINS
// ------

// Clearfix for clearing floats like a boss h5bp.com/q
@mixin clearfix {
  zoom: 1;
    &:before, &:after {
    display: table;
    content: "";
    }
    &:after {
    clear: both;
    }
}

.clearfix {
  @include clearfix;
}

// Center-align a block level element
.center-block {
    display: block;
  margin: 0 auto;
}

// Sizing shortcuts
@mixin size($height: 5px, $width: 5px) {
    height: $height;
    width: $width;
}
@mixin square($size: 5px) {
    @include size($size, $size);
}

// Input placeholder text
@mixin placeholder($color: $grayLight) {
  :-moz-placeholder {
    color: $color;
  }
  ::-webkit-input-placeholder {
    color: $color;
  }
}

// Font Stacks
@mixin font-shorthand($weight: normal, $size: 14px, $lineHeight: 20px) {
  font-size: $size;
  font-weight: $weight;
  line-height: $lineHeight;
}
@mixin font-sans-serif($weight: normal, $size: 14px, $lineHeight: 20px) {
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: $size;
  font-weight: $weight;
  line-height: $lineHeight;
}
@mixin font-serif($weight: normal, $size: 14px, $lineHeight: 20px) {
  font-family: "Georgia", Times New Roman, Times, serif;
  font-size: $size;
  font-weight: $weight;
  line-height: $lineHeight;
}
@mixin font-monospace($weight: normal, $size: 12px, $lineHeight: 20px) {
  font-family: "Monaco", Courier New, monospace;
  font-size: $size;
  font-weight: $weight;
  line-height: $lineHeight;
}

// Grid System
.container {
  width: $siteWidth;
  margin: 0 auto;
  @include clearfix;
}
@mixin columns($columnSpan: 1, $last: false) {
  width: ($gridColumnWidth * $columnSpan) + ($gridGutterWidth * ($columnSpan - 1));
  display: inline;
  float: left;

  @if $last {
    margin-right: 0;
  }
  @else {
    margin-right: $gridGutterWidth;
  }
}

@mixin offset($columnOffset: 1) {
  margin-left: ($gridColumnWidth * $columnOffset) + ($gridGutterWidth * ($columnOffset - 1)) + $extraSpace;
}

// Border Radius
@mixin border-radius($radius: 5px) {
  -webkit-border-radius: $radius;
     -moz-border-radius: $radius;
          border-radius: $radius;
}

// Drop shadows
@mixin box-shadow($shadow: 0 1px 3px rgba(0,0,0,.25)) {
  -webkit-box-shadow: $shadow;
     -moz-box-shadow: $shadow;
          box-shadow: $shadow;
}

// Transitions
@mixin transition($transition) {
    -webkit-transition: $transition;
       -moz-transition: $transition;
            transition: $transition;
}

// Background clipping
@mixin background-clip($clip) {
    -webkit-background-clip: $clip;
       -moz-background-clip: $clip;
            background-clip: $clip;
}

// CSS3 Content Columns
@mixin content-columns($columnCount, $columnGap: 20px) {
    -webkit-column-count: $columnCount;
       -moz-column-count: $columnCount;
          column-count: $columnCount;
  -webkit-column-gap: $columnGap;
       -moz-column-gap: $columnGap;
          column-gap: $columnGap;
}


// Add an alphatransparency value to any background or border color (via Elyse Holladay)
@mixin translucent-background($color: $white, $alpha: 1) {
  background-color: hsla(hue($color), saturation($color), lightness($color), $alpha);
}
@mixin translucent-border($color: $white, $alpha: 1) {
  border-color: hsla(hue($color), saturation($color), lightness($color), $alpha);
  background-clip: padding-box;
}

// Gradients
@mixin gradient-horizontal ($startColor: #555, $endColor: #333) {
  background-color: $endColor;
  background-repeat: repeat-x;
  background-image: -khtml-gradient(linear, left top, right top, from($startColor), to($endColor)); // Konqueror
  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, left top, right top, color-stop(0%, $startColor), color-stop(100%, $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
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{$startColor}', endColorstr='#{$endColor}', GradientType=1); // IE9 and down
}
@mixin gradient-vertical ($startColor: #555, $endColor: #333) {
  background-color: $endColor;
  background-repeat: repeat-x;
  background-image: -khtml-gradient(linear, left top, left bottom, from($startColor), to($endColor)); // Konqueror
  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, left top, left bottom, color-stop(0%, $startColor), color-stop(100%, $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
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{$startColor}', endColorstr='#{$endColor}', GradientType=0); // IE9 and down
}
@mixin gradient-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 gradient-vertical-three-colors($startColor: #00b3ee, $midColor: #7a43b6, $colorStop: 50%, $endColor: #c3325f) {
  background-color: $endColor;
  background-repeat: no-repeat;
  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($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);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{$startColor}', endColorstr='#{$endColor}', GradientType=0); // IE9 and down, gets no color-stop at all for proper fallback
}

// Gradient Bar Colors for buttons and allerts
@mixin gradient-bar($primaryColor, $secondaryColor) {
  @include gradient-vertical($primaryColor, $secondaryColor);
  text-shadow: 0 -1px 0 rgba(0,0,0,.25);
  border-color: $secondaryColor $secondaryColor darken($secondaryColor, 15%);
  border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) fadein(rgba(0,0,0,.1), 15%);
}

// Shared colors for buttons and alerts
.btn,
.alert-message {
  // Set text color
  &.danger,
  &.danger:hover,
  &.error,
  &.error:hover,
  &.success,
  &.success:hover,
  &.info,
  &.info:hover {
    color: $white
  }
  // Danger and error appear as red
  &.danger,
  &.error {
    @include gradient-bar(#ee5f5b, #c43c35);
  }
  // Success appears as green
  &.success {
    @include gradient-bar(#C0D966 - #111, #C0D966 - #222);
  }
  // Info appears as a neutral blue
  &.info {
    @include gradient-bar(#5bc0de, #339bb9);
  }
}


// Reset filters for IE
@mixin reset-filter {
  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}

// Opacity
@mixin opacity($opacity: 100) {
  filter: "alpha(opacity=#{$opacity})";
  -khtml-opacity: $opacity / 100;
    -moz-opacity: $opacity / 100;
         opacity: $opacity / 100;
}