.move-motion(@className, @keyframeName) {
  .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;
  }
}

.move-motion(move-up, haloeMoveUp);
.move-motion(move-down, haloeMoveDown);
.move-motion(move-left, haloeMoveLeft);
.move-motion(move-right, haloeMoveRight);

@keyframes haloeMoveDownIn {
  0% {
      transform-origin: 0 0;
      transform: translateY(100%);
      opacity: 0;
  }
  100% {
      transform-origin: 0 0;
      transform: translateY(0%);
      opacity: 1;
  }
}

@keyframes haloeMoveDownOut {
  0% {
      transform-origin: 0 0;
      transform: translateY(0%);
      opacity: 1;
  }
  100% {
      transform-origin: 0 0;
      transform: translateY(100%);
      opacity: 0;
  }
}

@keyframes haloeMoveLeftIn {
  0% {
      transform-origin: 0 0;
      transform: translateX(-100%);
      opacity: 0;
  }
  100% {
      transform-origin: 0 0;
      transform: translateX(0%);
      opacity: 1;
  }
}

@keyframes haloeMoveLeftOut {
  0% {
      transform-origin: 0 0;
      transform: translateX(0%);
      opacity: 1;
  }
  100% {
      transform-origin: 0 0;
      transform: translateX(-100%);
      opacity: 0;
  }
}

@keyframes haloeMoveRightIn {
  0% {
      opacity: 0;
      transform-origin: 0 0;
      transform: translateX(100%);
  }
  100% {
      opacity: 1;
      transform-origin: 0 0;
      transform: translateX(0%);
  }
}

@keyframes haloeMoveRightOut {
  0% {
      transform-origin: 0 0;
      transform: translateX(0%);
      opacity: 1;
  }
  100% {
      transform-origin: 0 0;
      transform: translateX(100%);
      opacity: 0;
  }
}

@keyframes haloeMoveUpIn {
  0% {
      transform-origin: 0 0;
      transform: translateY(-100%);
      opacity: 0;
  }
  100% {
      transform-origin: 0 0;
      transform: translateY(0%);
      opacity: 1;
  }
}

@keyframes haloeMoveUpOut {
  0% {
      transform-origin: 0 0;
      transform: translateY(0%);
      opacity: 1;
  }
  100% {
      transform-origin: 0 0;
      transform: translateY(-100%);
      opacity: 0;
  }
}

/*notice 进入、退出动画*/ 
.move-motion(move-notice, haloeMoveNotice);

@keyframes haloeMoveNoticeIn {
  0% {
      opacity: 0;
      transform-origin: 0 0;
      transform: translateX(100%);
  }
  100% {
      opacity: 1;
      transform-origin: 0 0;
      transform: translateX(0%);
  }
}

@keyframes haloeMoveNoticeOut {
  0% {
      transform-origin: 0 0;
      transform: translateX(0%);
      opacity: 1;
  }
  70% {
      transform-origin: 0 0;
      transform: translateX(100%);
      height: auto;
      padding: @notice-padding;
      margin-bottom: @notice-margin-bottom;
      opacity: 0;
  }
  100% {
      transform-origin: 0 0;
      transform: translateX(100%);
      height: 0;
      padding: 0;
      margin-bottom: 0;
      opacity: 0;
  }
}