@mixin move-motion($className, $keyframeName) {
  @include make-motion($className, $keyframeName);

  .#{$className}-enter-active,
  .#{$className}-appear {
    opacity: 0;
    animation-timing-function: ease-in-out;
  }

  .#{$className}-leave-active {
    animation-timing-function: ease-in-out;
  }
}

@include move-motion('move-up', 'IvueMoveUp');
@include move-motion('move-down', 'IvueMoveDown');
@include move-motion('move-left', 'IvueMoveLeft');
@include move-motion('move-right', 'IvueMoveRight');

// 向上
@keyframes IvueMoveUpIn {
  0% {
    transform-origin: 0 0;
    transform: translateY(-100%);
    opacity: 0;
  }

  100% {
    transform-origin: 0 0;
    transform: translateY(0%);
    opacity: 1;
  }
}

@keyframes IvueMoveUpOut {
  0% {
    transform-origin: 0 0;
    transform: translateY(0%);
    opacity: 1;
  }

  100% {
    transform-origin: 0 0;
    transform: translateY(-100%);
    opacity: 0;
  }
}

// 向下
@keyframes IvueMoveDownIn {
  0% {
    transform-origin: 0 0;
    transform: translateY(100%);
    opacity: 0;
  }

  100% {
    transform-origin: 0 0;
    transform: translateY(0%);
    opacity: 1;
  }
}

@keyframes IvueMoveDownOut {
  0% {
    transform-origin: 0 0;
    transform: translateY(0%);
    opacity: 1;
  }

  100% {
    transform-origin: 0 0;
    transform: translateY(100%);
    opacity: 0;
  }
}

// 向左
@keyframes IvueMoveLeftIn {
  0% {
    transform-origin: 0 0;
    transform: translateX(-100%);
    opacity: 0;
  }

  100% {
    transform-origin: 0 0;
    transform: translateX(0%);
    opacity: 1;
  }
}

@keyframes IvueMoveLeftOut {
  0% {
    transform-origin: 0 0;
    transform: translateX(0%);
    opacity: 1;
  }

  100% {
    transform-origin: 0 0;
    transform: translateX(-100%);
    opacity: 0;
  }
}

// 向右
@keyframes IvueMoveRightIn {
  0% {
    opacity: 0;
    transform-origin: 0 0;
    transform: translateX(100%);
  }

  100% {
    opacity: 1;
    transform-origin: 0 0;
    transform: translateX(0%);
  }
}

@keyframes IvueMoveRightOut {
  0% {
    transform-origin: 0 0;
    transform: translateX(0%);
    opacity: 1;
  }

  100% {
    transform-origin: 0 0;
    transform: translateX(100%);
    opacity: 0;
  }
}
