Transition.svelte 1.3 KB

12345678910111213141516171819202122232425262728293031323334
  1. <script>
  2. import { fade, fly, blur, slide, scale } from 'svelte/transition';
  3. export let visible = false; //是否显示 is show
  4. export let transitionType = 'scale'; //过渡动画进入类型,可选值:fade,fly, scale,slide,none transition type
  5. export let transitionParams = {}; //过渡动画参数 transition params
  6. export let outDuration = 0; //过渡动画退出时间 transition out duration
  7. </script>
  8. {#if visible}
  9. {#if transitionType === 'scale'}
  10. <div in:scale|global={{ duration: 300, ...transitionParams }} out:scale={{ ...transitionParams, duration: outDuration }}>
  11. <slot />
  12. </div>
  13. {:else if transitionType === 'fly'}
  14. <div in:fly|global={{ duration: 300, ...transitionParams }} out:fly={{ ...transitionParams, duration: outDuration }}>
  15. <slot />
  16. </div>
  17. {:else if transitionType === 'fade'}
  18. <div in:fade|global={{ duration: 300, ...transitionParams }} out:fade={{ ...transitionParams, duration: outDuration }}>
  19. <slot />
  20. </div>
  21. {:else if transitionType === 'slide'}
  22. <div in:slide|global={{ duration: 300, ...transitionParams }} out:slide={{ ...transitionParams, duration: outDuration }}>
  23. <slot />
  24. </div>
  25. {:else if transitionType === 'blur'}
  26. <div in:blur|global={{ duration: 300, ...transitionParams }} out:blur={{ ...transitionParams, duration: outDuration }}>
  27. <slot />
  28. </div>
  29. {:else}
  30. <slot />
  31. {/if}
  32. {/if}