Styles control how your app looks. Global styles affect everything, while scoped styles only change specific parts. This helps keep your design neat and avoids surprises.
Global vs scoped style strategies in Svelte
<style global> /* Global styles */ h1 { color: blue; } </style> <style> /* Scoped styles */ p { color: red; } </style>
In Svelte, styles inside a component are scoped by default, meaning they only apply to that component.
To make styles global, use the :global() selector or place styles in a global CSS file.
<h1> inside this component.<style>
h1 {
color: green;
}
</style>body, not just this component.<style>
:global(body) {
margin: 0;
font-family: sans-serif;
}
</style>global attribute on <style> makes all styles inside global.<style global>
a {
text-decoration: none;
}
</style>This Svelte component shows a button with scoped styles that only affect it. The paragraph below uses a global style, so all paragraphs on the page get the green bold text.
<script> let count = 0; </script> <style> button { background-color: lightblue; border: none; padding: 0.5rem 1rem; cursor: pointer; } /* Scoped style: only this button */ button:hover { background-color: deepskyblue; } /* Global style: applies to all paragraphs */ :global(p) { color: darkgreen; font-weight: bold; } </style> <button on:click={() => count++} aria-label="Increment count"> Clicked {count} times </button> <p>This paragraph is styled globally.</p>
Scoped styles prevent your component styles from leaking out and affecting other parts of your app.
Use global styles carefully to avoid unexpected changes across your app.
Use :global() inside scoped styles to target global elements without losing scoping benefits.
Scoped styles apply only inside the component, keeping styles isolated.
Global styles affect the whole app or page, useful for common design rules.
Svelte makes styles scoped by default, but you can use :global() or global attribute for global styles.