Bird
Raised Fist0
Svelteframework~5 mins

Custom transitions in Svelte - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a custom transition in Svelte?
A custom transition in Svelte is a way to create your own animation effect when elements enter or leave the DOM, using JavaScript functions to control how the element changes over time.
Click to reveal answer
intermediate
Which function signature is used to create a custom transition in Svelte?
A custom transition function takes a node and parameters, and returns an object with a 'css' function that defines the animation styles over time, and optionally a 'tick' function for JavaScript updates.
Click to reveal answer
beginner
How do you apply a custom transition to an element in Svelte?
You import the custom transition function and use the 'transition:' directive on the element, passing the function and any parameters, like <div transition:myTransition={{ duration: 500 }}></div>.
Click to reveal answer
intermediate
What does the 'css' function inside a custom transition return?
The 'css' function returns a string of CSS styles that change over time, using the progress parameter (from 0 to 1) to animate properties like opacity or transform.
Click to reveal answer
intermediate
Why might you use a custom transition instead of built-in ones in Svelte?
Custom transitions let you create unique animations tailored to your design, beyond the simple fade or slide, giving you full control over timing, easing, and style changes.
Click to reveal answer
What parameter does the 'css' function in a custom transition receive?
AThe DOM node itself
BA progress value from 0 to 1
CThe event object
DThe transition duration in milliseconds
How do you trigger a custom transition on an element in Svelte?
ABy calling a JavaScript animation library
BUsing the 'animate:' directive
CUsing the 'transition:' directive with the custom function
DBy adding a CSS class manually
Which of these is NOT part of a custom transition function's return object?
A'render' function
B'tick' function
C'duration' number
D'css' function
What does the 'tick' function in a custom transition do?
ARuns JavaScript code on each animation frame
BDefines CSS styles for the transition
CSets the transition duration
DHandles user input events
Which Svelte directive is used to import and apply a custom transition?
Ause:
Banimate:
Cbind:
Dtransition:
Explain how to create and use a custom transition in Svelte.
Think about the function signature and how Svelte applies transitions.
You got /4 concepts.
    Describe the difference between the 'css' and 'tick' functions in a custom transition.
    One is for CSS, the other for JavaScript during animation.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of a custom transition in Svelte?
      easy
      A. To create unique animations when elements enter or leave the page
      B. To fetch data from an API
      C. To manage component state
      D. To handle user input events

      Solution

      1. Step 1: Understand what transitions do in Svelte

        Transitions animate elements as they appear or disappear from the DOM.
      2. Step 2: Identify the role of custom transitions

        Custom transitions let you define your own animation styles for these changes.
      3. Final Answer:

        To create unique animations when elements enter or leave the page -> Option A
      4. Quick Check:

        Custom transitions = unique enter/leave animations [OK]
      Hint: Custom transitions animate element entry/exit smoothly [OK]
      Common Mistakes:
      • Confusing transitions with data fetching
      • Thinking transitions manage state
      • Mixing transitions with event handling
      2. Which of the following is the correct way to define a custom transition function in Svelte?
      easy
      A. function fade(node) { return { delay: 300, css: t => `opacity: ${t}` }; }
      B. function fade(params) { return { duration: 300, css: t => `opacity: ${t}` }; }
      C. function fade() { return { duration: 300, css: t => `opacity: ${t}` }; }
      D. function fade(node, params) { return { duration: 300, css: t => `opacity: ${t}` }; }

      Solution

      1. Step 1: Recall the custom transition function signature

        It must accept node and optionally params.
      2. Step 2: Check the returned object structure

        The object should include duration and a css function using t for progress.
      3. Final Answer:

        function fade(node, params) { return { duration: 300, css: t => `opacity: ${t}` }; } -> Option D
      4. Quick Check:

        Function(node, params) + {duration, css} = C [OK]
      Hint: Custom transition needs node param and returns duration + css [OK]
      Common Mistakes:
      • Omitting the node parameter
      • Returning delay instead of duration
      • Not using a css function with progress t
      3. Given this custom transition function:
      function slide(node) {
        return {
          duration: 400,
          css: t => `transform: translateX(${(1 - t) * 100}%)`
        };
      }

      What happens to the element when it enters the DOM using transition:slide?
      medium
      A. It fades in with increasing opacity
      B. It slides out to the right when leaving
      C. It slides in from the right to its original position
      D. It instantly appears without animation

      Solution

      1. Step 1: Analyze the css function for entry

        The transform moves from translateX(100%) at t=0 to translateX(0%) at t=1.
      2. Step 2: Understand the visual effect

        The element starts off-screen right (100%) and slides left to original place (0%).
      3. Final Answer:

        It slides in from the right to its original position -> Option C
      4. Quick Check:

        translateX from 100% to 0% = slide in right to left [OK]
      Hint: Check transform values at t=0 and t=1 for motion direction [OK]
      Common Mistakes:
      • Confusing enter and leave animations
      • Assuming opacity changes instead of transform
      • Thinking it slides out instead of in
      4. This custom transition code causes an error:
      function grow(node) {
        return {
          duration: 500,
          css: t => `scale(${t})`
        };
      }

      What is the error and how to fix it?
      medium
      A. Missing 'transform:' prefix in css string; fix by returning `transform: scale(${t})`
      B. Duration must be a string; fix by changing 500 to '500ms'
      C. Function must return a number, not a string; fix by removing css
      D. Node parameter is unused; fix by removing it

      Solution

      1. Step 1: Identify the CSS syntax error

        The css string lacks the CSS property name; 'scale' alone is invalid.
      2. Step 2: Correct the CSS string

        It should be 'transform: scale(...)' to apply scaling properly.
      3. Final Answer:

        Missing 'transform:' prefix in css string; fix by returning `transform: scale(${t})` -> Option A
      4. Quick Check:

        CSS property needed before scale() [OK]
      Hint: CSS string must include property name like 'transform:' [OK]
      Common Mistakes:
      • Returning only scale() without 'transform:'
      • Using wrong duration type
      • Removing needed node parameter
      5. You want a custom transition that fades in and grows an element from half size to full size over 600ms. Which function correctly implements this?
      hard
      A. function fadeGrow(node) { return { duration: 600, css: t => `opacity: ${1 - t}; transform: scale(${t})` }; }
      B. function fadeGrow(node) { return { duration: 600, css: t => `opacity: ${t}; transform: scale(${0.5 + 0.5 * t})` }; }
      C. function fadeGrow(node) { return { duration: 600, css: t => `opacity: ${t}; transform: scale(${t / 2})` }; }
      D. function fadeGrow(node) { return { duration: 600, css: t => `opacity: ${t}; transform: scale(${1 - t})` }; }

      Solution

      1. Step 1: Understand the fade and grow requirements

        Opacity should go from 0 to 1 (fade in), scale from 0.5 to 1 (grow).
      2. Step 2: Check each option's css function

        function fadeGrow(node) { return { duration: 600, css: t => `opacity: ${t}; transform: scale(${0.5 + 0.5 * t})` }; } uses opacity = t (0 to 1) and scale = 0.5 + 0.5 * t (0.5 to 1), matching requirements.
      3. Final Answer:

        function fadeGrow(node) { return { duration: 600, css: t => `opacity: ${t}; transform: scale(${0.5 + 0.5 * t})` }; } -> Option B
      4. Quick Check:

        Opacity 0->1 and scale 0.5->1 = function fadeGrow(node) { return { duration: 600, css: t => `opacity: ${t}; transform: scale(${0.5 + 0.5 * t})` }; } [OK]
      Hint: Map t from 0-1 to desired opacity and scale ranges [OK]
      Common Mistakes:
      • Reversing opacity or scale ranges
      • Using scale starting at 0 instead of 0.5
      • Mixing up increasing and decreasing values
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard