MDC-102 Web: estrutura e layout do Material Design (Web)

logo_components_color_2x_web_96dp.png

Os componentes do Material Design (MDC, na sigla em inglês) ajudam os desenvolvedores a implementar o Material Design. Criados por uma equipe de engenheiros e designers de UX do Google, os MDC oferecem dezenas de componentes de interface bonitos e funcionais disponíveis para Android, iOS, Web e Flutter.

material.io/develop

No codelab MDC-101, você usou dois componentes do Material Design (MDC) para criar uma interface da página de login: o campo de texto e o botão. Agora, vamos nos aprofundar nessa base adicionando navegação, estrutura e dados.

O que você vai criar

Neste codelab, você vai criar uma página inicial para o app Shrine, um app de e-commerce que vende roupas e artigos domésticos. Ele conterá:

  • Uma gaveta de navegação
  • Uma lista de imagens cheia de produtos.

Componentes da Web do MDC neste codelab

  • Gaveta
  • Lista de imagens

O que é necessário

  • Uma versão recente do Node.js, que vem com o npm, um gerenciador de pacotes JavaScript.
  • O exemplo de código (para ser baixado na próxima etapa)
  • Conhecimento básico de HTML, CSS e JavaScript

Como você classificaria seu nível de experiência com desenvolvimento da Web?

Iniciante Intermediário Proficiente

Está continuando do MDC-101?

Se você concluiu o MDC-101, o código para este codelab já está pronto. Pule para a etapa 3: adicionar uma gaveta de navegação.

Faça o download do app inicial do codelab

Fazer o download do app inicial

O app inicial está localizado no diretório material-components-web-codelabs-master/mdc-102/starter. cd para esse diretório antes de começar.

... ou clone-o do GitHub

Para clonar este codelab do GitHub, execute estes comandos:

git clone https://github.com/material-components/material-components-web-codelabs
cd material-components-web-codelabs/mdc-102/starter

Instalar dependências do projeto

O diretório atual deve ser material-components-web-codelabs/mdc-102/starter.. Execute o seguinte comando:

npm install

Depois que muita atividade aparecer, o terminal vai mostrar uma instalação bem-sucedida:

Executar o app inicial

No mesmo diretório, execute este comando:

npm start

O webpack-dev-server vai começar. Acesse http://localhost:8080/ no navegador para ver a página.

Pronto. A página de login do Shrine do codelab MDC-101 vai aparecer.

Agora que a página de login está pronta, vamos preencher o app com alguns produtos. Insira um nome de usuário e uma senha válidos e clique no botão "Próxima" para acessar a página inicial.

Quando o usuário faz login, uma página inicial aparece com a mensagem "Você conseguiu!" Ótimo, Mas agora o usuário precisa de ações para realizar e saber em que parte do app está. Vamos adicionar a navegação para resolver isso.

Os padrões de navegação do Material Design oferecem um alto grau de usabilidade. A gaveta de navegação do Material Design oferece navegação e acesso rápido a outras ações. Vamos adicionar um.

Instalar o gaveteiro e a lista do MDC

Para instalar os pacotes do componente de gaveta, execute:

npm install @material/drawer @material/list

Adicionar o HTML

Em home.html, substitua "You did it!" pela seguinte marcação para o gaveteiro e os itens dele:

<aside class="mdc-drawer shrine-drawer">
  <div class="mdc-drawer__header">
    <svg class="shrine-logo-drawer" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
       width="48px" height="48px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve" fill="#000000" focusable="false">
      <g>
        <g>
          <path d="M17,2H7L2,6.62L12,22L22,6.62L17,2z M16.5,3.58l3.16,2.92H16.5V3.58z M7.59,3.5H15v3H4.34L7.59,3.5z
             M11.25,18.1L7.94,13h3.31V18.1z M11.25,11.5H6.96L4.69,8h6.56V11.5z M16.5,12.32 M12.75,18.09V8h6.56L12.75,18.09z"/>
        </g>
        <rect fill="none" width="24" height="24"/>
      </g>
    </svg>
    <h1 class="shrine-title">SHRINE</h1>
  </div>
  <div class="mdc-drawer__content">
    <nav class="mdc-list">
      <a class="mdc-list-item mdc-list-item--activated" aria-selected="true" tabindex="0" href="#">
        <span class="mdc-list-item__text">Featured</span>
      </a>
      <a class="mdc-list-item" href="#">
        <span class="mdc-list-item__text">Apartment</span>
      </a>
      <a class="mdc-list-item" href="#">
        <span class="mdc-list-item__text">Accessories</span>
      </a>
      <a class="mdc-list-item" href="#">
        <span class="mdc-list-item__text">Shoes</span>
      </a>
      <a class="mdc-list-item" href="#">
        <span class="mdc-list-item__text">Tops</span>
      </a>
      <a class="mdc-list-item" href="#">
        <span class="mdc-list-item__text">Bottoms</span>
      </a>
      <a class="mdc-list-item" href="#">
        <span class="mdc-list-item__text">Dresses</span>
      </a>
      <a class="mdc-list-item" href="#">
        <span class="mdc-list-item__text">My Account</span>
      </a>
    </nav>
  </div>
