ezy 0.2.0.alpha → 0.2.0
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/README.md +6 -91
- data/VERSION +1 -1
- data/ezy.gemspec +6 -4
- data/sass/_ezy.scss +2 -2
- data/sass/ezy/_sprites.scss +79 -27
- data/test/css/sprites/layout.css +2 -2
- data/test/css/sprites/position.css +4 -4
- data/test/css/sprites/repeat.css +2 -2
- data/test/css/sprites/resolution.css +2 -2
- data/test/css/sprites/responsive.css +69 -0
- data/test/css/sprites/retina.css +2 -2
- data/test/css/sprites/simple.css +1 -1
- data/test/css/sprites/spacing.css +2 -2
- data/test/html/sprites/responsive.html +19 -0
- data/test/scss/sprites/responsive.scss +52 -0
- metadata +49 -76
- data/sass/ezy/_clearfix.scss +0 -25
- data/sass/ezy/_functions.scss +0 -11
- data/sass/ezy/_grid.scss +0 -279
- data/sass/ezy/_media.scss +0 -48
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ecc5a657ba9ce7ab7a6b85269db4ff0ca3f8ffe9
|
4
|
+
data.tar.gz: 8f348367ead3da3f9165770262ffd30dfb24e45d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: dba7608afd2431e094919d09201ea90044dcabde24febff0fe8cdacb05b10c0dedd287073b047c1dc8ae0e3875a66c285a056622d8e35a8ec6d97ac8c7ab69cc
|
7
|
+
data.tar.gz: 0c5d73d8dc8f025b14488a25532c89dd71c161583f2ce81809a5cb939d7b593dd47cb7f677463ab857b6bcdabaad0c3e1fc6315bd637614022f0c88114278e26
|
data/README.md
CHANGED
@@ -3,97 +3,12 @@ Ezy: The developer's toolbox for responsive websites
|
|
3
3
|
|
4
4
|
My attempt to create a collection of simple-to-use grid helpers and other tools with SCSS and Ruby
|
5
5
|
|
6
|
-
|
7
|
-
|
6
|
+
> NOTE: Ezy is now in beta, with only sprites out-of-the-box.
|
7
|
+
> Stand by for release of the grid.
|
8
8
|
|
9
|
-
|
9
|
+
> If you can't wait, you can check out the progress [here](https://github.com/raahede/ezy/tree/grid-alpha).
|
10
10
|
|
11
|
-
|
11
|
+
Documentation
|
12
|
+
-------------
|
12
13
|
|
13
|
-
|
14
|
-
|
15
|
-
`require "ezy"`
|
16
|
-
|
17
|
-
#### 3) Import the part you need in your SCSS
|
18
|
-
|
19
|
-
Import all features:
|
20
|
-
|
21
|
-
`@import "ezy";`
|
22
|
-
|
23
|
-
Import sprites only:
|
24
|
-
|
25
|
-
`@import "ezy/sprites";`
|
26
|
-
|
27
|
-
Using Ezy
|
28
|
-
---------
|
29
|
-
|
30
|
-
### Sprites
|
31
|
-
|
32
|
-
#### 1) Create sprite
|
33
|
-
|
34
|
-
Simple use without retina:
|
35
|
-
|
36
|
-
@include make-sprite(
|
37
|
-
$name: "icons", // (required) your name to use when calling sprites
|
38
|
-
$folder: "icon-images" // (required) folder path relative to image folder
|
39
|
-
);
|
40
|
-
|
41
|
-
Simple use with retina:
|
42
|
-
|
43
|
-
@include make-sprite(
|
44
|
-
$name: "icons", // (required) your name to use when calling sprites
|
45
|
-
$folder: "icon-images", // (required) folder path relative to image folder
|
46
|
-
$folder-retina: "icon-images@2x" // (optional) folder path relative to image folder
|
47
|
-
);
|
48
|
-
|
49
|
-
Advanced use:
|
50
|
-
|
51
|
-
@include make-sprite(
|
52
|
-
$name: "icons", // (required) your name to use when calling sprites
|
53
|
-
$folder: "icon-images", // (required) folder path relative to image folder
|
54
|
-
$folder-retina: "icon-images@2x", // (optional) folder path relative to image folder
|
55
|
-
$spacing: 20px, // (optional) [default: 0px] spacing between images in compiled sprite
|
56
|
-
$layout: vertical, // (optional) [default: vertical] vertical, horizontal, diagonal
|
57
|
-
$position: 0%, // (optional) [default: 0%] alignment of images in the sprite
|
58
|
-
$spacing-retina: 40px, // (optional) [default: $spacing x 2]
|
59
|
-
$layout-retina: diagonal, // (optional) [default: $layout]
|
60
|
-
$position-retina: 100% // (optional) [default: $position]
|
61
|
-
);
|
62
|
-
|
63
|
-
#### 2) Use sprite
|
64
|
-
|
65
|
-
Simple use: (if a sprite has a retina version, it uses retina as a default)
|
66
|
-
|
67
|
-
.icon-git-fork {
|
68
|
-
@include background-sprite( "icons", "git-fork" ); // using image git-fork.png from images/icon-images/
|
69
|
-
}
|
70
|
-
|
71
|
-
Simple use, force no retina:
|
72
|
-
|
73
|
-
.icon-git-fork {
|
74
|
-
@include background-sprite( "icons", "git-fork", $use-retina: false );
|
75
|
-
}
|
76
|
-
|
77
|
-
Advanced use:
|
78
|
-
|
79
|
-
.icon-git-fork {
|
80
|
-
@include background-sprite(
|
81
|
-
$name: "icons", // (required) sprite name
|
82
|
-
$image: "git-fork", // (required) image to use
|
83
|
-
$offset-x: 10px, // (optional) [default: 0] background offset x
|
84
|
-
$offset-y: 20px, // (optional) [default: 0] background offset y
|
85
|
-
$use-retina: true // (optional) [default: true] wether to use retina on hi-res screens
|
86
|
-
);
|
87
|
-
}
|
88
|
-
|
89
|
-
Building and testing local gem
|
90
|
-
------------------------------
|
91
|
-
|
92
|
-
#### Build gem ###
|
93
|
-
`gem build ezy.gemspec`
|
94
|
-
|
95
|
-
#### Install local gem ###
|
96
|
-
`gem install --local ezy-[build version].gem`
|
97
|
-
|
98
|
-
#### Open installed gem location (Mac) ###
|
99
|
-
`open /Users/[username]/.rvm/gems/`
|
14
|
+
View documentation here: [raahede.github.io/ezy](http://raahede.github.io/ezy/)
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.0
|
1
|
+
0.2.0
|
data/ezy.gemspec
CHANGED
@@ -2,8 +2,8 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
# Release Specific Information
|
5
|
-
s.version = "0.2.0
|
6
|
-
s.date = "2013-
|
5
|
+
s.version = "0.2.0"
|
6
|
+
s.date = "2013-12-08"
|
7
7
|
|
8
8
|
# Gem Details
|
9
9
|
s.name = "ezy"
|
@@ -19,7 +19,9 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.files += %w(ezy.gemspec)
|
20
20
|
s.files += %w(VERSION)
|
21
21
|
s.files += Dir.glob("lib/**/*.*")
|
22
|
-
s.files += Dir.glob("sass/**/*.*")
|
22
|
+
# s.files += Dir.glob("sass/**/*.*")
|
23
|
+
s.files += Dir.glob("sass/_ezy.scss")
|
24
|
+
s.files += Dir.glob("sass/ezy/_sprites.scss")
|
23
25
|
s.files += Dir.glob("templates/**/*.*")
|
24
26
|
s.files += Dir.glob("test/config.rb")
|
25
27
|
s.files += Dir.glob("test/css/**/*.*")
|
@@ -31,4 +33,4 @@ Gem::Specification.new do |s|
|
|
31
33
|
s.rubygems_version = %q{1.3.6}
|
32
34
|
s.add_dependency(%q<compass>, [">= 0.12.2"])
|
33
35
|
s.add_dependency(%q<sass>, [">= 3.2.0"])
|
34
|
-
end
|
36
|
+
end
|
data/sass/_ezy.scss
CHANGED
data/sass/ezy/_sprites.scss
CHANGED
@@ -8,9 +8,10 @@
|
|
8
8
|
// https://github.com/chriseppstein/compass/issues/897
|
9
9
|
|
10
10
|
// ---------------------------------------------------------------------------
|
11
|
-
//
|
11
|
+
// Setting defaults
|
12
12
|
|
13
13
|
$min-device-pixel-ratio: 2 !default;
|
14
|
+
$legacy-selector: ".no-media-queries" !default;
|
14
15
|
|
15
16
|
// ---------------------------------------------------------------------------
|
16
17
|
// Sprite map store
|
@@ -159,18 +160,34 @@ $sprite-maps: ();
|
|
159
160
|
//
|
160
161
|
// Retina media query mixin
|
161
162
|
|
162
|
-
@mixin at-retina( $ratio: 2 ) {
|
163
|
-
@
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
163
|
+
@mixin at-retina( $ratio: 2, $query: false ) {
|
164
|
+
@if $query {
|
165
|
+
// Extending retina media query with breakpoint query
|
166
|
+
@media
|
167
|
+
only screen and (-webkit-min-device-pixel-ratio: #{ $ratio }) and #{ $query },
|
168
|
+
only screen and ( min--moz-device-pixel-ratio: #{ $ratio }) and #{ $query },
|
169
|
+
only screen and ( -moz-min-device-pixel-ratio: #{ $ratio }) and #{ $query },
|
170
|
+
only screen and ( -ms-min-device-pixel-ratio: #{ $ratio }) and #{ $query },
|
171
|
+
only screen and ( -o-min-device-pixel-ratio: #{ $ratio }/1) and #{ $query },
|
172
|
+
only screen and ( min-device-pixel-ratio: #{ $ratio }) and #{ $query },
|
173
|
+
only screen and ( min-resolution: #{ $ratio * 96 }dpi) and #{ $query },
|
174
|
+
only screen and ( min-resolution: #{ $ratio }dppx) and #{ $query } {
|
175
|
+
@content;
|
176
|
+
}
|
177
|
+
} @else {
|
178
|
+
@media
|
179
|
+
only screen and (-webkit-min-device-pixel-ratio: #{ $ratio }),
|
180
|
+
only screen and ( min--moz-device-pixel-ratio: #{ $ratio }),
|
181
|
+
only screen and ( -moz-min-device-pixel-ratio: #{ $ratio }),
|
182
|
+
only screen and ( -ms-min-device-pixel-ratio: #{ $ratio }),
|
183
|
+
only screen and ( -o-min-device-pixel-ratio: #{ $ratio }/1),
|
184
|
+
only screen and ( min-device-pixel-ratio: #{ $ratio }),
|
185
|
+
only screen and ( min-resolution: #{ $ratio * 96 }dpi),
|
186
|
+
only screen and ( min-resolution: #{ $ratio }dppx) {
|
187
|
+
@content;
|
188
|
+
}
|
173
189
|
}
|
190
|
+
|
174
191
|
}
|
175
192
|
|
176
193
|
// ---------------------------------------------------------------------------
|
@@ -220,15 +237,15 @@ $sprite-maps: ();
|
|
220
237
|
$clean-up: $clean-up-retina
|
221
238
|
);
|
222
239
|
}
|
240
|
+
$sprite-settings: $name $sprite $sprite-retina $position $position-retina $repeat $repeat-retina;
|
223
241
|
@if $sprite-maps == () {
|
224
|
-
$sprite-maps: ($
|
242
|
+
$sprite-maps: ($sprite-settings);
|
225
243
|
} @else {
|
226
|
-
$sprite-maps: $sprite-maps, ($
|
244
|
+
$sprite-maps: $sprite-maps, ($sprite-settings);
|
227
245
|
}
|
228
246
|
%sprite-placeholder-#{ $name } {
|
229
247
|
background-image: sprite-url( $sprite );
|
230
248
|
background-repeat: $repeat;
|
231
|
-
// background-position-x: $position;
|
232
249
|
}
|
233
250
|
%sprite-placeholder-#{ $name }-retina {
|
234
251
|
@if $sprite-retina {
|
@@ -239,9 +256,6 @@ $sprite-maps: ();
|
|
239
256
|
@if $repeat-retina != $repeat {
|
240
257
|
background-repeat: $repeat-retina;
|
241
258
|
}
|
242
|
-
// @if $position-retina != $position {
|
243
|
-
// background-position-x: $position-retina;
|
244
|
-
// }
|
245
259
|
}
|
246
260
|
}
|
247
261
|
}
|
@@ -260,7 +274,9 @@ $sprite-maps: ();
|
|
260
274
|
$offset-y: 0, // background offset y (optional)
|
261
275
|
$use-retina: true, // wether to use retina on hi-res screens (optional)
|
262
276
|
$offset-x-retina: null, // background offset x on retina (optional)
|
263
|
-
$offset-y-retina: null
|
277
|
+
$offset-y-retina: null, // background offset y on retina (optional)
|
278
|
+
$at-breakpoint: false, // media query
|
279
|
+
$legacy-support: false // fallback for media query
|
264
280
|
) {
|
265
281
|
|
266
282
|
@if $offset-x-retina == null { $offset-x-retina: $offset-x; }
|
@@ -272,27 +288,63 @@ $sprite-maps: ();
|
|
272
288
|
$retina-map: return-sprite-map( $name, $retina: true );
|
273
289
|
}
|
274
290
|
|
291
|
+
// Catching media breakpoints from set-breakpoint
|
292
|
+
@if type-of( $at-breakpoint ) == "list" {
|
293
|
+
@if ( not $legacy-support ) and length( $at-breakpoint ) > 1 {
|
294
|
+
// Inheriting legacy support setting from set-breakpoint
|
295
|
+
$legacy-support: nth( $at-breakpoint, 2 );
|
296
|
+
}
|
297
|
+
$at-breakpoint: nth( $at-breakpoint, 1 );
|
298
|
+
}
|
299
|
+
|
275
300
|
@if $map and $image {
|
276
301
|
$pos: sprite-position($map, $image);
|
277
302
|
$pos-x: return-offset( nth( $pos, 1 ), $offset-x, "$offset-x must be a number, a pixel value or a percentage!" );
|
278
303
|
$pos-y: return-offset( nth( $pos, 2 ), $offset-y, "$offset-y must be a number, a pixel value or a percentage!" );
|
279
|
-
|
304
|
+
|
305
|
+
@if $at-breakpoint {
|
306
|
+
@media #{ $at-breakpoint } {
|
307
|
+
background-position: $pos-x $pos-y;
|
308
|
+
// Settings that would usually be set by extending %sprite-placeholder-#{ $name }
|
309
|
+
// @extend is not possible from within a media query
|
310
|
+
background-image: sprite-url( $map );
|
311
|
+
background-repeat: return-sprite-setting( $name, 6 );
|
312
|
+
}
|
313
|
+
} @else {
|
314
|
+
background-position: $pos-x $pos-y;
|
315
|
+
@extend %sprite-placeholder-#{ $name };
|
316
|
+
}
|
317
|
+
|
318
|
+
@if $legacy-support {
|
319
|
+
#{ $legacy-selector } & {
|
320
|
+
background-position: $pos-x $pos-y;
|
321
|
+
@extend %sprite-placeholder-#{ $name };
|
322
|
+
}
|
323
|
+
}
|
324
|
+
|
280
325
|
@if $retina-map {
|
281
|
-
@include at-retina( $min-device-pixel-ratio ) {
|
326
|
+
@include at-retina( $min-device-pixel-ratio, $at-breakpoint ) {
|
282
327
|
/* Retina sprite */
|
283
328
|
$pos: sprite-position($retina-map, $image);
|
284
329
|
$pos-x: return-offset( nth( $pos, 1 )/2, $offset-x-retina, "$offset-x-retina must be a number, a pixel value or a percentage!" );
|
285
330
|
$pos-y: return-offset( nth( $pos, 2 )/2, $offset-y-retina, "$offset-y-retina must be a number, a pixel value or a percentage!" );
|
286
331
|
background-position: $pos-x $pos-y;
|
332
|
+
@if $at-breakpoint {
|
333
|
+
// Settings that would usually be set by extending %sprite-placeholder-#{ $name }
|
334
|
+
// @extend is not possible from within a media query
|
335
|
+
background-image: sprite-url( $retina-map );
|
336
|
+
background-size: image-width( sprite-path( $retina-map ) )/2 auto;
|
337
|
+
@if return-sprite-setting( $name, 7 ) != return-sprite-setting( $name, 6 ) {
|
338
|
+
background-repeat: return-sprite-setting( $name, 7 );
|
339
|
+
}
|
340
|
+
}
|
341
|
+
}
|
342
|
+
@if ( not $at-breakpoint ) {
|
343
|
+
// Set to optional because placeholder only exists if a retina sprite is set
|
344
|
+
@extend %sprite-placeholder-#{ $name }-retina !optional;
|
287
345
|
}
|
288
346
|
}
|
289
347
|
}
|
290
|
-
|
291
|
-
@extend %sprite-placeholder-#{ $name };
|
292
|
-
@if $use-retina {
|
293
|
-
// Set to optional because placeholder only exists if a retina sprite is set
|
294
|
-
@extend %sprite-placeholder-#{ $name }-retina !optional;
|
295
|
-
}
|
296
348
|
}
|
297
349
|
|
298
350
|
|
data/test/css/sprites/layout.css
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
.classic {
|
2
|
-
background-image: url('../../img/test-layout.png?
|
2
|
+
background-image: url('../../img/test-layout.png?15501385736652');
|
3
3
|
background-repeat: no-repeat;
|
4
4
|
}
|
5
5
|
|
6
6
|
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-moz-min-device-pixel-ratio: 2), only screen and (-ms-min-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) {
|
7
7
|
.classic {
|
8
8
|
/* Retina sprite */
|
9
|
-
background-image: url('../../img/test-layout@2x.png?
|
9
|
+
background-image: url('../../img/test-layout@2x.png?15501385736652');
|
10
10
|
background-size: 718px auto;
|
11
11
|
}
|
12
12
|
}
|
@@ -3,14 +3,14 @@
|
|
3
3
|
* Compiled 2x sprite has all images aligned to the right
|
4
4
|
*/
|
5
5
|
.vertical {
|
6
|
-
background-image: url('../../img/test-position.png?
|
6
|
+
background-image: url('../../img/test-position.png?15501385736652');
|
7
7
|
background-repeat: no-repeat;
|
8
8
|
}
|
9
9
|
|
10
10
|
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-moz-min-device-pixel-ratio: 2), only screen and (-ms-min-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) {
|
11
11
|
.vertical {
|
12
12
|
/* Retina sprite */
|
13
|
-
background-image: url('../../img/test-position@2x.png?
|
13
|
+
background-image: url('../../img/test-position@2x.png?15501385736652');
|
14
14
|
background-size: 281px auto;
|
15
15
|
}
|
16
16
|
}
|
@@ -20,14 +20,14 @@
|
|
20
20
|
* Compiled 2x sprite has all images aligned to the bottom
|
21
21
|
*/
|
22
22
|
.horizontal {
|
23
|
-
background-image: url('../../img/test-position-alt.png?
|
23
|
+
background-image: url('../../img/test-position-alt.png?15501385736652');
|
24
24
|
background-repeat: no-repeat;
|
25
25
|
}
|
26
26
|
|
27
27
|
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-moz-min-device-pixel-ratio: 2), only screen and (-ms-min-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) {
|
28
28
|
.horizontal {
|
29
29
|
/* Retina sprite */
|
30
|
-
background-image: url('../../img/test-position-alt@2x.png?
|
30
|
+
background-image: url('../../img/test-position-alt@2x.png?15501385736652');
|
31
31
|
background-size: 421px auto;
|
32
32
|
}
|
33
33
|
}
|
data/test/css/sprites/repeat.css
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
.meassure-1, .meassure-2, .meassure-3 {
|
2
|
-
background-image: url('../../img/test-repeat.png?
|
2
|
+
background-image: url('../../img/test-repeat.png?15501385736652');
|
3
3
|
background-repeat: repeat-x;
|
4
4
|
}
|
5
5
|
|
6
6
|
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-moz-min-device-pixel-ratio: 2), only screen and (-ms-min-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) {
|
7
7
|
.meassure-1, .meassure-2, .meassure-3 {
|
8
8
|
/* Retina sprite */
|
9
|
-
background-image: url('../../img/test-repeat@2x.png?
|
9
|
+
background-image: url('../../img/test-repeat@2x.png?15501385736652');
|
10
10
|
background-size: 378px auto;
|
11
11
|
background-repeat: no-repeat;
|
12
12
|
}
|
@@ -2,14 +2,14 @@
|
|
2
2
|
* Min device pixel ratio changed to 1.7
|
3
3
|
*/
|
4
4
|
.classic {
|
5
|
-
background-image: url('../../img/test-retina.png?
|
5
|
+
background-image: url('../../img/test-retina.png?15501385736652');
|
6
6
|
background-repeat: no-repeat;
|
7
7
|
}
|
8
8
|
|
9
9
|
@media only screen and (-webkit-min-device-pixel-ratio: 1.7), only screen and (min--moz-device-pixel-ratio: 1.7), only screen and (-moz-min-device-pixel-ratio: 1.7), only screen and (-ms-min-device-pixel-ratio: 1.7), only screen and (-o-min-device-pixel-ratio: 1.7 / 1), only screen and (min-device-pixel-ratio: 1.7), only screen and (min-resolution: 163.2dpi), only screen and (min-resolution: 1.7dppx) {
|
10
10
|
.classic {
|
11
11
|
/* Retina sprite */
|
12
|
-
background-image: url('../../img/test-retina@2x.png?
|
12
|
+
background-image: url('../../img/test-retina@2x.png?15501385736652');
|
13
13
|
background-size: 152px auto;
|
14
14
|
}
|
15
15
|
}
|
@@ -0,0 +1,69 @@
|
|
1
|
+
.classic, .no-media-queries .indy {
|
2
|
+
background-image: url('../../img/test-retina.png?15511385736703');
|
3
|
+
background-repeat: no-repeat;
|
4
|
+
}
|
5
|
+
|
6
|
+
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-moz-min-device-pixel-ratio: 2), only screen and (-ms-min-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) {
|
7
|
+
.classic {
|
8
|
+
/* Retina sprite */
|
9
|
+
background-image: url('../../img/test-retina@2x.png?15511385736703');
|
10
|
+
background-size: 152px auto;
|
11
|
+
}
|
12
|
+
}
|
13
|
+
|
14
|
+
.classic {
|
15
|
+
background-position: 0 -281px;
|
16
|
+
width: 152px;
|
17
|
+
height: 135px;
|
18
|
+
}
|
19
|
+
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-moz-min-device-pixel-ratio: 2), only screen and (-ms-min-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) {
|
20
|
+
.classic {
|
21
|
+
/* Retina sprite */
|
22
|
+
background-position: 0 -140px;
|
23
|
+
}
|
24
|
+
}
|
25
|
+
|
26
|
+
.indy {
|
27
|
+
width: 128px;
|
28
|
+
height: 140px;
|
29
|
+
}
|
30
|
+
@media (min-width: 400px) {
|
31
|
+
.indy {
|
32
|
+
background-position: 0 -141px;
|
33
|
+
background-image: url('../../img/test-retina.png?15511385736703');
|
34
|
+
background-repeat: no-repeat;
|
35
|
+
}
|
36
|
+
}
|
37
|
+
@media only screen and (-webkit-min-device-pixel-ratio: 2) and (min-width: 400px), only screen and (min--moz-device-pixel-ratio: 2) and (min-width: 400px), only screen and (-moz-min-device-pixel-ratio: 2) and (min-width: 400px), only screen and (-ms-min-device-pixel-ratio: 2) and (min-width: 400px), only screen and (-o-min-device-pixel-ratio: 2 / 1) and (min-width: 400px), only screen and (min-device-pixel-ratio: 2) and (min-width: 400px), only screen and (min-resolution: 192dpi) and (min-width: 400px), only screen and (min-resolution: 2dppx) and (min-width: 400px) {
|
38
|
+
.indy {
|
39
|
+
/* Retina sprite */
|
40
|
+
background-position: 0 0;
|
41
|
+
background-image: url('../../img/test-retina@2x.png?15511385736703');
|
42
|
+
background-size: 152px auto;
|
43
|
+
}
|
44
|
+
}
|
45
|
+
@media (min-width: 960px) {
|
46
|
+
.indy {
|
47
|
+
background-position: 0 -281px;
|
48
|
+
background-image: url('../../img/test-retina.png?15511385736703');
|
49
|
+
background-repeat: no-repeat;
|
50
|
+
}
|
51
|
+
}
|
52
|
+
@media only screen and (-webkit-min-device-pixel-ratio: 2) and (min-width: 960px), only screen and (min--moz-device-pixel-ratio: 2) and (min-width: 960px), only screen and (-moz-min-device-pixel-ratio: 2) and (min-width: 960px), only screen and (-ms-min-device-pixel-ratio: 2) and (min-width: 960px), only screen and (-o-min-device-pixel-ratio: 2 / 1) and (min-width: 960px), only screen and (min-device-pixel-ratio: 2) and (min-width: 960px), only screen and (min-resolution: 192dpi) and (min-width: 960px), only screen and (min-resolution: 2dppx) and (min-width: 960px) {
|
53
|
+
.indy {
|
54
|
+
/* Retina sprite */
|
55
|
+
background-position: 0 -140px;
|
56
|
+
background-image: url('../../img/test-retina@2x.png?15511385736703');
|
57
|
+
background-size: 152px auto;
|
58
|
+
}
|
59
|
+
}
|
60
|
+
@media (min-width: 1024px) {
|
61
|
+
.indy {
|
62
|
+
background-position: 0 0;
|
63
|
+
background-image: url('../../img/test-retina.png?15511385736703');
|
64
|
+
background-repeat: no-repeat;
|
65
|
+
}
|
66
|
+
}
|
67
|
+
.no-media-queries .indy {
|
68
|
+
background-position: 0 0;
|
69
|
+
}
|
data/test/css/sprites/retina.css
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
.classic, .indy, .alien {
|
2
|
-
background-image: url('../../img/test-retina.png?
|
2
|
+
background-image: url('../../img/test-retina.png?15501385736653');
|
3
3
|
background-repeat: no-repeat;
|
4
4
|
}
|
5
5
|
|
6
6
|
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-moz-min-device-pixel-ratio: 2), only screen and (-ms-min-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) {
|
7
7
|
.classic, .indy {
|
8
8
|
/* Retina sprite */
|
9
|
-
background-image: url('../../img/test-retina@2x.png?
|
9
|
+
background-image: url('../../img/test-retina@2x.png?15501385736653');
|
10
10
|
background-size: 152px auto;
|
11
11
|
}
|
12
12
|
}
|
data/test/css/sprites/simple.css
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
.classic {
|
2
|
-
background-image: url('../../img/test-spacing.png?
|
2
|
+
background-image: url('../../img/test-spacing.png?15501385736653');
|
3
3
|
background-repeat: no-repeat;
|
4
4
|
}
|
5
5
|
|
6
6
|
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-moz-min-device-pixel-ratio: 2), only screen and (-ms-min-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) {
|
7
7
|
.classic {
|
8
8
|
/* Retina sprite */
|
9
|
-
background-image: url('../../img/test-spacing@2x.png?
|
9
|
+
background-image: url('../../img/test-spacing@2x.png?15501385736653');
|
10
10
|
background-size: 159px auto;
|
11
11
|
}
|
12
12
|
}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
|
6
|
+
<title>Sprite: responsive</title>
|
7
|
+
|
8
|
+
<meta name="description" content="Ezy Grid Demo">
|
9
|
+
<meta name="viewport" content="width=device-width">
|
10
|
+
|
11
|
+
<link href="../../css/sprites/responsive.css" rel="stylesheet">
|
12
|
+
|
13
|
+
</head>
|
14
|
+
<body>
|
15
|
+
<div class="classic"> </div>
|
16
|
+
<div class="indy"> </div>
|
17
|
+
<div class="alien"> </div>
|
18
|
+
</body>
|
19
|
+
</html>
|
@@ -0,0 +1,52 @@
|
|
1
|
+
// ---------------------------------------------------------------------------
|
2
|
+
// Imports
|
3
|
+
|
4
|
+
@import "../../../sass/ezy/media";
|
5
|
+
@import "../../../sass/ezy/sprites";
|
6
|
+
|
7
|
+
// ---------------------------------------------------------------------------
|
8
|
+
// Defining media query breakpoints
|
9
|
+
|
10
|
+
$breakpoint-small: set-breakpoint( $max: 580px );
|
11
|
+
$breakpoint-medium: set-breakpoint( $min: 960px );
|
12
|
+
$breakpoint-large: set-breakpoint( $min: 1024px, $legacy-support: true ); // Support for legacy browsers
|
13
|
+
|
14
|
+
|
15
|
+
// ---------------------------------------------------------------------------
|
16
|
+
// Create sprite
|
17
|
+
|
18
|
+
@include make-sprite(
|
19
|
+
$name: "base",
|
20
|
+
$folder: "test-retina",
|
21
|
+
$folder-retina: "test-retina@2x"
|
22
|
+
);
|
23
|
+
|
24
|
+
// ---------------------------------------------------------------------------
|
25
|
+
// Use sprite
|
26
|
+
|
27
|
+
.classic {
|
28
|
+
@include background-sprite( "base", "classic" );
|
29
|
+
width: 152px;
|
30
|
+
height: 135px;
|
31
|
+
}
|
32
|
+
|
33
|
+
.indy {
|
34
|
+
@include background-sprite(
|
35
|
+
$name: "base",
|
36
|
+
$image: "indy",
|
37
|
+
$at-breakpoint: "(min-width: 400px)"
|
38
|
+
);
|
39
|
+
@include background-sprite(
|
40
|
+
$name: "base",
|
41
|
+
$image: "classic",
|
42
|
+
$at-breakpoint: $breakpoint-medium
|
43
|
+
);
|
44
|
+
@include background-sprite(
|
45
|
+
$name: "base",
|
46
|
+
$image: "alien",
|
47
|
+
$use-retina: false,
|
48
|
+
$at-breakpoint: $breakpoint-large
|
49
|
+
);
|
50
|
+
width: 128px;
|
51
|
+
height: 140px;
|
52
|
+
}
|
metadata
CHANGED
@@ -1,73 +1,55 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: ezy
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease: 6
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 2
|
9
|
-
- 0
|
10
|
-
- alpha
|
11
|
-
version: 0.2.0.alpha
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.0
|
12
5
|
platform: ruby
|
13
|
-
authors:
|
6
|
+
authors:
|
14
7
|
- Frej Raahede Nielsen
|
15
8
|
autorequire:
|
16
9
|
bindir: bin
|
17
10
|
cert_chain: []
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
- !ruby/object:Gem::Dependency
|
11
|
+
date: 2013-12-08 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
22
14
|
name: compass
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
- - ">="
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
hash: 43
|
30
|
-
segments:
|
31
|
-
- 0
|
32
|
-
- 12
|
33
|
-
- 2
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
34
19
|
version: 0.12.2
|
35
20
|
type: :runtime
|
36
|
-
version_requirements: *id001
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: sass
|
39
21
|
prerelease: false
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.12.2
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: sass
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
50
33
|
version: 3.2.0
|
51
34
|
type: :runtime
|
52
|
-
|
53
|
-
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 3.2.0
|
41
|
+
description: A collection of SCSS tools for creating responsive websites. Includes
|
42
|
+
a simple but powerful grid framework, media query helpers and sprite helpers.
|
54
43
|
email: frejraahede@gmail.com
|
55
44
|
executables: []
|
56
|
-
|
57
45
|
extensions: []
|
58
|
-
|
59
46
|
extra_rdoc_files: []
|
60
|
-
|
61
|
-
files:
|
47
|
+
files:
|
62
48
|
- README.md
|
63
49
|
- ezy.gemspec
|
64
50
|
- VERSION
|
65
51
|
- lib/ezy.rb
|
66
52
|
- sass/_ezy.scss
|
67
|
-
- sass/ezy/_clearfix.scss
|
68
|
-
- sass/ezy/_functions.scss
|
69
|
-
- sass/ezy/_grid.scss
|
70
|
-
- sass/ezy/_media.scss
|
71
53
|
- sass/ezy/_sprites.scss
|
72
54
|
- templates/project/_settings.scss
|
73
55
|
- templates/project/index.html
|
@@ -84,6 +66,7 @@ files:
|
|
84
66
|
- test/css/sprites/position.css
|
85
67
|
- test/css/sprites/repeat.css
|
86
68
|
- test/css/sprites/resolution.css
|
69
|
+
- test/css/sprites/responsive.css
|
87
70
|
- test/css/sprites/retina.css
|
88
71
|
- test/css/sprites/simple.css
|
89
72
|
- test/css/sprites/size.css
|
@@ -98,11 +81,13 @@ files:
|
|
98
81
|
- test/scss/sprites/position.scss
|
99
82
|
- test/scss/sprites/repeat.scss
|
100
83
|
- test/scss/sprites/resolution.scss
|
84
|
+
- test/scss/sprites/responsive.scss
|
101
85
|
- test/scss/sprites/retina.scss
|
102
86
|
- test/scss/sprites/simple.scss
|
103
87
|
- test/scss/sprites/size.scss
|
104
88
|
- test/scss/sprites/spacing.scss
|
105
89
|
- test/html/sprites/repeat.html
|
90
|
+
- test/html/sprites/responsive.html
|
106
91
|
- test/html/sprites/retina.html
|
107
92
|
- test/html/sprites/simple.html
|
108
93
|
- test/img/test-layout/alien.png
|
@@ -144,39 +129,27 @@ files:
|
|
144
129
|
- test/img/test-spacing@2x/classic.png
|
145
130
|
- test/img/test-spacing@2x/indy.png
|
146
131
|
homepage: http://github.com/raahede/
|
147
|
-
licenses:
|
132
|
+
licenses:
|
148
133
|
- MIT
|
134
|
+
metadata: {}
|
149
135
|
post_install_message:
|
150
136
|
rdoc_options: []
|
151
|
-
|
152
|
-
require_paths:
|
137
|
+
require_paths:
|
153
138
|
- lib
|
154
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
none: false
|
165
|
-
requirements:
|
166
|
-
- - ">"
|
167
|
-
- !ruby/object:Gem::Version
|
168
|
-
hash: 25
|
169
|
-
segments:
|
170
|
-
- 1
|
171
|
-
- 3
|
172
|
-
- 1
|
173
|
-
version: 1.3.1
|
139
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
140
|
+
requirements:
|
141
|
+
- - '>='
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: '0'
|
144
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
145
|
+
requirements:
|
146
|
+
- - '>='
|
147
|
+
- !ruby/object:Gem::Version
|
148
|
+
version: '0'
|
174
149
|
requirements: []
|
175
|
-
|
176
150
|
rubyforge_project:
|
177
|
-
rubygems_version: 1.
|
151
|
+
rubygems_version: 2.1.11
|
178
152
|
signing_key:
|
179
|
-
specification_version:
|
153
|
+
specification_version: 4
|
180
154
|
summary: The developer's toolbox for responsive websites
|
181
155
|
test_files: []
|
182
|
-
|
data/sass/ezy/_clearfix.scss
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
/* -------------------------------------------------------------------- *
|
2
|
-
* Micro Clearfix
|
3
|
-
* http://nicolasgallagher.com/micro-clearfix-hack/
|
4
|
-
*/
|
5
|
-
|
6
|
-
%clearfix:before,
|
7
|
-
%clearfix:after {
|
8
|
-
content: " ";
|
9
|
-
display: table;
|
10
|
-
}
|
11
|
-
|
12
|
-
%clearfix:after {
|
13
|
-
clear: both;
|
14
|
-
}
|
15
|
-
|
16
|
-
|
17
|
-
%clearfix {
|
18
|
-
/**
|
19
|
-
* For IE 6/7 only
|
20
|
-
* Include this rule to trigger hasLayout and contain floats.
|
21
|
-
*/
|
22
|
-
*zoom: 1;
|
23
|
-
}
|
24
|
-
|
25
|
-
/* -------------------------------------------------------------------- */
|
data/sass/ezy/_functions.scss
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
|
2
|
-
// ---------------------------------------------------------------------------
|
3
|
-
// @function percentage-round
|
4
|
-
//
|
5
|
-
// Similar to the SASS percentage() function, but rounds down to 2 decimals
|
6
|
-
// $columns : Fraction to convert to percentage
|
7
|
-
// @return : Percentage value rounded down to 2 decimals
|
8
|
-
|
9
|
-
@function percentage-round( $value ) {
|
10
|
-
@return floor( percentage( $value ) * 100 ) / 100;
|
11
|
-
}
|
data/sass/ezy/_grid.scss
DELETED
@@ -1,279 +0,0 @@
|
|
1
|
-
// ---------------------------------------------------------------------------
|
2
|
-
// Importing dependencies
|
3
|
-
|
4
|
-
@import "functions";
|
5
|
-
@import "clearfix";
|
6
|
-
|
7
|
-
// ---------------------------------------------------------------------------
|
8
|
-
// Mandatory grid settings
|
9
|
-
// Defaults: can be overridden
|
10
|
-
|
11
|
-
$column-width: 4em !default;
|
12
|
-
$gutter-width: 1em !default;
|
13
|
-
$default-gutter-property: "margin" !default;
|
14
|
-
$total-columns: 12 !default;
|
15
|
-
$is-fluid: true !default;
|
16
|
-
|
17
|
-
// ---------------------------------------------------------------------------
|
18
|
-
// Variables used in grid context
|
19
|
-
|
20
|
-
$grid-init: false;
|
21
|
-
$context-warn: "You must set $context if $is-fluid is set to true.";
|
22
|
-
$init-gutter-property: $default-gutter-property;
|
23
|
-
|
24
|
-
// ---------------------------------------------------------------------------
|
25
|
-
// @function layout-width
|
26
|
-
//
|
27
|
-
// Returns width based on given number of culumns
|
28
|
-
// $columns : Number of columns to calculate width from
|
29
|
-
// @return : Width in the same unit as $column-width and $gutter-width
|
30
|
-
|
31
|
-
@function layout-width( $columns ) {
|
32
|
-
@if comparable( $column-width, $gutter-width ) {
|
33
|
-
@return $columns * ( $column-width + $gutter-width ) - $gutter-width;
|
34
|
-
} @else {
|
35
|
-
@warn "$column-width and $gutter-width must have the same unit set. #{ unit($column-width) }'s and #{ unit($gutter-width) }'s are not comparable.";
|
36
|
-
}
|
37
|
-
}
|
38
|
-
|
39
|
-
// ---------------------------------------------------------------------------
|
40
|
-
// @function context-width
|
41
|
-
//
|
42
|
-
// Returns width based on given number of culumns, plus an extra gutter
|
43
|
-
// Used for % calculations in the grid
|
44
|
-
// $columns : Number of columns to calculate width from
|
45
|
-
// @return : Width in the same unit as $column-width and $gutter-width
|
46
|
-
|
47
|
-
@function context-width( $columns ) {
|
48
|
-
@return layout-width( $columns ) + $gutter-width;
|
49
|
-
}
|
50
|
-
|
51
|
-
// ---------------------------------------------------------------------------
|
52
|
-
// @function span-column-width
|
53
|
-
//
|
54
|
-
// Same as layout-width( $columns ), but renamed for better context awareness
|
55
|
-
|
56
|
-
@function span-column-width( $columns ) {
|
57
|
-
@return layout-width( $columns );
|
58
|
-
}
|
59
|
-
|
60
|
-
// ---------------------------------------------------------------------------
|
61
|
-
// @function gutter
|
62
|
-
//
|
63
|
-
// Returns gutter in the same unit as $gutter-width if grid is static
|
64
|
-
// Returns gutter as a percentage of the context if grid is fluid
|
65
|
-
// $context : Number of columns in the current context.
|
66
|
-
// : If set to false, the returned value is as in static grid
|
67
|
-
// @return : Width as $gutter-width or as a percentage of the context
|
68
|
-
|
69
|
-
@function gutter(
|
70
|
-
$context: false
|
71
|
-
) {
|
72
|
-
@if $is-fluid and $context {
|
73
|
-
@return ( percentage-round( ( $gutter-width / 2 ) / context-width( $context ) ) );
|
74
|
-
} @else if $is-fluid {
|
75
|
-
@warn $context-warn;
|
76
|
-
} @else {
|
77
|
-
@return $gutter-width / 2;
|
78
|
-
}
|
79
|
-
}
|
80
|
-
|
81
|
-
// ---------------------------------------------------------------------------
|
82
|
-
// @mixin gutters
|
83
|
-
//
|
84
|
-
// Sets gutters using the gutter( $context ) function
|
85
|
-
// $context : Number of columns in the current context.
|
86
|
-
// : Only mandatory if grid is fluid
|
87
|
-
// $gutter-property : Set to "margin" or "padding"
|
88
|
-
|
89
|
-
@mixin gutters(
|
90
|
-
$context: false,
|
91
|
-
$property: false
|
92
|
-
) {
|
93
|
-
@if (not $property) {
|
94
|
-
$property: $default-gutter-property;
|
95
|
-
}
|
96
|
-
@if $property == "margin" or $property == "padding" {
|
97
|
-
float: left;
|
98
|
-
#{ $property }: {
|
99
|
-
left: gutter( $context );
|
100
|
-
right: gutter( $context );
|
101
|
-
}
|
102
|
-
} @else {
|
103
|
-
@warn "$gutter-property must be set to either 'margin' or 'padding'";
|
104
|
-
}
|
105
|
-
}
|
106
|
-
|
107
|
-
// ---------------------------------------------------------------------------
|
108
|
-
// Grid master placeholder selector
|
109
|
-
// Adds cleafix and centers page in browser
|
110
|
-
|
111
|
-
%ezy-master {
|
112
|
-
@extend %clearfix;
|
113
|
-
margin: {
|
114
|
-
left: auto;
|
115
|
-
right: auto;
|
116
|
-
}
|
117
|
-
}
|
118
|
-
|
119
|
-
// ---------------------------------------------------------------------------
|
120
|
-
// @mixin master
|
121
|
-
//
|
122
|
-
// Sets width on page. If the grid is fluid, it's set as a max-width
|
123
|
-
// Extends the grid master placeholder selector
|
124
|
-
// $context : Number of columns in the current context.
|
125
|
-
|
126
|
-
@mixin master(
|
127
|
-
$context
|
128
|
-
) {
|
129
|
-
@if $is-fluid {
|
130
|
-
max-width: layout-width( $context );
|
131
|
-
} @else {
|
132
|
-
width: layout-width( $context );
|
133
|
-
}
|
134
|
-
@extend %ezy-master;
|
135
|
-
}
|
136
|
-
|
137
|
-
// ---------------------------------------------------------------------------
|
138
|
-
// Grid container placeholder selector
|
139
|
-
// Adds cleafix
|
140
|
-
|
141
|
-
%ezy-container {
|
142
|
-
@extend %clearfix;
|
143
|
-
}
|
144
|
-
|
145
|
-
// ---------------------------------------------------------------------------
|
146
|
-
// @mixin container
|
147
|
-
//
|
148
|
-
// Sets width on page. If the grid is fluid, it's set as a max-width
|
149
|
-
// Extends the grid master placeholder selector
|
150
|
-
// $context : Number of columns in the current context
|
151
|
-
// : Only mandatory if grid is fluid
|
152
|
-
// $at-breakpoint : Set to true if mixin is called within a media query
|
153
|
-
// : Avoids SASS compillation errors from extending within
|
154
|
-
// : a media query
|
155
|
-
|
156
|
-
@mixin container(
|
157
|
-
$context: false,
|
158
|
-
$at-breakpoint: false
|
159
|
-
) {
|
160
|
-
$pullout: -( $gutter-width )/2;
|
161
|
-
@if $is-fluid and $context {
|
162
|
-
$pullout: -( percentage-round( $gutter-width / layout-width( $context ) ) )/2;
|
163
|
-
} @else if $is-fluid {
|
164
|
-
@warn $context-warn;
|
165
|
-
}
|
166
|
-
margin: {
|
167
|
-
left: $pullout;
|
168
|
-
right: $pullout;
|
169
|
-
}
|
170
|
-
@if (not $at-breakpoint) {
|
171
|
-
@extend %ezy-container;
|
172
|
-
}
|
173
|
-
}
|
174
|
-
|
175
|
-
// ---------------------------------------------------------------------------
|
176
|
-
// @mixin grid-init
|
177
|
-
//
|
178
|
-
// Prints out placeholder selectors used with columns. Helps reduce the CSS output.
|
179
|
-
//
|
180
|
-
// Should be called after setting grid variables:
|
181
|
-
// ----------------
|
182
|
-
// $column-width
|
183
|
-
// $gutter-width
|
184
|
-
// $gutter-property
|
185
|
-
// $total-columns
|
186
|
-
// ----------------
|
187
|
-
|
188
|
-
@mixin grid-init() {
|
189
|
-
$grid-init: true;
|
190
|
-
$init-gutter-property: $default-gutter-property;
|
191
|
-
@if $is-fluid {
|
192
|
-
@for $i from 1 through $total-columns {
|
193
|
-
%ezy-column-#{ $i } {
|
194
|
-
@include gutters( $i );
|
195
|
-
}
|
196
|
-
}
|
197
|
-
} @else {
|
198
|
-
%ezy-column {
|
199
|
-
@include gutters;
|
200
|
-
}
|
201
|
-
}
|
202
|
-
}
|
203
|
-
|
204
|
-
// ---------------------------------------------------------------------------
|
205
|
-
// @mixin span-columns
|
206
|
-
//
|
207
|
-
// Sets width and gutter on columns
|
208
|
-
// Uses @extend for gutters outside media queries if grid-init() has been called
|
209
|
-
// $columns : Number of columns to span
|
210
|
-
// $context : Number of columns in the current context
|
211
|
-
// : Only mandatory if grid is fluid
|
212
|
-
// $at-breakpoint : Set to true if mixin is called within a media query
|
213
|
-
// : Avoids SASS compillation errors from extending within
|
214
|
-
// : a media query
|
215
|
-
// $gutter-property : Overrides the global $gutter-property
|
216
|
-
|
217
|
-
@mixin span-columns(
|
218
|
-
$columns,
|
219
|
-
$context: false,
|
220
|
-
$at-breakpoint: false,
|
221
|
-
$gutter-property: false
|
222
|
-
) {
|
223
|
-
$width: span-column-width( $columns );
|
224
|
-
@if $is-fluid and $context {
|
225
|
-
/* Spanning #{ $columns } of #{ $context } columns */
|
226
|
-
$context-width: context-width( $context );
|
227
|
-
$pct-width: percentage-round( $width / $context-width );
|
228
|
-
width: $pct-width;
|
229
|
-
} @else {
|
230
|
-
/* Spanning #{ $columns } columns */
|
231
|
-
width: $width;
|
232
|
-
}
|
233
|
-
|
234
|
-
@if $gutter-property and $gutter-property != $default-gutter-property {
|
235
|
-
|
236
|
-
@if $is-fluid and $context {
|
237
|
-
@include gutters( $context, $gutter-property );
|
238
|
-
|
239
|
-
} @else if ( not $is-fluid ) {
|
240
|
-
@include gutters( $property: $gutter-property );
|
241
|
-
|
242
|
-
} @else if $is-fluid and ( not $context ) {
|
243
|
-
@warn $context-warn;
|
244
|
-
}
|
245
|
-
|
246
|
-
} @else if $is-fluid and $context {
|
247
|
-
|
248
|
-
@if $at-breakpoint or $init-gutter-property != $default-gutter-property {
|
249
|
-
@include gutters( $context );
|
250
|
-
|
251
|
-
} @else if ( $total-columns < $context ) {
|
252
|
-
@include gutters( $context );
|
253
|
-
@warn "Please check if $total-columns is set. $total-columns should be the highest number of columns occuring in your layout. This error will not break your layout, but will increase the CSS output.";
|
254
|
-
|
255
|
-
} @else if ( not $grid-init ) {
|
256
|
-
@include gutters( $context );
|
257
|
-
@warn "Include grid-init() after setting $total-columns for cleaner CSS output.";
|
258
|
-
|
259
|
-
} @else {
|
260
|
-
@extend %ezy-column-#{ $context };
|
261
|
-
}
|
262
|
-
|
263
|
-
|
264
|
-
} @else if $is-fluid { // $context not set
|
265
|
-
|
266
|
-
@warn $context-warn;
|
267
|
-
|
268
|
-
} @else if $grid-init and $init-gutter-property == $default-gutter-property { // Grid is static
|
269
|
-
@extend %ezy-column;
|
270
|
-
|
271
|
-
} @else {
|
272
|
-
@include gutters( $context );
|
273
|
-
|
274
|
-
@if (not $grid-init) {
|
275
|
-
@warn "Include grid-init() after setting $gutter-width for cleaner CSS output.";
|
276
|
-
}
|
277
|
-
}
|
278
|
-
}
|
279
|
-
|
data/sass/ezy/_media.scss
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
|
2
|
-
$legacy-selector: ".no-media-queries" !default;
|
3
|
-
|
4
|
-
@function set-breakpoint(
|
5
|
-
$min: false,
|
6
|
-
$max: false,
|
7
|
-
$custom: false,
|
8
|
-
$legacy-support: false
|
9
|
-
) {
|
10
|
-
|
11
|
-
@if (not $min) and (not $max) and (not $custom) {
|
12
|
-
@warn "Either $min, $max, or $custom must be defined for set-breakpoint to work.";
|
13
|
-
}
|
14
|
-
|
15
|
-
@if $min and $max {
|
16
|
-
// Both $min and $max
|
17
|
-
@return "(min-width: #{ $min }) and (max-width: #{ $max })", $legacy-support;
|
18
|
-
} @else {
|
19
|
-
@if $min and (not $max) {
|
20
|
-
// Min only:
|
21
|
-
@return "(min-width: #{ $min })", $legacy-support;
|
22
|
-
}
|
23
|
-
@if $max and (not $min) {
|
24
|
-
// Max only:
|
25
|
-
@return "(max-width: #{ $max })", $legacy-support;
|
26
|
-
} @else {
|
27
|
-
// Custom:
|
28
|
-
@return $custom, $legacy-support;
|
29
|
-
}
|
30
|
-
}
|
31
|
-
}
|
32
|
-
|
33
|
-
@mixin at-breakpoint(
|
34
|
-
$breakpoint,
|
35
|
-
$legacy-support: false
|
36
|
-
) {
|
37
|
-
@media #{ nth( $breakpoint, 1 ) } {
|
38
|
-
@content;
|
39
|
-
}
|
40
|
-
@if $legacy-support or nth( $breakpoint, 2 ) {
|
41
|
-
#{ $legacy-selector } & {
|
42
|
-
/* Fallback for browsers not supporting media queries */
|
43
|
-
@content;
|
44
|
-
}
|
45
|
-
}
|
46
|
-
}
|
47
|
-
|
48
|
-
|