compass-borderbox 0.1.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md ADDED
@@ -0,0 +1,99 @@
1
+ Borderbox for Compass
2
+ ====================
3
+
4
+ Use box-sizing: border-box; with impunity. Borderbox outputs equivalent CSS for IE6 & 7
5
+
6
+
7
+ Installation
8
+ ============
9
+
10
+ From the command line:
11
+
12
+ gem install compass-borderbox
13
+
14
+
15
+ Usage
16
+ ============
17
+
18
+ Add to a project:
19
+
20
+ require "borderbox"
21
+
22
+ And then import the mixins to your base SASS/SCSS file:
23
+
24
+ @import "borderbox";
25
+
26
+
27
+ Mixin
28
+ ============
29
+
30
+ #### borderbox($width [$height], $padding, [$border]);
31
+
32
+ Sets box-sizing-compliant values, as well as legacy values for < IE 8
33
+
34
+ @include borderbox(200px, 10px 0);
35
+
36
+ @include borderbox(200px 100px, 10px 5px 0, 4px solid black);
37
+
38
+ @include borderbox(200px, 10px, 3px 0 3px 5px);
39
+
40
+ Compiles to:
41
+
42
+ -moz-box-sizing: border-box;
43
+ -webkit-box-sizing: border-box;
44
+ -ms-box-sizing: border-box;
45
+ box-sizing: border-box;
46
+ padding: 10px 0;
47
+ width: 200px;
48
+ *width: 200px;
49
+
50
+ -moz-box-sizing: border-box;
51
+ -webkit-box-sizing: border-box;
52
+ -ms-box-sizing: border-box;
53
+ box-sizing: border-box;
54
+ padding: 10px 5px 0;
55
+ border: 4px solid black;
56
+ width: 200px;
57
+ *width: 182px;
58
+ height: 100px;
59
+ *height: 82px;
60
+
61
+ -moz-box-sizing: border-box;
62
+ -webkit-box-sizing: border-box;
63
+ -ms-box-sizing: border-box;
64
+ box-sizing: border-box;
65
+ padding: 10px;
66
+ border-width: 3px 0 3px 5px;
67
+ width: 200px;
68
+ *width: 175px;
69
+
70
+
71
+ Global Variables
72
+ ============
73
+
74
+ $global-border-box: false !default;
75
+
76
+ Set to true if you prefer declaring a global box-sizing prop (Note: you should do this. Otherwise you must constantly check to see if box-sizing is enabled for a property).
77
+
78
+ Override in your base SASS/SCSS file:
79
+
80
+ $global-border-box: true;
81
+
82
+ Then, add a global CSS rule:
83
+
84
+ * {
85
+ @include box-sizing(border-box);
86
+ }
87
+
88
+ Afterwards your compiled code will be much more compact:
89
+
90
+ @include borderbox(200px 100px, 10px 5px 0, 4px solid black);
91
+
92
+ Compiles to:
93
+
94
+ padding: 10px 5px 0;
95
+ border: 4px solid black;
96
+ width: 200px;
97
+ *width: 182px;
98
+ height: 100px;
99
+ *height: 82px;
data/lib/borderbox.rb ADDED
@@ -0,0 +1,3 @@
1
+ require 'compass'
2
+ extension_path = File.expand_path(File.join(File.dirname(__FILE__), ".."))
3
+ Compass::Frameworks.register('borderbox', :path => extension_path)
@@ -0,0 +1,12 @@
1
+ // Borderbox ------------------------------------------------------------
2
+
3
+ // Use box-sizing: border-box; with impunity
4
+ // Borderbox outputs equivalent CSS in <IE8
5
+
6
+ // Defaults ------------------------------------------------------------------
7
+
8
+ // Set a global border-box property (default is false)
9
+ $global-border-box: false !default;
10
+
11
+ // Import --------------------------------------------------------------------
12
+ @import "box-sizing/border-box";
@@ -0,0 +1,114 @@
1
+ // Borderbox mixin
2
+ // Use box-sizing: border-box; with impunity
3
+ // Borderbox outputs equivalent CSS in <IE8
4
+
5
+ // Set to true if you prefer declaring a global box-sizing prop.
6
+ //
7
+ // Ex:
8
+ // $global-border-box: true;
9
+ //
10
+ // * {
11
+ // @include box-sizing(border-box);
12
+ // }
13
+ $global-border-box: false !default;
14
+
15
+ @mixin borderbox($dimensions, $padding, $border: false) {
16
+ @if not $global-border-box {
17
+ @include box-sizing(border-box);
18
+ }
19
+
20
+ // Extract width/height values
21
+ $width: nth($dimensions, 1);
22
+ $height: false;
23
+
24
+ @if length($dimensions) == 2 {
25
+ $height: nth($dimensions, 2);
26
+ }
27
+
28
+ // Extract border values
29
+ $use-border-shorthand: false;
30
+ $border-width: false;
31
+
32
+ @each $unit in $border {
33
+ @if type-of($unit) == number {
34
+ @if $border-width {
35
+ $border-width: append($border-width, $unit);
36
+ } @else {
37
+ $border-width: $unit;
38
+ }
39
+ } @else {
40
+ $use-border-shorthand: true;
41
+ }
42
+ }
43
+
44
+ // Extract padding values
45
+ padding: $padding;
46
+
47
+ $padding-length: length($padding);
48
+ $padding-y: 0;
49
+ $padding-x: 0;
50
+
51
+ $border-length: length($border-width);
52
+ $border-y: 0;
53
+ $border-x: 0;
54
+
55
+ @if $padding-length == 4 {
56
+ $padding-y: nth($padding, 1) + nth($padding, 3);
57
+ $padding-x: nth($padding, 2) + nth($padding, 4);
58
+ } @else if $padding-length == 3 {
59
+ $padding-y: nth($padding, 1) + nth($padding, 3);
60
+ $padding-x: nth($padding, 2) * 2;
61
+ } @else if $padding-length == 2 {
62
+ $padding-y: nth($padding, 1) * 2;
63
+ $padding-x: nth($padding, 2) * 2;
64
+ } @else if $padding-length == 1 {
65
+ $padding-y: $padding * 2;
66
+ $padding-x: $padding * 2;
67
+ }
68
+
69
+ @if $border {
70
+ @if $use-border-shorthand {
71
+ border: $border;
72
+ } @else {
73
+ border-width: $border-width;
74
+ }
75
+
76
+ @if $border-length == 4 {
77
+ $border-y: nth($border-width, 1) + nth($border-width, 3);
78
+ $border-x: nth($border-width, 2) + nth($border-width, 4);
79
+ } @else if $border-length == 3 {
80
+ $border-y: nth($border-width, 1) + nth($border-width, 3);
81
+ $border-x: nth($border-width, 2) * 2;
82
+ } @else if $border-length == 2 {
83
+ $border-y: nth($border-width, 1) * 2;
84
+ $border-x: nth($border-width, 2) * 2;
85
+ } @else if $border-length == 1 {
86
+ $border-y: $border-width * 2;
87
+ $border-x: $border-width * 2;
88
+ }
89
+ }
90
+
91
+ // Set width value
92
+ @if $width {
93
+ @if $width == auto {
94
+ width: $width;
95
+ } @else {
96
+ width: $width;
97
+ @if $legacy-support-for-ie {
98
+ *width: $width - $padding-x - $border-x;
99
+ }
100
+ }
101
+ }
102
+
103
+ // Set height value
104
+ @if $height {
105
+ @if $height == auto {
106
+ height: $height;
107
+ } @else {
108
+ height: $height;
109
+ @if $legacy-support-for-ie {
110
+ *height: $height - $padding-y - $border-y;
111
+ }
112
+ }
113
+ }
114
+ }
metadata ADDED
@@ -0,0 +1,104 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: compass-borderbox
3
+ version: !ruby/object:Gem::Version
4
+ hash: 71
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ - 0
11
+ version: 0.1.0.0
12
+ platform: ruby
13
+ authors:
14
+ - Richard Herrera
15
+ autorequire:
16
+ bindir: bin
17
+ cert_chain: []
18
+
19
+ date: 2011-04-11 00:00:00 -07:00
20
+ default_executable:
21
+ dependencies:
22
+ - !ruby/object:Gem::Dependency
23
+ name: sass
24
+ prerelease: false
25
+ requirement: &id001 !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ hash: -1851332218
31
+ segments:
32
+ - 3
33
+ - 1
34
+ - 0
35
+ - alpha
36
+ version: 3.1.0.alpha
37
+ type: :runtime
38
+ version_requirements: *id001
39
+ - !ruby/object:Gem::Dependency
40
+ name: compass
41
+ prerelease: false
42
+ requirement: &id002 !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ hash: 62196225
48
+ segments:
49
+ - 0
50
+ - 11
51
+ - beta
52
+ - 5
53
+ version: 0.11.beta.5
54
+ type: :runtime
55
+ version_requirements: *id002
56
+ description: "Use box-sizing: border-box; with impunity. Borderbox outputs equivalent CSS for IE6 & 7"
57
+ email: rich@doctyper.com
58
+ executables: []
59
+
60
+ extensions: []
61
+
62
+ extra_rdoc_files: []
63
+
64
+ files:
65
+ - README.md
66
+ - lib/borderbox.rb
67
+ - stylesheets/_borderbox.scss
68
+ - stylesheets/box-sizing/_border-box.scss
69
+ has_rdoc: true
70
+ homepage: http://doctyper.com/
71
+ licenses: []
72
+
73
+ post_install_message:
74
+ rdoc_options: []
75
+
76
+ require_paths:
77
+ - lib
78
+ required_ruby_version: !ruby/object:Gem::Requirement
79
+ none: false
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ hash: 3
84
+ segments:
85
+ - 0
86
+ version: "0"
87
+ required_rubygems_version: !ruby/object:Gem::Requirement
88
+ none: false
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ hash: 3
93
+ segments:
94
+ - 0
95
+ version: "0"
96
+ requirements: []
97
+
98
+ rubyforge_project:
99
+ rubygems_version: 1.6.0
100
+ signing_key:
101
+ specification_version: 3
102
+ summary: Use the CSS3 box-sizing property with legacy support for IE
103
+ test_files: []
104
+