mirror of
				https://github.com/twbs/bootstrap.git
				synced 2025-10-31 00:04:27 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			553 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			553 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| //
 | |
| // Mixins
 | |
| // --------------------------------------------------
 | |
| 
 | |
| 
 | |
| // Utilities
 | |
| // -------------------------
 | |
| 
 | |
| // Clearfix
 | |
| // Source: http://nicolasgallagher.com/micro-clearfix-hack/
 | |
| //
 | |
| // For modern browsers
 | |
| // 1. The space content is one way to avoid an Opera bug when the
 | |
| //    contenteditable attribute is included anywhere else in the document.
 | |
| //    Otherwise it causes space to appear at the top and bottom of elements
 | |
| //    that are clearfixed.
 | |
| // 2. The use of `table` rather than `block` is only necessary if using
 | |
| //    `:before` to contain the top-margins of child elements.
 | |
| .clearfix() {
 | |
|   &:before,
 | |
|   &:after {
 | |
|     content: " "; /* 1 */
 | |
|     display: table; /* 2 */
 | |
|   }
 | |
|   &:after {
 | |
|     clear: both;
 | |
|   }
 | |
| }
 | |
| 
 | |
| // Webkit-style focus
 | |
| .tab-focus() {
 | |
|   // Default
 | |
|   outline: thin dotted #333;
 | |
|   // Webkit
 | |
|   outline: 5px auto -webkit-focus-ring-color;
 | |
|   outline-offset: -2px;
 | |
| }
 | |
| 
 | |
| // Center-align a block level element
 | |
| .center-block() {
 | |
|   display: block;
 | |
|   margin-left: auto;
 | |
|   margin-right: auto;
 | |
| }
 | |
| 
 | |
| // Sizing shortcuts
 | |
| .size(@width, @height) {
 | |
|   width: @width;
 | |
|   height: @height;
 | |
| }
 | |
| .square(@size) {
 | |
|   .size(@size, @size);
 | |
| }
 | |
| 
 | |
| // Placeholder text
 | |
| .placeholder(@color: @input-color-placeholder) {
 | |
|   &:-moz-placeholder            { color: @color; } // Firefox 4-18
 | |
|   &::-moz-placeholder           { color: @color; } // Firefox 19+
 | |
|   &:-ms-input-placeholder       { color: @color; } // Internet Explorer 10+
 | |
|   &::-webkit-input-placeholder  { color: @color; } // Safari and Chrome
 | |
| }
 | |
| 
 | |
| // 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;
 | |
|   text-shadow: none;
 | |
|   background-color: transparent;
 | |
|   border: 0;
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| // CSS3 PROPERTIES
 | |
| // --------------------------------------------------
 | |
| 
 | |
| // Single side border-radius
 | |
| .border-top-radius(@radius) {
 | |
|   border-top-right-radius: @radius;
 | |
|    border-top-left-radius: @radius;
 | |
| }
 | |
| .border-right-radius(@radius) {
 | |
|   border-bottom-right-radius: @radius;
 | |
|      border-top-right-radius: @radius;
 | |
| }
 | |
| .border-bottom-radius(@radius) {
 | |
|   border-bottom-right-radius: @radius;
 | |
|    border-bottom-left-radius: @radius;
 | |
| }
 | |
| .border-left-radius(@radius) {
 | |
|   border-bottom-left-radius: @radius;
 | |
|      border-top-left-radius: @radius;
 | |
| }
 | |
| 
 | |
| // Drop shadows
 | |
| .box-shadow(@shadow) {
 | |
|   -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1
 | |
|           box-shadow: @shadow;
 | |
| }
 | |
| 
 | |
| // Transitions
 | |
| .transition(@transition) {
 | |
|   -webkit-transition: @transition;
 | |
|      -moz-transition: @transition;
 | |
|        -o-transition: @transition;
 | |
|           transition: @transition;
 | |
| }
 | |
| .transition-delay(@transition-delay) {
 | |
|   -webkit-transition-delay: @transition-delay;
 | |
|      -moz-transition-delay: @transition-delay;
 | |
|        -o-transition-delay: @transition-delay;
 | |
|           transition-delay: @transition-delay;
 | |
| }
 | |
| .transition-duration(@transition-duration) {
 | |
|   -webkit-transition-duration: @transition-duration;
 | |
|      -moz-transition-duration: @transition-duration;
 | |
|        -o-transition-duration: @transition-duration;
 | |
|           transition-duration: @transition-duration;
 | |
| }
 | |
| 
 | |
| // Transformations
 | |
| .rotate(@degrees) {
 | |
|   -webkit-transform: rotate(@degrees);
 | |
|      -moz-transform: rotate(@degrees);
 | |
|       -ms-transform: rotate(@degrees);
 | |
|        -o-transform: rotate(@degrees);
 | |
|           transform: rotate(@degrees);
 | |
| }
 | |
