This Svelte component shows a button that changes its background color when clicked. The color switches between blue and green. The button text also updates to show if it is active or inactive.
Svelte
<script>
let isActive = false;
let color = 'blue';
function toggle() {
isActive = !isActive;
color = isActive ? 'green' : 'blue';
}
</script>
<button on:click={toggle} style="background-color: {color}; color: white; padding: 1rem; border: none; border-radius: 0.5rem;">
{isActive ? 'Active' : 'Inactive'}
</button>
OutputSuccess
Important Notes
Remember to keep style values as strings or expressions that produce strings.
Dynamic inline styles are great for quick changes but for many styles, consider CSS classes for better organization.
Summary
Dynamic inline styles let you update element styles using variables inside your Svelte components.
Use curly braces inside the style attribute to insert dynamic values.
This helps create interactive and responsive UI elements easily.
Practice
(1/5)
1. What is the correct way to apply a dynamic background color in a Svelte component using inline styles?
easy
A. <div style="background-color: {color};"></div>
B. <div style="background-color: $color;"></div>
C. <div style="background-color: color;"></div>
D. <div style="background-color: {{color}};"></div>
Solution
Step 1: Understand Svelte's style binding syntax
Svelte uses curly braces inside the style attribute to insert dynamic values, like {color}.
Step 2: Identify the correct syntax for inline styles
The correct syntax is style="background-color: {color};". Other options use incorrect variable interpolation.
Final Answer:
<div style="background-color: {color};"></div> -> Option A
C. Width and height 100px, no background color applied
D. Width and height 100px, background color literal string 'red'
Solution
Step 1: Analyze the style attribute values
The width and height use correct dynamic values with {size}px. The background-color: 'red' is a static value with single quotes.
Step 2: Understand rendering in Svelte and CSS
After compilation, the style becomes "width: 100px; height: 100px; background-color: 'red'". Browsers parse 'red' as the color keyword red, applying the background color correctly. No syntax error.
Final Answer:
Width and height 100px, background color red -> Option B
Quick Check:
Quoted CSS color keywords render correctly [OK]
Hint: CSS accepts quoted color keywords in style attributes [OK]
Common Mistakes:
Thinking quotes around colors cause syntax errors
Believing quoted keywords don't apply as colors
Confusing HTML attribute quoting with CSS parsing
4. Identify the error in this Svelte code snippet:
<script>
let color = 'blue';
</script>
<div style="color: {color}">Text</div>
medium
A. Missing semicolon after {color}
B. Curly braces not allowed inside style attribute
C. Style attribute should use single quotes instead of double quotes
D. No error, code works correctly
Solution
Step 1: Review Svelte style binding syntax
Using curly braces inside the style attribute to insert a variable is correct syntax in Svelte.
Step 2: Check for syntax errors
The style string "color: {color}" is valid. Semicolons are optional if only one style is present. Quotes around the attribute are standard HTML.
Final Answer:
No error, code works correctly -> Option D
Quick Check:
Curly braces inside style attribute are valid [OK]
Hint: Curly braces inside style attribute are valid for dynamic values [OK]
Common Mistakes:
Thinking semicolon is mandatory for single style
Believing quotes type affects dynamic style syntax
Assuming curly braces are not allowed in style
5. You want to create a Svelte component that changes the text color dynamically based on a status variable with values 'success', 'warning', or 'error'. Which is the best way to apply dynamic inline styles for this?
hard
A. <div style="color: {status === 'success' ? 'green' : status === 'warning' ? 'orange' : 'red'}">Status</div>
B. <div style="color: {status == 'success' & 'green' || status == 'warning' && 'orange' || 'red'}">Status</div>
Step 1: Understand dynamic inline style with conditional expressions
<div style="color: {status === 'success' ? 'green' : status === 'warning' ? 'orange' : 'red'}">Status</div> uses a nested ternary operator inside curly braces to select the correct color string based on status.
Step 2: Evaluate other options for correctness and best practice
<div style="color: {status == 'success' && 'green' || status == 'warning' && 'orange' || 'red'}">Status</div> uses logical operators which can cause unexpected results. <div class={status} >Status</div> <style>.success { color: green; } .warning { color: orange; } .error { color: red; }</style> uses classes and CSS, not inline styles. <div style="color: {status}">Status</div> sets color to the literal status string, which is invalid color.
Final Answer:
<div style="color: {status === 'success' ? 'green' : status === 'warning' ? 'orange' : 'red'}">Status</div> -> Option A
Quick Check:
Use ternary inside { } for conditional inline styles [OK]
Hint: Use nested ternary inside { } for multiple conditions [OK]
Common Mistakes:
Using logical operators instead of ternary
Setting style to variable name without mapping
Confusing inline styles with CSS classes
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.