motion.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. const genMotionStyle = token => {
  2. const {
  3. componentCls,
  4. motionDurationSlow
  5. } = token;
  6. const sharedPanelMotion = {
  7. '&-enter, &-appear, &-leave': {
  8. '&-start': {
  9. transition: 'none'
  10. },
  11. '&-active': {
  12. transition: `all ${motionDurationSlow}`
  13. }
  14. }
  15. };
  16. return {
  17. [componentCls]: {
  18. // ======================== Mask ========================
  19. [`${componentCls}-mask-motion`]: {
  20. '&-enter, &-appear, &-leave': {
  21. '&-active': {
  22. transition: `all ${motionDurationSlow}`
  23. }
  24. },
  25. '&-enter, &-appear': {
  26. opacity: 0,
  27. '&-active': {
  28. opacity: 1
  29. }
  30. },
  31. '&-leave': {
  32. opacity: 1,
  33. '&-active': {
  34. opacity: 0
  35. }
  36. }
  37. },
  38. // ======================= Panel ========================
  39. [`${componentCls}-panel-motion`]: {
  40. // Left
  41. '&-left': [sharedPanelMotion, {
  42. '&-enter, &-appear': {
  43. '&-start': {
  44. transform: 'translateX(-100%) !important'
  45. },
  46. '&-active': {
  47. transform: 'translateX(0)'
  48. }
  49. },
  50. '&-leave': {
  51. transform: 'translateX(0)',
  52. '&-active': {
  53. transform: 'translateX(-100%)'
  54. }
  55. }
  56. }],
  57. // Right
  58. '&-right': [sharedPanelMotion, {
  59. '&-enter, &-appear': {
  60. '&-start': {
  61. transform: 'translateX(100%) !important'
  62. },
  63. '&-active': {
  64. transform: 'translateX(0)'
  65. }
  66. },
  67. '&-leave': {
  68. transform: 'translateX(0)',
  69. '&-active': {
  70. transform: 'translateX(100%)'
  71. }
  72. }
  73. }],
  74. // Top
  75. '&-top': [sharedPanelMotion, {
  76. '&-enter, &-appear': {
  77. '&-start': {
  78. transform: 'translateY(-100%) !important'
  79. },
  80. '&-active': {
  81. transform: 'translateY(0)'
  82. }
  83. },
  84. '&-leave': {
  85. transform: 'translateY(0)',
  86. '&-active': {
  87. transform: 'translateY(-100%)'
  88. }
  89. }
  90. }],
  91. // Bottom
  92. '&-bottom': [sharedPanelMotion, {
  93. '&-enter, &-appear': {
  94. '&-start': {
  95. transform: 'translateY(100%) !important'
  96. },
  97. '&-active': {
  98. transform: 'translateY(0)'
  99. }
  100. },
  101. '&-leave': {
  102. transform: 'translateY(0)',
  103. '&-active': {
  104. transform: 'translateY(100%)'
  105. }
  106. }
  107. }]
  108. }
  109. }
  110. };
  111. };
  112. export default genMotionStyle;