Permalink
Browse files

Extended transition mixin to support multiple transitions and other s…

…pecific properties
  • Loading branch information...
1 parent cc70887 commit e20eb3d480bb77e547013a712972ba6e5c1128e1 Phil LaPier committed Jun 25, 2011
Showing with 122 additions and 6 deletions.
  1. +1 −1 _animation.scss
  2. +121 −5 _transition.scss
View
2 _animation.scss
@@ -100,7 +100,7 @@
animation-fill-mode: $mode;
}
-// Shorthand for a basic animation. Supports multiple parenthesis-deliminated values for each variable.
+// Shorthand for a basic animation. Supports multiple parentheses-deliminated values for each variable.
// Example: @include animation-basic((slideup, fadein), (1.0s, 2.0s), ease-in);
@mixin animation-basic ($name, $time: 0, $motion: ease) {
$length-of-name: length($name);
View
126 _transition.scss
@@ -1,6 +1,122 @@
-@mixin transition($property: all, $ratio: 0.15s, $ease: ease-out) {
- -webkit-transition: $property $ratio $ease;
- -moz-transition: $property $ratio $ease;
- -o-transition: $property $ratio $ease;
- transition: $property $ratio $ease;
+// Shorthand mixin. Supports multiple parentheses-deliminated values for each variable.
+// Example: @include transition (all, 2.0s, ease-in-out);
+// @include transition ((opacity, width), (1.0s, 2.0s), ease-in, (0, 2s));
+// @include transition ($property:(opacity, width), $delay: (1.5s, 2.5s));
+@mixin transition ($property: all, $duration: 0.15s, $timing-function: ease-out, $delay: 0) {
+ // Detect # of args passed into each variable
+ $length-of-property: length($property);
+ $length-of-duration: length($duration);
+ $length-of-timing-function: length($timing-function);
+ $length-of-delay: length($delay);
+
+ @if $length-of-property > 1 {
+ @include transition-property(zip($property));
+ } @else {
+ @include transition-property( $property);
+ }
+
+ @if $length-of-duration > 1 {
+ @include transition-duration(zip($duration));
+ } @else {
+ @include transition-duration( $duration);
+ }
+
+ @if $length-of-timing-function > 1 {
+ @include transition-timing-function(zip($timing-function));
+ } @else {
+ @include transition-timing-function( $timing-function);
+ }
+
+ @if $length-of-delay > 1 {
+ @include transition-delay(zip($delay));
+ } @else {
+ @include transition-delay( $delay);
+ }
}
+
+
+@mixin transition-property ($property-1: all,
+ $property-2: false, $property-3: false,
+ $property-4: false, $property-5: false,
+ $property-6: false, $property-7: false,
+ $property-8: false, $property-9: false)
+ {
+ $full: $property-1;
+ @each $property in
+ $property-2, $property-3,
+ $property-4, $property-5,
+ $property-6, $property-7,
+ $property-8, $property-9{
+ @if $property {
+ $full: $full, $property;
+ }
+ }
+ -webkit-transition-property: $full;
+ -moz-transition-property: $full;
+ transition-property: $full;
+}
+
+@mixin transition-duration ($time-1: 0,
+ $time-2: false, $time-3: false,
+ $time-4: false, $time-5: false,
+ $time-6: false, $time-7: false,
+ $time-8: false, $time-9: false)
+ {
+ $full: $time-1;
+ @each $time in
+ $time-2, $time-3,
+ $time-4, $time-5,
+ $time-6, $time-7,
+ $time-8, $time-9{
+ @if $time {
+ $full: $full, $time;
+ }
+ }
+ -webkit-transition-duration: $full;
+ -moz-transition-duration: $full;
+ transition-duration: $full;
+}
+
+@mixin transition-timing-function ($motion-1: ease,
+ $motion-2: false, $motion-3: false,
+ $motion-4: false, $motion-5: false,
+ $motion-6: false, $motion-7: false,
+ $motion-8: false, $motion-9: false)
+ {
+ $full: $motion-1;
+ @each $motion in
+ $motion-2, $motion-3,
+ $motion-4, $motion-5,
+ $motion-6, $motion-7,
+ $motion-8, $motion-9{
+ @if $motion {
+ $full: $full, $motion;
+ }
+ }
+// ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier()
+ -webkit-transition-timing-function: $full;
+ -moz-transition-timing-function: $full;
+ transition-timing-function: $full;
+}
+
+@mixin transition-delay ($time-1: 0,
+ $time-2: false, $time-3: false,
+ $time-4: false, $time-5: false,
+ $time-6: false, $time-7: false,
+ $time-8: false, $time-9: false)
+ {
+ $full: $time-1;
+ @each $time in
+ $time-2, $time-3,
+ $time-4, $time-5,
+ $time-6, $time-7,
+ $time-8, $time-9{
+ @if $time {
+ $full: $full, $time;
+ }
+ }
+ -webkit-transition-delay: $full;
+ -moz-transition-delay: $full;
+ transition-delay: $full;
+}
+

0 comments on commit e20eb3d

Please sign in to comment.