| .scale(@ratio) {
 | |
|   -webkit-transform: scale(@ratio);
 | |
|      -moz-transform: scale(@ratio);
 | |
|       -ms-transform: scale(@ratio);
 | |
|        -o-transform: scale(@ratio);
 | |
|           transform: scale(@ratio);
 | |
| }
 | |
| .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);
 | |
| }
 | |
| .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
 | |
| }
 | |
| .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);
 | |
| }
 | |
| 
 | |
| // 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;
 | |
| 	   -moz-backface-visibility: @visibility;
 | |
| 	        backface-visibility: @visibility;
 | |
| }
 | |
| 
 | |
| // Background clipping
 | |
| .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) {
 | |
|   -webkit-box-sizing: @boxmodel;
 | |
|      -moz-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(@column-count, @column-gap: @grid-gutter-width) {
 | |
|   -webkit-column-count: @column-count;
 | |
|      -moz-column-count: @column-count;
 | |
|           column-count: @column-count;
 | |
|   -webkit-column-gap: @column-gap;
 | |
|      -moz-column-gap: @column-gap;
 | |
|           column-gap: @column-gap;
 | |
| }
 | |
| 
 | |
| // Optional hyphenation
 | |
| .hyphens(@mode: auto) {
 | |
|   word-wrap: break-word;
 | |
|   -webkit-hyphens: @mode;
 | |
|      -moz-hyphens: @mode;
 | |
|       -ms-hyphens: @mode;
 | |
|        -o-hyphens: @mode;
 | |
|           hyphens: @mode;
 | |
| }
 | |
| 
 | |
| // Opacity
 | |
| .opacity(@opacity) {
 | |
|   opacity: @opacity;
 | |
|   // IE8 filter
 | |
|   @opacity-ie: (@opacity * 100);
 | |
|   filter: ~"alpha(opacity=@{opacity-ie})";
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| // BACKGROUNDS
 | |
| // --------------------------------------------------
 | |
| 
 | |
| // Gradients
 | |
| #gradient {
 | |
|   .horizontal(@startColor: #555, @endColor: #333) {
 | |
|     background-color: @endColor;
 | |
|     background-image: -moz-linear-gradient(left, @startColor, @endColor); // FF 3.6+
 | |
|     background-image: -webkit-gradient(linear, 0 0, 100% 0, from(@startColor), to(@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(to right, @startColor, @endColor); // Standard, IE10
 | |
|     background-repeat: repeat-x;
 | |
|     filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@startColor),argb(@endColor))); // IE9 and down
 | |
|   }
 | |
|   .vertical(@startColor: #555, @endColor: #333) {
 | |
|     background-color: @endColor;
 | |
|     background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+
 | |
|     background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@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(to bottom, @startColor, @endColor); // Standard, IE10
 | |
|     background-repeat: repeat-x;
 | |
|     filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down
 | |
|   }
 | |
|   .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: -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); // Standard, IE10
 | |
|   }
 | |
|   .horizontal-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) {
 | |
|     background-color: mix(@midColor, @endColor, 80%);
 | |
|     background-image: -webkit-gradient(left, linear, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor));
 | |
|     background-image: -webkit-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
 | |
|     background-image: -moz-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
 | |
|     background-image: -o-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
 | |
|     background-image: linear-gradient(to right, @startColor, @midColor @colorStop, @endColor);
 | |
|     background-repeat: no-repeat;
 | |
|     filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@startColor),argb(@endColor))); // IE9 and down, gets no color-stop at all for proper fallback
 | |
|   }
 | |
| 
 | |
|   .vertical-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) {
 | |
|     background-color: mix(@midColor, @endColor, 80%);
 | |
|     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(top, @startColor, @midColor @colorStop, @endColor);
 | |
|     background-image: -o-linear-gradient(@startColor, @midColor @colorStop, @endColor);
 | |
|     background-image: linear-gradient(@startColor, @midColor @colorStop, @endColor);
 | |
|     background-repeat: no-repeat;
 | |
|     filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down, gets no color-stop at all for proper fallback
 | |
|   }
 | |
|   .radial(@innerColor: #555, @outerColor: #333) {
 | |
|     background-color: @outerColor;
 | |
|     background-image: -webkit-gradient(radial, center center, 0, center center, 460, from(@innerColor), to(@outerColor));
 | |
|     background-image: -webkit-radial-gradient(circle, @innerColor, @outerColor);
 | |
|     background-image: -moz-radial-gradient(circle, @innerColor, @outerColor);
 | |
|     background-image: -o-radial-gradient(circle, @innerColor, @outerColor);
 | |
|     background-image: radial-gradient(circle, @innerColor, @outerColor);
 | |
|     background-repeat: no-repeat;
 | |
|   }
 | |
