Desenvolvimento Web II

Notas de aula do prof. Eduardo da disciplina de Desenvolvimento Web II (curso técnico)

View on GitHub

Criando um main.css

Para criar um arquivo de estilos, vamos criar um arquivo src/assets/main.css com o seguinte conteúdo:

*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0;
}

body {
  min-height: 100vh;
  line-height: 1.6;
  font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,
    Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
  font-size: 15px;
  text-rendering: optimizeLegibility;
}

Vamos detalhar o que está sendo feito no arquivo acima:

Vamos alterar agora o arquivo main.js para importar o arquivo main.css:

import './assets/main.css';
import { createApp } from 'vue';
import App from './App.vue';
import router from './router';

const app = createApp(App);
app.use(router);

app.mount('#app');

Note que apenas importamos o arquivo main.css que será incluído no arquivo index.html automaticamente. Esta foi a única linha alterada no arquivo main.js. Além disso, as regras CSS definidas no arquivo main.css serão aplicadas a todos os elementos da aplicação.

Adicionando um estilo no App.vue

Vamos adicionar um estilo no componente App.vue para inserir um pequeno cabeçalho. Para isso, vamos primeiramente alterar o bloco template do arquivo App.vue, para o seguinte conteúdo:

<template>
  <header>
    <nav>
      <router-link to="/">Home</router-link>
      <router-link to="/filmes">Filmes</router-link>
      <router-link to="/tv">Programas de TV</router-link>
    </nav>
  </header>
  <main>
    <router-view />
  </main>
</template>

Note que adicionamos um cabeçalho com o menu de navegação que já estava presente no arquivo App.vue e movemos o bloco router-view para dentro do elemento main.

Em seguida, vamos adicionar o seguinte estilo no bloco style do arquivo App.vue:

<style scoped>
header {
  height: 3rem;
  display: flex;
  background-color: black;
  color: #fff;
  font-size: 1.2rem;
  padding-left: 2rem;
}

nav {
  column-gap: 2rem;
  margin-bottom: 0;
  display: flex;
  align-items: center;
}

nav a {
  text-decoration: none;
  color: #fff;
}
</style>

Nesse caso, criamos três regras CSS:

Adicionando um estilo no MoviesView.vue

Vamos adicionar um estilo no componente MoviesView.vue para apresentar a lista de gêneros de forma mais agradável. Para isso, vamos alterar o bloco template do arquivo MoviesView.vue, para o seguinte conteúdo:

<template>
  <h1>Filmes</h1>
  <ul class="genre-list">
    <li v-for="genre in genres" :key="genre.id" class="genre-item">
      {{ genre.name }}
    </li>
  </ul>
</template>

Note que nesse caso, alteramos o título h1 e adicionamos uma classe genre-list na lista ul e uma classe genre-item nos itens da lista (li).

Em seguida, vamos adicionar o seguinte estilo no bloco style do arquivo MoviesView.vue:

<style scoped>
.genre-list {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 2rem;
  list-style: none;
  padding: 0;
}

.genre-item {
  background-color: #387250;
  border-radius: 1rem;
  padding: 0.5rem 1rem;
  color: #fff;
}

.genre-item:hover {
  cursor: pointer;
  background-color: #4e9e5f;
  box-shadow: 0 0 0.5rem #387250;
}
</style>

Nesse caso, criamos três regras CSS:

Adicionando um estilo no TvView.vue

As alterações no arquivo TvView.vue são muito semelhantes às alterações no arquivo MoviesView.vue. Vamos alterar o bloco template e style do arquivo TvView.vue, para o seguinte conteúdo:

<template>
  <h1>Programas de TV</h1>
  <ul class="genre-list">
    <li v-for="genre in genres" :key="genre.id" class="genre-item">
      {{ genre.name }}
    </li>
  </ul>
</template>

<style scoped>
  .genre-list {
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: 2rem;
    list-style: none;
    padding: 0;
  }

  .genre-item {
    background-color: #5d6424;
    border-radius: 1rem;
    padding: 0.5rem 1rem;
    align-self: center;
    color: #fff;
    display: flex;
    justify-content: center;
  }

  .genre-item:hover {
    cursor: pointer;
    background-color: #7d8a2e;
    box-shadow: 0 0 0.5rem #5d6424;
  }
</style>

Note que as únicas diferenças em relaçao ao exemplo do MovieView.vue são as cores utilizadas.

< TMDB: adicionar o vue-router TMDB: Listando os filmes >