#Fixed# easy-animation | Animation for Sass

原文链接:http://www.cnblogs.com/maplejan/p/3659830.html

 

主要修复3.4版本后变量作用域的问题。

 

代码如下:

  1 /* easy-animation.scss */
  2 
  3 
  4 // easy-animation
  5 // Author: Maple Jan
  6 // Date: 2016-10-21
  7 
  8 
  9 // Support browser's private prefix.
 10 $ea-prefix-for-webkit:       true !default;
 11 $ea-prefix-for-mozilla:      true !default;
 12 $ea-prefix-for-microsoft:    true !default;
 13 $ea-prefix-for-opera:        true !default;
 14 $ea-prefix-for-spec:         true !default; // required for keyframe mixin
 15 
 16 
 17 // Disable all browser's private prefix.
 18 @mixin ea-disable-prefix-for-all() {
 19   $ea-prefix-for-webkit:    false !global;
 20   $ea-prefix-for-mozilla:   false !global;
 21   $ea-prefix-for-microsoft: false !global;
 22   $ea-prefix-for-opera:     false !global;
 23   $ea-prefix-for-spec:      false !global;
 24 }
 25 
 26 
 27 // Example usage:
 28 // @include ea-transition(all 2s ease 0s);
 29 @mixin ea-transition($value, $prefixs: webkit moz ms o spec) {
 30   @each $prefix in $prefixs {
 31     @if $prefix == webkit {
 32       @if $ea-prefix-for-webkit {
 33         -webkit-transition: $value;
 34       }
 35     }
 36     @else if $prefix == moz {
 37       @if $ea-prefix-for-mozilla {
 38         -moz-transition: $value;
 39       }
 40     }
 41     @else if $prefix == ms {
 42       @if $ea-prefix-for-microsoft {
 43         -ms-transition: $value;
 44       }
 45     }
 46     @else if $prefix == o {
 47       @if $ea-prefix-for-opera {
 48         -o-transition: $value;
 49       }
 50     }
 51     @else if $prefix == spec {
 52       @if $ea-prefix-for-spec {
 53         transition: $value;
 54       }
 55     }
 56     @else  {
 57       @warn "Unrecognized prefix: #{$prefix}";
 58     }
 59   }
 60 }
 61 
 62 
 63 // Example usage:
 64 // @include ea-transform(scale(1));
 65 @mixin ea-transform($value, $prefixs: webkit moz ms o spec) {
 66   @each $prefix in $prefixs {
 67     @if $prefix == webkit {
 68       @if $ea-prefix-for-webkit {
 69         -webkit-transform: $value;
 70       }
 71     }
 72     @else if $prefix == moz {
 73       @if $ea-prefix-for-mozilla {
 74         -moz-transform: $value;
 75       }
 76     }
 77     @else if $prefix == ms {
 78       @if $ea-prefix-for-microsoft {
 79         -ms-transform: $value;
 80       }
 81     }
 82     @else if $prefix == o {
 83       @if $ea-prefix-for-opera {
 84         -o-transform: $value;
 85       }
 86     }
 87     @else if $prefix == spec {
 88       @if $ea-prefix-for-spec {
 89         transform: $value;
 90       }
 91     }
 92     @else  {
 93       @warn "Unrecognized prefix: #{$prefix}";
 94     }
 95   }
 96 }
 97 
 98 
 99 // Example usage:
100 // @include ea-animation(wrap_s0_p1, 2s, ease, 0s, infinite);
101 @mixin ea-animation($name, $duration, $function: ease, $delay: 0s, $count: infinite) {
102   -webkit-animation: $name $duration $function $delay $count;
103   -moz-animation: $name $duration $function $delay $count;
104   -ms-animation: $name $duration $function $delay $count;
105   -o-animation: $name $duration $function $delay $count;
106   animation: $name $duration $function $delay $count;
107 }
108 
109 
110 // Example usage:
111 // @include ea-keyframes(wrap_s0_p1) {
112 //   0% {
113 //     opacity: 1;
114 //     @include ea-transform(scale(1));
115 //   }
116 //   50% {
117 //     opacity: 0.8;
118 //     @include ea-transform(scale(0.8));
119 //   }
120 //   100% {
121 //     opacity: 1;
122 //     @include ea-transform(scale(1));
123 //   }
124 // }
125 @mixin ea-keyframes($name) {
126   $_ea-prefix-for-webkit:       $ea-prefix-for-webkit;
127   $_ea-prefix-for-mozilla:      $ea-prefix-for-mozilla;
128   $_ea-prefix-for-microsoft:    $ea-prefix-for-microsoft;
129   $_ea-prefix-for-opera:        $ea-prefix-for-opera;
130   $_ea-prefix-for-spec:         $ea-prefix-for-spec;
131 
132 
133   @if $_ea-prefix-for-webkit {
134     @include ea-disable-prefix-for-all();
135     $ea-prefix-for-webkit: true !global;
136     @-webkit-keyframes #{$name} {
137       @content;
138     }
139   }
140   @if $_ea-prefix-for-mozilla {
141     @include ea-disable-prefix-for-all();
142     $ea-prefix-for-mozilla: true !global;
143     @-moz-keyframes #{$name} {
144       @content;
145     }
146   }
147   @if $_ea-prefix-for-microsoft {
148     @include ea-disable-prefix-for-all();
149     $ea-prefix-for-microsoft: true !global;
150     @-ms-keyframes #{$name} {
151       @content;
152     }
153   }
154   @if $_ea-prefix-for-opera {
155     @include ea-disable-prefix-for-all();
156     $ea-prefix-for-opera: true !global;
157     @-o-keyframes #{$name} {
158       @content;
159     }
160   }
161   @if $_ea-prefix-for-spec {
162     @include ea-disable-prefix-for-all();
163     $ea-prefix-for-spec: true !global;
164     @keyframes #{$name} {
165       @content;
166     }
167   }
168 
169 
170   $ea-prefix-for-webkit:    $_ea-prefix-for-webkit !global;
171   $ea-prefix-for-mozilla:   $_ea-prefix-for-mozilla !global;
172   $ea-prefix-for-microsoft: $_ea-prefix-for-microsoft !global;
173   $ea-prefix-for-opera:     $_ea-prefix-for-opera !global;
174   $ea-prefix-for-spec:      $_ea-prefix-for-spec !global;
175 }

 

posted @ 2016-10-21 18:23  Maple Jan  阅读(163)  评论(0编辑  收藏  举报