|   .striped(@color: #555, @angle: 45deg) {
 | |
|     background-color: @color;
 | |
|     background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,.15)), color-stop(.75, rgba(255,255,255,.15)), color-stop(.75, transparent), to(transparent));
 | |
|     background-image: -webkit-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
 | |
|     background-image: -moz-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
 | |
|     background-image: -o-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
 | |
|     background-image: linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
 | |
|   }
 | |
| }
 | |
| // Reset filters for IE
 | |
| .reset-filter() {
 | |
|   filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)"));
 | |
| }
 | |
| 
 | |
| 
 | |
| // RETINA IMAGE SUPPORT
 | |
| // --------------------------------------------------
 | |
| 
 | |
| // Short retina mixin for setting background-image and -size
 | |
| .retina-image(@file-1x, @file-2x, @width-1x, @height-1x) {
 | |
|   background-image: url("@{file-1x}");
 | |
| 
 | |
|   @media
 | |
|   only screen and (-webkit-min-device-pixel-ratio: 2),
 | |
|   only screen and (   min--moz-device-pixel-ratio: 2),
 | |
|   only screen and (     -o-min-device-pixel-ratio: 2/1),
 | |
|   only screen and (        min-device-pixel-ratio: 2),
 | |
|   only screen and (                min-resolution: 192dpi),
 | |
|   only screen and (                min-resolution: 2dppx) {
 | |
|     background-image: url("@{file-2x}");
 | |
|     background-size: @width-1x @height-1x;
 | |
|   }
 | |
| }
 | |
| 
 | |
| 
 | |
| // COMPONENT MIXINS
 | |
| // --------------------------------------------------
 | |
| 
 | |
| // Horizontal dividers
 | |
| // -------------------------
 | |
| // Dividers (basically an hr) within dropdowns and nav lists
 | |
| .nav-divider(@top: #e5e5e5, @bottom: #fff) {
 | |
|   height: 2px; // 1px for background, one for border
 | |
|   margin: ((@line-height-base / 2) - 1) 0;
 | |
|   overflow: hidden;
 | |
|   background-color: @top;
 | |
|   border-bottom: 1px solid @bottom;
 | |
| }
 | |
| 
 | |
| // Button psuedo states
 | |
| // -------------------------
 | |
| // Easily pump out default styles, as well as :hover, :focus, :active,
 | |
| // and disabled options for all buttons
 | |
