0
0
Svelteframework~20 mins

Crossfade for list items in Svelte - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Crossfade Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
component_behavior
intermediate
2:00remaining
What happens when an item is removed from a list using Svelte's crossfade?

Consider a Svelte component that uses crossfade to animate list items when they are removed. What is the visible behavior when an item is deleted?

Svelte
import { crossfade } from 'svelte/transition';
const [send, receive] = crossfade({ duration: 400 });

let items = ['apple', 'banana', 'cherry'];

function removeItem(item) {
  items = items.filter(i => i !== item);
}
AThe removed item smoothly fades out and moves to the position of the next item before disappearing.
BThe removed item instantly disappears without any animation.
CThe removed item fades out but does not move; the other items jump to fill the gap immediately.
DThe removed item slides out to the right without fading.
Attempts:
2 left
💡 Hint

Think about how crossfade combines fading and movement to create smooth transitions.

📝 Syntax
intermediate
2:00remaining
Which code snippet correctly applies crossfade to list items in Svelte?

Choose the correct way to apply crossfade transitions to a list of items in Svelte.

Svelte
import { crossfade } from 'svelte/transition';
const [send, receive] = crossfade({ duration: 300 });

let items = ['one', 'two', 'three'];
A<ul>{#each items as item (item)}<li transition:receive>{item}</li>{/each}</ul>
B<ul>{#each items as item (item)}<li transition:send>{item}</li>{/each}</ul>
C<ul>{#each items as item (item)}<li transition:crossfade>{item}</li>{/each}</ul>
D<ul>{#each items as item (item)}<li in:receive out:send>{item}</li>{/each}</ul>
Attempts:
2 left
💡 Hint

Remember that crossfade returns two functions: one for items leaving and one for items entering.

🔧 Debug
advanced
2:00remaining
Why does the crossfade animation not trigger when list items change?

Given this Svelte code, the crossfade animation does not run when items are added or removed. What is the most likely cause?

Svelte
import { crossfade } from 'svelte/transition';
const [send, receive] = crossfade({ duration: 500 });

let items = ['a', 'b', 'c'];

// In markup:
// {#each items as item}<div in:receive out:send>{item}</div>{/each}
AThe crossfade transition only works with <li> elements, not <div>.
BThe crossfade functions are not imported correctly from 'svelte/animate'.
CThe list items lack a unique key, so Svelte cannot track them for animation.
DThe duration option must be set to 0 for crossfade to work.
Attempts:
2 left
💡 Hint

Think about how Svelte tracks list items for transitions.

🧠 Conceptual
advanced
2:00remaining
What is the role of the 'send' and 'receive' functions in Svelte's crossfade?

In Svelte's crossfade transition, what do the send and receive functions represent?

AThey are event handlers for mouse events during the transition.
B<code>send</code> is used for elements leaving the DOM; <code>receive</code> is for elements entering the DOM.
C<code>send</code> is for elements entering the DOM; <code>receive</code> is for elements leaving the DOM.
DBoth <code>send</code> and <code>receive</code> are used only for elements entering the DOM.
Attempts:
2 left
💡 Hint

Consider the direction of the animation for items leaving and entering.

state_output
expert
3:00remaining
What is the final list order and animation behavior after swapping two items with crossfade?

Given a Svelte list ['x', 'y', 'z'] with crossfade applied, if you swap the positions of 'x' and 'z' in the array, what will happen?

Svelte
import { crossfade } from 'svelte/transition';
const [send, receive] = crossfade({ duration: 400 });

let items = ['x', 'y', 'z'];

function swap() {
  items = ['z', 'y', 'x'];
}

// In markup:
// {#each items as item (item)}<div in:receive out:send>{item}</div>{/each}
AThe items 'x' and 'z' smoothly crossfade to their new positions without disappearing.
BNo animation occurs because the items are the same, only order changed.
CThe items 'x' and 'z' fade out and fade back in at their new positions separately.
DThe entire list fades out and then fades back in with the new order.
Attempts:
2 left
💡 Hint

Think about how crossfade matches elements by their keys during reordering.