// studio animations & keyframes // ==================== // rotate clockwise @mixin rotateClockwise { 0% { @include transform(rotate(0deg)); } 100% { @include transform(rotate(360deg)); } } @-moz-keyframes rotateClockwise { @include rotateClockwise(); } @-webkit-keyframes rotateClockwise { @include rotateClockwise(); } @-o-keyframes rotateClockwise { @include rotateClockwise(); } @keyframes rotateClockwise { @include rotateClockwise();} @mixin anim-rotateClockwise($duration, $timing: ease-in-out, $count: 1, $delay: 0) { @include animation-name(rotateClockwise); @include animation-duration($duration); @include animation-delay($delay); @include animation-timing-function($timing); @include animation-iteration-count($count); @include animation-fill-mode(both); } // ==================== // notifications slide up @mixin notificationsSlideUp { 0% { @include transform(translateY(0)); } 90% { @include transform(translateY(-($notification-height))); } 100% { @include transform(translateY(-($notification-height*0.99))); } } @-moz-keyframes notificationsSlideUp { @include notificationsSlideUp(); } @-webkit-keyframes notificationsSlideUp { @include notificationsSlideUp(); } @-o-keyframes notificationsSlideUp { @include notificationsSlideUp(); } @keyframes notificationsSlideUp { @include notificationsSlideUp();} @mixin anim-notificationsSlideUp($duration, $timing: ease-in-out, $count: 1, $delay: 0) { @include animation-name(notificationsSlideUp); @include animation-duration($duration); @include animation-delay($delay); @include animation-timing-function($timing); @include animation-iteration-count($count); @include animation-fill-mode(both); } // ==================== // notifications slide down @mixin notificationsSlideDown { 0% { @include transform(translateY(-($notification-height*0.99))); } 10% { @include transform(translateY(-($notification-height))); } 100% { @include transform(translateY(0)); } } @-moz-keyframes notificationsSlideDown { @include notificationsSlideDown(); } @-webkit-keyframes notificationsSlideDown { @include notificationsSlideDown(); } @-o-keyframes notificationsSlideDown { @include notificationsSlideDown(); } @keyframes notificationsSlideDown { @include notificationsSlideDown();} @mixin anim-notificationsSlideDown($duration, $timing: ease-in-out, $count: 1, $delay: 0) { @include animation-name(notificationsSlideDown); @include animation-duration($duration); @include animation-delay($delay); @include animation-timing-function($timing); @include animation-iteration-count($count); @include animation-fill-mode(both); } // ==================== // notifications slide up then down @mixin notificationsSlideUpDown { 0%, 100% { @include transform(translateY(0)); } 15%, 85% { @include transform(translateY(-($notification-height))); } 20%, 80% { @include transform(translateY(-($notification-height*0.99))); } } @-moz-keyframes notificationsSlideUpDown { @include notificationsSlideUpDown(); } @-webkit-keyframes notificationsSlideUpDown { @include notificationsSlideUpDown(); } @-o-keyframes notificationsSlideUpDown { @include notificationsSlideUpDown(); } @keyframes notificationsSlideUpDown { @include notificationsSlideUpDown();} @mixin anim-notificationsSlideUpDown($duration, $timing: ease-in-out, $count: 1, $delay: 0) { @include animation-name(notificationsSlideUpDown); @include animation-duration($duration); @include animation-delay($delay); @include animation-timing-function($timing); @include animation-iteration-count($count); @include animation-fill-mode(both); } // ==================== // bounce in @mixin bounceIn { 0% { opacity: 0; @include transform(scale(0.3)); } 50% { opacity: 1; @include transform(scale(1.05)); } 100% { @include transform(scale(1)); } } @-moz-keyframes bounceIn { @include bounceIn(); } @-webkit-keyframes bounceIn { @include bounceIn(); } @-o-keyframes bounceIn { @include bounceIn(); } @keyframes bounceIn { @include bounceIn();} @mixin anim-bounceIn($duration, $timing: ease-in-out, $count: 1, $delay: 0) { @include animation-name(bounceIn); @include animation-duration($duration); @include animation-delay($delay); @include animation-timing-function($timing); @include animation-iteration-count($count); @include animation-fill-mode(both); } // ==================== // bounce in @mixin bounceOut { 0% { opacity: 0; @include transform(scale(0.3)); } 50% { opacity: 1; @include transform(scale(1.05)); } 100% { @include transform(scale(1)); } 0% { @include transform(scale(1)); } 50% { opacity: 1; @include transform(scale(1.05)); } 100% { opacity: 0; @include transform(scale(0.3)); } } @-moz-keyframes bounceOut { @include bounceOut(); } @-webkit-keyframes bounceOut { @include bounceOut(); } @-o-keyframes bounceOut { @include bounceOut(); } @keyframes bounceOut { @include bounceOut();} @mixin anim-bounceOut($duration, $timing: ease-in-out, $count: 1, $delay: 0) { @include animation-name(bounceOut); @include animation-duration($duration); @include animation-delay($delay); @include animation-timing-function($timing); @include animation-iteration-count($count); @include animation-fill-mode(both); }