stratum 0.4 → 0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/assets/stylesheets/_css3.scss +1 -0
- data/assets/stylesheets/css3/_flex.scss +4 -0
- data/assets/stylesheets/css3/_gradients.scss +288 -0
- data/assets/stylesheets/helpers/_triangle.scss +16 -11
- data/assets/stylesheets/helpers/_vendor-prefix.scss +20 -0
- data/lib/stratum/version.rb +1 -1
- metadata +5 -4
@@ -0,0 +1,288 @@
|
|
1
|
+
// CSS Gradients
|
2
|
+
// -------------
|
3
|
+
|
4
|
+
// Vendor prefixes:
|
5
|
+
// - Firefox: 3.6+
|
6
|
+
// - Chrome 10+
|
7
|
+
// - Safari 5.1+
|
8
|
+
// - iOS Safari 3.2+
|
9
|
+
// - Android 2.1+
|
10
|
+
// - Blackberry 7+
|
11
|
+
|
12
|
+
// No prefixes
|
13
|
+
// - Firefox 16+
|
14
|
+
// - Opera 12.1
|
15
|
+
// - Chrome 26+
|
16
|
+
// - IE 10+
|
17
|
+
|
18
|
+
// Not supported
|
19
|
+
// - IE < 10
|
20
|
+
// - Opera Mini
|
21
|
+
|
22
|
+
$vendor-prefixes-background: webkit moz spec !default;
|
23
|
+
|
24
|
+
|
25
|
+
// Parse CSS functions
|
26
|
+
// -------------------
|
27
|
+
// linear-gradient
|
28
|
+
@function linear-gradient($values...) {
|
29
|
+
@return append(linear, $values);
|
30
|
+
}
|
31
|
+
// linear-gradient
|
32
|
+
// ---------------
|
33
|
+
@function radial-gradient($values...) {
|
34
|
+
@return append(radial, $values);
|
35
|
+
}
|
36
|
+
|
37
|
+
|
38
|
+
// Reverse direction keyword
|
39
|
+
// -------------------------
|
40
|
+
// used to convert between standards and pre-standards modes
|
41
|
+
@function -gradient-reverse-direction-keywords($-keywords...) {
|
42
|
+
$-direction-keywords: null;
|
43
|
+
|
44
|
+
@if type-of($-keywords) == arglist {
|
45
|
+
// convert arglist into list
|
46
|
+
@each $-kw in $-keywords { $-keywords: $-kw }
|
47
|
+
}
|
48
|
+
|
49
|
+
@each $-keyword in $-keywords {
|
50
|
+
@if $-keyword == top {
|
51
|
+
$-direction-keywords: #{unquote($-direction-keywords) bottom};
|
52
|
+
}
|
53
|
+
@if $-keyword == bottom {
|
54
|
+
$-direction-keywords: #{unquote($-direction-keywords) top};
|
55
|
+
}
|
56
|
+
@if $-keyword == left {
|
57
|
+
$-direction-keywords: #{unquote($-direction-keywords) right};
|
58
|
+
}
|
59
|
+
@if $-keyword == right {
|
60
|
+
$-direction-keywords: #{unquote($-direction-keywords) left};
|
61
|
+
}
|
62
|
+
@if $-keyword == center {
|
63
|
+
$-direction-keywords: #{unquote($-direction-keywords) center};
|
64
|
+
}
|
65
|
+
}
|
66
|
+
|
67
|
+
@return $-direction-keywords;
|
68
|
+
}
|
69
|
+
|
70
|
+
|
71
|
+
// Parse gradient directions
|
72
|
+
// -------------------------
|
73
|
+
@function -parse-direction($-keywords, $-prefix: to, $-mode: standard, $-reverse: true) {
|
74
|
+
$-direction-old-syntax: $-keywords;
|
75
|
+
$-direction-new-syntax: #{$-prefix -gradient-reverse-direction-keywords($-direction-old-syntax)};
|
76
|
+
@if not $-reverse {
|
77
|
+
$-direction-new-syntax: #{$-prefix $-direction-old-syntax};
|
78
|
+
}
|
79
|
+
|
80
|
+
// Convert back to non-standard direction keywords
|
81
|
+
@if index(to at, nth($-keywords, 1)) {
|
82
|
+
$-direction-old-syntax: -gradient-reverse-direction-keywords($-direction-old-syntax);
|
83
|
+
$-direction-new-syntax: $-keywords;
|
84
|
+
|
85
|
+
// get keywords sans standard `at/to` prefix
|
86
|
+
$-non-standard-direction: ();
|
87
|
+
@for $-i from 2 to length($-keywords) + 1 {
|
88
|
+
$-non-standard-direction: append($-non-standard-direction, nth($-keywords, $-i));
|
89
|
+
}
|
90
|
+
// use the same keyword if $-reverse if false
|
91
|
+
@if not $-reverse {
|
92
|
+
$-direction-old-syntax: $-non-standard-direction;
|
93
|
+
}
|
94
|
+
}
|
95
|
+
// Convert to standard direction keywords
|
96
|
+
@else {
|
97
|
+
@if type-of($-keywords) == number {
|
98
|
+
$-direction-new-syntax: $-direction-old-syntax;
|
99
|
+
}
|
100
|
+
}
|
101
|
+
|
102
|
+
@if $-mode == standard {
|
103
|
+
@return $-direction-new-syntax;
|
104
|
+
} @else {
|
105
|
+
@return $-direction-old-syntax;
|
106
|
+
}
|
107
|
+
}
|
108
|
+
|
109
|
+
|
110
|
+
// Outputs linear gradient value for specific vendor
|
111
|
+
// -------------------------------------------------
|
112
|
+
@function -linear-gradient($-vendor, $values...) {
|
113
|
+
@if type-of($values) == arglist {
|
114
|
+
// convert arglist into list
|
115
|
+
@each $-value in $values { $values: $-value }
|
116
|
+
}
|
117
|
+
|
118
|
+
$-direction: top;
|
119
|
+
$-combined-background: ();
|
120
|
+
$-stops: ();
|
121
|
+
|
122
|
+
@each $-value in $values {
|
123
|
+
// Gradient stops
|
124
|
+
@if type-of(nth($-value, 1)) == color
|
125
|
+
or (type-of(nth($-value, 1)) == string and nth($-value, 1) == transparent) {
|
126
|
+
$-stops: append($-stops, $-value, comma);
|
127
|
+
}
|
128
|
+
// Direction provided
|
129
|
+
@else if index(string number list, type-of($-value)) {
|
130
|
+
$-direction: $-value;
|
131
|
+
}
|
132
|
+
}
|
133
|
+
|
134
|
+
$-direction: -parse-direction($-direction, to, if($-vendor == "spec", standard, old));
|
135
|
+
$-prefixed-gradients: vendor-prefix(linear-gradient, #{$-direction, $-stops}, $-vendor);
|
136
|
+
$-combined-background: append($-combined-background, $-prefixed-gradients, comma);
|
137
|
+
|
138
|
+
// background-color: mix(nth($-stops, 1), nth($-stops, length($-stops)));
|
139
|
+
@return $-combined-background;
|
140
|
+
}
|
141
|
+
|
142
|
+
|
143
|
+
// Outputs radial gradient value for specific vendor
|
144
|
+
// -------------------------------------------------
|
145
|
+
@function -radial-gradient($-vendor, $values...) {
|
146
|
+
@if type-of($values) == arglist {
|
147
|
+
// convert arglist into list
|
148
|
+
@each $-value in $values { $values: $-value }
|
149
|
+
}
|
150
|
+
|
151
|
+
$-shape: null;
|
152
|
+
$-shape-size: ();
|
153
|
+
$-extend-keyword: null;
|
154
|
+
$-position: center;
|
155
|
+
$-combined-background: ();
|
156
|
+
$-stops: ();
|
157
|
+
|
158
|
+
@each $-value in $values {
|
159
|
+
// Gradient stops
|
160
|
+
@if type-of(nth($-value, 1)) == color
|
161
|
+
or (type-of(nth($-value, 1)) == string and nth($-value, 1) == transparent) {
|
162
|
+
$-stops: append($-stops, $-value, comma);
|
163
|
+
}
|
164
|
+
// Gradient parameters
|
165
|
+
// Simple (one parameter)
|
166
|
+
@else if type-of($-value) == string {
|
167
|
+
// Shape
|
168
|
+
@if index(circle ellipse, $-value) {
|
169
|
+
$-shape: $-value;
|
170
|
+
// Position
|
171
|
+
} @else if index(center top bottom left right, $-value) {
|
172
|
+
$-position: $-value;
|
173
|
+
}
|
174
|
+
}
|
175
|
+
// Complex (list of parameters)
|
176
|
+
@else if type-of($-value) == list {
|
177
|
+
$-pos: ();
|
178
|
+
@each $-v in $-value {
|
179
|
+
// Extend keywords
|
180
|
+
@if index(cover contain closest-side closest-corner farthest-side farthest-corner, $-v) {
|
181
|
+
// Early drafts
|
182
|
+
@if $-v == cover and $-vendor == spec {
|
183
|
+
$-extend-keyword: farthest-corner;
|
184
|
+
} @else if $-v == contain and $-vendor == spec {
|
185
|
+
$-extend-keyword: closest-side;
|
186
|
+
}
|
187
|
+
// Current standard
|
188
|
+
@else {
|
189
|
+
$-extend-keyword: $-v;
|
190
|
+
}
|
191
|
+
}
|
192
|
+
// Position keywords
|
193
|
+
@else if index(center top bottom left right, $-v) {
|
194
|
+
$-pos: append($-v, $-pos);
|
195
|
+
}
|
196
|
+
// Numbers
|
197
|
+
@else if type-of($-v) == number {
|
198
|
+
// Position percentage
|
199
|
+
@if unit($-v) == "%" {
|
200
|
+
$-pos: append($-pos, $-v);
|
201
|
+
}
|
202
|
+
// Shape size
|
203
|
+
@if index(px em ex mm cm, unit($-v)) {
|
204
|
+
$-shape-size: append($-shape-size, $-v);
|
205
|
+
}
|
206
|
+
}
|
207
|
+
// Shape
|
208
|
+
@else if index(ellipse circle, $-v) {
|
209
|
+
$-shape: $-v;
|
210
|
+
}
|
211
|
+
}
|
212
|
+
$-position: if(length($-pos) > 0, $-pos, $-position);
|
213
|
+
}
|
214
|
+
}
|
215
|
+
|
216
|
+
$-gradient-params: #{$-position, $-extend-keyword if($-shape-size, $-shape-size, $-shape)};
|
217
|
+
|
218
|
+
@if $-vendor == spec {
|
219
|
+
$-position: -parse-direction($-position, at, if($-vendor == "spec", standard, old), $-reverse: false);
|
220
|
+
$-gradient-params: #{$-shape-size $-shape $-extend-keyword $-position};
|
221
|
+
}
|
222
|
+
|
223
|
+
$-prefixed-gradients: vendor-prefix(radial-gradient, #{$-gradient-params, $-stops}, $-vendor);
|
224
|
+
$-combined-background: append($-combined-background, $-prefixed-gradients, comma);
|
225
|
+
|
226
|
+
// background-color: mix(nth($-stops, 1), nth($-stops, length($-stops)));
|
227
|
+
@return $-combined-background;
|
228
|
+
}
|
229
|
+
|
230
|
+
|
231
|
+
// Background shorthand mixin
|
232
|
+
// --------------------------
|
233
|
+
// Can take comma-separated gradients and background images
|
234
|
+
// If one gradient is specified, a colour fallback can be given as the first parameter
|
235
|
+
// e.g. `background(#ddd, linear-gradient(#eee, #ccc))`
|
236
|
+
// Colour background can also be provided with image e.g. `..., #ddd url(...) no-repeat 50%`
|
237
|
+
@mixin background($values...) {
|
238
|
+
@each $-vendor in $vendor-prefixes-background {
|
239
|
+
$-color: null;
|
240
|
+
$-combined-background: ();
|
241
|
+
|
242
|
+
// Extract individual backgrounds from string
|
243
|
+
@each $-value in $values {
|
244
|
+
// Look for colours
|
245
|
+
@if type-of($-value) == color {
|
246
|
+
$-color: $-value;
|
247
|
+
}
|
248
|
+
// Look for linear/radial gradient
|
249
|
+
@if index(linear radial, nth($-value, 1)) {
|
250
|
+
$-type: nth($-value, 1);
|
251
|
+
$-params: nth($-value, 2);
|
252
|
+
@if $-type == linear {
|
253
|
+
$-combined-background: append($-combined-background, -linear-gradient($-vendor, $-params), comma);
|
254
|
+
}
|
255
|
+
@if $-type == radial {
|
256
|
+
$-combined-background: append($-combined-background, -radial-gradient($-vendor, $-params), comma);
|
257
|
+
}
|
258
|
+
}
|
259
|
+
// Look for image URL
|
260
|
+
@else if index(string list, type-of($-value)) {
|
261
|
+
$-combined-background: append($-combined-background, $-value);
|
262
|
+
}
|
263
|
+
}
|
264
|
+
|
265
|
+
// Add fallback colour if only one gradient is specified
|
266
|
+
$-color-fallback: if(length($-combined-background) == 1, $-color, null);
|
267
|
+
|
268
|
+
background: #{unquote($-color-fallback) $-combined-background};
|
269
|
+
}
|
270
|
+
}
|
271
|
+
|
272
|
+
|
273
|
+
// Linear gradient mixin
|
274
|
+
// ---------------------
|
275
|
+
@mixin linear-gradient($values...) {
|
276
|
+
@each $-vendor in $vendor-prefixes-background {
|
277
|
+
background-image: -linear-gradient($-vendor, $values);
|
278
|
+
}
|
279
|
+
}
|
280
|
+
|
281
|
+
|
282
|
+
// Radial gradient mixin
|
283
|
+
// ---------------------
|
284
|
+
@mixin radial-gradient($values...) {
|
285
|
+
@each $-vendor in $vendor-prefixes-background {
|
286
|
+
background-image: -radial-gradient($-vendor, $values);
|
287
|
+
}
|
288
|
+
}
|
@@ -1,12 +1,17 @@
|
|
1
1
|
// Generate CSS triangles
|
2
2
|
// ----------------------
|
3
3
|
|
4
|
+
// $size can be:
|
5
|
+
// one value - base; sides are created 2/3 of base length
|
6
|
+
// two values - base and two sides (e.g. 12px 10px)
|
7
|
+
// three values - base and each side (e.g. 12px 4px 7px; base left right)
|
8
|
+
|
4
9
|
@mixin triangle($position: top, $color: black, $size: 16px) {
|
5
10
|
$-dimensions: null;
|
6
11
|
$-colors: null;
|
7
|
-
$-
|
8
|
-
$-left: $-
|
9
|
-
$-right: $-
|
12
|
+
$-base: nth($size, 1);
|
13
|
+
$-left: $-base / 1.5;
|
14
|
+
$-right: $-base / 1.5;
|
10
15
|
|
11
16
|
// sides width specified
|
12
17
|
@if length($size) == 2 {
|
@@ -19,35 +24,35 @@
|
|
19
24
|
}
|
20
25
|
|
21
26
|
@if $position == top {
|
22
|
-
$-dimensions: 0 $-right $-
|
27
|
+
$-dimensions: 0 $-right $-base $-left;
|
23
28
|
$-colors: transparent transparent $color;
|
24
29
|
}
|
25
30
|
@if $position == top-right {
|
26
|
-
$-dimensions: 0 $-
|
31
|
+
$-dimensions: 0 $-base $-base 0;
|
27
32
|
$-colors: transparent $color transparent transparent;
|
28
33
|
}
|
29
34
|
@if $position == right {
|
30
|
-
$-dimensions: $-left 0 $-right $-
|
35
|
+
$-dimensions: $-left 0 $-right $-base;
|
31
36
|
$-colors: transparent transparent transparent $color;
|
32
37
|
}
|
33
38
|
@if $position == bottom-right {
|
34
|
-
$-dimensions: 0 0 $-
|
39
|
+
$-dimensions: 0 0 $-base $-base;
|
35
40
|
$-colors: transparent transparent $color;
|
36
41
|
}
|
37
42
|
@if $position == bottom {
|
38
|
-
$-dimensions: $-
|
43
|
+
$-dimensions: $-base $-left 0 $-right;
|
39
44
|
$-colors: $color transparent transparent;
|
40
45
|
}
|
41
46
|
@if $position == bottom-left {
|
42
|
-
$-dimensions: $-
|
47
|
+
$-dimensions: $-base 0 0 $-base;
|
43
48
|
$-colors: transparent transparent transparent $color;
|
44
49
|
}
|
45
50
|
@if $position == left {
|
46
|
-
$-dimensions: $-left $-
|
51
|
+
$-dimensions: $-left $-base $-right 0;
|
47
52
|
$-colors: transparent $color transparent transparent;
|
48
53
|
}
|
49
54
|
@if $position == top-left {
|
50
|
-
$-dimensions: $-
|
55
|
+
$-dimensions: $-base $-base 0 0;
|
51
56
|
$-colors: $color transparent transparent transparent;
|
52
57
|
}
|
53
58
|
|
@@ -16,3 +16,23 @@
|
|
16
16
|
}
|
17
17
|
}
|
18
18
|
}
|
19
|
+
|
20
|
+
|
21
|
+
@function vendor-prefix($property, $value, $prefixes) {
|
22
|
+
$-allowed-prefixes: moz, webkit, ms, o, spec;
|
23
|
+
|
24
|
+
@each $-prefix in $prefixes {
|
25
|
+
$-result: invalid;
|
26
|
+
|
27
|
+
@each $-allowed-prefix in $-allowed-prefixes {
|
28
|
+
@if $-prefix == $-allowed-prefix {
|
29
|
+
$-result: if($-prefix == "spec", "", "-#{$-prefix}-");
|
30
|
+
}
|
31
|
+
}
|
32
|
+
@if($-result != invalid) {
|
33
|
+
@return unquote("#{$-result}#{$property}(#{$value})");
|
34
|
+
} @else {
|
35
|
+
@warn("Prefix '-#{$-prefix}' is invalid");
|
36
|
+
}
|
37
|
+
}
|
38
|
+
}
|
data/lib/stratum/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stratum
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.5'
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-04-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|
16
|
-
requirement: &
|
16
|
+
requirement: &70096668512440 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70096668512440
|
25
25
|
description: Stratum is a collection of SASS mixins and utilities for your web development
|
26
26
|
needs.
|
27
27
|
email: tyom@semonov.com
|
@@ -44,6 +44,7 @@ files:
|
|
44
44
|
- assets/stylesheets/css3/_calc.scss
|
45
45
|
- assets/stylesheets/css3/_columns.scss
|
46
46
|
- assets/stylesheets/css3/_flex.scss
|
47
|
+
- assets/stylesheets/css3/_gradients.scss
|
47
48
|
- assets/stylesheets/css3/_transform.scss
|
48
49
|
- assets/stylesheets/css3/_transition.scss
|
49
50
|
- assets/stylesheets/css3/_user-select.scss
|