🧩 Exercícios: Scoped CSS, Tailwind e Transições Nativas
🧩 Exercícios Práticos: Scoped CSS, Tailwind e Transições Nativas
Spec Frontend Com Vue • Trilha Progressiva em 4 Níveis
🧭 Navegação Pedagógica
-
📖 Teoria do Capítulo 💻 Exemplos 📊 Slides 🧠 Quiz
🎯 Nível 1: Fundamentos
Problema 11.1 — Estilos Escopados com
Contexto: Estilos Escopados com
Requisitos de Execução:
- Criar componente com
<style scoped>garantindo isolamento através de atributosdata-v-xxx.
Resultado Esperado
Estilos CSS restritos ao escopo local do componente.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_11_1_SeuNome - Envie na tarefa:
Atividade Cap 11 - Scoped CSS, Tailwind e Transições Nativas
🔑 Gabarito de Código & Solução Comentada
<!-- ScopedCard.vue -->
<template>
<div class="card-estilizado">
<h2>Título Escopado</h2>
</div>
</template>
<style scoped>
.card-estilizado {
background-color: #f8fafc;
padding: 1.5rem;
border-radius: 0.5rem;
}
</style>
🔍 Nível 2: Prática
Problema 11.2 — Transições Nativas com
Contexto: Transições Nativas com
Requisitos de Execução:
- Animar entrada e saída de alerta usando
<Transition name='fade'>e classes CSS de transição.
Resultado Esperado
Animação de fade-in e fade-out suave na exibição do alerta.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_11_2_SeuNome - Envie na tarefa:
Atividade Cap 11 - Scoped CSS, Tailwind e Transições Nativas
🔑 Gabarito de Código & Solução Comentada
<!-- FadeTransition.vue -->
<script setup lang="ts">
import { ref } from 'vue';
const visivel = ref(true);
</script>
<template>
<div>
<button @click="visivel = !visivel">Toggle</button>
<Transition name="fade">
<div v-if="visivel" class="box">Conteúdo Animado</div>
</Transition>
</div>
</template>
<style>
.fade-enter-active, .fade-leave-active { transition: opacity 0.3s ease; }
.fade-enter-from, .fade-leave-to { opacity: 0; }
</style>
⚡ Nível 3: Integração
Problema 11.3 — Transição de Listas com
Contexto: Transição de Listas com
Requisitos de Execução:
- Animar adição e remoção de itens em lista com
<TransitionGroup tag='ul' name='list'>.
Resultado Esperado
Itens adicionados e removidos com animação fluida na lista.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_11_3_SeuNome - Envie na tarefa:
Atividade Cap 11 - Scoped CSS, Tailwind e Transições Nativas
🔑 Gabarito de Código & Solução Comentada
<!-- TransitionList.vue -->
<template>
<TransitionGroup tag="ul" name="list">
<li v-for="item in items" :key="item.id">{{ item.nome }}</li>
</TransitionGroup>
</template>
🏆 Nível 4: Desafio Corporativo
Problema 11.4 — Tema Dinâmico (Dark Mode) com Tailwind CSS e VueUse
Contexto: Tema Dinâmico (Dark Mode) com Tailwind CSS e VueUse no contexto de Scoped CSS, Tailwind e Transições Nativas.
Requisitos de Execução:
- Integrar
useDark()do VueUse para alternância dinâmica de classedarkno elemento<html>.
Resultado Esperado
Modo escuro comutado com persistência automática de preferência do usuário.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_11_4_SeuNome - Envie na tarefa:
Atividade Cap 11 - Scoped CSS, Tailwind e Transições Nativas
🔑 Gabarito de Código & Solução Comentada
<!-- DarkModeToggle.vue -->
<script setup lang="ts">
import { useDark, useToggle } from '@vueuse/core';
const isDark = useDark();
const toggleDark = useToggle(isDark);
</script>
<template>
<button @click="toggleDark()">Alternar Modo Escuro</button>
</template>
| ⬅️ Voltar ao Índice de Exercícios | 📚 Sumário de Tópicos |