</aside>

Adicionar o CSS

Em home.scss, adicione as seguintes instruções de importação após a importação atual:

@import "@material/drawer/mdc-drawer";
@import "@material/list/mdc-list";

Na parte de baixo de home.scss, adicione os seguintes estilos:

.shrine-logo-drawer {
  display: block;
  width: 48px;
  padding: 40px 0 0;
  margin: 0 auto;
  fill: currentColor;
}

.shrine-title {
  text-align: center;
  margin: 5px auto;
}

Adicionar o JavaScript

Precisamos instanciar a lista do MDC dentro da gaveta de navegação para uma navegação adequada pelo teclado. Abra home.js, que está vazio, e adicione o seguinte código:

import {MDCList} from '@material/list';

new MDCList(document.querySelector('.mdc-list'));

Atualize a página em http://localhost:8080/home.html. Sua página inicial vai ficar assim:

Agora, a página inicial tem uma gaveta de navegação persistente mostrando vários itens de navegação, com o primeiro item ativo.

Agora que nosso app tem uma estrutura básica, vamos organizar o conteúdo colocando-o em uma lista de imagens.

Instalar a lista de imagens do MDC

Para instalar o pacote do componente de lista de imagens, execute:

npm install @material/image-list

Adicione o HTML de uma lista com um item

Vamos começar adicionando uma lista de imagens ao lado da gaveta de navegação. Vamos começar a lista adicionando um único item, que consiste em uma imagem e um rótulo de texto.

Em home.html, adicione o seguinte HTML após o final do elemento <aside>:

<ul class="mdc-image-list product-list">
  <li class="mdc-image-list__item">
    <img class="mdc-image-list__image" src="assets/weave-keyring.jpg">
    <div class="mdc-image-list__supporting">
      <span class="mdc-image-list__label">Weave keyring</span>
    </div>
  </li>
</ul>

A lista inclui uma classe adicional, product-list, que vai aplicar estilos personalizados neste tutorial e no MDC-103.

Adicionar o CSS

Primeiro, em home.scss, adicione uma importação para os estilos do componente de lista de imagens após as importações atuais:

@import "@material/image-list/mdc-image-list";

Em seguida, adicione os seguintes estilos depois dos estilos iniciais da página inicial:

.product-list {
  @include mdc-image-list-standard-columns(4);

  overflow: auto;
}

Esses estilos instruem a lista de imagens a mostrar imagens em quatro colunas, garantindo que ela role de forma independente da gaveta.

Atualize a página. A página inicial vai ficar assim:

Uma lista de imagens foi criada para mostrar muitas imagens em uma coleção. Por isso, vamos adicionar mais imagens para entender melhor como o componente funciona.

Em home.html, copie o elemento <li> atual:

  <li class="mdc-image-list__item">
    <img class="mdc-image-list__image" src="assets/weave-keyring.jpg">
    <div class="mdc-image-list__supporting">
      <span class="mdc-image-list__label">Weave keyring</span>
    </div>
  </li>

Em seguida, cole-o 15 vezes depois do item atual (antes da tag de fechamento </ul>). Isso vai resultar em um total de 16 imagens. Não se preocupe com imagens e títulos exclusivos ainda. Você vai aprender sobre isso no MDC-103.

Atualizar. Agora, a página inicial vai ficar assim:

A lista de imagens mostra quatro imagens por linha, e elas são redimensionadas automaticamente para caber no espaço disponível da tela.

Seu site tem um fluxo básico que leva o usuário da página de login a uma página inicial, onde os produtos são exibidos. Em apenas algumas linhas de código, você adicionou um gaveteiro e uma lista de imagens para apresentar conteúdo. A página inicial agora tem uma estrutura e um conteúdo básicos.

Próximas etapas

Com a gaveta e a lista de imagens, você já usou mais dois componentes principais do Material Design da biblioteca MDC Web. Acesse o catálogo da Web do MDC para conhecer mais componentes.

Embora funcione perfeitamente, a página inicial ainda não representa uma marca ou ponto de vista específicos. No codelab MDC-103: temas do Material Design usando cor, forma, elevação e tipo, você vai personalizar o estilo desses componentes para representar uma marca vibrante e moderna.

Este codelab exigiu esforço e tempo normais para ser concluído

Concordo totalmente Concordo Não concordo nem discordo Discordo Discordo totalmente

Quero continuar usando componentes do Material Design no futuro

Concordo totalmente Concordo Não concordo nem discordo Discordo Discordo totalmente