compass 0.10.6 → 0.11.alpha.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.
Files changed (182) hide show
  1. data/Rakefile +6 -6
  2. data/VERSION.yml +3 -3
  3. data/examples/blueprint_default/parts/forms.html.haml +8 -0
  4. data/examples/css3/src/main.scss +4 -0
  5. data/features/command_line.feature +20 -3
  6. data/features/step_definitions/command_line_steps.rb +7 -1
  7. data/frameworks/blueprint/stylesheets/_blueprint.scss +2 -12
  8. data/frameworks/blueprint/stylesheets/blueprint/_buttons.scss +34 -34
  9. data/frameworks/blueprint/stylesheets/blueprint/_colors.scss +32 -28
  10. data/frameworks/blueprint/stylesheets/blueprint/_debug.scss +3 -3
  11. data/frameworks/blueprint/stylesheets/blueprint/_fancy-type.scss +2 -2
  12. data/frameworks/blueprint/stylesheets/blueprint/_form.scss +14 -16
  13. data/frameworks/blueprint/stylesheets/blueprint/_grid.scss +39 -37
  14. data/frameworks/blueprint/stylesheets/blueprint/_ie.scss +17 -15
  15. data/frameworks/blueprint/stylesheets/blueprint/_interaction.scss +53 -44
  16. data/frameworks/blueprint/stylesheets/blueprint/_liquid.scss +26 -26
  17. data/frameworks/blueprint/stylesheets/blueprint/_print.scss +13 -20
  18. data/frameworks/blueprint/stylesheets/blueprint/_rtl.scss +32 -44
  19. data/frameworks/blueprint/stylesheets/blueprint/_scaffolding.scss +10 -12
  20. data/frameworks/blueprint/stylesheets/blueprint/_typography.scss +18 -32
  21. data/frameworks/blueprint/stylesheets/blueprint/reset/_utilities.scss +50 -25
  22. data/frameworks/compass/stylesheets/compass/_css3.scss +1 -15
  23. data/frameworks/compass/stylesheets/compass/_layout.scss +1 -0
  24. data/frameworks/compass/stylesheets/compass/_support.scss +4 -0
  25. data/frameworks/compass/stylesheets/compass/css3/_box-shadow-v2.scss +98 -0
  26. data/frameworks/compass/stylesheets/compass/css3/_box-shadow.scss +7 -40
  27. data/frameworks/compass/stylesheets/compass/css3/_box.scss +0 -1
  28. data/frameworks/compass/stylesheets/compass/css3/_columns.scss +23 -18
  29. data/frameworks/compass/stylesheets/compass/css3/_font-face.scss +2 -3
  30. data/frameworks/compass/stylesheets/compass/css3/_gradient.scss +66 -42
  31. data/frameworks/compass/stylesheets/compass/css3/_images.scss +52 -0
  32. data/frameworks/compass/stylesheets/compass/css3/_shared.scss +1 -1
  33. data/frameworks/compass/stylesheets/compass/css3/_text-shadow-v2.scss +72 -0
  34. data/frameworks/compass/stylesheets/compass/css3/_transform-v2.scss +584 -0
  35. data/frameworks/compass/stylesheets/compass/css3/_version-1.scss +16 -0
  36. data/frameworks/compass/stylesheets/compass/css3/_version-2.scss +16 -0
  37. data/frameworks/compass/stylesheets/compass/layout/_stretching.scss +24 -0
  38. data/frameworks/compass/stylesheets/compass/utilities/general/_hacks.scss +4 -4
  39. data/frameworks/compass/stylesheets/compass/utilities/lists/_horizontal-list.scss +5 -1
  40. data/frameworks/compass/stylesheets/compass/utilities/lists/_inline-list.scss +7 -1
  41. data/frameworks/compass/stylesheets/compass/utilities/tables/_borders.scss +7 -1
  42. data/lib/compass/actions.rb +1 -1
  43. data/lib/compass/app_integration/rails/actionpack3/railtie.rb +18 -0
  44. data/lib/compass/app_integration/rails/configuration_defaults.rb +22 -0
  45. data/lib/compass/app_integration/rails/installer.rb +77 -34
  46. data/lib/compass/app_integration/rails/runtime.rb +3 -0
  47. data/lib/compass/app_integration/stand_alone/configuration_defaults.rb +1 -1
  48. data/lib/compass/commands/print_version.rb +1 -1
  49. data/lib/compass/commands/update_project.rb +2 -2
  50. data/lib/compass/commands/write_configuration.rb +10 -1
  51. data/lib/compass/compiler.rb +1 -5
  52. data/lib/compass/configuration.rb +2 -1
  53. data/lib/compass/configuration/adapters.rb +2 -1
  54. data/lib/compass/configuration/comments.rb +34 -1
  55. data/lib/compass/configuration/helpers.rb +3 -7
  56. data/lib/compass/configuration/paths.rb +1 -1
  57. data/lib/compass/exec/project_options_parser.rb +4 -0
  58. data/lib/compass/installers/base.rb +1 -1
  59. data/lib/compass/logger.rb +4 -2
  60. data/lib/compass/sass_extensions/functions.rb +6 -3
  61. data/lib/compass/sass_extensions/functions/colors.rb +58 -0
  62. data/lib/compass/sass_extensions/functions/constants.rb +1 -1
  63. data/lib/compass/sass_extensions/functions/display.rb +4 -2
  64. data/lib/compass/sass_extensions/functions/gradient_support.rb +343 -25
  65. data/lib/compass/sass_extensions/functions/if.rb +9 -0
  66. data/lib/compass/sass_extensions/functions/inline_image.rb +9 -3
  67. data/lib/compass/sass_extensions/functions/trig.rb +27 -0
  68. data/lib/compass/version.rb +6 -1
  69. data/lib/rails/init.rb +2 -0
  70. data/test/command_line_test.rb +6 -9
  71. data/test/compass_test.rb +2 -0
  72. data/test/configuration_test.rb +20 -0
  73. data/test/fixtures/stylesheets/blueprint/css/ie.css +16 -0
  74. data/test/fixtures/stylesheets/blueprint/css/screen.css +37 -34
  75. data/test/fixtures/stylesheets/blueprint/css/single-imports/colors.css +5 -5
  76. data/test/fixtures/stylesheets/blueprint/css/single-imports/form.css +7 -5
  77. data/test/fixtures/stylesheets/blueprint/css/single-imports/grid.css +5 -5
  78. data/test/fixtures/stylesheets/blueprint/css/single-imports/ie.css +16 -0
  79. data/test/fixtures/stylesheets/blueprint/css/single-imports/interaction.css +12 -9
  80. data/test/fixtures/stylesheets/blueprint/css/single-imports/reset-utilities.css +23 -64
  81. data/test/fixtures/stylesheets/blueprint/css/single-imports/reset.css +13 -37
  82. data/test/fixtures/stylesheets/blueprint/css/single-imports/rtl.css +5 -5
  83. data/test/fixtures/stylesheets/blueprint/css/single-imports/scaffolding.css +4 -4
  84. data/test/fixtures/stylesheets/blueprint/css/single-imports/typography.css +12 -15
  85. data/test/fixtures/stylesheets/compass/config.rb +2 -0
  86. data/test/fixtures/stylesheets/compass/css/box.css +6 -13
  87. data/test/fixtures/stylesheets/compass/css/box_shadow.css +17 -0
  88. data/test/fixtures/stylesheets/compass/css/columns.css +47 -0
  89. data/test/fixtures/stylesheets/compass/css/gradients.css +240 -25
  90. data/test/fixtures/stylesheets/compass/css/lists.css +12 -4
  91. data/test/fixtures/stylesheets/compass/css/print.css +1 -1
  92. data/test/fixtures/stylesheets/compass/css/reset.css +2 -2
  93. data/test/fixtures/stylesheets/compass/css/stretching.css +66 -0
  94. data/test/fixtures/stylesheets/compass/css/transform.css +305 -0
  95. data/test/fixtures/stylesheets/compass/sass/box_shadow.scss +5 -0
  96. data/test/fixtures/stylesheets/compass/sass/columns.scss +10 -0
  97. data/test/fixtures/stylesheets/compass/sass/gradients.sass +151 -19
  98. data/test/fixtures/stylesheets/compass/sass/stretching.sass +34 -0
  99. data/test/fixtures/stylesheets/compass/sass/transform.scss +87 -0
  100. data/test/sass_extensions_test.rb +44 -0
  101. metadata +42 -96
  102. data/frameworks/_blueprint_deprecated_imports/stylesheets/_blueprint.sass +0 -2
  103. data/frameworks/_blueprint_deprecated_imports/stylesheets/blueprint/_buttons.sass +0 -2
  104. data/frameworks/_blueprint_deprecated_imports/stylesheets/blueprint/_colors.sass +0 -2
  105. data/frameworks/_blueprint_deprecated_imports/stylesheets/blueprint/_debug.sass +0 -2
  106. data/frameworks/_blueprint_deprecated_imports/stylesheets/blueprint/_fancy_type.sass +0 -2
  107. data/frameworks/_blueprint_deprecated_imports/stylesheets/blueprint/_form.sass +0 -2
  108. data/frameworks/_blueprint_deprecated_imports/stylesheets/blueprint/_grid.sass +0 -2
  109. data/frameworks/_blueprint_deprecated_imports/stylesheets/blueprint/_ie.sass +0 -2
  110. data/frameworks/_blueprint_deprecated_imports/stylesheets/blueprint/_interaction.sass +0 -2
  111. data/frameworks/_blueprint_deprecated_imports/stylesheets/blueprint/_link_icons.sass +0 -2
  112. data/frameworks/_blueprint_deprecated_imports/stylesheets/blueprint/_liquid.sass +0 -2
  113. data/frameworks/_blueprint_deprecated_imports/stylesheets/blueprint/_print.sass +0 -2
  114. data/frameworks/_blueprint_deprecated_imports/stylesheets/blueprint/_reset.sass +0 -2
  115. data/frameworks/_blueprint_deprecated_imports/stylesheets/blueprint/_rtl.sass +0 -2
  116. data/frameworks/_blueprint_deprecated_imports/stylesheets/blueprint/_scaffolding.sass +0 -2
  117. data/frameworks/_blueprint_deprecated_imports/stylesheets/blueprint/_screen.sass +0 -2
  118. data/frameworks/_blueprint_deprecated_imports/stylesheets/blueprint/_typography.sass +0 -2
  119. data/frameworks/_blueprint_deprecated_imports/stylesheets/blueprint/_utilities.sass +0 -2
  120. data/frameworks/_blueprint_deprecated_imports/stylesheets/blueprint/modules/_buttons.sass +0 -2
  121. data/frameworks/_blueprint_deprecated_imports/stylesheets/blueprint/modules/_colors.sass +0 -2
  122. data/frameworks/_blueprint_deprecated_imports/stylesheets/blueprint/modules/_debug.sass +0 -2
  123. data/frameworks/_blueprint_deprecated_imports/stylesheets/blueprint/modules/_fancy_type.sass +0 -2
  124. data/frameworks/_blueprint_deprecated_imports/stylesheets/blueprint/modules/_form.sass +0 -2
  125. data/frameworks/_blueprint_deprecated_imports/stylesheets/blueprint/modules/_grid.sass +0 -2
  126. data/frameworks/_blueprint_deprecated_imports/stylesheets/blueprint/modules/_interaction.sass +0 -2
  127. data/frameworks/_blueprint_deprecated_imports/stylesheets/blueprint/modules/_link_icons.sass +0 -2
  128. data/frameworks/_blueprint_deprecated_imports/stylesheets/blueprint/modules/_liquid.sass +0 -2
  129. data/frameworks/_blueprint_deprecated_imports/stylesheets/blueprint/modules/_reset.sass +0 -2
  130. data/frameworks/_blueprint_deprecated_imports/stylesheets/blueprint/modules/_rtl.sass +0 -2
  131. data/frameworks/_blueprint_deprecated_imports/stylesheets/blueprint/modules/_scaffolding.sass +0 -2
  132. data/frameworks/_blueprint_deprecated_imports/stylesheets/blueprint/modules/_typography.sass +0 -2
  133. data/frameworks/_blueprint_deprecated_imports/stylesheets/blueprint/modules/_utilities.sass +0 -2
  134. data/frameworks/_compass_deprecated_imports/stylesheets/_compass.sass +0 -2
  135. data/frameworks/_compass_deprecated_imports/stylesheets/compass/_css3.sass +0 -2
  136. data/frameworks/_compass_deprecated_imports/stylesheets/compass/_layout.sass +0 -2
  137. data/frameworks/_compass_deprecated_imports/stylesheets/compass/_misc.sass +0 -1
  138. data/frameworks/_compass_deprecated_imports/stylesheets/compass/_misc.scss +0 -22
  139. data/frameworks/_compass_deprecated_imports/stylesheets/compass/_reset.sass +0 -2
  140. data/frameworks/_compass_deprecated_imports/stylesheets/compass/_utilities.sass +0 -2
  141. data/frameworks/_compass_deprecated_imports/stylesheets/compass/css3/_background_clip.sass +0 -2
  142. data/frameworks/_compass_deprecated_imports/stylesheets/compass/css3/_background_origin.sass +0 -2
  143. data/frameworks/_compass_deprecated_imports/stylesheets/compass/css3/_background_size.sass +0 -2
  144. data/frameworks/_compass_deprecated_imports/stylesheets/compass/css3/_border_radius.sass +0 -2
  145. data/frameworks/_compass_deprecated_imports/stylesheets/compass/css3/_box_shadow.sass +0 -2
  146. data/frameworks/_compass_deprecated_imports/stylesheets/compass/css3/_box_sizing.sass +0 -2
  147. data/frameworks/_compass_deprecated_imports/stylesheets/compass/css3/_columns.sass +0 -2
  148. data/frameworks/_compass_deprecated_imports/stylesheets/compass/css3/_font_face.sass +0 -2
  149. data/frameworks/_compass_deprecated_imports/stylesheets/compass/css3/_gradient.sass +0 -2
  150. data/frameworks/_compass_deprecated_imports/stylesheets/compass/css3/_inline_block.sass +0 -2
  151. data/frameworks/_compass_deprecated_imports/stylesheets/compass/css3/_opacity.sass +0 -2
  152. data/frameworks/_compass_deprecated_imports/stylesheets/compass/css3/_text_shadow.sass +0 -2
  153. data/frameworks/_compass_deprecated_imports/stylesheets/compass/css3/_transform.sass +0 -2
  154. data/frameworks/_compass_deprecated_imports/stylesheets/compass/css3/_transition.sass +0 -2
  155. data/frameworks/_compass_deprecated_imports/stylesheets/compass/layout/_sticky_footer.sass +0 -2
  156. data/frameworks/_compass_deprecated_imports/stylesheets/compass/utilities/_general.sass +0 -2
  157. data/frameworks/_compass_deprecated_imports/stylesheets/compass/utilities/_links.sass +0 -2
  158. data/frameworks/_compass_deprecated_imports/stylesheets/compass/utilities/_lists.sass +0 -2
  159. data/frameworks/_compass_deprecated_imports/stylesheets/compass/utilities/_print.sass +0 -2
  160. data/frameworks/_compass_deprecated_imports/stylesheets/compass/utilities/_sprites.sass +0 -2
  161. data/frameworks/_compass_deprecated_imports/stylesheets/compass/utilities/_tables.sass +0 -2
  162. data/frameworks/_compass_deprecated_imports/stylesheets/compass/utilities/_text.sass +0 -2
  163. data/frameworks/_compass_deprecated_imports/stylesheets/compass/utilities/general/_clearfix.sass +0 -2
  164. data/frameworks/_compass_deprecated_imports/stylesheets/compass/utilities/general/_float.sass +0 -2
  165. data/frameworks/_compass_deprecated_imports/stylesheets/compass/utilities/general/_hacks.sass +0 -2
  166. data/frameworks/_compass_deprecated_imports/stylesheets/compass/utilities/general/_min.sass +0 -2
  167. data/frameworks/_compass_deprecated_imports/stylesheets/compass/utilities/general/_reset.sass +0 -2
  168. data/frameworks/_compass_deprecated_imports/stylesheets/compass/utilities/general/_tabs.sass +0 -0
  169. data/frameworks/_compass_deprecated_imports/stylesheets/compass/utilities/general/_tag_cloud.sass +0 -2
  170. data/frameworks/_compass_deprecated_imports/stylesheets/compass/utilities/links/_hover_link.sass +0 -2
  171. data/frameworks/_compass_deprecated_imports/stylesheets/compass/utilities/links/_link_colors.sass +0 -2
  172. data/frameworks/_compass_deprecated_imports/stylesheets/compass/utilities/links/_unstyled_link.sass +0 -2
  173. data/frameworks/_compass_deprecated_imports/stylesheets/compass/utilities/lists/_bullets.sass +0 -2
  174. data/frameworks/_compass_deprecated_imports/stylesheets/compass/utilities/lists/_horizontal_list.sass +0 -2
  175. data/frameworks/_compass_deprecated_imports/stylesheets/compass/utilities/lists/_inline_list.sass +0 -2
  176. data/frameworks/_compass_deprecated_imports/stylesheets/compass/utilities/sprites/_sprite_img.sass +0 -2
  177. data/frameworks/_compass_deprecated_imports/stylesheets/compass/utilities/tables/_alternating_rows_and_columns.sass +0 -2
  178. data/frameworks/_compass_deprecated_imports/stylesheets/compass/utilities/tables/_borders.sass +0 -2
  179. data/frameworks/_compass_deprecated_imports/stylesheets/compass/utilities/tables/_scaffolding.sass +0 -2
  180. data/frameworks/_compass_deprecated_imports/stylesheets/compass/utilities/text/_ellipsis.sass +0 -2
  181. data/frameworks/_compass_deprecated_imports/stylesheets/compass/utilities/text/_nowrap.sass +0 -2
  182. data/frameworks/_compass_deprecated_imports/stylesheets/compass/utilities/text/_replacement.sass +0 -2
