Files
ionic-framework/scss/_animations.scss
2013-11-26 23:50:34 -06:00

410 lines
9.4 KiB
SCSS

$ios7-timing-function: cubic-bezier(.1, .7, .1, 1);
/**
* Animations
* --------------------------------------------------
* The animations in this file are "simple" - not too complex
* and pretty easy on performance. They can be overidden
* and enhanced easily.
*/
.noop-animation {
> .ng-enter, &.ng-enter, > .ng-leave, &.ng-leave {
@include transition(all cubic-bezier(0.250, 0.460, 0.450, 0.940) 250ms);
position:absolute;
top:0;
right:0;
bottom:0;
left:0;
}
}
.slide-left-right {
> .ng-enter, &.ng-enter, > .ng-leave, &.ng-leave {
@include transition(all cubic-bezier(0.250, 0.460, 0.450, 0.940) 250ms);
position:absolute;
top:0;
right:0;
bottom:0;
left:0;
}
> .ng-enter, &.ng-enter {
@include translate3d(100%, 0, 0);
}
> .ng-enter.ng-enter-active, &.ng-enter.ng-enter-active {
@include translate3d(0, 0, 0);
}
> .ng-leave.ng-leave-active, &.ng-leave.ng-leave-active {
@include translate3d(-100%, 0, 0);
}
&.reverse {
> .ng-enter, &.ng-enter, > .ng-leave, &.ng-leave {
@include transition(all cubic-bezier(0.250, 0.460, 0.450, 0.940) 250ms);
position:absolute;
top:0;
right:0;
bottom:0;
left:0;
}
> .ng-enter, &.ng-enter {
@include translate3d(-100%, 0, 0);
}
> .ng-enter.ng-enter-active, &.ng-enter.ng-enter-active {
@include translate3d(0, 0, 0);
}
> .ng-leave.ng-leave-active, &.ng-leave.ng-leave-active {
@include translate3d(100%, 0, 0);
}
}
}
.slide-left-right-ios7 {
> .ng-enter, &.ng-enter, > .ng-leave, &.ng-leave {
@include transition(all 250ms);
@include transition-timing-function($ios7-timing-function);
position:absolute;
top:0;
right:0;
bottom:0;
left:0;
box-shadow: $menu-side-shadow;
}
> .ng-enter, &.ng-enter {
@include translate3d(100%, 0, 0);
}
> .ng-enter.ng-enter-active, &.ng-enter.ng-enter-active {
@include translate3d(0, 0, 0);
}
> .ng-leave.ng-leave-active, &.ng-leave.ng-leave-active {
@include translate3d(-20%, 0, 0);
}
&.reverse {
> .ng-enter, &.ng-enter, > .ng-leave, &.ng-leave {
@include transition(all cubic-bezier(0.250, 0.460, 0.450, 0.940) 250ms);
@include transition-timing-function($ios7-timing-function);
position:absolute;
top:0;
right:0;
bottom:0;
left:0;
}
> .ng-enter, &.ng-enter {
@include translate3d(-20%, 0, 0);
}
> .ng-enter.ng-enter-active, &.ng-enter.ng-enter-active {
@include translate3d(0, 0, 0);
}
> .ng-leave.ng-leave-active, &.ng-leave.ng-leave-active {
@include translate3d(100%, 0, 0);
}
}
}
@-webkit-keyframes slideInLeft {
0% {
@include translate3d(100%, 0, 0);
}
100% {
@include translate3d(0,0,0);
}
}
@-webkit-keyframes slideOutLeft {
0% {
@include translate3d(0px,0,0);
}
100% {
@include translate3d(-100%,0,0);
}
}
@-webkit-keyframes slideInRight {
0% {
@include translate3d(-100%,0,0);
}
100% {
@include translate3d(0,0,0);
}
}
@-webkit-keyframes slideOutRight {
0% {
@include translate3d(0,0,0);
}
100% {
@include translate3d(100%,0,0);
}
}
.slide-in-left {
@include translate3d(0%,0,0);
&.ng-enter, > .ng-enter {
@include animation-name(slideInLeft);
@include animation-duration(250ms);
@include animation-timing-function(ease-in-out);
@include animation-fill-mode(both);
}
&.ng-leave, > .ng-leave {
@include animation-name(slideOutLeft);
@include animation-duration(250ms);
@include animation-timing-function(ease-in-out);
@include animation-fill-mode(both);
}
}
.slide-in-left-add {
@include translate3d(100%,0,0);
@include animation-duration(250ms);
@include animation-timing-function(ease-in-out);
@include animation-fill-mode(both);
}
.slide-in-left-add-active {
@include animation-name(slideInLeft);
}
.slide-out-left {
@include translate3d(-100%,0,0);
&.ng-enter, > .ng-enter {
@include animation-name(slideOutLeft);
@include animation-duration(250ms);
@include animation-timing-function(ease-in-out);
@include animation-fill-mode(both);
}
&.ng-leave, > .ng-leave {
@include animation-name(slideOutLeft);
@include animation-duration(250ms);
@include animation-timing-function(ease-in-out);
@include animation-fill-mode(both);
}
}
.slide-out-left {
}
.slide-out-left-add {
@include translate3d(0,0,0);
@include animation-duration(250ms);
@include animation-timing-function(ease-in-out);
@include animation-fill-mode(both);
}
.slide-out-left-add-active {
@include animation-name(slideOutLeft);
}
.slide-in-right {
@include translate3d(0%,0,0);
&.ng-enter, > .ng-enter {
@include animation-name(slideInRight);
@include animation-duration(250ms);
@include animation-timing-function(ease-in-out);
@include animation-fill-mode(both);
}
&.ng-leave, > .ng-leave {
@include animation-name(slideInRight);
@include animation-duration(250ms);
@include animation-timing-function(ease-in-out);
@include animation-fill-mode(both);
}
}
.slide-in-right-add {
@include translate3d(-100%,0,0);
@include animation-duration(250ms);
@include animation-timing-function(ease-in-out);
@include animation-fill-mode(both);
}
.slide-in-right-add-active {
@include animation-name(slideInRight);
}
.slide-out-right {
@include translate3d(100%,0,0);
&.ng-enter, > .ng-enter {
@include animation-name(slideOutRight);
@include animation-duration(250ms);
@include animation-timing-function(ease-in-out);
@include animation-fill-mode(both);
}
&.ng-leave, > .ng-leave {
@include animation-name(slideOutRight);
@include animation-duration(250ms);
@include animation-timing-function(ease-in-out);
@include animation-fill-mode(both);
}
}
.slide-out-right {
}
.slide-out-right-add {
@include translate3d(0,0,0);
@include animation-duration(250ms);
@include animation-timing-function(ease-in-out);
@include animation-fill-mode(both);
}
.slide-out-right-add-active {
@include animation-name(slideOutRight);
}
$slide-in-up-function: cubic-bezier(.1, .7, .1, 1);
@-webkit-keyframes slideInUp {
0% {
@include translate3d(0, 100%, 0);
opacity: 0;
}
100% {
@include translate3d(0, 0, 0);
opacity: 1;
}
}
@-webkit-keyframes slideOutUp {
0% {
@include translate3d(0, 0, 0);
opacity: 1;
}
100% {
@include translate3d(0, 100%, 0);
opacity: 0;
}
}
.slide-in-up {
// Start it down low
@include translate3d(0, 0%, 0);
opacity: 1;
&.ng-enter, .ng-enter {
// Start it down low
@include translate3d(0, 100%, 0);
@include animation-duration(400ms);
@include animation-timing-function($slide-in-up-function);
@include animation-fill-mode(both);
// Start hidden
opacity: 0;
}
&.ng-enter-active, .ng-enter-active {
@include animation-name(slideInUp);
}
&.ng-leave, .ng-leave {
@include animation-duration(400ms);
@include animation-timing-function($slide-in-up-function);
@include animation-fill-mode(both);
}
&.ng-leave-active, .ng-leave {
@include animation-name(slideOutUp);
}
}
.slide-in-up-add {
@include animation-duration(400ms);
@include animation-timing-function($slide-in-up-function);
@include animation-fill-mode(both);
}
.slide-in-up-add-active {
@include animation-name(slideInUp);
}
.slide-in-up-remove {
@include animation-duration(400ms);
@include animation-timing-function($slide-in-up-function);
@include animation-fill-mode(forwards);
}
.slide-in-up-remove-active {
@include animation-name(slideOutUp);
}
@-webkit-keyframes fadeOut {
from { opacity: 1; }
to { opacity: 0; }
}
@keyframes fadeOut {
from { opacity: 1; }
to { opacity: 0; }
}
@-webkit-keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
.fade-in {
@include animation(fadeOut 0.3s);
&.active {
@include animation(fadeIn 0.3s);
}
}
.fade-in-not-out {
&.ng-enter, .ng-enter {
@include animation(fadeIn 0.3s);
position: relative;
}
&.ng-leave, .ng-leave {
display: none;
}
}
@-webkit-keyframes spin {
100% { -webkit-transform: rotate(360deg); }
}
@-moz-keyframes spin {
100% { -moz-transform: rotate(360deg); }
}
@keyframes spin {
100% { transform: rotate(360deg); }
}
/**
* Some component specific animations
*/
.nav-title-slide-ios7 {
> .ng-enter, &.ng-enter, > .ng-leave, &.ng-leave {
@include transition(all 350ms);
@include transition-timing-function($ios7-timing-function);
opacity: 1;
}
> .ng-enter, &.ng-enter {
@include translate3d(30%, 0, 0);
opacity: 0;
}
> .ng-enter.ng-enter-active, &.ng-enter.ng-enter-active {
@include translate3d(0, 0, 0);
opacity: 1;
}
> .ng-leave.ng-leave-active, &.ng-leave.ng-leave-active {
@include translate3d(-30%, 0, 0);
opacity: 0;
}
}
.reverse {
.nav-title-slide-ios7 {
> .ng-enter, &.ng-enter, > .ng-leave, &.ng-leave {
@include transition(all 350ms);
@include transition-timing-function($ios7-timing-function);
opacity: 1;
}
> .ng-enter, &.ng-enter {
@include translate3d(-30%, 0, 0);
opacity: 0;
}
> .ng-enter.ng-enter-active, &.ng-enter.ng-enter-active {
@include translate3d(0, 0, 0);
opacity: 1;
}
> .ng-leave.ng-leave-active, &.ng-leave.ng-leave-active {
@include translate3d(30%, 0, 0);
opacity: 0;
}
}
}