| .btn-pseudo-states(@background, @border) {
 | |
|   background-color: @background;
 | |
|   border-color: @border;
 | |
| 
 | |
|   &:hover,
 | |
|   &:focus,
 | |
|   &:active,
 | |
|   &.active {
 | |
|     background-color: darken(@background, 5%);
 | |
|         border-color: darken(@border, 10%);
 | |
|   }
 | |
| 
 | |
|   &.disabled,
 | |
|   &[disabled],
 | |
|   fieldset[disabled] & {
 | |
|     &:hover,
 | |
|     &:focus,
 | |
|     &:active,
 | |
|     &.active {
 | |
|       background-color: @background;
 | |
|           border-color: @border
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| // Navbar vertical align
 | |
| // -------------------------
 | |
| // Vertically center elements in the navbar.
 | |
| // Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin.
 | |
| .navbar-vertical-align(@element-height) {
 | |
|   margin-top: ((@navbar-height - @element-height) / 2);
 | |
|   margin-bottom: ((@navbar-height - @element-height) / 2);
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| // Grid System
 | |
| // -----------
 | |
| 
 | |
| // Centered container element
 | |
| .container-fixed() {
 | |
|   margin-right: auto;
 | |
|   margin-left: auto;
 | |
|   .clearfix();
 | |
| }
 | |
| 
 | |
| // Make a grid
 | |
| 
 | |
| // Creates a wrapper for a series of columns
 | |
| .make-row() {
 | |
|   // Then clear the floated columns
 | |
|   .clearfix();
 | |
| 
 | |
|   // Negative margin nested rows out to align the content of columns
 | |
|   .row {
 | |
|     margin-left:  (@grid-gutter-width / -2);
 | |
|     margin-right: (@grid-gutter-width / -2);
 | |
|   }
 | |
| }
 | |
| // Generate the columns
 | |
| .make-column(@columns) {
 | |
|   @media (min-width: @grid-float-breakpoint) {
 | |
|     float: left;
 | |
|     // Calculate width based on number of columns available
 | |
|     width: percentage(@columns / @grid-columns);
 | |
|   }
 | |
|   // Prevent columns from collapsing when empty
 | |
|   min-height: 1px;
 | |
|   // Set inner padding as gutters instead of margin
 | |
|   padding-left:  (@grid-gutter-width / 2);
 | |
|   padding-right: (@grid-gutter-width / 2);
 | |
| }
 | |
| // Generate the column offsets
 | |
| .make-column-offset(@columns) {
 | |
|   @media (min-width: @grid-float-breakpoint) {
 | |
|     margin-left: percentage((@columns / @grid-columns));
 | |
|   }
 | |
| }
 | |
| .make-column-push(@columns) {
 | |
|   @media (min-width: @grid-float-breakpoint) {
 | |
|     left: percentage((@columns / @grid-columns));
 | |
|   }
 | |
| }
 | |
| .make-column-pull(@columns) {
 | |
|   @media (min-width: @grid-float-breakpoint) {
 | |
|     right: percentage((@columns / @grid-columns));
 | |
|   }
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| // The Grid
 | |
| .generate-grid-columns(@grid-columns) {
 | |
| 
 | |
|   // Default columns
 | |
|   .col-span-X (@index) when (@index > 0) {
 | |
|     .col-span-@{index} { .col-span-(@index); }
 | |
|     .col-span-X((@index - 1));
 | |
|   }
 | |
|   .col-span-X(0) {}
 | |
| 
 | |
|   // Offsets (gaps between columns)
 | |
|   .col-offset-X (@index) when (@index > 0) {
 | |
|     .col-offset-@{index} { .col-offset-(@index); }
 | |
|     .col-offset-X((@index - 1));
 | |
|   }
 | |
|   .col-offset-X (0) {}
 | |
| 
 | |
|   // Source ordering
 | |
|   .col-push-X (@index) when (@index > 0) {
 | |
|     .col-push-@{index} { .col-push-(@index); }
 | |
|     .col-push-X((@index - 1));
 | |
|   }
 | |
|   .col-push-X (0) {}
 | |
| 
 | |
|   // Source ordering
 | |
|   .col-pull-X (@index) when (@index > 0) {
 | |
|     .col-pull-@{index} { .col-pull-(@index); }
 | |
|     .col-pull-X((@index - 1));
 | |
|   }
 | |
|   .col-pull-X (0) {}
 | |
| 
 | |
|   // Apply the styles
 | |
|   .col-span-(@columns) {
 | |
|     width: percentage((@columns / @grid-columns));
 | |
|   }
 | |
|   .col-offset-(@columns) {
 | |
|     margin-left: percentage((@columns / @grid-columns));
 | |
|   }
 | |
|   .col-push-(@columns) {
 | |
|     left: percentage((@columns / @grid-columns));
 | |
|   }
 | |
|   .col-pull-(@columns) {
 | |
|     right: percentage((@columns / @grid-columns));
 | |
|   }
 | |
| 
 | |
|   // Generate .spanX and .offsetX
 | |
|   .col-span-X(@grid-columns);
 | |
|   .col-offset-X(@grid-columns);
 | |
|   .col-push-X(@grid-columns);
 | |
|   .col-pull-X(@grid-columns);
 | |
| }
 | |
| 
 | |
| // Small device grid
 | |
| .generate-small-grid-columns(@grid-columns) {
 | |
| 
 | |
|   // Deterimine the classes
 | |
|   .col-small-span-X (@index) when (@index > 0) {
 | |
|     .col-small-span-@{index} { .col-small-span-(@index); }
 | |
|     .col-small-span-X((@index - 1));
 | |
|   }
 | |
|   .col-small-span-X(0) {}
 | |
| 
 | |
|   // Specify widths
 | |
|   .col-small-span-(@columns) {
 | |
|     width: percentage((@columns / @grid-columns));
 | |
|   }
 | |
| 
 | |
|   // Generate the CSS
 | |
|   .col-small-span-X(@grid-columns);
 | |
| }
 | |
| 
 | |
| 
 | |
| // Framework mixins
 | |
| // --------------------------------------------------
 | |
| 
 | |
| // Generate rem font-sizes with pixel fallbacks
 | |
| // By default uses `@font-size-base` with an initial value of 14 (1.4rem or 14px)
 | |
| .font-size(@font-size: @font-size-base) {
 | |
|   @rem-size: (@font-size / 10);
 | |
|   font-size: ~"@{font-size}px";
 | |
|   font-size: ~"@{rem-size}rem";
 | |
| }
 | |
| 
 | |
| // Generate form validation states
 | |
| .formFieldState(@text-color: #555, @border-color: #ccc, @background-color: #f5f5f5) {
 | |
|   // Color the label text
 | |
|   .control-label {
 | |
|     color: @text-color;
 | |
|   }
 | |
|   // Set the border and box shadow on specific inputs to match
 | |
|   .input-with-feedback {
 | |
|     padding-right: 32px; // to account for the feedback icon
 | |
|     border-color: @border-color;
 | |
|     .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work
 | |
|     &:focus {
 | |
|       border-color: darken(@border-color, 10%);
 | |
|       @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%);
 | |
|       .box-shadow(@shadow);
 | |
|     }
 | |
|   }
 | |
| }
 |