@@ -14,10 +14,9 @@
14
14
  }
15
15
  @font-face {
16
16
  font-family: quote($name);
17
- @if $eot {
18
- src: font-url($eot); }
17
+ @if $eot { src: font-url($eot); }
19
18
  src: local("☺"), $font-files;
20
- }
19
+ }
21
20
  }
22
21
 
23
22
  // EXAMPLE
@@ -1,82 +1,106 @@
1
- @import "shared";
1
+ @import "compass/utilities/general/hacks";
2
+ @import "images";
2
3
 
3
- // This yields a linear gradient spanning from top to bottom
4
+ // The linear gradient mixin works best across browsers if you use percentage-based color stops.
4
5
  //
5
- // +linear-gradient(color-stops(white, black))
6
+ // Examples:
6
7
  //
7
- // This yields a linear gradient spanning from bottom to top
8
+ // // This yields a linear gradient spanning from top to bottom
9
+ // +linear-gradient(color-stops(white, black))
8
10
  //
11
+ // // This yields a linear gradient spanning from bottom to top
9
12
  // +linear-gradient(color-stops(white, black), bottom)
10
13
  //
11
- // This yields a linear gradient spanning from left to right
12
- //
14
+ // // This yields a linear gradient spanning from left to right
13
15
  // +linear-gradient(color-stops(white, black), left)
