modernizr-mixin 2.0.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9f946ac711102f5abe64c440ef41d7426b47db0a
4
+ data.tar.gz: 79b99ea7dcbaed4911bd28bf01f29bdc232cd450
5
+ SHA512:
6
+ metadata.gz: 42b0f6f4a19777e8f4e9fd721453e11475468a8d55d83028165c7368e50be0312456bb6d46a196eb2a1414b6f0a6d427d3e20491d490c7a2189910f5860cdf8a
7
+ data.tar.gz: 5ffd4f797553dd00a99fb220918c9252feb33355142106bd7bd884f8a307c94a6871b9358d7e0695d484c2bafa6eeabea2cb1c0ddad5f53ae18106043e9f6852
@@ -0,0 +1,87 @@
1
+ # Modernizr mixin
2
+
3
+ A simple way for DRYier, faster and cleaner Modernizr tests in Sass.
4
+
5
+
6
+ ## Install
7
+
8
+ Requires Sass 3.3
9
+
10
+ There are 3 ways of installing the Modernizr mixin:
11
+
12
+ ### Download
13
+
14
+ Download `_modernizr.scss` which is located in the `stylesheets` folder and place it in your Sass directory.
15
+
16
+ ### Bower
17
+
18
+ To install the package using Bower simply run the following command:
19
+
20
+ bower install --save-dev modernizr-mixin
21
+
22
+ ### Compass extension
23
+
24
+ Modernizr is also available as a Compass extension:
25
+
26
+ gem install modernizr-mixin
27
+
28
+ Then add the following line to your `config.rb`:
29
+
30
+ require 'modernizr-mixin'
31
+
32
+ ## Usage
33
+
34
+ Import it into your main stylesheet:
35
+
36
+ @import 'modernizr';
37
+
38
+ The Modernizr helper includes two mixins: `yep` and `nope`. Simply pass a comma-separeted list (`argList`) of features as argument and the rules you need to print.
39
+
40
+ ### yep
41
+
42
+ Prints classes for supported features.
43
+
44
+ @include yep($features...) { ... }
45
+
46
+ ### nope
47
+
48
+ Prints classes for unsupported features and unavailable Javascript.
49
+
50
+ @include nope($features...) { ... }
51
+
52
+ ### Example
53
+
54
+ Sass input:
55
+
56
+ ```scss
57
+ .my-selector {
58
+ @include yep(translate3d, opacity) {
59
+ transform: translate3d(0, 100px, 0);
60
+ opacity: 0;
61
+ }
62
+ @include nope(translate3d, opacity) {
63
+ top: 100px;
64
+ display: none;
65
+ }
66
+ }
67
+ ```
68
+
69
+ CSS output:
70
+
71
+ ```css
72
+ .translate3d.opacity .my-selector {
73
+ transform: translate3d(0, 100px, 0);
74
+ opacity: 0;
75
+ }
76
+
77
+ .no-js my-selector,
78
+ .no-translate3d .selector,
79
+ .no-opacity .selector {
80
+ top: 100px;
81
+ display: none;
82
+ }
83
+ ```
84
+
85
+ ## Acknowledgements
86
+
87
+ Thanks to [Hugo Giraudel](https://github.com/hugogiraudel) for reviewing and tweaking the original code.
@@ -0,0 +1,8 @@
1
+ require 'compass'
2
+ extension_path = File.expand_path(File.join(File.dirname(__FILE__), ".."))
3
+ Compass::Frameworks.register('modernizr-mixin', :path => extension_path)
4
+
5
+ module ModernizrMixin
6
+ VERSION = "2.0.0"
7
+ DATE = "2014-05-06"
8
+ end
@@ -0,0 +1,109 @@
1
+ // =============================================================================
2
+ // Modernizr mixin
3
+ //
4
+ // Table of contents:
5
+ // 1. Modernizr mixin
6
+ // 1.1 Generate placeholder name and selectors
7
+ // 1.2 Define placeholder and print @content
8
+ // 1.3 Define feature selector and extend the placeholder
9
+ // 2. Aliases
10
+ // 2.1 Yep alias
11
+ // 2.2 Nope alias
12
+ //
13
+ // Usage:
14
+ // .my-selector {
15
+ // @include yep($features...) { ... }
16
+ // @include nope($features...) { ... {
17
+ // }
18
+ //
19
+ // =============================================================================
20
+
21
+ // =============================================================================
22
+ // 1. Modernizr mixin
23
+ // =============================================================================
24
+
25
+ @mixin modernizr($features, $supports) {
26
+
27
+ $everything-okay: true;
28
+
29
+ // Use the 'no-' prefix if checking for unsuported features (e.g. `.no-translate3d`)
30
+ $prefix: if($supports, '', 'no-');
31
+
32
+ // Features selector
33
+ // a) create a string if checking for supported features. We'll concatenate class names later on (e.g. `.translate3d.opacity selector`)
34
+ // b) create a list if checking for unsuported features. We'll append the class names later on (e.g. `.no-js selector, .no-translate3d selector`)
35
+ $selector: if($supports, '', (unquote('.no-js')));
36
+
37
+ // The placeholder (e.g. `%yep-translate3d` or `%nope-opacity`)
38
+ $placeholder: if($supports, '%yep', '%nope');
39
+
40
+
41
+ // 1.1 Generate placeholder and selectors
42
+ // =====================================
43
+
44
+ @each $feature in $features {
45
+
46
+ // Making sure $feature is a string
47
+ @if type-of($feature) != string {
48
+
49
+ $everything-okay: false;
50
+ @warn '`#{$feature} is not a string for `modernizr`';
51
+
52
+ } @else {
53
+
54
+ // Add feature name to the placeholder string (e.g. '%yep' + '-' + 'translate3d' or '%nope' + '-' + 'translate3d')
55
+ $placeholder: $placeholder + '-' + $feature;
56
+
57
+ // Define the new selector string (e.g. `.translate3d` or `.no-translate3d`)
58
+ $new-selector: #{'.' + $prefix + $feature};
59
+
60
+ // Append the new selector
61
+ // a) to the string if yep (e.g. `.translate3d.opacity`)
62
+ // b) to the list if nope (e.g. `.no-translate3d, .no-opacity`)
63
+ $selector: if($supports, $selector + $new-selector, append($selector, $new-selector, comma));
64
+
65
+ }
66
+ }
67
+
68
+ @if $everything-okay == true {
69
+
70
+ // 1.2 Define the placholder and print @content
71
+ // =====================================
72
+
73
+ #{$placeholder} & {
74
+ @content;
75
+ }
76
+
77
+
78
+ // 1.3 Define feature selector(s) and extend the placeholder
79
+ // =====================================
80
+
81
+ @at-root #{$selector} {
82
+ @extend #{$placeholder};
83
+ }
84
+
85
+ }
86
+ }
87
+
88
+ // =============================================================================
89
+ // 2. Aliases
90
+ // =============================================================================
91
+
92
+ // 2.1 Yep alias
93
+ // =====================================
94
+
95
+ @mixin yep($features...) {
96
+ @include modernizr($features, $supports: true) {
97
+ @content;
98
+ }
99
+ }
100
+
101
+
102
+ // 2.2 Nope alias
103
+ // =====================================
104
+
105
+ @mixin nope($features...) {
106
+ @include modernizr($features, $supports: false) {
107
+ @content;
108
+ }
109
+ }
metadata ADDED
@@ -0,0 +1,75 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: modernizr-mixin
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Daniel Guillan
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-05-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: sass
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.3'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '3.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: compass
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 1.0.0.alpha
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.0.0.alpha
41
+ description: A simple way for DRYier, faster and cleaner Modernizr tests in Sass.
42
+ email:
43
+ - daniel.guillan@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - README.md
49
+ - lib/modernizr-mixin.rb
50
+ - stylesheets/_modernizr.scss
51
+ homepage: https://github.com/danielguillan/modernizr-mixin
52
+ licenses:
53
+ - MIT
54
+ metadata: {}
55
+ post_install_message:
56
+ rdoc_options: []
57
+ require_paths:
58
+ - lib
59
+ required_ruby_version: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ required_rubygems_version: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: 1.3.6
69
+ requirements: []
70
+ rubyforge_project: modernizr-mixin
71
+ rubygems_version: 2.2.2
72
+ signing_key:
73
+ specification_version: 4
74
+ summary: Simple and comprehensive mixin for Modernizr tests in Sass
75
+ test_files: []