saffron 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.
Files changed (135) hide show
  1. data/.gitignore +5 -0
  2. data/.travis.yml +5 -0
  3. data/Gemfile +4 -0
  4. data/Gemfile.lock +43 -0
  5. data/MIT +21 -0
  6. data/README.md +63 -0
  7. data/Rakefile +16 -0
  8. data/app/assets/stylesheets/_variables.scss +18 -0
  9. data/app/assets/stylesheets/entrances/_drop-in.scss +19 -0
  10. data/app/assets/stylesheets/entrances/_fade-in-down.scss +13 -0
  11. data/app/assets/stylesheets/entrances/_fade-in-left.scss +13 -0
  12. data/app/assets/stylesheets/entrances/_fade-in-right.scss +13 -0
  13. data/app/assets/stylesheets/entrances/_fade-in-up.scss +13 -0
  14. data/app/assets/stylesheets/entrances/_fade-in-zoom-big.scss +20 -0
  15. data/app/assets/stylesheets/entrances/_fade-in-zoom.scss +14 -0
  16. data/app/assets/stylesheets/entrances/_fade-in.scss +13 -0
  17. data/app/assets/stylesheets/entrances/_newspaper.scss +14 -0
  18. data/app/assets/stylesheets/entrances/_pop-in.scss +14 -0
  19. data/app/assets/stylesheets/entrances/_rise-in.scss +13 -0
  20. data/app/assets/stylesheets/entrances/_slide-in.scss +35 -0
  21. data/app/assets/stylesheets/entrances/_stretch.scss +33 -0
  22. data/app/assets/stylesheets/entrances/_turn-in.scss +31 -0
  23. data/app/assets/stylesheets/exits/_compress.scss +25 -0
  24. data/app/assets/stylesheets/exits/_drop-out.scss +14 -0
  25. data/app/assets/stylesheets/exits/_explode.scss +14 -0
  26. data/app/assets/stylesheets/exits/_fade-out-down.scss +14 -0
  27. data/app/assets/stylesheets/exits/_fade-out-left.scss +13 -0
  28. data/app/assets/stylesheets/exits/_fade-out-right.scss +13 -0
  29. data/app/assets/stylesheets/exits/_fade-out-up.scss +14 -0
  30. data/app/assets/stylesheets/exits/_fade-out-zoom-big.scss +19 -0
  31. data/app/assets/stylesheets/exits/_fade-out-zoom.scss +14 -0
  32. data/app/assets/stylesheets/exits/_fade-out.scss +13 -0
  33. data/app/assets/stylesheets/exits/_poof.scss +17 -0
  34. data/app/assets/stylesheets/exits/_rise-out.scss +14 -0
  35. data/app/assets/stylesheets/exits/_slide-out.scss +29 -0
  36. data/app/assets/stylesheets/exits/_turn-out.scss +33 -0
  37. data/app/assets/stylesheets/helpers/_animation.scss +3 -0
  38. data/app/assets/stylesheets/helpers/_contains.scss +4 -0
  39. data/app/assets/stylesheets/helpers/_keyframes.scss +25 -0
  40. data/app/assets/stylesheets/helpers/_prefix.scss +39 -0
  41. data/app/assets/stylesheets/helpers/_transform.scss +9 -0
  42. data/app/assets/stylesheets/helpers/_transition.scss +7 -0
  43. data/app/assets/stylesheets/in-place/_around-the-world.scss +12 -0
  44. data/app/assets/stylesheets/in-place/_bounce.scss +24 -0
  45. data/app/assets/stylesheets/in-place/_colors.scss +23 -0
  46. data/app/assets/stylesheets/in-place/_contract.scss +7 -0
  47. data/app/assets/stylesheets/in-place/_cube-flip.scss +55 -0
  48. data/app/assets/stylesheets/in-place/_enlarge.scss +7 -0
  49. data/app/assets/stylesheets/in-place/_expand.scss +6 -0
  50. data/app/assets/stylesheets/in-place/_flip.scss +19 -0
  51. data/app/assets/stylesheets/in-place/_float.scss +17 -0
  52. data/app/assets/stylesheets/in-place/_ping.scss +13 -0
  53. data/app/assets/stylesheets/in-place/_pulsate.scss +14 -0
  54. data/app/assets/stylesheets/in-place/_quiver.scss +42 -0
  55. data/app/assets/stylesheets/in-place/_shake.scss +24 -0
  56. data/app/assets/stylesheets/in-place/_spin.scss +12 -0
  57. data/app/assets/stylesheets/in-place/_square-dance.scss +18 -0
  58. data/app/assets/stylesheets/in-place/_sunrise.scss +12 -0
  59. data/app/assets/stylesheets/in-place/_sway.scss +17 -0
  60. data/app/assets/stylesheets/in-place/_teeter.scss +29 -0
  61. data/app/assets/stylesheets/saffron.scss +62 -0
  62. data/bin/saffron +9 -0
  63. data/features/install.feature +28 -0
  64. data/features/step_definitions/saffron.rb +37 -0
  65. data/features/support/env.rb +1 -0
  66. data/features/update.feature +37 -0
  67. data/features/version.feature +10 -0
  68. data/lib/saffron.rb +13 -0
  69. data/lib/saffron/engine.rb +4 -0
  70. data/lib/saffron/installer.rb +55 -0
  71. data/lib/saffron/version.rb +3 -0
  72. data/saffron.gemspec +31 -0
  73. data/saffron/_variables.scss +18 -0
  74. data/saffron/entrances/_drop-in.scss +19 -0
  75. data/saffron/entrances/_fade-in-down.scss +13 -0
  76. data/saffron/entrances/_fade-in-left.scss +13 -0
  77. data/saffron/entrances/_fade-in-right.scss +13 -0
  78. data/saffron/entrances/_fade-in-up.scss +13 -0
  79. data/saffron/entrances/_fade-in-zoom-big.scss +20 -0
  80. data/saffron/entrances/_fade-in-zoom.scss +14 -0
  81. data/saffron/entrances/_fade-in.scss +13 -0
  82. data/saffron/entrances/_newspaper.scss +14 -0
  83. data/saffron/entrances/_pop-in.scss +14 -0
  84. data/saffron/entrances/_rise-in.scss +13 -0
  85. data/saffron/entrances/_slide-in.scss +35 -0
  86. data/saffron/entrances/_stretch.scss +33 -0
  87. data/saffron/entrances/_turn-in.scss +31 -0
  88. data/saffron/exits/_compress.scss +25 -0
  89. data/saffron/exits/_drop-out.scss +14 -0
  90. data/saffron/exits/_explode.scss +14 -0
  91. data/saffron/exits/_fade-out-down.scss +14 -0
  92. data/saffron/exits/_fade-out-left.scss +13 -0
  93. data/saffron/exits/_fade-out-right.scss +13 -0
  94. data/saffron/exits/_fade-out-up.scss +14 -0
  95. data/saffron/exits/_fade-out-zoom-big.scss +19 -0
  96. data/saffron/exits/_fade-out-zoom.scss +14 -0
  97. data/saffron/exits/_fade-out.scss +13 -0
  98. data/saffron/exits/_poof.scss +17 -0
  99. data/saffron/exits/_rise-out.scss +14 -0
  100. data/saffron/exits/_slide-out.scss +29 -0
  101. data/saffron/exits/_turn-out.scss +33 -0
  102. data/saffron/helpers/_animation.scss +3 -0
  103. data/saffron/helpers/_contains.scss +4 -0
  104. data/saffron/helpers/_keyframes.scss +25 -0
  105. data/saffron/helpers/_prefix.scss +39 -0
  106. data/saffron/helpers/_transform.scss +9 -0
  107. data/saffron/helpers/_transition.scss +7 -0
  108. data/saffron/in-place/_around-the-world.scss +12 -0
  109. data/saffron/in-place/_bounce.scss +24 -0
  110. data/saffron/in-place/_colors.scss +23 -0
  111. data/saffron/in-place/_contract.scss +7 -0
  112. data/saffron/in-place/_cube-flip.scss +55 -0
  113. data/saffron/in-place/_enlarge.scss +7 -0
  114. data/saffron/in-place/_expand.scss +6 -0
  115. data/saffron/in-place/_flip.scss +19 -0
  116. data/saffron/in-place/_float.scss +17 -0
  117. data/saffron/in-place/_ping.scss +13 -0
  118. data/saffron/in-place/_pulsate.scss +14 -0
  119. data/saffron/in-place/_quiver.scss +42 -0
  120. data/saffron/in-place/_shake.scss +24 -0
  121. data/saffron/in-place/_spin.scss +12 -0
  122. data/saffron/in-place/_square-dance.scss +18 -0
  123. data/saffron/in-place/_sunrise.scss +12 -0
  124. data/saffron/in-place/_sway.scss +17 -0
  125. data/saffron/in-place/_teeter.scss +29 -0
  126. data/saffron/saffron.scss +62 -0
  127. data/tasks/.csscomb.json +297 -0
  128. data/tasks/.csslintrc +19 -0
  129. data/tasks/Gruntfile.js +111 -0
  130. data/tasks/compiled/index.html +11 -0
  131. data/tasks/compiled/saffron.css +3049 -0
  132. data/tasks/compiled/test.css +3086 -0
  133. data/tasks/package.json +32 -0
  134. data/tasks/test.scss +13 -0
  135. metadata +278 -0