14
16
  //
15
- // This yields a linear gradient starting at white passing
16
- // thru blue at 33% down and then to black
17
- //
17
+ // // This yields a linear gradient starting at white passing
18
+ // // thru blue at 33% down and then to black
18
19
  // +linear-gradient(color-stops(white, blue 33%, black))
19
20
  //
20
- // This yields a linear gradient starting at white passing
21
- // thru blue at 33% down and then to black at 67% until the end
22
- //
21
+ // // This yields a linear gradient starting at white passing
22
+ // // thru blue at 33% down and then to black at 67% until the end
23
23
  // +linear-gradient(color-stops(white, blue 33%, black 67%))
24
24
  //
25
- // This yields a linear gradient on top of a background image
26
- //
25
+ // // This yields a background image on top of the gradient; requires an image
26
+ // // with an alpha-layer.
27
27
  // +linear-gradient(color_stops(white,black), top, image-url('noise.png'))
28
+ //
28
29
  // Browsers Supported:
29
30
  //
30
31
  // - Chrome
31
32
  // - Safari
32
33
  // - Firefox 3.6
34
+ // - Opera
33
35
 
34
- @mixin linear-gradient($color-stops, $start: top, $image: false) {
35
- // Firefox's gradient api is nice.
36
- // Webkit's gradient api sucks -- hence these backflips:
37
- $background: unquote("");
38
- @if $image { $background : $image + unquote(", "); }
39
- $start: unquote($start);
40
- $end: opposite-position($start);
41
- @if $experimental-support-for-webkit {
42
- background-image: #{$background}-webkit-gradient(linear, grad-point($start), grad-point($end), grad-color-stops($color-stops));
43
- }
44
- @if $experimental-support-for-mozilla {
45
- background-image: #{$background}-moz-linear-gradient($start, $color-stops);
36
+ @mixin linear-gradient($color-stops, $start: false, $image: false) {
37
+ @if $image {
38
+ @if $start {
39
+ @warn "The linear-gradient mixin is deprecated. Instead use: @include background-image(#{$image}, linear-gradient(#{$start}, #{$color-stops}))";
40
+ } @else {
41
+ @warn "The linear-gradient mixin is deprecated. Instead use: @include background-image(#{$image}, linear-gradient(#{$color-stops}))";
42
+ }
43
+ } @else {
44
+ @if $start {
45
+ @warn "The linear-gradient mixin is deprecated. Instead use: @include background-image(linear-gradient(#{$start}, #{$color-stops}))";
46
+ } @else {
47
+ @warn "The linear-gradient mixin is deprecated. Instead use: @include background-image(linear-gradient(#{$color-stops}))";
48
+ }
46
49
  }
47
- background-image: #{$background}linear-gradient($start, $color-stops);
50
+ @if not $start { $start: top; }
51
+ @include background-image($image, linear-gradient($start, $color-stops));
48
52
  }
49
53
 
50
- // Due to limitation's of webkit, the radial gradient mixin works best if you use
54
+ // Emit a IE-Specific filters that renders a simple linear gradient.
55
+ // For use in IE 6 - 8. Best practice would have you apply this via a
56
+ // conditional IE stylesheet, but if you must, you should place this before
57
+ // any background-image properties that you have specified.
58
+ @mixin filter-gradient($start-color, $end-color, $orientation: vertical) {
59
+ @include has-layout;
60
+ $gradient-type: if($orientation == vertical, 0, 1);
61
+ filter: progid:DXImageTransform.Microsoft.gradient(gradientType=#{$gradient-type}, startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}');
62
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(gradientType=#{$gradient-type}, startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}')";
63
+ }
64
+
65
+ // Because of webkit's limitations, the radial gradient mixin works best if you use
51
66
  // pixel-based color stops.
52
67
  //
53
68
  // Examples:
54
69
  //
55
70
  // // Defaults to a centered, 100px radius gradient
56
71
  // +radial-gradient(color-stops(#c00, #00c))
72
+ //
57
73
  // // 100px radius gradient in the top left corner
58
74
  // +radial-gradient(color-stops(#c00, #00c), top left)
75
+ //
59
76
  // // Three colors, ending at 50px and passing thru #fff at 25px
60
77
  // +radial-gradient(color-stops(#c00, #fff, #00c 50px))
61
- // // a background image on top of the gradient
62
- // // Requires an image with an alpha-layer.
78
+ //
79
+ // // A background image on top of a 100px radius gradient; requires an image
80
+ // // with an alpha-layer.
63
81
  // +radial-gradient(color_stops(#c00, #fff), top left, image-url("noise.png")))
82
+ //
64
83
  // Browsers Supported:
65
84
  //
66
85
  // - Chrome
67
86
  // - Safari
68
87
  // - Firefox 3.6
88
+ // - Opera
69
89
 
70
- @mixin radial-gradient($color-stops, $center-position: center center, $image: false) {
71
- $center-position: unquote($center-position);
72
- $end-pos: grad-end-position($color-stops, true);
73
- $background: unquote("");
74
- @if $image { $background: $image + unquote(", "); }
75
- @if $experimental-support-for-webkit {
76
- background-image: #{$background}-webkit-gradient(radial, grad-point($center-position), 0, grad-point($center-position), $end-pos, grad-color-stops($color-stops));
90
+ @mixin radial-gradient($color-stops, $center-position: false, $image: false) {
91
+ @if $image {
92
+ @if $center-position {
93
+ @warn "The radial-gradient mixin is deprecated. Instead use: @include background-image(#{$image}, radial-gradient(#{$center-position}, #{$color-stops}))";
94
+ } @else {
95
+ @warn "The radial-gradient mixin is deprecated. Instead use: @include background-image(#{$image}, radial-gradient(#{$color-stops}))";
96
+ }
97
+ } @else {
98
+ @if $center-position {
99
+ @warn "The radial-gradient mixin is deprecated. Instead use: @include background-image(radial-gradient(#{$center-position}, #{$color-stops}))";
100
+ } @else {
101
+ @warn "The radial-gradient mixin is deprecated. Instead use: @include background-image(radial-gradient(#{$color-stops}))";
102
+ }
77
103
  }
78
- @if $experimental-support-for-mozilla {
79
- background-image: #{$background}-moz-radial-gradient($center-position, circle, $color-stops);
80
- }
81
- background-image: #{$background}radial-gradient($center-position, circle, $color-stops);
82
- }
104
+ @if not $center-position { $center-position: center center; }
105
+ @include background-image($image, radial-gradient($center-position, $color-stops));
106
+ }
@@ -0,0 +1,52 @@
1
+ @import "shared";
2
+
3
+
4
+ @mixin background-image(
5
+ $image-1,
6
+ $image-2: false,
7
+ $image-3: false,
8
+ $image-4: false,
9
+ $image-5: false,
10
+ $image-6: false,
11
+ $image-7: false,
12
+ $image-8: false,
13
+ $image-9: false,
14
+ $image-10: false
15
+ ) {
16
+ $images: compact($image-1, $image-2, $image-3, $image-4, $image-5, $image-6, $image-7, $image-8, $image-9, $image-10);
17
+
18
+ @if $experimental-support-for-svg and prefixed(-svg, $images) { background-image: -svg($images); }
19
+ @if $experimental-support-for-webkit and prefixed(-webkit, $images) { background-image: -webkit($images); }
20
+ @if $experimental-support-for-mozilla and prefixed(-moz, $images) { background-image: -moz($images); }
21
+ background-image: $images;
22
+ }
23
+
24
+ @mixin border-image($value) {
25
+ @if $experimental-support-for-mozilla { -moz-border-image: -moz(-compass-list($value)); }
26
+ @if $experimental-support-for-webkit { -webkit-border-image: -webkit(-compass-list($value)); }
27
+ @if $experimental-support-for-svg { border-image: -svg(-compass-list($value)); }
28
+ border-image: $value;
29
+ }
30
+
31
+ @mixin list-style-image($image) {
32
+ @if $experimental-support-for-mozilla and prefixed(-moz, $image) { list-style-image: -moz($image); }
33
+ @if $experimental-support-for-webkit and prefixed(-webkit, $image) { list-style-image: -webkit($image); }
34
+ @if $experimental-support-for-svg and prefixed(-svg, $image) { list-style-image: -svg($image); }
35
+ list-style-image: $image ;
36
+ }
37
+
38
+ @mixin list-style($value) {
39
+ $value: -compass-list($value);
40
+ @if $experimental-support-for-mozilla and prefixed(-moz, $value) { list-style-image: -moz($value); }
41
+ @if $experimental-support-for-webkit and prefixed(-webkit, $value) { list-style-image: -webkit($value); }
42
+ @if $experimental-support-for-svg and prefixed(-svg, $value) { list-style-image: -svg($value); }
43
+ list-style-image: $value ;
44
+ }
45
+
46
+ @mixin content($value) {
47
+ $value: -compass-list($value);
48
+ @if $experimental-support-for-mozilla and prefixed(-moz, $value) { content: -moz($value); }
49
+ @if $experimental-support-for-webkit and prefixed(-webkit, $value) { content: -webkit($value); }
50
+ @if $experimental-support-for-svg and prefixed(-svg, $value) { content: -svg($value); }
51
+ content: $value ;
52
+ }
@@ -35,4 +35,4 @@
35
35
  @if $ms and $experimental-support-for-microsoft { #{$property} : -ms-#{$value}; }
36
36
  @if $khtml and $experimental-support-for-khtml { #{$property} : -khtml-#{$value}; }
37
37
  @if $official { #{$property} : #{$value}; }
38
- }
38
+ }
@@ -0,0 +1,72 @@
1
+ @import "shared";
2
+
3
+ // These defaults make the arguments optional for this mixin
4
+ // If you like, set different defaults in your project
5
+
6
+ $default-text-shadow-color: #aaa !default;
7
+ $default-text-shadow-h-offset: 0px !default;
8
+ $default-text-shadow-v-offset: 0px !default;
9
+ $default-text-shadow-blur: 1px !default;
10
+
11
+ // Provides CSS text shadows.
12
+ // Arguments are color, horizontal offset, vertical offset, and blur
13
+ @mixin single-text-shadow(
14
+ $color: $default-text-shadow-color,
15
+ $hoff: $default-text-shadow-h-offset,
16
+ $voff: $default-text-shadow-v-offset,
17
+ $blur: $default-text-shadow-blur
18
+ ) {
19
+ // XXX I'm surprised we don't need experimental support for this property.
20
+ @if $color == none {
21
+ text-shadow: none;
22
+ } @else {
23
+ text-shadow: $color $hoff $voff $blur;
24
+ }
25
+ }
26
+
27
+ // Provides cross-browser text shadows when one or more shadows are needed.
28
+ @mixin multiple-text-shadows(
29
+ $shadow-1 : $default-text-shadow-color $default-text-shadow-h-offset $default-text-shadow-v-offset $default-text-shadow-blur,
30
+ $shadow-2 : false,
31
+ $shadow-3 : false,
32
+ $shadow-4 : false,
33
+ $shadow-5 : false,
34
+ $shadow-6 : false,
35
+ $shadow-7 : false,
36
+ $shadow-8 : false,
37
+ $shadow-9 : false,
38
+ $shadow-10: false
39
+ ) {
40
+ // Ugh. Sass needs variable argument support.
41
+ $shadow : $shadow-1;
42
+ @if $shadow-2 { $shadow: $shadow, $shadow-2; }
43
+ @if $shadow-3 { $shadow: $shadow, $shadow-3; }
44
+ @if $shadow-4 { $shadow: $shadow, $shadow-4; }
45
+ @if $shadow-5 { $shadow: $shadow, $shadow-5; }
46
+ @if $shadow-6 { $shadow: $shadow, $shadow-6; }
47
+ @if $shadow-7 { $shadow: $shadow, $shadow-7; }
48
+ @if $shadow-8 { $shadow: $shadow, $shadow-8; }
49
+ @if $shadow-9 { $shadow: $shadow, $shadow-9; }
50
+ @if $shadow-10 { $shadow: $shadow, $shadow-10; }
51
+ // Anticlimactic, we know.
52
+ text-shadow: $shadow
53
+ }
54
+
55
+ @mixin text-shadow(
56
+ $shadow-1 : $default-text-shadow-color $default-text-shadow-h-offset $default-text-shadow-v-offset $default-text-shadow-blur,
57
+ $shadow-2 : false,
58
+ $shadow-3 : false,
59
+ $shadow-4 : false,
60
+ $shadow-5 : false,
61
+ $shadow-6 : false,
62
+ $shadow-7 : false,
63
+ $shadow-8 : false,
64
+ $shadow-9 : false,
65
+ $shadow-10: false
66
+ ) {
67
+ @include multiple-text-shadows(
68
+ $shadow-1, $shadow-2, $shadow-3,
69
+ $shadow-4, $shadow-5, $shadow-6,
70
+ $shadow-7, $shadow-8, $shadow-9, $shadow-10
71
+ );
72
+ }
@@ -0,0 +1,584 @@
1
+ @import "shared";
2
+
3
+ // @doc off
4
+ // Note ----------------------------------------------------------------------
5
+ // Safari is the only browser that currently supports 3D transforms.
6
+ // Because of that it can be important to control whether a given 2D transform
7
+ // uses the full range of experimental browser prefixes, or only the 3D list.
8
+ // To make that easy, all 2D transforms include an browser-targeting toggle ($only3d)
9
+ // to switch between the two support lists. The toggle defaults to 'false' (2D),
10
+ // and also accepts 'true' (3D). Currently the lists are as follows:
11
+ // 2D: Mozilla, Webkit, Opera, Official
12
+ // 3D: Webkit, Official **(Only Safari Supports 3D perspective)**
13
+
14
+ // Available Transforms ------------------------------------------------------
15
+ // - Scale (2d and 3d)
16
+ // - Rotate (2d and 3d)
17
+ // - Translate (2d and 3d)
18
+ // - Skew (2d only)
19
+
20
+ // Transform Parameters ------------------------------------------------------
21
+ // - Transform Origin (2d and 3d)
22
+ // - Perspective (3d)
23
+ // - Perspective Origin (3d)
24
+ // - Transform Style (3d)
25
+ // - Backface Visibility (3d)
26
+
27
+ // Mixins --------------------------------------------------------------------
28
+ // transform-origin
29
+ // - shortcuts: transform-origin2d, transform-origin3d
30
+ // - helpers: apply-origin
31
+ // transform
32
+ // - shortcuts: transform2d, transform3d
33
+ // - helpers: simple-transform, create-transform
34
+ // perspective
35
+ // - helpers: perspective-origin
36
+ // transform-style
37
+ // backface-visibility
38
+ // scale
39
+ // - shortcuts: scaleX, scaleY, scaleZ, scale3d
40
+ // rotate
41
+ // - shortcuts: rotateX, rotateY, rotate3d
42
+ // translate
43
+ // - shortcuts: translateX, translateY, translateZ, translate3d
44
+ // skew
45
+ // - shortcuts: skewX, skewY
46
+
47
+ // Defaults ------------------------------------------------------------------
48
+ // @doc on
49
+
50
+ // Transform Origin
51
+ $default-origin-x : 50% !default;
52
+ $default-origin-y : 50% !default;
53
+ $default-origin-z : 50% !default;
54
+
55
+ // Scale
56
+ $default-scale-x : 1.25 !default;
57
+ $default-scale-y : $default-scale-x !default;
58
+ $default-scale-z : $default-scale-x !default;
59
+
60
+ // Rotate
61
+ $default-rotate : 45deg !default;
62
+
63
+ // Rotate3d
64
+ $default-vector-x : 1 !default;
65
+ $default-vector-y : 1 !default;
66
+ $default-vector-z : 1 !default;
67
+
68
+ // Translate
69
+ $default-translate-x : 1em !default;
70
+ $default-translate-y : $default-translate-x !default;
71
+ $default-translate-z : $default-translate-x !default;
72
+
73
+ // Skew
74
+ $default-skew-x : 5deg !default;
75
+ $default-skew-y : 5deg !default;
76
+
77
+
78
+ // **Transform-origin**
79
+ // Transform-origin sent as a complete string
80
+ //
81
+ // @include apply-origin( origin [, 3D-only ] )
82
+ //
83
+ // where 'origin' is a space separated list containing 1-3 (x/y/z) coordinates
84
+ // in percentages, absolute (px, cm, in, em etc..) or relative
85
+ // (left, top, right, bottom, center) units
86
+ //
87
+ // @param only3d Set this to true to only apply this
88
+ // mixin where browsers have 3D support.
89
+ @mixin apply-origin($origin, $only3d) {
90
+ $only3d: $only3d or -compass-list-size(-compass-list($origin)) > 2;
91
+ @if $only3d {
92
+ @include experimental(transform-origin, $origin,
93
+ not -moz, -webkit, not -o, not -ms, not -khtml, official
94
+ );
95
+ } @else {
96
+ @include experimental(transform-origin, $origin,
97
+ -moz, -webkit, -o, not -ms, not -khtml, official
98
+ );
99
+ }
100
+ }
101
+
102
+ // Transform-origin sent as individual arguments:
103
+ //
104
+ // @include transform-origin( [ origin-x, origin-y, origin-z, 3D-only ] )
105
+ //
106
+ // where the 3 'origin-' arguments represent x/y/z coordinates.
107
+ //
108
+ // **NOTE:** setting z coordinates triggers 3D support list, leave false for 2D support
109
+ @mixin transform-origin(
110
+ $origin-x: $default-origin-x,
111
+ $origin-y: $default-origin-y,
112
+ $origin-z: false,
113
+ $only3d: false
114
+ ) {
115
+ $origin: unquote('');
116
+ @if $origin-x or $origin-y or $origin-z {
117
+ @if $origin-x { $origin: $origin-x; } @else { $origin: 50%; }
118
+ @if $origin-y { $origin: $origin $origin-y; } @else { @if $origin-z { $origin: $origin 50%; }}
119
+ @if $origin-z { $origin: $origin $origin-z; }
120
+ @include apply-origin($origin, $only3d);
121
+ }
122
+ }
123
+
124
+
125
+ // Transform sent as a complete string:
126
+ //
127
+ // @include transform( transforms [, 3D-only ] )
128
+ //
129
+ // where 'transforms' is a space separated list of all the transforms to be applied
130
+ @mixin transform(
131
+ $transform,
132
+ $only3d: false
133
+ ) {
134
+ @if $only3d {
135
+ @include experimental(transform, $transform,
136
+ not -moz, -webkit, not -o, not -ms, not -khtml, official
137
+ );
138
+ } @else {
139
+ @include experimental(transform, $transform,
140
+ -moz, -webkit, -o, not -ms, not -khtml, official
141
+ );
142
+ }
143
+ }
144
+
145
+ // Shortcut to target all browsers with 2D transform support
146
+ @mixin transform2d($trans) {
147
+ @include transform($trans, false);
148
+ }
149
+
150
+ // Shortcut to target only browsers with 3D transform support
151
+ @mixin transform3d($trans) {
152
+ @include transform($trans, true);
153
+ }
154
+
155
+ // @doc off
156
+ // 3D Parameters -------------------------------------------------------------
157
+ // @doc on
158
+
159
+ // Set the perspective of 3D transforms on the children of an element:
160
+ //
161
+ // @include perspective( perspective )
162
+ //
163
+ // where 'perspective' is a uniless number representing the depth of the z-axis
164
+ // the higher the perspective, the more exagerated the foreshortening.
165
+ // values from 500 to 1000 are more-or-less "normal" - a good starting-point.
166
+ @mixin perspective($p) {
167
+ @include experimental(perspective, $p,
168
+ not -moz, -webkit, not -o, not -ms, not -khtml, official
169
+ );
170
+ }
171
+
172
+ // Set the origin position for the perspective
173
+ //
174
+ // @include perspective-origin(origin-x [origin-y])
175
+ //
176
+ // where the two arguments represent x/y coordinates
177
+ @mixin perspective-origin($origin: 50%) {
178
+ @include experimental(perspective-origin, $origin,
179
+ not -moz, -webkit, not -o, not -ms, not -khtml, official
180
+ );
181
+ }
182
+
183
+ // Determine whether a 3D objects children also live in the given 3D space
184
+ //
185
+ // @include transform-style( [ style ] )
186
+ //
187
+ // where `style` can be either `flat` or `preserves-3d`
188
+ // browsers default to `flat`, mixin defaults to `preserves-3d`
189
+ @mixin transform-style($style: preserves-3d) {
190
+ @include experimental(perspective-origin, $style,
191
+ not -moz, -webkit, not -o, not -ms, not -khtml, official
192
+ );
193
+ }
194
+
195
+ // Determine the visibility of an element when it's back is turned
196
+ //
197
+ // @include backface-visibility( [ visibility ] )
198
+ //
199
+ // where `visibility` can be either `visible` or `hidden`
200
+ // browsers default to visible, mixin defaults to hidden
201
+ @mixin backface-visibility($visibility: hidden) {
202
+ @include experimental(backface-visibility, $visibility,
203
+ not -moz, -webkit, not -o, not -ms, not -khtml, official
204
+ );
205
+ }
206
+
207
+ // @doc off
208
+ // Transform Partials --------------------------------------------------------
209
+ // These work well on their own, but they don't add to each other, they override.
210
+ // Use along with transform parameter mixins to adjust origin, perspective and style
211
+ // ---------------------------------------------------------------------------
212
+
213
+
214
+ // Scale ---------------------------------------------------------------------
215
+ // @doc on
216
+
217
+ // Scale an object along the x and y axis:
218
+ //
219
+ // @include scale( [ scale-x, scale-y, perspective, 3D-only ] )
220
+ //
221
+ // where the 'scale-' arguments are unitless multipliers of the x and y dimensions
222
+ // and perspective, which works the same as the stand-alone perspective property/mixin
223
+ // but applies to the individual element (multiplied with any parent perspective)
224
+ //
225
+ // **Note** This mixin cannot be combined with other transform mixins.
226
+ @mixin scale(
227
+ $scale-x: $default-scale-x,
228
+ $scale-y: $scale-x,
229
+ $perspective: false,
230
+ $only3d: false
231
+ ) {
232
+ $trans: scale($scale-x, $scale-y);
233
+ @if $perspective { $trans: perspective($perspective) $trans; }
234
+ @include transform($trans, $only3d);
235
+ }
236
+
237
+ // Scale an object along the x axis
238
+ // @include scaleX( [ scale-x, perspective, 3D-only ] )
239
+ //
240
+ // **Note** This mixin cannot be combined with other transform mixins.
241
+ @mixin scaleX(
242
+ $scale: $default-scale-x,
243
+ $perspective: false,
244
+ $only3d: false
245
+ ) {
246
+ $trans: scaleX($scale);
247
+ @if $perspective { $trans: perspective($perspective) $trans; }
248
+ @include transform($trans, $only3d);
249
+ }
250
+
251
+ // Scale an object along the y axis
252
+ // @include scaleY( [ scale-y, perspective, 3D-only ] )
253
+ //
254
+ // **Note** This mixin cannot be combined with other transform mixins.
255
+ @mixin scaleY(
256
+ $scale: $default-scale-y,
257
+ $perspective: false,
258
+ $only3d: false
259
+ ) {
260
+ $trans: scaleY($scale);
261
+ @if $perspective { $trans: perspective($perspective) $trans; }
262
+ @include transform($trans, $only3d);
263
+ }
264
+
265
+ // Scale an object along the z axis
266
+ // @include scaleZ( [ scale-z, perspective ] )
267
+ //
268
+ // **Note** This mixin cannot be combined with other transform mixins.
269
+ @mixin scaleZ(
270
+ $scale: $default-scale-z,
271
+ $perspective: false
272
+ ) {
273
+ $trans: scaleZ($scale);
274
+ @if $perspective { $trans: perspective($perspective) $trans; }
275
+ @include transform3d($trans);
276
+ }
277
+
278
+ // Scale and object along all three axis
279
+ // @include scale3d( [ scale-x, scale-y, scale-z, perspective ] )
280
+ //
281
+ // **Note** This mixin cannot be combined with other transform mixins.
282
+ @mixin scale3d(
283
+ $scale-x: $default-scale-x,
284
+ $scale-y: $default-scale-y,
285
+ $scale-z: $default-scale-z,
286
+ $perspective: false
287
+ ) {
288
+ $trans: scale3d($scale-x, $scale-y, $scale-z);
289
+ @if $perspective { $trans: perspective($perspective) $trans; }
290
+ @include transform3d($trans);
291
+ }
292
+
293
+ // @doc off
294
+ // Rotate --------------------------------------------------------------------
295
+ // @doc on
296
+
297
+ // Rotate an object around the z axis (2D)
298
+ // @include rotate( [ rotation, perspective, 3D-only ] )
299
+ // where 'rotation' is an angle set in degrees (deg) or radian (rad) units
300
+ //
301
+ // **Note** This mixin cannot be combined with other transform mixins.
302
+ @mixin rotate(
303
+ $rotate: $default-rotate,
304
+ $perspective: false,
305
+ $only3d: false
306
+ ) {
307
+ $trans: rotate($rotate);
308
+ @if $perspective { $trans: perspective($perspective) $trans; }
309
+ @include transform($trans, $only3d);
310
+ }
311
+
312
+ // A longcut for 'rotate' in case you forget that 'z' is implied
313
+ //
314
+ // **Note** This mixin cannot be combined with other transform mixins.
315
+ @mixin rotateZ(
316
+ $rotate: $default-rotate,
317
+ $perspective: false,
318
+ $only3d: false
319
+ ) {
320
+ @include rotate($rotate, $perspective, $only3d);
321
+ }
322
+
323
+ // Rotate an object around the x axis (3D)
324
+ // @include rotateX( [ rotation, perspective ] )
325
+ //
326
+ // **Note** This mixin cannot be combined with other transform mixins.
327
+ @mixin rotateX(
328
+ $rotate: $default-rotate,
329
+ $perspective: false
330
+ ) {
331
+ $trans: rotateX($rotate);
332
+ @if $perspective { $trans: perspective($perspective) $trans; }
333
+ @include transform3d($trans);
334
+ }
335
+
336
+ // Rotate an object around the y axis (3D)
337
+ // @include rotate( [ rotation, perspective ] )
338
+ //
339
+ // **Note** This mixin cannot be combined with other transform mixins.
340
+ @mixin rotateY(
341
+ $rotate: $default-rotate,
342
+ $perspective: false
343
+ ) {
344
+ $trans: rotateY($rotate);
345
+ @if $perspective { $trans: perspective($perspective) $trans; }
346
+ @include transform3d($trans);
347
+ }
348
+
349
+ // Rotate an object around an arbitrary axis (3D)
350
+ // @include rotate( [ vector-x, vector-y, vector-z, rotation, perspective ] )
351
+ // where the 'vector-' arguments accept unitless numbers
352
+ // these numbers are not important on their own, but in relation to one another
353
+ // creating an axis from your transform-origin, along the axis of Xx = Yy = Zz
354
+ //
355
+ // **Note** This mixin cannot be combined with other transform mixins.
356
+ @mixin rotate3d(
357
+ $vector-x: $default-vector-x,
358
+ $vector-y: $default-vector-y,
359
+ $vector-z: $default-vector-z,
360
+ $rotate: $default-rotate,
361
+ $perspective: false
362
+ ) {
363
+ $trans: rotate3d($vector-x, $vector-y, $vector-z, $rotate);
364
+ @if $perspective { $trans: perspective($perspective) $trans; }
365
+ @include transform3d($trans);
366
+ }
367
+
368
+ // @doc off
369
+ // Translate -----------------------------------------------------------------
370
+ // @doc on
371
+
372
+ // Move an object along the x or y axis (2D)
373
+ // @include translate( [ translate-x, translate-y, perspective, 3D-only ] )
374
+ // where the 'translate-' arguments accept any distance in percentages or absolute (px, cm, in, em etc..) units
375
+ //
376
+ // **Note** This mixin cannot be combined with other transform mixins.
377
+ @mixin translate(
378
+ $translate-x: $default-translate-x,
379
+ $translate-y: $default-translate-y,
380
+ $perspective: false,
381
+ $only3d: false
382
+ ) {
383
+ $trans: translate($translate-x, $translate-y);
384
+ @if $perspective { $trans: perspective($perspective) $trans; }
385
+ @include transform($trans, $only3d);
386
+ }
387
+
388
+ // Move an object along the x axis (2D)
389
+ // @include translate( [ translate-x, perspective, 3D-only ] )
390
+ //
391
+ // **Note** This mixin cannot be combined with other transform mixins.
392
+ @mixin translateX(
393
+ $trans-x: $default-translate-x,
394
+ $perspective: false,
395
+ $only3d: false
396
+ ) {
397
+ $trans: translateX($trans-x);
398
+ @if $perspective { $trans: perspective($perspective) $trans; }
399
+ @include transform($trans, $only3d);
400
+ }
401
+
402
+ // Move an object along the y axis (2D)
403
+ // @include translate( [ translate-y, perspective, 3D-only ] )
404
+ //
405
+ // **Note** This mixin cannot be combined with other transform mixins.
406
+ @mixin translateY(
407
+ $trans-y: $default-translate-y,
408
+ $perspective: false,
409
+ $only3d: false
410
+ ) {
411
+ $trans: translateY($trans-y);
412
+ @if $perspective { $trans: perspective($perspective) $trans; }
413
+ @include transform($trans, $only3d);
414
+ }
415
+
416
+ // Move an object along the z axis (3D)
417
+ // @include translate( [ translate-z, perspective ] )
418
+ //
419
+ // **Note** This mixin cannot be combined with other transform mixins.
420
+ @mixin translateZ(
421
+ $trans-z: $default-translate-z,
422
+ $perspective: false
423
+ ) {
424
+ $trans: translateZ($trans-z);
425
+ @if $perspective { $trans: perspective($perspective) $trans; }
426
+ @include transform3d($trans);
427
+ }
428
+
429
+ // Move an object along the x, y and z axis (3D)
430
+ // @include translate( [ translate-x, translate-y, translate-z, perspective ] )
431
+ //
432
+ // **Note** This mixin cannot be combined with other transform mixins.
433
+ @mixin translate3d(
434
+ $translate-x: $default-translate-x,
435
+ $translate-y: $default-translate-y,
436
+ $translate-z: $default-translate-z,
437
+ $perspective: false
438
+ ) {
439
+ $trans: translate3d($translate-x, $translate-y, $translate-z);
440
+ @if $perspective { $trans: perspective($perspective) $trans; }
441
+ @include transform3d($trans);
442
+ }
443
+
444
+ // @doc off
445
+ // Skew ----------------------------------------------------------------------
446
+ // @doc on
447
+
448
+ // Skew an element:
449
+ //
450
+ // @include skew( [ skew-x, skew-y, 3D-only ] )
451
+ //
452
+ // where the 'skew-' arguments accept css angles in degrees (deg) or radian (rad) units
453
+ //
454
+ // **Note** This mixin cannot be combined with other transform mixins.
455
+ @mixin skew(
456
+ $skew-x: $default-skew-x,
457
+ $skew-y: $default-skew-y,
458
+ $only3d: false
459
+ ) {
460
+ $trans: skew($skew-x, $skew-y);
461
+ @include transform($trans, $only3d);
462
+ }
463
+
464
+ // Skew an element along the x axiz
465
+ //
466
+ // @include skew( [ skew-x, 3D-only ] )
467
+ //
468
+ // **Note** This mixin cannot be combined with other transform mixins.
469
+ @mixin skewX(
470
+ $skew-x: $default-skew-x,
471
+ $only3d: false
472
+ ) {
473
+ $trans: skewX($skew-x);
474
+ @include transform($trans, $only3d);
475
+ }
476
+
477
+ // Skew an element along the y axis
478
+ //
479
+ // @include skew( [ skew-y, 3D-only ] )
480
+ //
481
+ // **Note** This mixin cannot be combined with other transform mixins.
482
+ @mixin skewY(
483
+ $skew-y: $default-skew-y,
484
+ $only3d: false
485
+ ) {
486
+ $trans: skewY($skew-y);
487
+ @include transform($trans, $only3d);
488
+ }
489
+
490
+
491
+ // Full transform mixins
492
+ // For settings any combination of transforms as arguments
493
+ // These are complex and not highly recommended for daily use
494
+ // They are mainly here for backwards-compatability purposes
495
+ //
496
+ // * they include origin adjustments
497
+ // * scale takes a multiplier (unitless), rotate and skew take degrees (deg)
498
+ //
499
+ // **Note** This mixin cannot be combined with other transform mixins.
500
+ @mixin create-transform(
501
+ $perspective: false,
502
+ $scale-x: false,
503
+ $scale-y: false,
504
+ $scale-z: false,
505
+ $rotate-x: false,
506
+ $rotate-y: false,
507
+ $rotate-z: false,
508
+ $rotate3d: false,
509
+ $trans-x: false,
510
+ $trans-y: false,
511
+ $trans-z: false,
512
+ $skew-x: false,
513
+ $skew-y: false,
514
+ $origin-x: false,
515
+ $origin-y: false,
516
+ $origin-z: false,
517
+ $only3d: false
518
+ ) {
519
+ $trans: unquote("");
520
+
521
+ // perspective
522
+ @if $perspective { $trans: perspective($perspective) ; }
523
+
524
+ // scale
525
+ @if $scale-x and $scale-y {
526
+ @if $scale-z { $trans: $trans scale3d($scale-x, $scale-y, $scale-z); }
527
+ @else { $trans: $trans scale($scale-x, $scale-y); }
528
+ } @else {
529
+ @if $scale-x { $trans: $trans scaleX($scale-x); }
530
+ @if $scale-y { $trans: $trans scaleY($scale-y); }
531
+ @if $scale-z { $trans: $trans scaleZ($scale-z); }
532
+ }
533
+
534
+ // rotate
535
+ @if $rotate-x { $trans: $trans rotateX($rotate-x); }
536
+ @if $rotate-y { $trans: $trans rotateY($rotate-y); }
537
+ @if $rotate-z { $trans: $trans rotateZ($rotate-z); }
538
+ @if $rotate3d { $trans: $trans rotate3d($rotate3d); }
539
+
540
+ // translate
541
+ @if $trans-x and $trans-y {
542
+ @if $trans-z { $trans: $trans translate3d($trans-x, $trans-y, $trans-z); }
543
+ @else { $trans: $trans translate($trans-x, $trans-y); }
544
+ } @else {
545
+ @if $trans-x { $trans: $trans translateX($trans-x); }
546
+ @if $trans-y { $trans: $trans translateY($trans-y); }
547
+ @if $trans-z { $trans: $trans translateZ($trans-z); }
548
+ }
549
+
550
+ // skew
551
+ @if $skew-x and $skew-y { $trans: $trans skew($skew-x, $skew-y); }
552
+ @else {
553
+ @if $skew-x { $trans: $trans skewX($skew-x); }
554
+ @if $skew-y { $trans: $trans skewY($skew-y); }
555
+ }
556
+
557
+ // apply it!
558
+ @include transform($trans, $only3d);
559
+ @include transform-origin($origin-x, $origin-y, $origin-z, $only3d);
560
+ }
561
+
562
+
563
+ // A simplified set of options
564
+ // backwards-compatible with the previous version of the 'transform' mixin
565
+ @mixin simple-transform(
566
+ $scale: false,
567
+ $rotate: false,
568
+ $trans-x: false,
569
+ $trans-y: false,
570
+ $skew-x: false,
571
+ $skew-y: false,
572
+ $origin-x: false,
573
+ $origin-y: false
574
+ ) {
575
+ @include create-transform(
576
+ false,
577
+ $scale, $scale, false,
578
+ false, false, $rotate, false,
579
+ $trans-x, $trans-y, false,
580
+ $skew-x, $skew-y,
581
+ $origin-x, $origin-y, false,
582
+ false
583
+ );
584
+ }