Marquee.svelte 544 B

123456789101112131415161718192021222324252627282930
  1. <script lang="ts">
  2. import { fade, fly } from 'svelte/transition';
  3. import { onMount } from 'svelte';
  4. let idx = 0;
  5. export let className = '';
  6. export let words = ['lorem', 'ipsum'];
  7. export let duration = 4000;
  8. onMount(() => {
  9. setInterval(async () => {
  10. if (idx === words.length - 1) {
  11. idx = 0;
  12. } else {
  13. idx = idx + 1;
  14. }
  15. }, duration);
  16. });
  17. </script>
  18. <div class={className}>
  19. <div>
  20. {#key idx}
  21. <div class=" marquee-item" in:fly={{ y: '30%', duration: 1000 }}>
  22. {words.at(idx)}
  23. </div>
  24. {/key}
  25. </div>
  26. </div>