// 翻转动画

@import './../mixins/makeanim.scss';

$flip-duration: 0.6s;

@mixin flip-anim($className, $keyframeName) {
  @include make-anim($className, $keyframeName, $flip-duration);
}

@include flip-anim(hinge-flip, amosHingeFlip);
@include flip-anim(flip-x, amosFlipX);
@include flip-anim(flip-y, amosFlipY);

@keyframes amosHingeFlipIn {
  0% {
    opacity: 0;
    transform: perspective(600px) rotateX(0deg);
    transform-origin: center top;
    animation-timing-function: $ease-in-circ;
  }

  50% {
    transform: perspective(600px) rotateX(-10deg);
    transform-origin: center top;
    animation-timing-function: ease-in;
  }

  100% {
    opacity: 1;
    transform: perspective(600px) rotateX(0deg);
    transform-origin: center top;
    animation-timing-function: ease-out;
  }
}

@keyframes amosHingeFlipOut {
  0% {
    opacity: 1;
    transform: perspective(600px) rotateX(0deg);
    transform-origin: center top;
    animation-timing-function: $ease-in-circ;
  }

  50% {
    transform: perspective(600px) rotateX(-10deg);
    transform-origin: center top;
    animation-timing-function: ease-in;
  }

  100% {
    opacity: 0;
    transform: perspective(600px) rotateX(0deg);
    transform-origin: center top;
    animation-timing-function: ease-out;
  }
}

@keyframes amosFlipXIn {
  from {
    opacity: 0;
    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
    animation-timing-function: ease-in;
  }

  40% {
    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
    animation-timing-function: ease-in;
  }

  60% {
    opacity: 1;
    transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
  }

  80% {
    transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
  }

  to {
    transform: perspective(400px);
  }
}

@keyframes amosFlipXOut {
  from {
    transform: perspective(400px);
  }

  30% {
    opacity: 1;
    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
  }

  to {
    opacity: 0;
    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
  }
}

@keyframes amosFlipYIn {
  from {
    opacity: 0;
    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
    animation-timing-function: ease-in;
  }

  40% {
    transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
    animation-timing-function: ease-in;
  }

  60% {
    opacity: 1;
    transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
  }

  80% {
    transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
  }

  to {
    transform: perspective(400px);
  }
}

@keyframes amosFlipYOut {
  from {
    transform: perspective(400px);
  }

  30% {
    opacity: 1;
    transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
  }

  to {
    opacity: 0;
    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
  }
}
