git.fiddlerwoaroof.com
less/mixins.less
ffc9d555
 // Mixins.less
 // Snippets of reusable CSS to develop faster and keep code readable
 // -----------------------------------------------------------------
 
 
 // UTILITY MIXINS
 // --------------------------------------------------
 
 // Clearfix
 // --------
 // For clearing floats like a boss h5bp.com/q
 .clearfix {
   &:before,
   &:after {
     display: table;
     content: "";
   }
   &:after {
     clear: both;
   }
 }
 
 // Webkit-style focus
 // ------------------
 .tab-focus() {
   // Default
   outline: thin dotted #333;
   // Webkit
   outline: 5pt auto -webkit-focus-ring-color;
   outline-offset: -2pt;
 }
 
 // Center-align a block level element
 // ----------------------------------
 .center-block() {
   display: block;
   margin-left: auto;
   margin-right: auto;
 }
 
 // Sizing shortcuts
 // -------------------------
 .size(@height, @width) {
   width: @width;
   height: @height;
 }
 .square(@size) {
   .size(@size, @size);
 }
 
 // Placeholder text
 // -------------------------
 .placeholder(@color: @placeholderText) {
   :-moz-placeholder {
     color: @color;
   }
   ::-webkit-input-placeholder {
     color: @color;
   }
 }
 
 // Text overflow
 // -------------------------
 // Requires inline-block or block for proper styling
 .text-overflow() {
   overflow: hidden;
   text-overflow: ellipsis;
   white-space: nowrap;
 }
 
 // CSS image replacement
 // -------------------------
 // Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757
 .hide-text {
   font: 0/0 a;
   color: transparent;
   background-color: transparent;
   border: 0;
 }
 
 // FONTS
 // --------------------------------------------------
 
 #font {
   #family {
     .serif() {
       font-family: @serifFontFamily;
     }
     .sans-serif() {
       font-family: @sansFontFamily;
     }
     .monospace() {
       font-family: @monoFontFamily;
     }
   }
   .shorthand(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
     font-size: @size;
     font-weight: @weight;
     line-height: @lineHeight;
   }
   .serif(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
     #font > #family > .serif;
     #font > .shorthand(@size, @weight, @lineHeight);
   }
   .sans-serif(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
     #font > #family > .sans-serif;
     #font > .shorthand(@size, @weight, @lineHeight);
   }
   .monospace(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) {
     #font > #family > .monospace;
     #font > .shorthand(@size, @weight, @lineHeight);
   }
 }
 
 // FORMS
 // --------------------------------------------------
 
 // Mixin for form field states
 .formFieldState(@textColor: #555, @borderColor: #ccc, @backgroundColor: #f5f5f5) {
   // Set the text color
   > label,
   .help-block,
   .help-inline {
     color: @textColor;
   }
   // Style inputs accordingly
   input,
   select,
   textarea {
     color: @textColor;
     border-color: @borderColor;
     &:focus {
       border-color: darken(@borderColor, 10%);
     }
   }
   // Give a small background color for input-prepend/-append
   .input-prepend .add-on,
   .input-append .add-on {
     color: @textColor;
     background-color: @backgroundColor;
     border-color: @textColor;
   }
 }
 
 
 
 // CSS3 PROPERTIES
 // --------------------------------------------------
 
 // Border Radius
 .border-radius(@radius) {
693a0868
     border-radius: @radius;
ffc9d555
 }
 
 // Transitions
 .transition(@transition) {
693a0868
     transition: @transition;
ffc9d555
 }
 
 // Transformations
 .rotate(@degrees) {
693a0868
     transform: rotate(@degrees);
ffc9d555
 }
 .scale(@ratio) {
693a0868
     transform: scale(@ratio);
ffc9d555
 }
 .translate(@x, @y) {
693a0868
     transform: translate(@x, @y);
ffc9d555
 }
 .skew(@x, @y) {
693a0868
     transform: skew(@x, @y);
ffc9d555
 }
 .translate3d(@x, @y, @z) {
693a0868
     transform: translate(@x, @y, @z);
ffc9d555
 }
 
 // Backface visibility
 // Prevent browsers from flickering when using CSS 3D transforms.
 // Default value is `visible`, but can be changed to `hidden
 // See git pull https://github.com/dannykeane/bootstrap.git backface-visibility for examples
 .backface-visibility(@visibility){
     -webkit-backface-visibility: @visibility;
             backface-visibility: @visibility;
 }
 
 // Background clipping
 // Heads up: FF 3.6 and under need "padding" instead of "padding-box"
 .background-clip(@clip) {
   -webkit-background-clip: @clip;
      -moz-background-clip: @clip;
           background-clip: @clip;
 }
 
 // Background sizing
 .background-size(@size){
   -webkit-background-size: @size;
      -moz-background-size: @size;
        -o-background-size: @size;
           background-size: @size;
 }
 
 
 // Box sizing
 .box-sizing(@boxmodel) {
           box-sizing: @boxmodel;
 }
 
 // User select
 // For selecting text on the page
 .user-select(@select) {
   -webkit-user-select: @select;
      -moz-user-select: @select;
       -ms-user-select: @select;
        -o-user-select: @select;
           user-select: @select;
 }
 
 // Resize anything
 .resizable(@direction) {
   resize: @direction; // Options: horizontal, vertical, both
   overflow: auto; // Safari fix
 }
 
 // CSS3 Content Columns
 .content-columns(@columnCount, @columnGap: @gridGutterWidth) {
   -webkit-column-count: @columnCount;
      -moz-column-count: @columnCount;
           column-count: @columnCount;
   -webkit-column-gap: @columnGap;
      -moz-column-gap: @columnGap;
           column-gap: @columnGap;
 }
 
 // Opacity
 .opacity(@opacity) {
   opacity: @opacity / 100;
 }
 
 
 
 // BACKGROUNDS
 // --------------------------------------------------
 
 // COMPONENT MIXINS
 // --------------------------------------------------
 
 // Horizontal dividers
 // -------------------------
 // Dividers (basically an hr) within dropdowns and nav lists
 .nav-divider() {
   height: 1pt;
   margin: ((@baseLineHeight / 2) - 1) 1pt; // 8pt 1pt
   overflow: hidden;
   background-color: #e5e5e5;
   border-bottom: 1pt solid @white;
 }
 
 // Button backgrounds
 // ------------------
 
 // Navbar vertical align
 // -------------------------
 // Vertically center elements in the navbar.
 // Example: an element has a height of 30pt, so write out `.navbarVerticalAlign(30pt);` to calculate the appropriate top margin.
 .navbarVerticalAlign(@elementHeight) {
   margin-top: (@navbarHeight - @elementHeight) / 2;
 }
 
 // Popover arrows
 // -------------------------
 // For tipsies and popovers
 #popoverArrow {
   .top(@arrowWidth: 5pt, @color: @black) {
     bottom: 0;
     left: 50%;
     margin-left: -@arrowWidth;
     border-left: @arrowWidth solid transparent;
     border-right: @arrowWidth solid transparent;
     border-top: @arrowWidth solid @color;
   }
   .left(@arrowWidth: 5pt, @color: @black) {
     top: 50%;
     right: 0;
     margin-top: -@arrowWidth;
     border-top: @arrowWidth solid transparent;
     border-bottom: @arrowWidth solid transparent;
     border-left: @arrowWidth solid @color;
   }
   .bottom(@arrowWidth: 5pt, @color: @black) {
     top: 0;
     left: 50%;
     margin-left: -@arrowWidth;
     border-left: @arrowWidth solid transparent;
     border-right: @arrowWidth solid transparent;
     border-bottom: @arrowWidth solid @color;
   }
   .right(@arrowWidth: 5pt, @color: @black) {
     top: 50%;
     left: 0;
     margin-top: -@arrowWidth;
     border-top: @arrowWidth solid transparent;
     border-bottom: @arrowWidth solid transparent;
     border-right: @arrowWidth solid @color;
   }
 }
 
 // Grid System
 // -----------
 
 // Centered container element
 .container-fixed() {
   margin-right: auto;
   margin-left: auto;
   .clearfix();
 }
 
 // Table columns
 .tableColumns(@columnSpan: 1) {
   float: none; // undo default grid column styles
   width: ((@gridColumnWidth) * @columnSpan) + (@gridGutterWidth * (@columnSpan - 1)) - 16; // 16 is total padding on left and right of table cells
   margin-left: 0; // undo default grid column styles
 }
 
 // Make a Grid
 // Use .makeRow and .makeColumn to assign semantic layouts grid system behavior
 .makeRow() {
   margin-left: @gridGutterWidth * -1;
   .clearfix();
 }
 .makeColumn(@columns: 1, @offset: 0) {
   float: left;
   margin-left: (@gridColumnWidth * @offset) + (@gridGutterWidth * (@offset - 1)) + (@gridGutterWidth * 2);
   width: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1));
 }