Add Reusable Behavior to Elements Using Svelte Actions
📖 Scenario: You are building a simple web page where some elements need a special behavior: they should change their background color when the mouse hovers over them. Instead of writing the same code for each element, you want to create a reusable behavior that you can apply easily to any element.
🎯 Goal: Build a Svelte action that changes the background color of an element on mouse hover and apply it to multiple elements to reuse the behavior.
📋 What You'll Learn
Create a Svelte action named hoverHighlight that changes the background color of an element when hovered
Use the hoverHighlight action on at least two different elements
Ensure the background color returns to normal when the mouse leaves the element
Keep the action reusable and clean
💡 Why This Matters
🌍 Real World
In real websites, you often want to add the same interactive behavior to many elements, like hover effects or tooltips. Svelte actions let you write this behavior once and reuse it easily.
💼 Career
Understanding Svelte actions helps you build clean, maintainable web apps. Many companies use Svelte or similar frameworks, and reusable behaviors save time and reduce bugs.
Progress0 / 4 steps
1
Create the Svelte action function
Write a Svelte action function called hoverHighlight that accepts a DOM element parameter and adds event listeners for mouseenter and mouseleave events. On mouseenter, set the element's background color to lightblue. On mouseleave, reset the background color to '' (empty string).
Svelte
Hint
Remember, a Svelte action is a function that receives a DOM element and can add event listeners. Return an object with a destroy method to clean up.
2
Set up the HTML elements to use the action
In the Svelte component, create two <div> elements with the texts Box 1 and Box 2. Import the hoverHighlight action and apply it to both <div> elements using the use:hoverHighlight directive.
Svelte
Hint
Use the use: directive to apply the action to elements.
3
Add a configuration option to the action
Modify the hoverHighlight action to accept a second parameter color that sets the highlight color. Use color = 'lightblue' as the default. Change the background color to the given color on mouse enter.
Svelte
Hint
Actions can accept a second parameter for options. Use it to set the highlight color.
4
Use the action with different colors on elements
Apply the hoverHighlight action to the first <div> with the default color. Apply it to the second <div> with the color 'lightgreen' by passing it as the second argument in the use:hoverHighlight directive.
Svelte
Hint
Pass the color as a parameter in curly braces inside the use: directive.
Practice
(1/5)
1. What is the main purpose of actions in Svelte?
easy
A. To create new components
B. To style elements with CSS
C. To manage global state
D. To add reusable behavior directly to HTML elements
Solution
Step 1: Understand what actions do
Actions in Svelte attach behavior to elements, like event listeners or animations.
Step 2: Compare with other options
Creating components, managing state, or styling are done differently, not by actions.
Final Answer:
To add reusable behavior directly to HTML elements -> Option D
Quick Check:
Actions = reusable element behavior [OK]
Hint: Actions add behavior to elements, not components or styles [OK]
Common Mistakes:
Confusing actions with components
Thinking actions manage app state
Assuming actions handle styling
2. Which is the correct syntax to use an action named tooltip on a button element in Svelte?
easy
A. Click me
B. Click me
C. Click me
D. Click me
Solution
Step 1: Recall Svelte action syntax
Actions are applied with use:actionName on elements.
Step 2: Check each option
Only use:tooltip matches the correct syntax; others are for events or bindings.
Final Answer:
<button use:tooltip>Click me</button> -> Option A
Quick Check:
Action syntax = use:actionName [OK]
Hint: Use 'use:' prefix to apply actions on elements [OK]