64 changed files with 1642 additions and 1111 deletions
@ -1,4 +1,7 @@
@@ -1,4 +1,7 @@
|
||||
# Bootstrap sass distribution |
||||
|
||||
Downloaded from [link](https://github.com/twbs/bootstrap-sass/archive/v3.1.1.tar.gz). |
||||
Used data from `vendor/assets/stylesheets` folder. |
||||
Downloaded from [link](https://github.com/twbs/bootstrap-sass/archive/v3.2.0.tar.gz). |
||||
Used data from `assets/stylesheets` folder except: |
||||
+ `_bootstrap-compass.scss` |
||||
+ `_bootstrap-mincer.scss` |
||||
+ `_bootstrap-sprockets.scss` |
||||
|
@ -1,947 +1,39 @@
@@ -1,947 +1,39 @@
|
||||
// |
||||
// 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. |
||||
@mixin clearfix() { |
||||
&:before, |
||||
&:after { |
||||
content: " "; // 1 |
||||
display: table; // 2 |
||||
} |
||||
&:after { |
||||
clear: both; |
||||
} |
||||
} |
||||
|
||||
// WebKit-style focus |
||||
@mixin tab-focus() { |
||||
// Default |
||||
outline: thin dotted; |
||||
// WebKit |
||||
outline: 5px auto -webkit-focus-ring-color; |
||||
outline-offset: -2px; |
||||
} |
||||
|
||||
// Center-align a block level element |
||||
@mixin center-block() { |
||||
display: block; |
||||
margin-left: auto; |
||||
margin-right: auto; |
||||
} |
||||
|
||||
// Sizing shortcuts |
||||
@mixin size($width, $height) { |
||||
width: $width; |
||||
height: $height; |
||||
} |
||||
@mixin square($size) { |
||||
@include size($size, $size); |
||||
} |
||||
|
||||
// Placeholder text |
||||
@mixin placeholder($color: $input-color-placeholder) { |
||||
&::-moz-placeholder { color: $color; // Firefox |
||||
opacity: 1; } // See https://github.com/twbs/bootstrap/pull/11526 |
||||
&:-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 |
||||
@mixin text-overflow() { |
||||
overflow: hidden; |
||||
text-overflow: ellipsis; |
||||
white-space: nowrap; |
||||
} |
||||
|
||||
// CSS image replacement |
||||
// |
||||
// Heads up! v3 launched with with only `.hide-text()`, but per our pattern for |
||||
// mixins being reused as classes with the same name, this doesn't hold up. As |
||||
// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. Note |
||||
// that we cannot chain the mixins together in Less, so they are repeated. |
||||
// |
||||
// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 |
||||
|
||||
// Deprecated as of v3.0.1 (will be removed in v4) |
||||
@mixin hide-text() { |
||||
font: #{0/0} a; |
||||
color: transparent; |
||||
text-shadow: none; |
||||
background-color: transparent; |
||||
border: 0; |
||||
} |
||||
// New mixin to use as of v3.0.1 |
||||
@mixin text-hide() { |
||||
@include hide-text(); |
||||
} |
||||
|
||||
|
||||
|
||||
// CSS3 PROPERTIES |
||||
// -------------------------------------------------- |
||||
|
||||
// Single side border-radius |
||||
@mixin border-top-radius($radius) { |
||||
border-top-right-radius: $radius; |
||||
border-top-left-radius: $radius; |
||||
} |
||||
@mixin border-right-radius($radius) { |
||||
border-bottom-right-radius: $radius; |
||||
border-top-right-radius: $radius; |
||||
} |
||||
@mixin border-bottom-radius($radius) { |
||||
border-bottom-right-radius: $radius; |
||||
border-bottom-left-radius: $radius; |
||||
} |
||||
@mixin border-left-radius($radius) { |
||||
border-bottom-left-radius: $radius; |
||||
border-top-left-radius: $radius; |
||||
} |
||||
|
||||
// Drop shadows |
||||
// |
||||
// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's |
||||
// supported browsers that have box shadow capabilities now support the |
||||
// standard `box-shadow` property. |
||||
@mixin box-shadow($shadow...) { |
||||
-webkit-box-shadow: $shadow; // iOS <4.3 & Android <4.1 |
||||
box-shadow: $shadow; |
||||
} |
||||
|
||||
// Transitions |
||||
@mixin transition($transition...) { |
||||
-webkit-transition: $transition; |
||||
transition: $transition; |
||||
} |
||||
@mixin transition-property($transition-property...) { |
||||
-webkit-transition-property: $transition-property; |
||||
transition-property: $transition-property; |
||||
} |
||||
@mixin transition-delay($transition-delay) { |
||||
-webkit-transition-delay: $transition-delay; |
||||
transition-delay: $transition-delay; |
||||
} |
||||
@mixin transition-duration($transition-duration...) { |
||||
-webkit-transition-duration: $transition-duration; |
||||
transition-duration: $transition-duration; |
||||
} |
||||
@mixin transition-transform($transition...) { |
||||
-webkit-transition: -webkit-transform $transition; |
||||
-moz-transition: -moz-transform $transition; |
||||
-o-transition: -o-transform $transition; |
||||
transition: transform $transition; |
||||
} |
||||
|
||||
// Transformations |
||||
@mixin rotate($degrees) { |
||||
-webkit-transform: rotate($degrees); |
||||
-ms-transform: rotate($degrees); // IE9 only |
||||
transform: rotate($degrees); |
||||
} |
||||
@mixin scale($scale-args...) { |
||||
-webkit-transform: scale($scale-args); |
||||
-ms-transform: scale($scale-args); // IE9 only |
||||
transform: scale($scale-args); |
||||
} |
||||
@mixin translate($x, $y) { |
||||
-webkit-transform: translate($x, $y); |
||||
-ms-transform: translate($x, $y); // IE9 only |
||||
transform: translate($x, $y); |
||||
} |
||||
@mixin skew($x, $y) { |
||||
-webkit-transform: skew($x, $y); |
||||
-ms-transform: skewX($x) skewY($y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+ |
||||
transform: skew($x, $y); |
||||
} |
||||
@mixin translate3d($x, $y, $z) { |
||||
-webkit-transform: translate3d($x, $y, $z); |
||||
transform: translate3d($x, $y, $z); |
||||
} |
||||
|
||||
@mixin rotateX($degrees) { |
||||
-webkit-transform: rotateX($degrees); |
||||
-ms-transform: rotateX($degrees); // IE9 only |
||||
transform: rotateX($degrees); |
||||
} |
||||
@mixin rotateY($degrees) { |
||||
-webkit-transform: rotateY($degrees); |
||||
-ms-transform: rotateY($degrees); // IE9 only |
||||
transform: rotateY($degrees); |
||||
} |
||||
@mixin perspective($perspective) { |
||||
-webkit-perspective: $perspective; |
||||
-moz-perspective: $perspective; |
||||
perspective: $perspective; |
||||
} |
||||
@mixin perspective-origin($perspective) { |
||||
-webkit-perspective-origin: $perspective; |
||||
-moz-perspective-origin: $perspective; |
||||
perspective-origin: $perspective; |
||||
} |
||||
@mixin transform-origin($origin) { |
||||
-webkit-transform-origin: $origin; |
||||
-moz-transform-origin: $origin; |
||||
-ms-transform-origin: $origin; // IE9 only |
||||
transform-origin: $origin; |
||||
} |
||||
|
||||
// Animations |
||||
@mixin animation($animation) { |
||||
-webkit-animation: $animation; |
||||
animation: $animation; |
||||
} |
||||
@mixin animation-name($name) { |
||||
-webkit-animation-name: $name; |
||||
animation-name: $name; |
||||
} |
||||
@mixin animation-duration($duration) { |
||||
-webkit-animation-duration: $duration; |
||||
animation-duration: $duration; |
||||
} |
||||
@mixin animation-timing-function($timing-function) { |
||||
-webkit-animation-timing-function: $timing-function; |
||||
animation-timing-function: $timing-function; |
||||
} |
||||
@mixin animation-delay($delay) { |
||||
-webkit-animation-delay: $delay; |
||||
animation-delay: $delay; |
||||
} |
||||
@mixin animation-iteration-count($iteration-count) { |
||||
-webkit-animation-iteration-count: $iteration-count; |
||||
animation-iteration-count: $iteration-count; |
||||
} |
||||
@mixin animation-direction($direction) { |
||||
-webkit-animation-direction: $direction; |
||||
animation-direction: $direction; |
||||
} |
||||
|
||||
// Backface visibility |
||||
// Prevent browsers from flickering when using CSS 3D transforms. |
||||
// Default value is `visible`, but can be changed to `hidden` |
||||
@mixin backface-visibility($visibility){ |
||||
-webkit-backface-visibility: $visibility; |
||||
-moz-backface-visibility: $visibility; |
||||
backface-visibility: $visibility; |
||||
} |
||||
|
||||
// Box sizing |
||||
@mixin box-sizing($boxmodel) { |
||||
-webkit-box-sizing: $boxmodel; |
||||
-moz-box-sizing: $boxmodel; |
||||
box-sizing: $boxmodel; |
||||
} |
||||
|
||||
// User select |
||||
// For selecting text on the page |
||||
@mixin user-select($select) { |
||||
-webkit-user-select: $select; |
||||
-moz-user-select: $select; |
||||
-ms-user-select: $select; // IE10+ |
||||
user-select: $select; |
||||
} |
||||
|
||||
// Resize anything |
||||
@mixin resizable($direction) { |
||||
resize: $direction; // Options: horizontal, vertical, both |
||||
overflow: auto; // Safari fix |
||||
} |
||||
|
||||
// CSS3 Content Columns |
||||
@mixin 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 |
||||
@mixin hyphens($mode: auto) { |
||||
word-wrap: break-word; |
||||
-webkit-hyphens: $mode; |
||||
-moz-hyphens: $mode; |
||||
-ms-hyphens: $mode; // IE10+ |
||||
-o-hyphens: $mode; |
||||
hyphens: $mode; |
||||
} |
||||
|
||||
// Opacity |
||||
@mixin opacity($opacity) { |
||||
opacity: $opacity; |
||||
// IE8 filter |
||||
$opacity-ie: ($opacity * 100); |
||||
filter: #{alpha(opacity=$opacity-ie)}; |
||||
} |
||||
|
||||
|
||||
|
||||
// GRADIENTS |
||||
// -------------------------------------------------- |
||||
|
||||
|
||||
|
||||
// Horizontal gradient, from left to right |
||||
// |
||||
// Creates two color stops, start and end, by specifying a color and position for each color stop. |
||||
// Color stops are not available in IE9 and below. |
||||
@mixin gradient-horizontal($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) { |
||||
background-image: -webkit-linear-gradient(left, color-stop($start-color $start-percent), color-stop($end-color $end-percent)); // Safari 5.1-6, Chrome 10+ |
||||
background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+ |
||||
background-repeat: repeat-x; |
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=1); // IE9 and down |
||||
} |
||||
|
||||
// Vertical gradient, from top to bottom |
||||
// |
||||
// Creates two color stops, start and end, by specifying a color and position for each color stop. |
||||
// Color stops are not available in IE9 and below. |
||||
@mixin gradient-vertical($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) { |
||||
background-image: -webkit-linear-gradient(top, $start-color $start-percent, $end-color $end-percent); // Safari 5.1-6, Chrome 10+ |
||||
background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+ |
||||
background-repeat: repeat-x; |
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=0); // IE9 and down |
||||
} |
||||
|
||||
@mixin gradient-directional($start-color: #555, $end-color: #333, $deg: 45deg) { |
||||
background-repeat: repeat-x; |
||||
background-image: -webkit-linear-gradient($deg, $start-color, $end-color); // Safari 5.1-6, Chrome 10+ |
||||
background-image: linear-gradient($deg, $start-color, $end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+ |
||||
} |
||||
@mixin gradient-horizontal-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) { |
||||
background-image: -webkit-linear-gradient(left, $start-color, $mid-color $color-stop, $end-color); |
||||
background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color); |
||||
background-repeat: no-repeat; |
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=1); // IE9 and down, gets no color-stop at all for proper fallback |
||||
} |
||||
@mixin gradient-vertical-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) { |
||||
background-image: -webkit-linear-gradient($start-color, $mid-color $color-stop, $end-color); |
||||
background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color); |
||||
background-repeat: no-repeat; |
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=0); // IE9 and down, gets no color-stop at all for proper fallback |
||||
} |
||||
@mixin gradient-radial($inner-color: #555, $outer-color: #333) { |
||||
background-image: -webkit-radial-gradient(circle, $inner-color, $outer-color); |
||||
background-image: radial-gradient(circle, $inner-color, $outer-color); |
||||
background-repeat: no-repeat; |
||||
} |
||||
@mixin gradient-striped($color: rgba(255,255,255,.15), $angle: 45deg) { |
||||
background-image: -webkit-linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent); |
||||
background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent); |
||||
} |
||||
|
||||
// Reset filters for IE |
||||
// |
||||
// When you need to remove a gradient background, do not forget to use this to reset |
||||
// the IE filter for IE9 and below. |
||||
@mixin reset-filter() { |
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); |
||||
} |
||||
|
||||
|
||||
|
||||
// Retina images |
||||
// |
||||
// Short retina mixin for setting background-image and -size |
||||
|
||||
@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) { |
||||
background-image: url(if($bootstrap-sass-asset-helper, twbs-image-path("#{$file-1x}"), "#{$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(if($bootstrap-sass-asset-helper, twbs-image-path("#{$file-2x}"), "#{$file-2x}")); |
||||
background-size: $width-1x $height-1x; |
||||
} |
||||
} |
||||
|
||||
|
||||
// Responsive image |
||||
// |
||||
// Keep images from scaling beyond the width of their parents. |
||||
|
||||
@mixin img-responsive($display: block) { |
||||
display: $display; |
||||
max-width: 100%; // Part 1: Set a maximum relative to the parent |
||||
height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching |
||||
} |
||||
|
||||
|
||||
// COMPONENT MIXINS |
||||
// -------------------------------------------------- |
||||
|
||||
// Horizontal dividers |
||||
// ------------------------- |
||||
// Dividers (basically an hr) within dropdowns and nav lists |
||||
@mixin nav-divider($color: #e5e5e5) { |
||||
height: 1px; |
||||
margin: (($line-height-computed / 2) - 1) 0; |
||||
overflow: hidden; |
||||
background-color: $color; |
||||
} |
||||
|
||||
// Panels |
||||
// ------------------------- |
||||
@mixin panel-variant($border, $heading-text-color, $heading-bg-color, $heading-border) { |
||||
border-color: $border; |
||||
|
||||
& > .panel-heading { |
||||
color: $heading-text-color; |
||||
background-color: $heading-bg-color; |
||||
border-color: $heading-border; |
||||
|
||||
+ .panel-collapse .panel-body { |
||||
border-top-color: $border; |
||||
} |
||||
} |
||||
& > .panel-footer { |
||||
+ .panel-collapse .panel-body { |
||||
border-bottom-color: $border; |
||||
} |
||||
} |
||||
} |
||||
|
||||
// Alerts |
||||
// ------------------------- |
||||
@mixin alert-variant($background, $border, $text-color) { |
||||
background-color: $background; |
||||
border-color: $border; |
||||
color: $text-color; |
||||
|
||||
hr { |
||||
border-top-color: darken($border, 5%); |
||||
} |
||||
.alert-link { |
||||
color: darken($text-color, 10%); |
||||
} |
||||
} |
||||
|
||||
// Tables |
||||
// ------------------------- |
||||
@mixin table-row-variant($state, $background) { |
||||
// Exact selectors below required to override `.table-striped` and prevent |
||||
// inheritance to nested tables. |
||||
.table > thead > tr, |
||||
.table > tbody > tr, |
||||
.table > tfoot > tr { |
||||
> td.#{$state}, |
||||
> th.#{$state}, |
||||
&.#{$state} > td, |
||||
&.#{$state} > th { |
||||
background-color: $background; |
||||
} |
||||
} |
||||
|
||||
// Hover states for `.table-hover` |
||||
// Note: this is not available for cells or rows within `thead` or `tfoot`. |
||||
.table-hover > tbody > tr { |
||||
> td.#{$state}:hover, |
||||
> th.#{$state}:hover, |
||||
&.#{$state}:hover > td, |
||||
&.#{$state}:hover > th { |
||||
background-color: darken($background, 5%); |
||||
} |
||||
} |
||||
} |
||||
|
||||
// List Groups |
||||
// ------------------------- |
||||
@mixin list-group-item-variant($state, $background, $color) { |
||||
.list-group-item-#{$state} { |
||||
color: $color; |
||||
background-color: $background; |
||||
|
||||
// [converter] extracted a& to a.list-group-item-#{$state} |
||||
} |
||||
|
||||
a.list-group-item-#{$state} { |
||||
color: $color; |
||||
|
||||
.list-group-item-heading { color: inherit; } |
||||
|
||||
&:hover, |
||||
&:focus { |
||||
color: $color; |
||||
background-color: darken($background, 5%); |
||||
} |
||||
&.active, |
||||
&.active:hover, |
||||
&.active:focus { |
||||
color: #fff; |
||||
background-color: $color; |
||||
border-color: $color; |
||||
} |
||||
} |
||||
} |
||||
|
||||
// Button variants |
||||
// ------------------------- |
||||
// Easily pump out default styles, as well as :hover, :focus, :active, |
||||
// and disabled options for all buttons |
||||
@mixin button-variant($color, $background, $border) { |
||||
color: $color; |
||||
background-color: $background; |
||||
border-color: $border; |
||||
|
||||
&:hover, |
||||
&:focus, |
||||
&:active, |
||||
&.active { |
||||
color: $color; |
||||
background-color: darken($background, 8%); |
||||
border-color: darken($border, 12%); |
||||
} |
||||
.open & { &.dropdown-toggle { |
||||
color: $color; |
||||
background-color: darken($background, 8%); |
||||
border-color: darken($border, 12%); |
||||
} } |
||||
&:active, |
||||
&.active { |
||||
background-image: none; |
||||
} |
||||
.open & { &.dropdown-toggle { |
||||
background-image: none; |
||||
} } |
||||
&.disabled, |
||||
&[disabled], |
||||
fieldset[disabled] & { |
||||
&, |
||||
&:hover, |
||||
&:focus, |
||||
&:active, |
||||
&.active { |
||||
background-color: $background; |
||||
border-color: $border; |
||||
} |
||||
} |
||||
|
||||
.badge { |
||||
color: $background; |
||||
background-color: $color; |
||||
} |
||||
} |
||||
|
||||
// Button sizes |
||||
// ------------------------- |
||||
@mixin button-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) { |
||||
padding: $padding-vertical $padding-horizontal; |
||||
font-size: $font-size; |
||||
line-height: $line-height; |
||||
border-radius: $border-radius; |
||||
} |
||||
|
||||
// Pagination |
||||
// ------------------------- |
||||
@mixin pagination-size($padding-vertical, $padding-horizontal, $font-size, $border-radius) { |
||||
> li { |
||||
> a, |
||||
> span { |
||||
padding: $padding-vertical $padding-horizontal; |
||||
font-size: $font-size; |
||||
} |
||||
&:first-child { |
||||
> a, |
||||
> span { |
||||
@include border-left-radius($border-radius); |
||||
} |
||||
} |
||||
&:last-child { |
||||
> a, |
||||
> span { |
||||
@include border-right-radius($border-radius); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
// Labels |
||||
// ------------------------- |
||||
@mixin label-variant($color) { |
||||
background-color: $color; |
||||
&[href] { |
||||
&:hover, |
||||
&:focus { |
||||
background-color: darken($color, 10%); |
||||
} |
||||
} |
||||
} |
||||
|
||||
// Contextual backgrounds |
||||
// ------------------------- |
||||
// [converter] $parent hack |
||||
@mixin bg-variant($parent, $color) { |
||||
#{$parent} { |
||||
background-color: $color; |
||||
} |
||||
a#{$parent}:hover { |
||||
background-color: darken($color, 10%); |
||||
} |
||||
} |
||||
|
||||
// Typography |
||||
// ------------------------- |
||||
// [converter] $parent hack |
||||
@mixin text-emphasis-variant($parent, $color) { |
||||
#{$parent} { |
||||
color: $color; |
||||
} |
||||
a#{$parent}:hover { |
||||
color: darken($color, 10%); |
||||
} |
||||
} |
||||
|
||||
// Navbar vertical align |
||||
// ------------------------- |
||||
// Vertically center elements in the navbar. |
||||
// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin. |
||||
@mixin navbar-vertical-align($element-height) { |
||||
margin-top: (($navbar-height - $element-height) / 2); |
||||
margin-bottom: (($navbar-height - $element-height) / 2); |
||||
} |
||||
|
||||
// Progress bars |
||||
// ------------------------- |
||||
@mixin progress-bar-variant($color) { |
||||
background-color: $color; |
||||
.progress-striped & { |
||||
@include gradient-striped(); |
||||
} |
||||
} |
||||
|
||||
// Responsive utilities |
||||
// ------------------------- |
||||
// More easily include all the states for responsive-utilities.less. |
||||
// [converter] $parent hack |
||||
@mixin responsive-visibility($parent) { |
||||
#{$parent} { |
||||
display: block !important; |
||||
} |
||||
table#{$parent} { display: table; } |
||||
tr#{$parent} { display: table-row !important; } |
||||
th#{$parent}, |
||||
td#{$parent} { display: table-cell !important; } |
||||
} |
||||
|
||||
// [converter] $parent hack |
||||
@mixin responsive-invisibility($parent) { |
||||
#{$parent} { |
||||
display: none !important; |
||||
} |
||||
} |
||||
|
||||
|
||||
// Grid System |
||||
// ----------- |
||||
|
||||
// Centered container element |
||||
@mixin container-fixed() { |
||||
margin-right: auto; |
||||
margin-left: auto; |
||||
padding-left: ($grid-gutter-width / 2); |
||||
padding-right: ($grid-gutter-width / 2); |
||||
@include clearfix(); |
||||
} |
||||
|
||||
// Creates a wrapper for a series of columns |
||||
@mixin make-row($gutter: $grid-gutter-width) { |
||||
margin-left: ($gutter / -2); |
||||
margin-right: ($gutter / -2); |
||||
@include clearfix(); |
||||
} |
||||
|
||||
// Generate the extra small columns |
||||
@mixin make-xs-column($columns, $gutter: $grid-gutter-width) { |
||||
position: relative; |
||||
float: left; |
||||
width: percentage(($columns / $grid-columns)); |
||||
min-height: 1px; |
||||
padding-left: ($gutter / 2); |
||||
padding-right: ($gutter / 2); |
||||
} |
||||
@mixin make-xs-column-offset($columns) { |
||||
@media (min-width: $screen-xs-min) { |
||||
margin-left: percentage(($columns / $grid-columns)); |
||||
} |
||||
} |
||||
@mixin make-xs-column-push($columns) { |
||||
@media (min-width: $screen-xs-min) { |
||||
left: percentage(($columns / $grid-columns)); |
||||
} |
||||
} |
||||
@mixin make-xs-column-pull($columns) { |
||||
@media (min-width: $screen-xs-min) { |
||||
right: percentage(($columns / $grid-columns)); |
||||
} |
||||
} |
||||
|
||||
|
||||
// Generate the small columns |
||||
@mixin make-sm-column($columns, $gutter: $grid-gutter-width) { |
||||
position: relative; |
||||
min-height: 1px; |
||||
padding-left: ($gutter / 2); |
||||
padding-right: ($gutter / 2); |
||||
|
||||
@media (min-width: $screen-sm-min) { |
||||
float: left; |
||||
width: percentage(($columns / $grid-columns)); |
||||
} |
||||
} |
||||
@mixin make-sm-column-offset($columns) { |
||||
@media (min-width: $screen-sm-min) { |
||||
margin-left: percentage(($columns / $grid-columns)); |
||||
} |
||||
} |
||||
@mixin make-sm-column-push($columns) { |
||||
@media (min-width: $screen-sm-min) { |
||||
left: percentage(($columns / $grid-columns)); |
||||
} |
||||
} |
||||
@mixin make-sm-column-pull($columns) { |
||||
@media (min-width: $screen-sm-min) { |
||||
right: percentage(($columns / $grid-columns)); |
||||
} |
||||
} |
||||
|
||||
|
||||
// Generate the medium columns |
||||
@mixin make-md-column($columns, $gutter: $grid-gutter-width) { |
||||
position: relative; |
||||
min-height: 1px; |
||||
padding-left: ($gutter / 2); |
||||
padding-right: ($gutter / 2); |
||||
|
||||
@media (min-width: $screen-md-min) { |
||||
float: left; |
||||
width: percentage(($columns / $grid-columns)); |
||||
} |
||||
} |
||||
@mixin make-md-column-offset($columns) { |
||||
@media (min-width: $screen-md-min) { |
||||
margin-left: percentage(($columns / $grid-columns)); |
||||
} |
||||
} |
||||
@mixin make-md-column-push($columns) { |
||||
@media (min-width: $screen-md-min) { |
||||
left: percentage(($columns / $grid-columns)); |
||||
} |
||||
} |
||||
@mixin make-md-column-pull($columns) { |
||||
@media (min-width: $screen-md-min) { |
||||
right: percentage(($columns / $grid-columns)); |
||||
} |
||||
} |
||||
|
||||
|
||||
// Generate the large columns |
||||
@mixin make-lg-column($columns, $gutter: $grid-gutter-width) { |
||||
position: relative; |
||||
min-height: 1px; |
||||
padding-left: ($gutter / 2); |
||||
padding-right: ($gutter / 2); |
||||
|
||||
@media (min-width: $screen-lg-min) { |
||||
float: left; |
||||
width: percentage(($columns / $grid-columns)); |
||||
} |
||||
} |
||||
@mixin make-lg-column-offset($columns) { |
||||
@media (min-width: $screen-lg-min) { |
||||
margin-left: percentage(($columns / $grid-columns)); |
||||
} |
||||
} |
||||
@mixin make-lg-column-push($columns) { |
||||
@media (min-width: $screen-lg-min) { |
||||
left: percentage(($columns / $grid-columns)); |
||||
} |
||||
} |
||||
@mixin make-lg-column-pull($columns) { |
||||
@media (min-width: $screen-lg-min) { |
||||
right: percentage(($columns / $grid-columns)); |
||||
} |
||||
} |
||||
|
||||
|
||||
// Framework grid generation |
||||
// |
||||
// Used only by Bootstrap to generate the correct number of grid classes given |
||||
// any value of `$grid-columns`. |
||||
|
||||
// [converter] This is defined recursively in LESS, but Sass supports real loops |
||||
@mixin make-grid-columns() { |
||||
$list: ''; |
||||
$i: 1; |
||||
$list: ".col-xs-#{$i}, .col-sm-#{$i}, .col-md-#{$i}, .col-lg-#{$i}"; |
||||
@for $i from (1 + 1) through $grid-columns { |
||||
$list: "#{$list}, .col-xs-#{$i}, .col-sm-#{$i}, .col-md-#{$i}, .col-lg-#{$i}"; |
||||
} |
||||
#{$list} { |
||||
position: relative; |
||||
// Prevent columns from collapsing when empty |
||||
min-height: 1px; |
||||
// Inner gutter via padding |
||||
padding-left: ($grid-gutter-width / 2); |
||||
padding-right: ($grid-gutter-width / 2); |
||||
} |
||||
} |
||||
|
||||
|
||||
// [converter] This is defined recursively in LESS, but Sass supports real loops |
||||
@mixin float-grid-columns($class) { |
||||
$list: ''; |
||||
$i: 1; |
||||
$list: ".col-#{$class}-#{$i}"; |
||||
@for $i from (1 + 1) through $grid-columns { |
||||
$list: "#{$list}, .col-#{$class}-#{$i}"; |
||||
} |
||||
#{$list} { |
||||
float: left; |
||||
} |
||||
} |
||||
|
||||
|
||||
@mixin calc-grid-column($index, $class, $type) { |
||||
@if ($type == width) and ($index > 0) { |
||||
.col-#{$class}-#{$index} { |
||||
width: percentage(($index / $grid-columns)); |
||||
} |
||||
} |
||||
@if ($type == push) { |
||||
.col-#{$class}-push-#{$index} { |
||||
left: percentage(($index / $grid-columns)); |
||||
} |
||||
} |
||||
@if ($type == pull) { |
||||
.col-#{$class}-pull-#{$index} { |
||||
right: percentage(($index / $grid-columns)); |
||||
} |
||||
} |
||||
@if ($type == offset) { |
||||
.col-#{$class}-offset-#{$index} { |
||||
margin-left: percentage(($index / $grid-columns)); |
||||
} |
||||
} |
||||
} |
||||
|
||||
// [converter] This is defined recursively in LESS, but Sass supports real loops |
||||
@mixin loop-grid-columns($columns, $class, $type) { |
||||
@for $i from 0 through $columns { |
||||
@include calc-grid-column($i, $class, $type); |
||||
} |
||||
} |
||||
|
||||
|
||||
// Create grid for specific class |
||||
@mixin make-grid($class) { |
||||
@include float-grid-columns($class); |
||||
@include loop-grid-columns($grid-columns, $class, width); |
||||
@include loop-grid-columns($grid-columns, $class, pull); |
||||
@include loop-grid-columns($grid-columns, $class, push); |
||||
@include loop-grid-columns($grid-columns, $class, offset); |
||||
} |
||||
|
||||
// Form validation states |
||||
// |
||||
// Used in forms.less to generate the form validation CSS for warnings, errors, |
||||
// and successes. |
||||
|
||||
@mixin form-control-validation($text-color: #555, $border-color: #ccc, $background-color: #f5f5f5) { |
||||
// Color the label and help text |
||||
.help-block, |
||||
.control-label, |
||||
.radio, |
||||
.checkbox, |
||||
.radio-inline, |
||||
.checkbox-inline { |
||||
color: $text-color; |
||||
} |
||||
// Set the border and box shadow on specific inputs to match |
||||
.form-control { |
||||
border-color: $border-color; |
||||
@include 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%); |
||||
@include box-shadow($shadow); |
||||
} |
||||
} |
||||
// Set validation states also for addons |
||||
.input-group-addon { |
||||
color: $text-color; |
||||
border-color: $border-color; |
||||
background-color: $background-color; |
||||
} |
||||
// Optional feedback icon |
||||
.form-control-feedback { |
||||
color: $text-color; |
||||
} |
||||
} |
||||
|
||||
// Form control focus state |
||||
// |
||||
// Generate a customized focus state and for any input with the specified color, |
||||
// which defaults to the `$input-focus-border` variable. |
||||
// |
||||
// We highly encourage you to not customize the default value, but instead use |
||||
// this to tweak colors on an as-needed basis. This aesthetic change is based on |
||||
// WebKit's default styles, but applicable to a wider range of browsers. Its |
||||
// usability and accessibility should be taken into account with any change. |
||||
// |
||||
// Example usage: change the default blue border and shadow to white for better |
||||
// contrast against a dark gray background. |
||||
|
||||
@mixin form-control-focus($color: $input-border-focus) { |
||||
$color-rgba: rgba(red($color), green($color), blue($color), .6); |
||||
&:focus { |
||||
border-color: $color; |
||||
outline: 0; |
||||
@include box-shadow(inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px $color-rgba); |
||||
} |
||||
} |
||||
|
||||
// Form control sizing |
||||
// |
||||
// Relative text size, padding, and border-radii changes for form controls. For |
||||
// horizontal sizing, wrap controls in the predefined grid classes. `<select>` |
||||
// element gets special love because it's special, and that's a fact! |
||||
|
||||
// [converter] $parent hack |
||||
@mixin input-size($parent, $input-height, $padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) { |
||||
#{$parent} { |
||||
height: $input-height; |
||||
padding: $padding-vertical $padding-horizontal; |
||||
font-size: $font-size; |
||||
line-height: $line-height; |
||||
border-radius: $border-radius; |
||||
} |
||||
|
||||
select#{$parent} { |
||||
height: $input-height; |
||||
line-height: $input-height; |
||||
} |
||||
|
||||
textarea#{$parent}, |
||||
select[multiple]#{$parent} { |
||||
height: auto; |
||||
} |
||||
} |
||||
@import "mixins/hide-text"; |
||||
@import "mixins/opacity"; |
||||
@import "mixins/image"; |
||||
@import "mixins/labels"; |
||||
@import "mixins/reset-filter"; |
||||
@import "mixins/resize"; |
||||
@import "mixins/responsive-visibility"; |
||||
@import "mixins/size"; |
||||
@import "mixins/tab-focus"; |
||||
@import "mixins/text-emphasis"; |
||||
@import "mixins/text-overflow"; |
||||
@import "mixins/vendor-prefixes"; |
||||
|
||||
// Components |
||||
@import "mixins/alerts"; |
||||
@import "mixins/buttons"; |
||||
@import "mixins/panels"; |
||||
@import "mixins/pagination"; |
||||
@import "mixins/list-group"; |
||||
@import "mixins/nav-divider"; |
||||
@import "mixins/forms"; |
||||
@import "mixins/progress-bar"; |
||||
@import "mixins/table-row"; |
||||
|
||||
// Skins |
||||
@import "mixins/background-variant"; |
||||
@import "mixins/border-radius"; |
||||
@import "mixins/gradients"; |
||||
|
||||
// Layout |
||||
@import "mixins/clearfix"; |
||||
@import "mixins/center-block"; |
||||
@import "mixins/nav-vertical-align"; |
||||
@import "mixins/grid-framework"; |
||||
@import "mixins/grid"; |
||||
|
@ -0,0 +1,34 @@
@@ -0,0 +1,34 @@
|
||||
// Embeds responsive |
||||
// |
||||
// Credit: Nicolas Gallagher and SUIT CSS. |
||||
|
||||
.embed-responsive { |
||||
position: relative; |
||||
display: block; |
||||
height: 0; |
||||
padding: 0; |
||||
overflow: hidden; |
||||
|
||||
.embed-responsive-item, |
||||
iframe, |
||||
embed, |
||||
object { |
||||
position: absolute; |
||||
top: 0; |
||||
left: 0; |
||||
bottom: 0; |
||||
height: 100%; |
||||
width: 100%; |
||||
border: 0; |
||||
} |
||||
|
||||
// Modifier class for 16:9 aspect ratio |
||||
&.embed-responsive-16by9 { |
||||
padding-bottom: 56.25%; |
||||
} |
||||
|
||||
// Modifier class for 4:3 aspect ratio |
||||
&.embed-responsive-4by3 { |
||||
padding-bottom: 75%; |
||||
} |
||||
} |
@ -0,0 +1,14 @@
@@ -0,0 +1,14 @@
|
||||
// Alerts |
||||
|
||||
@mixin alert-variant($background, $border, $text-color) { |
||||
background-color: $background; |
||||
border-color: $border; |
||||
color: $text-color; |
||||
|
||||
hr { |
||||
border-top-color: darken($border, 5%); |
||||
} |
||||
.alert-link { |
||||
color: darken($text-color, 10%); |
||||
} |
||||
} |
@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
|
||||
// Contextual backgrounds |
||||
|
||||
// [converter] $parent hack |
||||
@mixin bg-variant($parent, $color) { |
||||
#{$parent} { |
||||
background-color: $color; |
||||
} |
||||
a#{$parent}:hover { |
||||
background-color: darken($color, 10%); |
||||
} |
||||
} |
@ -0,0 +1,18 @@
@@ -0,0 +1,18 @@
|
||||
// Single side border-radius |
||||
|
||||
@mixin border-top-radius($radius) { |
||||
border-top-right-radius: $radius; |
||||
border-top-left-radius: $radius; |
||||
} |
||||
@mixin border-right-radius($radius) { |
||||
border-bottom-right-radius: $radius; |
||||
border-top-right-radius: $radius; |
||||
} |
||||
@mixin border-bottom-radius($radius) { |
||||
border-bottom-right-radius: $radius; |
||||
border-bottom-left-radius: $radius; |
||||
} |
||||
@mixin border-left-radius($radius) { |
||||
border-bottom-left-radius: $radius; |
||||
border-top-left-radius: $radius; |
||||
} |
@ -0,0 +1,50 @@
@@ -0,0 +1,50 @@
|
||||
// Button variants |
||||
// |
||||
// Easily pump out default styles, as well as :hover, :focus, :active, |
||||
// and disabled options for all buttons |
||||
|
||||
@mixin button-variant($color, $background, $border) { |
||||
color: $color; |
||||
background-color: $background; |
||||
border-color: $border; |
||||
|
||||
&:hover, |
||||
&:focus, |
||||
&:active, |
||||
&.active, |
||||
.open > &.dropdown-toggle { |
||||
color: $color; |
||||
background-color: darken($background, 10%); |
||||
border-color: darken($border, 12%); |
||||
} |
||||
&:active, |
||||
&.active, |
||||
.open > &.dropdown-toggle { |
||||
background-image: none; |
||||
} |
||||
&.disabled, |
||||
&[disabled], |
||||
fieldset[disabled] & { |
||||
&, |
||||
&:hover, |
||||
&:focus, |
||||
&:active, |
||||
&.active { |
||||
background-color: $background; |
||||
border-color: $border; |
||||
} |
||||
} |
||||
|
||||
.badge { |
||||
color: $background; |
||||
background-color: $color; |
||||
} |
||||
} |
||||
|
||||
// Button sizes |
||||
@mixin button-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) { |
||||
padding: $padding-vertical $padding-horizontal; |
||||
font-size: $font-size; |
||||
line-height: $line-height; |
||||
border-radius: $border-radius; |
||||
} |
@ -0,0 +1,7 @@
@@ -0,0 +1,7 @@
|
||||
// Center-align a block level element |
||||
|
||||
@mixin center-block() { |
||||
display: block; |
||||
margin-left: auto; |
||||
margin-right: auto; |
||||
} |
@ -0,0 +1,22 @@
@@ -0,0 +1,22 @@
|
||||
// Clearfix |
||||
// |
||||
// 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. |
||||
// |
||||
// Source: http://nicolasgallagher.com/micro-clearfix-hack/ |
||||
|
||||
@mixin clearfix() { |
||||
&:before, |
||||
&:after { |
||||
content: " "; // 1 |
||||
display: table; // 2 |
||||
} |
||||
&:after { |
||||
clear: both; |
||||
} |
||||
} |
@ -0,0 +1,84 @@
@@ -0,0 +1,84 @@
|
||||
// Form validation states |
||||
// |
||||
// Used in forms.less to generate the form validation CSS for warnings, errors, |
||||
// and successes. |
||||
|
||||
@mixin form-control-validation($text-color: #555, $border-color: #ccc, $background-color: #f5f5f5) { |
||||
// Color the label and help text |
||||
.help-block, |
||||
.control-label, |
||||
.radio, |
||||
.checkbox, |
||||
.radio-inline, |
||||
.checkbox-inline { |
||||
color: $text-color; |
||||
} |
||||
// Set the border and box shadow on specific inputs to match |
||||
.form-control { |
||||
border-color: $border-color; |
||||
@include 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%); |
||||
@include box-shadow($shadow); |
||||
} |
||||
} |
||||
// Set validation states also for addons |
||||
.input-group-addon { |
||||
color: $text-color; |
||||
border-color: $border-color; |
||||
background-color: $background-color; |
||||
} |
||||
// Optional feedback icon |
||||
.form-control-feedback { |
||||
color: $text-color; |
||||
} |
||||
} |
||||
|
||||
|
||||
// Form control focus state |
||||
// |
||||
// Generate a customized focus state and for any input with the specified color, |
||||
// which defaults to the `$input-border-focus` variable. |
||||
// |
||||
// We highly encourage you to not customize the default value, but instead use |
||||
// this to tweak colors on an as-needed basis. This aesthetic change is based on |
||||
// WebKit's default styles, but applicable to a wider range of browsers. Its |
||||
// usability and accessibility should be taken into account with any change. |
||||
// |
||||
// Example usage: change the default blue border and shadow to white for better |
||||
// contrast against a dark gray background. |
||||
@mixin form-control-focus($color: $input-border-focus) { |
||||
$color-rgba: rgba(red($color), green($color), blue($color), .6); |
||||
&:focus { |
||||
border-color: $color; |
||||
outline: 0; |
||||
@include box-shadow(inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px $color-rgba); |
||||
} |
||||
} |
||||
|
||||
// Form control sizing |
||||
// |
||||
// Relative text size, padding, and border-radii changes for form controls. For |
||||
// horizontal sizing, wrap controls in the predefined grid classes. `<select>` |
||||
// element gets special love because it's special, and that's a fact! |
||||
// [converter] $parent hack |
||||
@mixin input-size($parent, $input-height, $padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) { |
||||
#{$parent} { |
||||
height: $input-height; |
||||
padding: $padding-vertical $padding-horizontal; |
||||
font-size: $font-size; |
||||
line-height: $line-height; |
||||
border-radius: $border-radius; |
||||
} |
||||
|
||||
select#{$parent} { |
||||
height: $input-height; |
||||
line-height: $input-height; |
||||
} |
||||
|
||||
textarea#{$parent}, |
||||
select[multiple]#{$parent} { |
||||
height: auto; |
||||
} |
||||
} |
@ -0,0 +1,58 @@
@@ -0,0 +1,58 @@
|
||||
// Gradients |
||||
|
||||
|
||||
|
||||
// Horizontal gradient, from left to right |
||||
// |
||||
// Creates two color stops, start and end, by specifying a color and position for each color stop. |
||||
// Color stops are not available in IE9 and below. |
||||
@mixin gradient-horizontal($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) { |
||||
background-image: -webkit-linear-gradient(left, $start-color $start-percent, $end-color $end-percent); // Safari 5.1-6, Chrome 10+ |
||||
background-image: -o-linear-gradient(left, $start-color $start-percent, $end-color $end-percent); // Opera 12 |
||||
background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+ |
||||
background-repeat: repeat-x; |
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=1); // IE9 and down |
||||
} |
||||
|
||||
// Vertical gradient, from top to bottom |
||||
// |
||||
// Creates two color stops, start and end, by specifying a color and position for each color stop. |
||||
// Color stops are not available in IE9 and below. |
||||
@mixin gradient-vertical($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) { |
||||
background-image: -webkit-linear-gradient(top, $start-color $start-percent, $end-color $end-percent); // Safari 5.1-6, Chrome 10+ |
||||
background-image: -o-linear-gradient(top, $start-color $start-percent, $end-color $end-percent); // Opera 12 |
||||
background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+ |
||||
background-repeat: repeat-x; |
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=0); // IE9 and down |
||||
} |
||||
|
||||
@mixin gradient-directional($start-color: #555, $end-color: #333, $deg: 45deg) { |
||||
background-repeat: repeat-x; |
||||
background-image: -webkit-linear-gradient($deg, $start-color, $end-color); // Safari 5.1-6, Chrome 10+ |
||||
background-image: -o-linear-gradient($deg, $start-color, $end-color); // Opera 12 |
||||
background-image: linear-gradient($deg, $start-color, $end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+ |
||||
} |
||||
@mixin gradient-horizontal-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) { |
||||
background-image: -webkit-linear-gradient(left, $start-color, $mid-color $color-stop, $end-color); |
||||
background-image: -o-linear-gradient(left, $start-color, $mid-color $color-stop, $end-color); |
||||
background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color); |
||||
background-repeat: no-repeat; |
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=1); // IE9 and down, gets no color-stop at all for proper fallback |
||||
} |
||||
@mixin gradient-vertical-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) { |
||||
background-image: -webkit-linear-gradient($start-color, $mid-color $color-stop, $end-color); |
||||
background-image: -o-linear-gradient($start-color, $mid-color $color-stop, $end-color); |
||||
background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color); |
||||
background-repeat: no-repeat; |
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=0); // IE9 and down, gets no color-stop at all for proper fallback |
||||
} |
||||
@mixin gradient-radial($inner-color: #555, $outer-color: #333) { |
||||
background-image: -webkit-radial-gradient(circle, $inner-color, $outer-color); |
||||
background-image: radial-gradient(circle, $inner-color, $outer-color); |
||||
background-repeat: no-repeat; |
||||
} |
||||
@mixin gradient-striped($color: rgba(255,255,255,.15), $angle: 45deg) { |
||||
background-image: -webkit-linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent); |
||||
background-image: -o-linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent); |
||||
background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent); |
||||
} |
@ -0,0 +1,81 @@
@@ -0,0 +1,81 @@
|
||||
// Framework grid generation |
||||
// |
||||
// Used only by Bootstrap to generate the correct number of grid classes given |
||||
// any value of `$grid-columns`. |
||||
|
||||
// [converter] This is defined recursively in LESS, but Sass supports real loops |
||||
@mixin make-grid-columns($i: 1, $list: ".col-xs-#{$i}, .col-sm-#{$i}, .col-md-#{$i}, .col-lg-#{$i}") { |
||||
@for $i from (1 + 1) through $grid-columns { |
||||
$list: "#{$list}, .col-xs-#{$i}, .col-sm-#{$i}, .col-md-#{$i}, .col-lg-#{$i}"; |
||||
} |
||||
#{$list} { |
||||
position: relative; |
||||
// Prevent columns from collapsing when empty |
||||
min-height: 1px; |
||||
// Inner gutter via padding |
||||
padding-left: ($grid-gutter-width / 2); |
||||
padding-right: ($grid-gutter-width / 2); |
||||
} |
||||
} |
||||
|
||||
|
||||
// [converter] This is defined recursively in LESS, but Sass supports real loops |
||||
@mixin float-grid-columns($class, $i: 1, $list: ".col-#{$class}-#{$i}") { |
||||
@for $i from (1 + 1) through $grid-columns { |
||||
$list: "#{$list}, .col-#{$class}-#{$i}"; |
||||
} |
||||
#{$list} { |
||||
float: left; |
||||
} |
||||
} |
||||
|
||||
|
||||
@mixin calc-grid-column($index, $class, $type) { |
||||
@if ($type == width) and ($index > 0) { |
||||
.col-#{$class}-#{$index} { |
||||
width: percentage(($index / $grid-columns)); |
||||
} |
||||
} |
||||
@if ($type == push) and ($index > 0) { |
||||
.col-#{$class}-push-#{$index} { |
||||
left: percentage(($index / $grid-columns)); |
||||
} |
||||
} |
||||
@if ($type == push) and ($index == 0) { |
||||
.col-#{$class}-push-0 { |
||||
left: auto; |
||||
} |
||||
} |
||||
@if ($type == pull) and ($index > 0) { |
||||
.col-#{$class}-pull-#{$index} { |
||||
right: percentage(($index / $grid-columns)); |
||||
} |
||||
} |
||||
@if ($type == pull) and ($index == 0) { |
||||
.col-#{$class}-pull-0 { |
||||
right: auto; |
||||
} |
||||
} |
||||
@if ($type == offset) { |
||||
.col-#{$class}-offset-#{$index} { |
||||
margin-left: percentage(($index / $grid-columns)); |
||||
} |
||||
} |
||||
} |
||||
|
||||
// [converter] This is defined recursively in LESS, but Sass supports real loops |
||||
@mixin loop-grid-columns($columns, $class, $type) { |
||||
@for $i from 0 through $columns { |
||||
@include calc-grid-column($i, $class, $type); |
||||
} |
||||
} |
||||
|
||||
|
||||
// Create grid for specific class |
||||
@mixin make-grid($class) { |
||||
@include float-grid-columns($class); |
||||
@include loop-grid-columns($grid-columns, $class, width); |
||||
@include loop-grid-columns($grid-columns, $class, pull); |
||||
@include loop-grid-columns($grid-columns, $class, push); |
||||
@include loop-grid-columns($grid-columns, $class, offset); |
||||
} |
@ -0,0 +1,122 @@
@@ -0,0 +1,122 @@
|
||||
// Grid system |
||||
// |
||||
// Generate semantic grid columns with these mixins. |
||||
|
||||
// Centered container element |
||||
@mixin container-fixed($gutter: $grid-gutter-width) { |
||||
margin-right: auto; |
||||
margin-left: auto; |
||||
padding-left: ($gutter / 2); |
||||
padding-right: ($gutter / 2); |
||||
@include clearfix(); |
||||
} |
||||
|
||||
// Creates a wrapper for a series of columns |
||||
@mixin make-row($gutter: $grid-gutter-width) { |
||||
margin-left: ($gutter / -2); |
||||
margin-right: ($gutter / -2); |
||||
@include clearfix(); |
||||
} |
||||
|
||||
// Generate the extra small columns |
||||
@mixin make-xs-column($columns, $gutter: $grid-gutter-width) { |
||||
position: relative; |
||||
float: left; |
||||
width: percentage(($columns / $grid-columns)); |
||||
min-height: 1px; |
||||
padding-left: ($gutter / 2); |
||||
padding-right: ($gutter / 2); |
||||
} |
||||
@mixin make-xs-column-offset($columns) { |
||||
margin-left: percentage(($columns / $grid-columns)); |
||||
} |
||||
@mixin make-xs-column-push($columns) { |
||||
left: percentage(($columns / $grid-columns)); |
||||
} |
||||
@mixin make-xs-column-pull($columns) { |
||||
right: percentage(($columns / $grid-columns)); |
||||
} |
||||
|
||||
// Generate the small columns |
||||
@mixin make-sm-column($columns, $gutter: $grid-gutter-width) { |
||||
position: relative; |
||||
min-height: 1px; |
||||
padding-left: ($gutter / 2); |
||||
padding-right: ($gutter / 2); |
||||
|
||||
@media (min-width: $screen-sm-min) { |
||||
float: left; |
||||
width: percentage(($columns / $grid-columns)); |
||||
} |
||||
} |
||||
@mixin make-sm-column-offset($columns) { |
||||
@media (min-width: $screen-sm-min) { |
||||
margin-left: percentage(($columns / $grid-columns)); |
||||
} |
||||
} |
||||
@mixin make-sm-column-push($columns) { |
||||
@media (min-width: $screen-sm-min) { |
||||
left: percentage(($columns / $grid-columns)); |
||||
} |
||||
} |
||||
@mixin make-sm-column-pull($columns) { |
||||
@media (min-width: $screen-sm-min) { |
||||
right: percentage(($columns / $grid-columns)); |
||||
} |
||||
} |
||||
|
||||
// Generate the medium columns |
||||
@mixin make-md-column($columns, $gutter: $grid-gutter-width) { |
||||
position: relative; |
||||
min-height: 1px; |
||||
padding-left: ($gutter / 2); |
||||
padding-right: ($gutter / 2); |
||||
|
||||
@media (min-width: $screen-md-min) { |
||||
float: left; |
||||
width: percentage(($columns / $grid-columns)); |
||||
} |
||||
} |
||||
@mixin make-md-column-offset($columns) { |
||||
@media (min-width: $screen-md-min) { |
||||
margin-left: percentage(($columns / $grid-columns)); |
||||
} |
||||
} |
||||
@mixin make-md-column-push($columns) { |
||||
@media (min-width: $screen-md-min) { |
||||
left: percentage(($columns / $grid-columns)); |
||||
} |
||||
} |
||||
@mixin make-md-column-pull($columns) { |
||||
@media (min-width: $screen-md-min) { |
||||
right: percentage(($columns / $grid-columns)); |
||||
} |
||||
} |
||||
|
||||
// Generate the large columns |
||||
@mixin make-lg-column($columns, $gutter: $grid-gutter-width) { |
||||
position: relative; |
||||
min-height: 1px; |
||||
padding-left: ($gutter / 2); |
||||
padding-right: ($gutter / 2); |
||||
|
||||
@media (min-width: $screen-lg-min) { |
||||
float: left; |
||||
width: percentage(($columns / $grid-columns)); |
||||
} |
||||
} |
||||
@mixin make-lg-column-offset($columns) { |
||||
@media (min-width: $screen-lg-min) { |
||||
margin-left: percentage(($columns / $grid-columns)); |
||||
} |
||||
} |
||||
@mixin make-lg-column-push($columns) { |
||||
@media (min-width: $screen-lg-min) { |
||||
left: percentage(($columns / $grid-columns)); |
||||
} |
||||
} |
||||
@mixin make-lg-column-pull($columns) { |
||||
@media (min-width: $screen-lg-min) { |
||||
right: percentage(($columns / $grid-columns)); |
||||
} |
||||
} |
@ -0,0 +1,21 @@
@@ -0,0 +1,21 @@
|
||||
// CSS image replacement |
||||
// |
||||
// Heads up! v3 launched with with only `.hide-text()`, but per our pattern for |
||||
// mixins being reused as classes with the same name, this doesn't hold up. As |
||||
// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. |
||||
// |
||||
// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 |
||||
|
||||
// Deprecated as of v3.0.1 (will be removed in v4) |
||||
@mixin hide-text() { |
||||
font: #{0/0} a; |
||||
color: transparent; |
||||
text-shadow: none; |
||||
background-color: transparent; |
||||
border: 0; |
||||
} |
||||
|
||||
// New mixin to use as of v3.0.1 |
||||
@mixin text-hide() { |
||||
@include hide-text(); |
||||
} |
@ -0,0 +1,34 @@
@@ -0,0 +1,34 @@
|
||||
// Image Mixins |
||||
// - Responsive image |
||||
// - Retina image |
||||
|
||||
|
||||
// Responsive image |
||||
// |
||||
// Keep images from scaling beyond the width of their parents. |
||||
@mixin img-responsive($display: block) { |
||||
display: $display; |
||||
width: 100% \9; // Force IE10 and below to size SVG images correctly |
||||
max-width: 100%; // Part 1: Set a maximum relative to the parent |
||||
height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching |
||||
} |
||||
|
||||
|
||||
// Retina image |
||||
// |
||||
// Short retina mixin for setting background-image and -size. Note that the |
||||
// spelling of `min--moz-device-pixel-ratio` is intentional. |
||||
@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) { |
||||
background-image: url(if($bootstrap-sass-asset-helper, twbs-image-path("#{$file-1x}"), "#{$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(if($bootstrap-sass-asset-helper, twbs-image-path("#{$file-2x}"), "#{$file-2x}")); |
||||
background-size: $width-1x $height-1x; |
||||
} |
||||
} |
@ -0,0 +1,12 @@
@@ -0,0 +1,12 @@
|
||||
// Labels |
||||
|
||||
@mixin label-variant($color) { |
||||
background-color: $color; |
||||
|
||||
&[href] { |
||||
&:hover, |
||||
&:focus { |
||||
background-color: darken($color, 10%); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,31 @@
@@ -0,0 +1,31 @@
|
||||
// List Groups |
||||
|
||||
@mixin list-group-item-variant($state, $background, $color) { |
||||
.list-group-item-#{$state} { |
||||
color: $color; |
||||
background-color: $background; |
||||
|
||||
// [converter] extracted a& to a.list-group-item-#{$state} |
||||
} |
||||
|
||||
a.list-group-item-#{$state} { |
||||
color: $color; |
||||
|
||||
.list-group-item-heading { |
||||
color: inherit; |
||||
} |
||||
|
||||
&:hover, |
||||
&:focus { |
||||
color: $color; |
||||
background-color: darken($background, 5%); |
||||
} |
||||
&.active, |
||||
&.active:hover, |
||||
&.active:focus { |
||||
color: #fff; |
||||
background-color: $color; |
||||
border-color: $color; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,10 @@
@@ -0,0 +1,10 @@
|
||||
// Horizontal dividers |
||||
// |
||||
// Dividers (basically an hr) within dropdowns and nav lists |
||||
|
||||
@mixin nav-divider($color: #e5e5e5) { |
||||
height: 1px; |
||||
margin: (($line-height-computed / 2) - 1) 0; |
||||
overflow: hidden; |
||||
background-color: $color; |
||||
} |
@ -0,0 +1,9 @@
@@ -0,0 +1,9 @@
|
||||
// Navbar vertical align |
||||
// |
||||
// Vertically center elements in the navbar. |
||||
// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin. |
||||
|
||||
@mixin navbar-vertical-align($element-height) { |
||||
margin-top: (($navbar-height - $element-height) / 2); |
||||
margin-bottom: (($navbar-height - $element-height) / 2); |
||||
} |
@ -0,0 +1,8 @@
@@ -0,0 +1,8 @@
|
||||
// Opacity |
||||
|
||||
@mixin opacity($opacity) { |
||||
opacity: $opacity; |
||||
// IE8 filter |
||||
$opacity-ie: ($opacity * 100); |
||||
filter: #{alpha(opacity=$opacity-ie)}; |
||||
} |
@ -0,0 +1,23 @@
@@ -0,0 +1,23 @@
|
||||
// Pagination |
||||
|
||||
@mixin pagination-size($padding-vertical, $padding-horizontal, $font-size, $border-radius) { |
||||
> li { |
||||
> a, |
||||
> span { |
||||
padding: $padding-vertical $padding-horizontal; |
||||
font-size: $font-size; |
||||
} |
||||
&:first-child { |
||||
> a, |
||||
> span { |
||||
@include border-left-radius($border-radius); |
||||
} |
||||
} |
||||
&:last-child { |
||||
> a, |
||||
> span { |
||||
@include border-right-radius($border-radius); |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,24 @@
@@ -0,0 +1,24 @@
|
||||
// Panels |
||||
|
||||
@mixin panel-variant($border, $heading-text-color, $heading-bg-color, $heading-border) { |
||||
border-color: $border; |
||||
|
||||
& > .panel-heading { |
||||
color: $heading-text-color; |
||||
background-color: $heading-bg-color; |
||||
border-color: $heading-border; |
||||
|
||||
+ .panel-collapse > .panel-body { |
||||
border-top-color: $border; |
||||
} |
||||
.badge { |
||||
color: $heading-bg-color; |
||||
background-color: $heading-text-color; |
||||
} |
||||
} |
||||
& > .panel-footer { |
||||
+ .panel-collapse > .panel-body { |
||||
border-bottom-color: $border; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,10 @@
@@ -0,0 +1,10 @@
|
||||
// Progress bars |
||||
|
||||
@mixin progress-bar-variant($color) { |
||||
background-color: $color; |
||||
|
||||
// Deprecated parent class requirement as of v3.2.0 |
||||
.progress-striped & { |
||||
@include gradient-striped(); |
||||
} |
||||
} |
@ -0,0 +1,8 @@
@@ -0,0 +1,8 @@
|
||||
// Reset filters for IE |
||||
// |
||||
// When you need to remove a gradient background, do not forget to use this to reset |
||||
// the IE filter for IE9 and below. |
||||
|
||||
@mixin reset-filter() { |
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); |
||||
} |
@ -0,0 +1,6 @@
@@ -0,0 +1,6 @@
|
||||
// Resize anything |
||||
|
||||
@mixin resizable($direction) { |
||||
resize: $direction; // Options: horizontal, vertical, both |
||||
overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible` |
||||
} |
@ -0,0 +1,21 @@
@@ -0,0 +1,21 @@
|
||||
// Responsive utilities |
||||
|
||||
// |
||||
// More easily include all the states for responsive-utilities.less. |
||||
// [converter] $parent hack |
||||
@mixin responsive-visibility($parent) { |
||||
#{$parent} { |
||||
display: block !important; |
||||
} |
||||
table#{$parent} { display: table; } |
||||
tr#{$parent} { display: table-row !important; } |
||||
th#{$parent}, |
||||
td#{$parent} { display: table-cell !important; } |
||||
} |
||||
|
||||
// [converter] $parent hack |
||||
@mixin responsive-invisibility($parent) { |
||||
#{$parent} { |
||||
display: none !important; |
||||
} |
||||
} |
@ -0,0 +1,10 @@
@@ -0,0 +1,10 @@
|
||||
// Sizing shortcuts |
||||
|
||||
@mixin size($width, $height) { |
||||
width: $width; |
||||
height: $height; |
||||
} |
||||
|
||||
@mixin square($size) { |
||||
@include size($size, $size); |
||||
} |
@ -0,0 +1,9 @@
@@ -0,0 +1,9 @@
|
||||
// WebKit-style focus |
||||
|
||||
@mixin tab-focus() { |
||||
// Default |
||||
outline: thin dotted; |
||||
// WebKit |
||||
outline: 5px auto -webkit-focus-ring-color; |
||||
outline-offset: -2px; |
||||
} |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
// Tables |
||||
|
||||
@mixin table-row-variant($state, $background) { |
||||
// Exact selectors below required to override `.table-striped` and prevent |
||||
// inheritance to nested tables. |
||||
.table > thead > tr, |
||||
.table > tbody > tr, |
||||
.table > tfoot > tr { |
||||
> td.#{$state}, |
||||
> th.#{$state}, |
||||
&.#{$state} > td, |
||||
&.#{$state} > th { |
||||
background-color: $background; |
||||
} |
||||
} |
||||
|
||||
// Hover states for `.table-hover` |
||||
// Note: this is not available for cells or rows within `thead` or `tfoot`. |
||||
.table-hover > tbody > tr { |
||||
> td.#{$state}:hover, |
||||
> th.#{$state}:hover, |
||||
&.#{$state}:hover > td, |
||||
&:hover > .#{$state}, |
||||
&.#{$state}:hover > th { |
||||
background-color: darken($background, 5%); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
|
||||
// Typography |
||||
|
||||
// [converter] $parent hack |
||||
@mixin text-emphasis-variant($parent, $color) { |
||||
#{$parent} { |
||||
color: $color; |
||||
} |
||||
a#{$parent}:hover { |
||||
color: darken($color, 10%); |
||||
} |
||||
} |
@ -0,0 +1,8 @@
@@ -0,0 +1,8 @@
|
||||
// Text overflow |
||||
// Requires inline-block or block for proper styling |
||||
|
||||
@mixin text-overflow() { |
||||
overflow: hidden; |
||||
text-overflow: ellipsis; |
||||
white-space: nowrap; |
||||
} |
@ -0,0 +1,219 @@
@@ -0,0 +1,219 @@
|
||||
// Vendor Prefixes |
||||
// |
||||
// All vendor mixins are deprecated as of v3.2.0 due to the introduction of |
||||
// Autoprefixer in our Gruntfile. They will be removed in v4. |
||||
|
||||
// - Animations |
||||
// - Backface visibility |
||||
// - Box shadow |
||||
// - Box sizing |
||||
// - Content columns |
||||
// - Hyphens |
||||
// - Placeholder text |
||||
// - Transformations |
||||
// - Transitions |
||||
// - User Select |
||||
|
||||
|
||||
// Animations |
||||
@mixin animation($animation) { |
||||
-webkit-animation: $animation; |
||||
-o-animation: $animation; |
||||
animation: $animation; |
||||
} |
||||
@mixin animation-name($name) { |
||||
-webkit-animation-name: $name; |
||||
animation-name: $name; |
||||
} |
||||
@mixin animation-duration($duration) { |
||||
-webkit-animation-duration: $duration; |
||||
animation-duration: $duration; |
||||
} |
||||
@mixin animation-timing-function($timing-function) { |
||||
-webkit-animation-timing-function: $timing-function; |
||||
animation-timing-function: $timing-function; |
||||
} |
||||
@mixin animation-delay($delay) { |
||||
-webkit-animation-delay: $delay; |
||||
animation-delay: $delay; |
||||
} |
||||
@mixin animation-iteration-count($iteration-count) { |
||||
-webkit-animation-iteration-count: $iteration-count; |
||||
animation-iteration-count: $iteration-count; |
||||
} |
||||
@mixin animation-direction($direction) { |
||||
-webkit-animation-direction: $direction; |
||||
animation-direction: $direction; |
||||
} |
||||
@mixin animation-fill-mode($fill-mode) { |
||||
-webkit-animation-fill-mode: $fill-mode; |
||||
animation-fill-mode: $fill-mode; |
||||
} |
||||
|
||||
// Backface visibility |
||||
// Prevent browsers from flickering when using CSS 3D transforms. |
||||
// Default value is `visible`, but can be changed to `hidden` |
||||
|
||||
@mixin backface-visibility($visibility){ |
||||
-webkit-backface-visibility: $visibility; |
||||
-moz-backface-visibility: $visibility; |
||||
backface-visibility: $visibility; |
||||
} |
||||
|
||||
// Drop shadows |
||||
// |
||||
// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's |
||||
// supported browsers that have box shadow capabilities now support it. |
||||
|
||||
@mixin box-shadow($shadow...) { |
||||
-webkit-box-shadow: $shadow; // iOS <4.3 & Android <4.1 |
||||
box-shadow: $shadow; |
||||
} |
||||
|
||||
// Box sizing |
||||
@mixin box-sizing($boxmodel) { |
||||
-webkit-box-sizing: $boxmodel; |
||||
-moz-box-sizing: $boxmodel; |
||||
box-sizing: $boxmodel; |
||||
} |
||||
|
||||
// CSS3 Content Columns |
||||
@mixin 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 |
||||
@mixin hyphens($mode: auto) { |
||||
word-wrap: break-word; |
||||
-webkit-hyphens: $mode; |
||||
-moz-hyphens: $mode; |
||||
-ms-hyphens: $mode; // IE10+ |
||||
-o-hyphens: $mode; |
||||
hyphens: $mode; |
||||
} |
||||
|
||||
// Placeholder text |
||||
@mixin placeholder($color: $input-color-placeholder) { |
||||
&::-moz-placeholder { color: $color; // Firefox |
||||
opacity: 1; } // See https://github.com/twbs/bootstrap/pull/11526 |
||||
&:-ms-input-placeholder { color: $color; } // Internet Explorer 10+ |
||||
&::-webkit-input-placeholder { color: $color; } // Safari and Chrome |
||||
} |
||||
|
||||
// Transformations |
||||
@mixin scale($ratio...) { |
||||
-webkit-transform: scale($ratio); |
||||
-ms-transform: scale($ratio); // IE9 only |
||||
-o-transform: scale($ratio); |
||||
transform: scale($ratio); |
||||
} |
||||
|
||||
@mixin scaleX($ratio) { |
||||
-webkit-transform: scaleX($ratio); |
||||
-ms-transform: scaleX($ratio); // IE9 only |
||||
-o-transform: scaleX($ratio); |
||||
transform: scaleX($ratio); |
||||
} |
||||
@mixin scaleY($ratio) { |
||||
-webkit-transform: scaleY($ratio); |
||||
-ms-transform: scaleY($ratio); // IE9 only |
||||
-o-transform: scaleY($ratio); |
||||
transform: scaleY($ratio); |
||||
} |
||||
@mixin skew($x, $y) { |
||||
-webkit-transform: skewX($x) skewY($y); |
||||
-ms-transform: skewX($x) skewY($y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+ |
||||
-o-transform: skewX($x) skewY($y); |
||||
transform: skewX($x) skewY($y); |
||||
} |
||||
@mixin translate($x, $y) { |
||||
-webkit-transform: translate($x, $y); |
||||
-ms-transform: translate($x, $y); // IE9 only |
||||
-o-transform: translate($x, $y); |
||||
transform: translate($x, $y); |
||||
} |
||||
@mixin translate3d($x, $y, $z) { |
||||
-webkit-transform: translate3d($x, $y, $z); |
||||
transform: translate3d($x, $y, $z); |
||||
} |
||||
@mixin rotate($degrees) { |
||||
-webkit-transform: rotate($degrees); |
||||
-ms-transform: rotate($degrees); // IE9 only |
||||
-o-transform: rotate($degrees); |
||||
transform: rotate($degrees); |
||||
} |
||||
@mixin rotateX($degrees) { |
||||
-webkit-transform: rotateX($degrees); |
||||
-ms-transform: rotateX($degrees); // IE9 only |
||||
-o-transform: rotateX($degrees); |
||||
transform: rotateX($degrees); |
||||
} |
||||
@mixin rotateY($degrees) { |
||||
-webkit-transform: rotateY($degrees); |
||||
-ms-transform: rotateY($degrees); // IE9 only |
||||
-o-transform: rotateY($degrees); |
||||
transform: rotateY($degrees); |
||||
} |
||||
@mixin perspective($perspective) { |
||||
-webkit-perspective: $perspective; |
||||
-moz-perspective: $perspective; |
||||
perspective: $perspective; |
||||
} |
||||
@mixin perspective-origin($perspective) { |
||||
-webkit-perspective-origin: $perspective; |
||||
-moz-perspective-origin: $perspective; |
||||
perspective-origin: $perspective; |
||||
} |
||||
@mixin transform-origin($origin) { |
||||
-webkit-transform-origin: $origin; |
||||
-moz-transform-origin: $origin; |
||||
-ms-transform-origin: $origin; // IE9 only |
||||
transform-origin: $origin; |
||||
} |
||||
|
||||
|
||||
// Transitions |
||||
|
||||
@mixin transition($transition...) { |
||||
-webkit-transition: $transition; |
||||
-o-transition: $transition; |
||||
transition: $transition; |
||||
} |
||||
@mixin transition-property($transition-property...) { |
||||
-webkit-transition-property: $transition-property; |
||||
transition-property: $transition-property; |
||||
} |
||||
@mixin transition-delay($transition-delay) { |
||||
-webkit-transition-delay: $transition-delay; |
||||
transition-delay: $transition-delay; |
||||
} |
||||
@mixin transition-duration($transition-duration...) { |
||||
-webkit-transition-duration: $transition-duration; |
||||
transition-duration: $transition-duration; |
||||
} |
||||
@mixin transition-timing-function($timing-function) { |
||||
-webkit-transition-timing-function: $timing-function; |
||||
transition-timing-function: $timing-function; |
||||
} |
||||
@mixin transition-transform($transition...) { |
||||
-webkit-transition: -webkit-transform $transition; |
||||
-moz-transition: -moz-transform $transition; |
||||
-o-transition: -o-transform $transition; |
||||
transition: transform $transition; |
||||
} |
||||
|
||||
|
||||
// User select |
||||
// For selecting text on the page |
||||
|
||||
@mixin user-select($select) { |
||||
-webkit-user-select: $select; |
||||
-moz-user-select: $select; |
||||
-ms-user-select: $select; // IE10+ |
||||
user-select: $select; |
||||
} |
File diff suppressed because one or more lines are too long
Loading…
Reference in new issue