Aula 08 - Estilização e CSS 🎨
O Design do Componente
Agenda de Hoje 📅
- CSS Scoped: O fim da bagunça
- O Hashing de Classes do Svelte
- Estilos Globais com
:global - Classes Dinâmicas com
class: - Variáveis CSS e Temas
- Prática: Menu com Modo Escuro
1. CSS no Svelte: Scoped 🛡️
- Por padrão, o CSS escrito na tag
<style>só afeta o próprio componente. - Você pode usar nomes simples como
.btn,.containerou.titulo. - Sem conflitos com outros componentes!
2. Como o Svelte faz isso? 🧙♂️
- O compilador adiciona uma classe única a cada elemento (ex:
svelte-1a2b3c). - O seu seletor
.titulovira.titulo.svelte-1a2b3c.
<!-- HTML Gerado -->
<h1 class="titulo svelte-1a2b3c">Olá</h1>
<!-- CSS Gerado -->
.titulo.svelte-1a2b3c { color: blue; }
3. Seletores Globais 🌐
- Precisa que um estilo "escape" do componente?
- Use o modificador
:global().
<style>
:global(body) {
margin: 0;
font-family: sans-serif;
}
/* Afeta todos os h1 da aplicação */
:global(h1) { color: red; }
</style>
4. Classes Dinâmicas (class:) 🏷️
- Forma elegante de adicionar/remover classes baseada em variáveis JS.
<script>
let ativo = true;
</script>
<button class:ativo={ativo}> Clique aqui </button>
<style>
.ativo { background: green; }
</style>
4.1 Abreviando (Shorthand)
- Se o nome da classe for igual ao da variável:
5. Estilos em Linha Dinâmicos (style:) 🖌️
- Útil para valores específicos que vêm do script (ex: cores dinâmicas).
<script>
let corFavorita = "purple";
</script>
<div style:color={corFavorita}> Texto colorido </div>
6. CSS Otimizado (Unused CSS) 🧹
- Se você escrever uma regra CSS e não usar no HTML...
- O Svelte vai te avisar (Warning)!
- O CSS não utilizado é removido do pacote final.
7. Pré-processadores (Sass/Less) 🚀
- O Vite permite usar Sass de forma simples.
- Basta instalar o pacote sass e usar o atributo
lang.
<style lang="scss">
$cor-primaria: #ff3e00;
.card {
background: $cor-primaria;
&:hover { opacity: 0.8; }
}
</style>
8. Prática: Cartão com Tema 🌗
- Crie uma variável
escuro = false. - Use
class:escurona div principal do card. - No CSS, defina as cores para o card normal e para o
.escuro.
9. Resumo da Aula ✅
- CSS Scoped evita colisões.
:globalpara regras de alto nível.class:estyle:para dinamismo visual.
Próxima Aula: Roteamento SPA 🗺️
- Navegação entre páginas.
- svelte-spa-router.
- Parâmetros na URL.
Dúvidas? 🤔
"O design não é apenas o que parece, mas sim como funciona."