@@ -0,0 +1,13 @@
1
+ require "saffron/installer"
2
+ require "sass" unless defined? Sass
3
+
4
+ module Saffron
5
+ if defined?(Rails) && defined?(Rails::Engine)
6
+ class Engine < ::Rails::Engine
7
+ require "saffron/engine"
8
+ end
9
+ else
10
+ Sass.load_paths << File.expand_path("../saffron", __FILE__)
11
+ end
12
+ end
13
+
@@ -0,0 +1,4 @@
1
+ module Saffron
2
+ class Engine < Rails::Engine
3
+ end
4
+ end
@@ -0,0 +1,55 @@
1
+ require "saffron/version"
2
+ require "thor"
3
+
4
+ module Saffron
5
+ class Installer < Thor
6
+ include Thor::Actions
7
+ source_root File.dirname(__FILE__)
8
+ map ["--version", "-v"] => :version
9
+
10
+ desc "install", "Installs Saffron"
11
+ method_option :path, :aliases => "-p", :desc => "Set the install path"
12
+ def install
13
+ unless File.directory? set_destination
14
+ install_saffron
15
+ puts "Saffron succesfully installed in #{@destination}/"
16
+ else
17
+ puts "Saffron already exists."
18
+ end
19
+ end
20
+
21
+ desc "update", "Updates Saffron"
22
+ method_option :path, :aliases => "-p", :desc => "Set the update path"
23
+ def update
24
+ if File.directory? set_destination
25
+ remove_saffron
26
+ install_saffron
27
+ puts "Saffron succesfully updated in #{@destination}/"
28
+ else
29
+ puts "Saffron not found. No updates occured."
30
+ end
31
+ end
32
+
33
+ desc "version", "Outputs version number"
34
+ def version
35
+ say "Saffron #{Saffron::VERSION}"
36
+ end
37
+
38
+ private
39
+ def set_destination
40
+ @destination ||= if options[:path]
41
+ File.join(options[:path], "saffron")
42
+ else
43
+ "saffron"
44
+ end
45
+ end
46
+
47
+ def install_saffron
48
+ directory "../../saffron/", @destination
49
+ end
50
+
51
+ def remove_saffron
52
+ remove_dir @destination
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,3 @@
1
+ module Saffron
2
+ VERSION = "0.2.0"
3
+ end
@@ -0,0 +1,31 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'saffron/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "saffron"
8
+ spec.version = Saffron::VERSION
9
+ spec.authors = ["JC"]
10
+ spec.email = ["j@colindres.me"]
11
+ spec.summary = "A simple sass mixin library for animations and transitions."
12
+ spec.homepage = "https://github.com/corporadobob/saffron"
13
+ spec.license = "MIT"
14
+ spec.description = <<-DESC
15
+ Saffron is a collection of sass mixins and helpers that make adding CSS3 animations and transitions much simpler.
16
+ Just include a mixin in your sass declaration, then set any configuration using variables and mixin parameters.
17
+ DESC
18
+
19
+
20
+ spec.files = `git ls-files`.split($/)
21
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
22
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
23
+ spec.require_paths = ["lib"]
24
+
25
+ spec.add_dependency "sass", "~> 3.2"
26
+ spec.add_dependency "thor"
27
+
28
+ spec.add_development_dependency "bundler", "~> 1.3"
29
+ spec.add_development_dependency "rake"
30
+ spec.add_development_dependency "aruba", "~> 0.5"
31
+ end
@@ -0,0 +1,18 @@
1
+ $prefixes: ("webkit", "moz", "o", "ms", "spec") !default;
2
+ $translateY-distance: 1.334em !default;
3
+ $translateX-distance: 1.334em !default;
4
+ $drop-rise-distance: 10em !default;
5
+ $shake-distance: 0.55em !default;
6
+ $teeter-angle: 10deg !default;
7
+ $quiver-angle: 2deg !default;
8
+ $float-bob-distance: 0.25em !default;
9
+ $float-bob-angle: 1deg !default;
10
+ $sway-angle: 3deg !default;
11
+ $turn-angle: 225deg !default;
12
+ $pulsate-scale: 1.1 !default;
13
+ $stretch-compress-exageration: 1.05 !default;
14
+ $distance-from-origin: 5em !default;
15
+ $sunrise-arch: -15em !default;
16
+ $enlarge-contract-multiple: 1.15 !default;
17
+ $enlarge-contract-jump: 1em !default;
18
+ $flip-scale: 1.2 !default;
@@ -0,0 +1,19 @@
1
+ @include keyframes(dropIn) {
2
+ 0% {
3
+ opacity: 0;
4
+ @include transform(translateY($drop-rise-distance * -1) rotate(0) translateZ(0));
5
+ }
6
+ 10% {
7
+ @include transform(translateY($drop-rise-distance * -1) rotate(-40deg));
8
+ }
9
+ 90% {
10
+ opacity: 1;
11
+ }
12
+ 100% {
13
+ @include transform(translateY(0) rotate(0));
14
+ }
15
+ }
16
+
17
+ @mixin dropIn($duration: 0.5s, $delay: 0s, $fill-mode: forwards) {
18
+ @include animation(dropIn $duration $delay $fill-mode);
19
+ }
@@ -0,0 +1,13 @@
1
+ @include keyframes(fadeInDown) {
2
+ 0% {
3
+ opacity: 0;
4
+ @include transform(translateY($translateY-distance * -1) translateZ(0));
5
+ }
6
+ 100% {
7
+ opacity: 1;
8
+ }
9
+ }
10
+
11
+ @mixin fadeInDown($duration: 1s, $delay: 0s, $fill-mode: forwards) {
12
+ @include animation(fadeInDown $duration $delay $fill-mode);
13
+ }
@@ -0,0 +1,13 @@
1
+ @include keyframes(fadeInLeft) {
2
+ 0% {
3
+ opacity: 0;
4
+ @include transform(translateX($translateX-distance * -1) translateZ(0));
5
+ }
6
+ 100% {
7
+ opacity: 1;
8
+ }
9
+ }
10
+
11
+ @mixin fadeInLeft($duration: 1s, $delay: 0s, $fill-mode: forwards) {
12
+ @include animation(fadeInLeft $duration $delay $fill-mode);
13
+ }
@@ -0,0 +1,13 @@
1
+ @include keyframes(fadeInRight) {
2
+ 0% {
3
+ opacity: 0;
4
+ @include transform(translateX($translateX-distance) translateZ(0));
5
+ }
6
+ 100% {
7
+ opacity: 1;
8
+ }
9
+ }
10
+
11
+ @mixin fadeInRight($duration: 1s, $delay: 0s, $fill-mode: forwards) {
12
+ @include animation(fadeInRight $duration $delay $fill-mode);
13
+ }
@@ -0,0 +1,13 @@
1
+ @include keyframes(fadeInUp) {
2
+ 0% {
3
+ opacity: 0;
4
+ @include transform(translateY($translateY-distance) translateZ(0));
5
+ }
6
+ 100% {
7
+ opacity: 1;
8
+ }
9
+ }
10
+
11
+ @mixin fadeInUp($duration: 1s, $delay: 0s, $fill-mode: forwards) {
12
+ @include animation(fadeInUp $duration $delay $fill-mode);
13
+ }
@@ -0,0 +1,20 @@
1
+ @include keyframes(fadeInZoomBig) {
2
+ 0% {
3
+ opacity: 0;
4
+ @include transform(scale(0) translateZ(0));
5
+ }
6
+ 60% {
7
+ @include transform(scale(1.25));
8
+ }
9
+ 80% {
10
+ @include transform(scale(0.95));
11
+ }
12
+ 100% {
13
+ opacity: 1;
14
+ @include transform(scale(1));
15
+ }
16
+ }
17
+
18
+ @mixin fadeInZoomBig($duration: 1s, $delay: 0s, $fill-mode: forwards) {
19
+ @include animation(fadeInZoomBig $duration $delay $fill-mode);
20
+ }
@@ -0,0 +1,14 @@
1
+ @include keyframes(fadeInZoom) {
2
+ 0% {
3
+ opacity: 0;
4
+ @include transform(scale(0) translateZ(0));
5
+ }
6
+ 100% {
7
+ opacity: 1;
8
+ @include transform(scale(1));
9
+ }
10
+ }
11
+
12
+ @mixin fadeInZoom($duration: 1s, $delay: 0s, $fill-mode: forwards) {
13
+ @include animation(fadeInZoom $duration $delay $fill-mode);
14
+ }
@@ -0,0 +1,13 @@
1
+ @include keyframes(fadeIn) {
2
+ 0% {
3
+ opacity: 0;
4
+ @include transform(translateZ(0));
5
+ }
6
+ 100% {
7
+ opacity: 1;
8
+ }
9
+ }
10
+
11
+ @mixin fadeIn($duration: 1s, $delay: 0s, $fill-mode: forwards) {
12
+ @include animation(fadeIn $duration $delay $fill-mode);
13
+ }
@@ -0,0 +1,14 @@
1
+ @include keyframes(newspaper) {
2
+ 0% {
3
+ opacity: 0;
4
+ @include transform(rotate(720deg) scale(0.33) translateZ(0));
5
+ }
6
+ 100% {
7
+ opacity: 1;
8
+ @include transform(rotate(0deg) scale(1));
9
+ }
10
+ }
11
+
12
+ @mixin newspaper($duration: 1s, $delay: 0s, $fill-mode: both, $count: 1, $timing: ease-in-out) {
13
+ @include animation(newspaper $count $duration $delay $fill-mode $timing);
14
+ }
@@ -0,0 +1,14 @@
1
+ @include keyframes(popIn) {
2
+ 0% {
3
+ @include transform(scale(0.25) translateZ(0));
4
+ opacity: 0;
5
+ }
6
+ 100% {
7
+ opacity: 1;
8
+ @include transform(scale(1));
9
+ }
10
+ }
11
+
12
+ @mixin popIn($duration: 0.5s, $delay: 0s, $fill-mode: forwards) {
13
+ @include animation(popIn $duration $delay $fill-mode);
14
+ }
@@ -0,0 +1,13 @@
1
+ @include keyframes(riseIn) {
2
+ 0% {
3
+ opacity: 0;
4
+ @include transform(translateY($drop-rise-distance) translateZ(0));
5
+ }
6
+ 50% {
7
+ opacity: 1
8
+ }
9
+ }
10
+
11
+ @mixin riseIn($duration: 0.5s, $delay: 0s, $fill-mode: forwards) {
12
+ @include animation(riseIn $duration $delay $fill-mode);
13
+ }
@@ -0,0 +1,35 @@
1
+ @include keyframes(slideInLeft) {
2
+ 0% {
3
+ opacity: 0;
4
+ @include transform(translateX($translateX-distance * -10) translateZ(0));
5
+ }
6
+ 65% {
7
+ opacity: 1;
8
+ @include transform(translateX($translateX-distance));
9
+ }
10
+ 100% {
11
+ @include transform(translateX(0));
12
+ }
13
+ }
14
+
15
+ @mixin slideInLeft($duration: 1s, $delay: 0s, $fill-mode: forwards) {
16
+ @include animation(slideInLeft $duration $delay $fill-mode);
17
+ }
18
+
19
+ @include keyframes(slideInRight) {
20
+ 0% {
21
+ opacity: 0;
22
+ @include transform(translateX($translateX-distance * 10) translateZ(0));
23
+ }
24
+ 65% {
25
+ opacity: 1;
26
+ @include transform(translateX($translateX-distance * -1));
27
+ }
28
+ 100% {
29
+ @include transform(translateX(0));
30
+ }
31
+ }
32
+
33
+ @mixin slideInRight($duration: 1s, $delay: 0s, $fill-mode: forwards) {
34
+ @include animation(slideInRight $duration $delay $fill-mode);
35
+ }
@@ -0,0 +1,33 @@
1
+ @include keyframes(stretch) {
2
+ 0% {
3
+ @include transform(scaleY(0) translateZ(0));
4
+ }
5
+ 40% {
6
+ @include transform(scaleY($stretch-compress-exageration));
7
+ }
8
+ 60% {
9
+ @include transform(scaleY($stretch-compress-exageration - ($stretch-compress-exageration * .075)));
10
+ }
11
+ 80% {
12
+ @include transform(scaleY($stretch-compress-exageration));
13
+ }
14
+ 100% {
15
+ @include transform(scaleY($stretch-compress-exageration - ($stretch-compress-exageration * .075)));
16
+ }
17
+ 80% {
18
+ @include transform(scaleY($stretch-compress-exageration - ($stretch-compress-exageration * .025)));
19
+ }
20
+ 100% {
21
+ @include transform(scaleY(1));
22
+ }
23
+ }
24
+
25
+ @mixin stretchUp($duration: 1.75s, $delay: 0s, $count: 1, $fill-mode: both, $timing: ease-out) {
26
+ @include animation(stretch $count $duration $delay $fill-mode $timing);
27
+ @include prefix(transform-origin, 0 100%, webkit moz spec);
28
+ }
29
+
30
+ @mixin stretchDown($duration: 1.75s, $delay: 0s, $count: 1, $fill-mode: both, $timing: ease-out) {
31
+ @include animation(stretch $count $duration $delay $fill-mode $timing);
32
+ @include prefix(transform-origin, 0 0, webkit moz spec);
33
+ }
@@ -0,0 +1,31 @@
1
+ @include keyframes(turnDownIn) {
2
+ 0% {
3
+ opacity: 0;
4
+ @include transform(perspective(500px) rotateX($turn-angle * -1) translateZ(150px));
5
+ }
6
+ 100% {
7
+ opacity: 1;
8
+ @include transform(perspective(800px) rotateX(0deg) translateZ(0));
9
+ @include prefix(backface-visibility, hidden, webkit moz spec);
10
+ }
11
+ }
12
+
13
+ @mixin turnDownIn($duration: 1s, $delay: 0s, $fill-mode: forwards) {
14
+ @include animation(turnDownIn $duration $delay $fill-mode);
15
+ }
16
+
17
+ @include keyframes(turnUpIn) {
18
+ 0% {
19
+ opacity: 0;
20
+ @include transform(perspective(500px) rotateX($turn-angle) translateZ(150px));
21
+ }
22
+ 100% {
23
+ opacity: 1;
24
+ @include transform(perspective(800px) rotateX(0deg) translateZ(0));
25
+ @include prefix(backface-visibility, hidden, webkit moz spec);
26
+ }
27
+ }
28
+
29
+ @mixin turnUpIn($duration: 1s, $delay: 0s, $fill-mode: forwards) {
30
+ @include animation(turnUpIn $duration $delay $fill-mode);
31
+ }
@@ -0,0 +1,25 @@
1
+ @include keyframes(compress) {
2
+ 0% {
3
+ @include transform(scaleY(1) translateZ(0));
4
+ }
5
+ 30% {
6
+ @include transform(scaleY($stretch-compress-exageration));
7
+ }
8
+ 50% {
9
+ @include transform(scaleY($stretch-compress-exageration - ($stretch-compress-exageration * .075)));
10
+ }
11
+ 100% {
12
+ @include transform(scaleY(0));
13
+ }
14
+ }
15
+
16
+ @mixin compressUp($duration: 0.7s, $delay: 0s, $count: 1, $fill-mode: both, $timing: ease-out) {
17
+ @include animation(compress $count $duration $delay $fill-mode $timing);
18
+ @include prefix(transform-origin, 0 0, webkit moz spec);
19
+ }
20
+
21
+ @mixin compressDown($duration: 0.7s, $delay: 0s, $count: 1, $fill-mode: both, $timing: ease-out) {
22
+ @include animation(compress $count $duration $delay $fill-mode $timing);
23
+ @include prefix(transform-origin, 0 100%, webkit moz spec);
24
+ }
25
+
@@ -0,0 +1,14 @@
1
+ @include keyframes(dropOut) {
2
+ 0% {
3
+ opacity: 1;
4
+ @include transform(translateZ(0));
5
+ }
6
+ 100% {
7
+ opacity: 0;
8
+ @include transform(translateY($drop-rise-distance) rotate(-40deg));
9
+ }
10
+ }
11
+
12
+ @mixin dropOut($duration: 0.5s, $delay: 0s, $fill-mode: forwards) {
13
+ @include animation(dropOut $duration $delay $fill-mode);
14
+ }