compass-core 1.0.0.alpha.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE.txt +22 -0
- data/VERSION +1 -0
- data/data/caniuse.json +1 -0
- data/data/caniuse_extras/css-placeholder.json +171 -0
- data/lib/compass-core.rb +1 -0
- data/lib/compass/browser_support.rb +62 -0
- data/lib/compass/configuration.rb +168 -0
- data/lib/compass/configuration/data.rb +178 -0
- data/lib/compass/configuration/defaults.rb +197 -0
- data/lib/compass/configuration/inheritance.rb +304 -0
- data/lib/compass/configuration/paths.rb +19 -0
- data/lib/compass/core.rb +64 -0
- data/lib/compass/core/caniuse.rb +282 -0
- data/lib/compass/core/sass_extensions.rb +10 -0
- data/lib/compass/core/sass_extensions/functions.rb +39 -0
- data/lib/compass/core/sass_extensions/functions/colors.rb +67 -0
- data/lib/compass/core/sass_extensions/functions/configuration.rb +162 -0
- data/lib/compass/core/sass_extensions/functions/constants.rb +74 -0
- data/lib/compass/core/sass_extensions/functions/cross_browser_support.rb +269 -0
- data/lib/compass/core/sass_extensions/functions/display.rb +32 -0
- data/lib/compass/core/sass_extensions/functions/enumerate.rb +7 -0
- data/lib/compass/core/sass_extensions/functions/env.rb +60 -0
- data/lib/compass/core/sass_extensions/functions/font_files.rb +41 -0
- data/lib/compass/core/sass_extensions/functions/gradient_support.rb +616 -0
- data/lib/compass/core/sass_extensions/functions/image_size.rb +117 -0
- data/lib/compass/core/sass_extensions/functions/inline_image.rb +64 -0
- data/lib/compass/core/sass_extensions/functions/lists.rb +101 -0
- data/lib/compass/core/sass_extensions/functions/math.rb +92 -0
- data/lib/compass/core/sass_extensions/functions/selectors.rb +64 -0
- data/lib/compass/core/sass_extensions/functions/urls.rb +297 -0
- data/lib/compass/core/sass_extensions/monkey_patches.rb +3 -0
- data/lib/compass/core/sass_extensions/monkey_patches/browser_support.rb +118 -0
- data/lib/compass/core/sass_extensions/monkey_patches/traversal.rb +23 -0
- data/lib/compass/core/version.rb +5 -0
- data/lib/compass/error.rb +5 -0
- data/stylesheets/_compass.scss +3 -0
- data/stylesheets/_lemonade.scss +38 -0
- data/stylesheets/compass/_configuration.scss +54 -0
- data/stylesheets/compass/_css3.scss +21 -0
- data/stylesheets/compass/_layout.scss +3 -0
- data/stylesheets/compass/_reset-legacy.scss +3 -0
- data/stylesheets/compass/_reset.scss +3 -0
- data/stylesheets/compass/_support.scss +441 -0
- data/stylesheets/compass/_typography.scss +4 -0
- data/stylesheets/compass/_utilities.scss +9 -0
- data/stylesheets/compass/css3/_animation.scss +122 -0
- data/stylesheets/compass/css3/_appearance.scss +17 -0
- data/stylesheets/compass/css3/_background-clip.scss +35 -0
- data/stylesheets/compass/css3/_background-origin.scss +37 -0
- data/stylesheets/compass/css3/_background-size.scss +19 -0
- data/stylesheets/compass/css3/_border-radius.scss +107 -0
- data/stylesheets/compass/css3/_box-shadow.scss +88 -0
- data/stylesheets/compass/css3/_box-sizing.scss +15 -0
- data/stylesheets/compass/css3/_box.scss +85 -0
- data/stylesheets/compass/css3/_columns.scss +210 -0
- data/stylesheets/compass/css3/_deprecated-support.scss +272 -0
- data/stylesheets/compass/css3/_filter.scss +50 -0
- data/stylesheets/compass/css3/_flexbox.scss +156 -0
- data/stylesheets/compass/css3/_font-face.scss +48 -0
- data/stylesheets/compass/css3/_hyphenation.scss +71 -0
- data/stylesheets/compass/css3/_images.scss +139 -0
- data/stylesheets/compass/css3/_inline-block.scss +31 -0
- data/stylesheets/compass/css3/_opacity.scss +23 -0
- data/stylesheets/compass/css3/_pie.scss +1 -0
- data/stylesheets/compass/css3/_regions.scss +27 -0
- data/stylesheets/compass/css3/_selection.scss +59 -0
- data/stylesheets/compass/css3/_shared.scss +5 -0
- data/stylesheets/compass/css3/_text-shadow.scss +82 -0
- data/stylesheets/compass/css3/_transform.scss +590 -0
- data/stylesheets/compass/css3/_transition.scss +171 -0
- data/stylesheets/compass/css3/_user-interface.scss +71 -0
- data/stylesheets/compass/layout/_grid-background.scss +178 -0
- data/stylesheets/compass/layout/_sticky-footer.scss +23 -0
- data/stylesheets/compass/layout/_stretching.scss +24 -0
- data/stylesheets/compass/reset/_utilities-legacy.scss +135 -0
- data/stylesheets/compass/reset/_utilities.scss +142 -0
- data/stylesheets/compass/typography/_links.scss +3 -0
- data/stylesheets/compass/typography/_lists.scss +4 -0
- data/stylesheets/compass/typography/_text.scss +4 -0
- data/stylesheets/compass/typography/_units.scss +152 -0
- data/stylesheets/compass/typography/_vertical_rhythm.scss +300 -0
- data/stylesheets/compass/typography/links/_hover-link.scss +5 -0
- data/stylesheets/compass/typography/links/_link-colors.scss +28 -0
- data/stylesheets/compass/typography/links/_unstyled-link.scss +7 -0
- data/stylesheets/compass/typography/lists/_bullets.scss +34 -0
- data/stylesheets/compass/typography/lists/_horizontal-list.scss +63 -0
- data/stylesheets/compass/typography/lists/_inline-block-list.scss +50 -0
- data/stylesheets/compass/typography/lists/_inline-list.scss +47 -0
- data/stylesheets/compass/typography/text/_ellipsis.scss +25 -0
- data/stylesheets/compass/typography/text/_force-wrap.scss +12 -0
- data/stylesheets/compass/typography/text/_nowrap.scss +2 -0
- data/stylesheets/compass/typography/text/_replacement.scss +68 -0
- data/stylesheets/compass/utilities/_color.scss +1 -0
- data/stylesheets/compass/utilities/_general.scss +6 -0
- data/stylesheets/compass/utilities/_links.scss +5 -0
- data/stylesheets/compass/utilities/_lists.scss +6 -0
- data/stylesheets/compass/utilities/_print.scss +17 -0
- data/stylesheets/compass/utilities/_sass.scss +2 -0
- data/stylesheets/compass/utilities/_sprites.scss +2 -0
- data/stylesheets/compass/utilities/_tables.scss +3 -0
- data/stylesheets/compass/utilities/_text.scss +5 -0
- data/stylesheets/compass/utilities/color/_brightness.scss +12 -0
- data/stylesheets/compass/utilities/color/_contrast.scss +52 -0
- data/stylesheets/compass/utilities/general/_clearfix.scss +44 -0
- data/stylesheets/compass/utilities/general/_float.scss +38 -0
- data/stylesheets/compass/utilities/general/_hacks.scss +65 -0
- data/stylesheets/compass/utilities/general/_min.scss +16 -0
- data/stylesheets/compass/utilities/general/_reset.scss +2 -0
- data/stylesheets/compass/utilities/general/_tabs.scss +1 -0
- data/stylesheets/compass/utilities/general/_tag-cloud.scss +18 -0
- data/stylesheets/compass/utilities/links/_hover-link.scss +3 -0
- data/stylesheets/compass/utilities/links/_link-colors.scss +3 -0
- data/stylesheets/compass/utilities/links/_unstyled-link.scss +3 -0
- data/stylesheets/compass/utilities/lists/_bullets.scss +3 -0
- data/stylesheets/compass/utilities/lists/_horizontal-list.scss +3 -0
- data/stylesheets/compass/utilities/lists/_inline-block-list.scss +3 -0
- data/stylesheets/compass/utilities/lists/_inline-list.scss +3 -0
- data/stylesheets/compass/utilities/sass/_lists.scss +16 -0
- data/stylesheets/compass/utilities/sass/_maps.scss +19 -0
- data/stylesheets/compass/utilities/sprites/_base.scss +92 -0
- data/stylesheets/compass/utilities/sprites/_sprite-img.scss +81 -0
- data/stylesheets/compass/utilities/tables/_alternating-rows-and-columns.scss +22 -0
- data/stylesheets/compass/utilities/tables/_borders.scss +38 -0
- data/stylesheets/compass/utilities/tables/_scaffolding.scss +9 -0
- data/stylesheets/compass/utilities/text/_ellipsis.scss +3 -0
- data/stylesheets/compass/utilities/text/_nowrap.scss +3 -0
- data/stylesheets/compass/utilities/text/_replacement.scss +3 -0
- data/templates/ellipsis/ellipsis.sass +9 -0
- data/templates/ellipsis/manifest.rb +27 -0
- data/templates/ellipsis/xml/ellipsis.xml +14 -0
- data/templates/extension/manifest.rb +26 -0
- data/templates/extension/stylesheets/main.sass +1 -0
- data/templates/extension/templates/project/manifest.rb +2 -0
- data/templates/extension/templates/project/screen.sass +2 -0
- data/templates/project/USAGE.markdown +32 -0
- data/templates/project/ie.sass +6 -0
- data/templates/project/manifest.rb +4 -0
- data/templates/project/print.sass +6 -0
- data/templates/project/screen.sass +7 -0
- metadata +241 -0
@@ -0,0 +1,171 @@
|
|
1
|
+
@import "compass/support";
|
2
|
+
|
3
|
+
// The the user threshold for transition support. Defaults to `$graceful-usage-threshold`
|
4
|
+
$transition-support-threshold: $graceful-usage-threshold !default;
|
5
|
+
|
6
|
+
|
7
|
+
// CSS Transitions
|
8
|
+
// Currently only works in Webkit.
|
9
|
+
//
|
10
|
+
// * expected in CSS3, FireFox 3.6/7 and Opera Presto 2.3
|
11
|
+
// * We'll be prepared.
|
12
|
+
//
|
13
|
+
// Including this submodule sets following defaults for the mixins:
|
14
|
+
//
|
15
|
+
// $default-transition-property : all
|
16
|
+
// $default-transition-duration : 1s
|
17
|
+
// $default-transition-function : false
|
18
|
+
// $default-transition-delay : false
|
19
|
+
//
|
20
|
+
// Override them if you like. Timing-function and delay are set to false for browser defaults (ease, 0s).
|
21
|
+
|
22
|
+
$default-transition-property: all !default;
|
23
|
+
|
24
|
+
$default-transition-duration: 1s !default;
|
25
|
+
|
26
|
+
$default-transition-function: null !default;
|
27
|
+
|
28
|
+
$default-transition-delay: null !default;
|
29
|
+
|
30
|
+
$transitionable-prefixed-values: transform, transform-origin !default;
|
31
|
+
|
32
|
+
|
33
|
+
|
34
|
+
// Checks if the value given is a unit of time.
|
35
|
+
@function is-time($value) {
|
36
|
+
@return if(type-of($value) == number, not not index(s ms, unit($value)), false);
|
37
|
+
}
|
38
|
+
|
39
|
+
// Returns `$property` with the given prefix if it is found in `$transitionable-prefixed-values`.
|
40
|
+
@function prefixed-for-transition($prefix, $property) {
|
41
|
+
@if not $prefix {
|
42
|
+
@return $property;
|
43
|
+
}
|
44
|
+
@if type-of($property) == list or type-of($property) == arglist {
|
45
|
+
$new-list: comma-list();
|
46
|
+
@each $v in $property {
|
47
|
+
$new-list: append($new-list, prefixed-for-transition($prefix, $v));
|
48
|
+
}
|
49
|
+
@return $new-list;
|
50
|
+
} @else {
|
51
|
+
@if index($transitionable-prefixed-values, $property) {
|
52
|
+
@return #{$prefix}-#{$property};
|
53
|
+
} @else {
|
54
|
+
@return $property;
|
55
|
+
}
|
56
|
+
}
|
57
|
+
}
|
58
|
+
|
59
|
+
// One or more properties to transition
|
60
|
+
//
|
61
|
+
// * for multiple, use a comma-delimited list
|
62
|
+
// * also accepts "all" or "none"
|
63
|
+
|
64
|
+
@mixin transition-property($properties...) {
|
65
|
+
$properties: set-arglist-default($properties, $default-transition-property);
|
66
|
+
@include with-each-prefix(css-transitions, $transition-support-threshold) {
|
67
|
+
$props: if($current-prefix, prefixed-for-transition($current-prefix, $properties), $properties);
|
68
|
+
@include prefix-prop(transition-property, $props);
|
69
|
+
}
|
70
|
+
}
|
71
|
+
|
72
|
+
// One or more durations in seconds
|
73
|
+
//
|
74
|
+
// * for multiple, use a comma-delimited list
|
75
|
+
// * these durations will affect the properties in the same list position
|
76
|
+
|
77
|
+
@mixin transition-duration($durations...) {
|
78
|
+
$durations: set-arglist-default($durations, $default-transition-duration);
|
79
|
+
@include prefixed-properties(css-transitions, $transition-support-threshold, (
|
80
|
+
transition-duration: $durations
|
81
|
+
));
|
82
|
+
}
|
83
|
+
|
84
|
+
// One or more timing functions
|
85
|
+
//
|
86
|
+
// * [ ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier(x1, y1, x2, y2)]
|
87
|
+
// * For multiple, use a comma-delimited list
|
88
|
+
// * These functions will effect the properties in the same list position
|
89
|
+
|
90
|
+
@mixin transition-timing-function($functions...) {
|
91
|
+
$functions: set-arglist-default($functions, $default-transition-function);
|
92
|
+
@include prefixed-properties(css-transitions, $transition-support-threshold, (
|
93
|
+
transition-timing-function: $functions
|
94
|
+
));
|
95
|
+
}
|
96
|
+
|
97
|
+
// One or more transition-delays in seconds
|
98
|
+
//
|
99
|
+
// * for multiple, use a comma-delimited list
|
100
|
+
// * these delays will effect the properties in the same list position
|
101
|
+
|
102
|
+
@mixin transition-delay($delays...) {
|
103
|
+
$delays: set-arglist-default($delays, $default-transition-delay);
|
104
|
+
@include prefixed-properties(css-transitions, $transition-support-threshold, (
|
105
|
+
transition-delay: $delays
|
106
|
+
));
|
107
|
+
}
|
108
|
+
|
109
|
+
// Transition all-in-one shorthand
|
110
|
+
|
111
|
+
@mixin single-transition(
|
112
|
+
$property: $default-transition-property,
|
113
|
+
$duration: $default-transition-duration,
|
114
|
+
$function: $default-transition-function,
|
115
|
+
$delay: $default-transition-delay
|
116
|
+
) {
|
117
|
+
@include transition(compact($property $duration $function $delay));
|
118
|
+
}
|
119
|
+
|
120
|
+
@mixin transition($transitions...) {
|
121
|
+
$default: compact($default-transition-property $default-transition-duration $default-transition-function $default-transition-delay);
|
122
|
+
$transitions: set-arglist-default($transitions, $default);
|
123
|
+
|
124
|
+
@include with-each-prefix(css-transitions, $transition-support-threshold) {
|
125
|
+
$delays: ();
|
126
|
+
$transitions-without-delays: ();
|
127
|
+
$transitions-with-delays: ();
|
128
|
+
$has-delays: false;
|
129
|
+
|
130
|
+
|
131
|
+
// This block can be made considerably simpler at the point in time that
|
132
|
+
// we no longer need to deal with the differences in how delays are treated.
|
133
|
+
@each $transition in $transitions {
|
134
|
+
// Extract the values from the list
|
135
|
+
// (this would be cleaner if nth took a 3rd argument to provide a default value).
|
136
|
+
$property: nth($transition, 1);
|
137
|
+
$duration: if(length($transition) >= 2, nth($transition, 2), null);
|
138
|
+
$timing-function: if(length($transition) >= 3, nth($transition, 3), null);
|
139
|
+
$delay: if(length($transition) >= 4, nth($transition, 4), null);
|
140
|
+
$has-delays: $has-delays or $delay;
|
141
|
+
|
142
|
+
// If a delay is provided without a timing function
|
143
|
+
@if is-time($timing-function) and not $delay {
|
144
|
+
$delay: $timing-function;
|
145
|
+
$timing-function: null;
|
146
|
+
$has-delays: true;
|
147
|
+
}
|
148
|
+
|
149
|
+
@if $current-prefix == -webkit {
|
150
|
+
// Keep a list of delays in case one is specified
|
151
|
+
$delays: append($delays, if($delay, $delay, 0s));
|
152
|
+
$transitions-without-delays: append($transitions-without-delays,
|
153
|
+
prefixed-for-transition($current-prefix, $property) $duration $timing-function);
|
154
|
+
} @else {
|
155
|
+
$transitions-with-delays: append($transitions-with-delays,
|
156
|
+
prefixed-for-transition($current-prefix, $property) $duration $timing-function $delay);
|
157
|
+
}
|
158
|
+
}
|
159
|
+
|
160
|
+
@if $current-prefix == -webkit {
|
161
|
+
@include prefix-prop(transition, $transitions-without-delays);
|
162
|
+
@if $has-delays {
|
163
|
+
@include prefix-prop(transition-delay, $delays);
|
164
|
+
}
|
165
|
+
} @else if $current-prefix {
|
166
|
+
@include prefix-prop(transition, $transitions-with-delays);
|
167
|
+
} @else {
|
168
|
+
transition: $transitions-with-delays;
|
169
|
+
}
|
170
|
+
}
|
171
|
+
}
|
@@ -0,0 +1,71 @@
|
|
1
|
+
// User Interface
|
2
|
+
// This file can be expanded to handle all the user interface properties as
|
3
|
+
// they become available in browsers:
|
4
|
+
// http://www.w3.org/TR/2000/WD-css3-userint-20000216
|
5
|
+
|
6
|
+
@import "compass/support";
|
7
|
+
|
8
|
+
// The prefixed support threshold for user-select.
|
9
|
+
// Defaults to the $graceful-usage-threshold.
|
10
|
+
$userselect-support-threshold: $graceful-usage-threshold !default;
|
11
|
+
|
12
|
+
// This property controls the selection model and granularity of an element.
|
13
|
+
//
|
14
|
+
// @param $select
|
15
|
+
// [ none | text | toggle | element | elements | all | inherit ]
|
16
|
+
@mixin user-select($select) {
|
17
|
+
$select: unquote($select);
|
18
|
+
|
19
|
+
@include with-each-prefix(user-select-none, $userselect-support-threshold) {
|
20
|
+
// old Firefox used a proprietary `-moz-none` value, starting with Firefox 21 `none` behaves like `-moz-none`
|
21
|
+
// @link https://developer.mozilla.org/en-US/docs/Web/CSS/user-select
|
22
|
+
@include prefix-prop(user-select, if($current-prefix == -moz and $select == 'none', -moz-none, $select));
|
23
|
+
}
|
24
|
+
}
|
25
|
+
|
26
|
+
// The prefixed support threshold for input-placeholder.
|
27
|
+
// Defaults to the $graceful-usage-threshold.
|
28
|
+
$input-placeholder-support-threshold: $graceful-usage-threshold !default;
|
29
|
+
|
30
|
+
// Style the html5 input placeholder in browsers that support it.
|
31
|
+
//
|
32
|
+
// The styles for the input placeholder are passed as mixin content
|
33
|
+
// and the selector comes from the mixin's context.
|
34
|
+
//
|
35
|
+
// For example:
|
36
|
+
//
|
37
|
+
// #{elements-of-type(text-input)} {
|
38
|
+
// @include input-placeholder {
|
39
|
+
// color: #bfbfbf;
|
40
|
+
// font-style: italic;
|
41
|
+
// }
|
42
|
+
// }
|
43
|
+
//
|
44
|
+
// if you want to apply the placeholder styles to all elements supporting
|
45
|
+
// the `input-placeholder` pseudo class (beware of performance impacts):
|
46
|
+
//
|
47
|
+
// * {
|
48
|
+
// @include input-placeholder {
|
49
|
+
// color: #bfbfbf;
|
50
|
+
// font-style: italic;
|
51
|
+
// }
|
52
|
+
// }
|
53
|
+
@mixin input-placeholder {
|
54
|
+
@include with-each-prefix(css-placeholder, $input-placeholder-support-threshold) {
|
55
|
+
@if $current-prefix == -webkit {
|
56
|
+
&::-webkit-input-placeholder { @content; }
|
57
|
+
}
|
58
|
+
@elseif $current-prefix == -moz {
|
59
|
+
// for Firefox 19 and below
|
60
|
+
@if support-legacy-browser("firefox", "4", "19", $threshold: $input-placeholder-support-threshold) {
|
61
|
+
&:-moz-placeholder { @content; }
|
62
|
+
}
|
63
|
+
// for Firefox 20 and above
|
64
|
+
&::-moz-placeholder { @content; }
|
65
|
+
}
|
66
|
+
@elseif $current-prefix == -ms {
|
67
|
+
&:-ms-input-placeholder { @content; }
|
68
|
+
}
|
69
|
+
}
|
70
|
+
// This is not standardized yet so no official selector is generated.
|
71
|
+
}
|
@@ -0,0 +1,178 @@
|
|
1
|
+
@import "compass/css3/images";
|
2
|
+
@import "compass/css3/background-size";
|
3
|
+
|
4
|
+
// Set the color of your columns
|
5
|
+
$grid-background-column-color : rgba(100, 100, 225, 0.25) !default;
|
6
|
+
// Set the color of your gutters
|
7
|
+
$grid-background-gutter-color : rgba(0, 0, 0, 0) !default;
|
8
|
+
|
9
|
+
// Set the total number of columns in your grid
|
10
|
+
$grid-background-total-columns : 24 !default;
|
11
|
+
// Set the width of your columns
|
12
|
+
$grid-background-column-width : 30px !default;
|
13
|
+
// Set the width of your gutters
|
14
|
+
$grid-background-gutter-width : 10px !default;
|
15
|
+
// Set the offset, if your columns are padded in from the container edge
|
16
|
+
$grid-background-offset : 0px !default;
|
17
|
+
|
18
|
+
// Set the color of your baseline
|
19
|
+
$grid-background-baseline-color : rgba(0, 0, 0, 0.5) !default;
|
20
|
+
// Set the height of your baseline grid
|
21
|
+
$grid-background-baseline-height : 1.5em !default;
|
22
|
+
|
23
|
+
// toggle your columns grids on and off
|
24
|
+
$show-column-grid-backgrounds : true !default;
|
25
|
+
// toggle your vertical grids on and off
|
26
|
+
$show-baseline-grid-backgrounds : true !default;
|
27
|
+
// toggle all your grids on and off
|
28
|
+
$show-grid-backgrounds : true !default;
|
29
|
+
|
30
|
+
// optionally force your grid-image to remain fluid
|
31
|
+
// no matter what units you used to declared your grid.
|
32
|
+
$grid-background-force-fluid : false !default;
|
33
|
+
|
34
|
+
|
35
|
+
// Create the gradient needed for baseline grids
|
36
|
+
@function get-baseline-gradient(
|
37
|
+
$color : $grid-background-baseline-color
|
38
|
+
) {
|
39
|
+
$gradient: linear-gradient(bottom, $color 5%, rgba($color,0) 5%);
|
40
|
+
@return $gradient;
|
41
|
+
}
|
42
|
+
|
43
|
+
// Create the color-stops needed for horizontal grids
|
44
|
+
@function build-grid-background(
|
45
|
+
$total : $grid-background-total-columns,
|
46
|
+
$column : $grid-background-column-width,
|
47
|
+
$gutter : $grid-background-gutter-width,
|
48
|
+
$offset : $grid-background-offset,
|
49
|
+
$column-color : $grid-background-column-color,
|
50
|
+
$gutter-color : $grid-background-gutter-color
|
51
|
+
) {
|
52
|
+
$grid: compact();
|
53
|
+
$grid: append($grid, $gutter-color $offset, comma);
|
54
|
+
@for $i from 0 to $total {
|
55
|
+
|
56
|
+
// $a represents the start of this column, initially equal to the offset
|
57
|
+
$a: $offset;
|
58
|
+
@if $i > 0 { $a: $a + (($column + $gutter) * $i); }
|
59
|
+
|
60
|
+
// $g represents the start of this gutter, equal to $a plus one column-width
|
61
|
+
$g: $a + $column;
|
62
|
+
|
63
|
+
// $z represents the end of a gutter, equal to $g plus one gutter-width
|
64
|
+
$z: $g + $gutter;
|
65
|
+
|
66
|
+
@if (unit($a) == "%") and ($i == ($total - 1)) {
|
67
|
+
$z: 100%;
|
68
|
+
}
|
69
|
+
|
70
|
+
// and we add this column/gutter pair to our grid
|
71
|
+
$grid: join($grid, ($column-color $a, $column-color $g, $gutter-color $g, $gutter-color $z));
|
72
|
+
}
|
73
|
+
|
74
|
+
@return $grid;
|
75
|
+
}
|
76
|
+
|
77
|
+
// Return the gradient needed for horizontal grids
|
78
|
+
@function get-column-gradient(
|
79
|
+
$total : $grid-background-total-columns,
|
80
|
+
$column : $grid-background-column-width,
|
81
|
+
$gutter : $grid-background-gutter-width,
|
82
|
+
$offset : $grid-background-offset,
|
83
|
+
$column-color : $grid-background-column-color,
|
84
|
+
$gutter-color : $grid-background-gutter-color,
|
85
|
+
$force-fluid : $grid-background-force-fluid
|
86
|
+
) {
|
87
|
+
$grid: unquote("");
|
88
|
+
|
89
|
+
// don't force fluid grids when they are already fluid.
|
90
|
+
@if unit($column) == "%" { $force-fluid: false; }
|
91
|
+
|
92
|
+
@if $force-fluid {
|
93
|
+
$grid: get-column-fluid-grid($total,$column,$gutter,$offset,$column-color,$gutter-color);
|
94
|
+
} @else {
|
95
|
+
$grid: build-grid-background($total,$column,$gutter,$offset,$column-color,$gutter-color);
|
96
|
+
}
|
97
|
+
|
98
|
+
// return the horizontal grid as a gradient
|
99
|
+
$gradient: linear-gradient(left, $grid);
|
100
|
+
@return $gradient;
|
101
|
+
}
|
102
|
+
|
103
|
+
// Convert a grid from fixed units into percentages.
|
104
|
+
@function get-column-fluid-grid(
|
105
|
+
$total : $grid-background-total-columns,
|
106
|
+
$column : $grid-background-column-width,
|
107
|
+
$gutter : $grid-background-gutter-width,
|
108
|
+
$offset : $grid-background-offset,
|
109
|
+
$column-color : $grid-background-column-color,
|
110
|
+
$gutter-color : $grid-background-gutter-color
|
111
|
+
) {
|
112
|
+
$context: ($column * $total) + ($gutter * ($total - 1) + ($offset * 2));
|
113
|
+
$offset: $offset / $context * 100%;
|
114
|
+
$column: $column / $context * 100%;
|
115
|
+
$gutter: $gutter / $context * 100%;
|
116
|
+
|
117
|
+
// return the horizontal grid as a set of color-stops
|
118
|
+
$grid: build-grid-background($total,$column,$gutter,$offset,$column-color,$gutter-color);
|
119
|
+
@return $grid;
|
120
|
+
}
|
121
|
+
|
122
|
+
|
123
|
+
// Add just the baseline grid to an element's background
|
124
|
+
@mixin baseline-grid-background(
|
125
|
+
$baseline : $grid-background-baseline-height,
|
126
|
+
$color : $grid-background-baseline-color
|
127
|
+
) {
|
128
|
+
@if $show-grid-backgrounds and $show-baseline-grid-backgrounds {
|
129
|
+
@include background-image(get-baseline-gradient($color));
|
130
|
+
@include background-size(100% $baseline);
|
131
|
+
background-position: left top;
|
132
|
+
}
|
133
|
+
}
|
134
|
+
|
135
|
+
// Add just the horizontal grid to an element's background
|
136
|
+
@mixin column-grid-background(
|
137
|
+
$total : $grid-background-total-columns,
|
138
|
+
$column : $grid-background-column-width,
|
139
|
+
$gutter : $grid-background-gutter-width,
|
140
|
+
$offset : $grid-background-offset,
|
141
|
+
$column-color : $grid-background-column-color,
|
142
|
+
$gutter-color : $grid-background-gutter-color,
|
143
|
+
$force-fluid : $grid-background-force-fluid
|
144
|
+
) {
|
145
|
+
@if $show-grid-backgrounds and $show-column-grid-backgrounds {
|
146
|
+
@include background-image(
|
147
|
+
get-column-gradient($total,$column,$gutter,$offset,$column-color,$gutter-color, $force-fluid)
|
148
|
+
);
|
149
|
+
background-position: left top;
|
150
|
+
}
|
151
|
+
}
|
152
|
+
|
153
|
+
// Add both horizontal and baseline grids to an element's background
|
154
|
+
@mixin grid-background(
|
155
|
+
$total : $grid-background-total-columns,
|
156
|
+
$column : $grid-background-column-width,
|
157
|
+
$gutter : $grid-background-gutter-width,
|
158
|
+
$baseline : $grid-background-baseline-height,
|
159
|
+
$offset : $grid-background-offset,
|
160
|
+
$column-color : $grid-background-column-color,
|
161
|
+
$gutter-color : $grid-background-gutter-color,
|
162
|
+
$baseline-color : $grid-background-baseline-color,
|
163
|
+
$force-fluid : $grid-background-force-fluid
|
164
|
+
) {
|
165
|
+
@if $show-grid-backgrounds {
|
166
|
+
@if $show-baseline-grid-backgrounds and $show-column-grid-backgrounds {
|
167
|
+
@include background-image(
|
168
|
+
get-baseline-gradient($baseline-color),
|
169
|
+
get-column-gradient($total,$column,$gutter,$offset,$column-color,$gutter-color, $force-fluid)
|
170
|
+
);
|
171
|
+
@include background-size(100% $baseline, auto);
|
172
|
+
background-position: left top;
|
173
|
+
} @else {
|
174
|
+
@include baseline-grid-background($baseline, $baseline-color);
|
175
|
+
@include column-grid-background($total,$column,$gutter,$offset,$column-color,$gutter-color, $force-fluid);
|
176
|
+
}
|
177
|
+
}
|
178
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
// Based on a [blog post by Ryan Fait](http://ryanfait.com/resources/footer-stick-to-bottom-of-page/).
|
2
|
+
//
|
3
|
+
// Must be mixed into the top level of your stylesheet.
|
4
|
+
//
|
5
|
+
// Footer element must be outside of root wrapper element.
|
6
|
+
//
|
7
|
+
// Footer must be a fixed height.
|
8
|
+
|
9
|
+
@mixin sticky-footer($footer-height, $root-selector: unquote("#root"), $root-footer-selector: unquote("#root_footer"), $footer-selector: unquote("#footer")) {
|
10
|
+
html, body {
|
11
|
+
height: 100%; }
|
12
|
+
#{$root-selector} {
|
13
|
+
clear: both;
|
14
|
+
min-height: 100%;
|
15
|
+
height: auto !important;
|
16
|
+
height: 100%;
|
17
|
+
margin-bottom: -$footer-height;
|
18
|
+
#{$root-footer-selector} {
|
19
|
+
height: $footer-height; } }
|
20
|
+
#{$footer-selector} {
|
21
|
+
clear: both;
|
22
|
+
position: relative;
|
23
|
+
height: $footer-height; } }
|
@@ -0,0 +1,24 @@
|
|
1
|
+
|
2
|
+
// stretch element height to specified top and bottom position
|
3
|
+
|
4
|
+
@mixin stretch-y($offset-top:0, $offset-bottom:0) {
|
5
|
+
@include stretch($offset-top, false, $offset-bottom, false);
|
6
|
+
}
|
7
|
+
|
8
|
+
|
9
|
+
// stretch element width to specified left and right position
|
10
|
+
|
11
|
+
@mixin stretch-x($offset-left:0, $offset-right:0) {
|
12
|
+
@include stretch(false, $offset-right, false, $offset-left);
|
13
|
+
}
|
14
|
+
|
15
|
+
|
16
|
+
// shorthand to stretch element height and width
|
17
|
+
|
18
|
+
@mixin stretch($offset-top:0, $offset-right:0, $offset-bottom:0, $offset-left:0) {
|
19
|
+
position: absolute;
|
20
|
+
@if $offset-top { top: $offset-top; }
|
21
|
+
@if $offset-bottom { bottom: $offset-bottom; }
|
22
|
+
@if $offset-left { left: $offset-left; }
|
23
|
+
@if $offset-right { right: $offset-right; }
|
24
|
+
}
|