Projeto Sementes do Futuro · Instituto Vida Videira

Código de Verdade

Aula 1 · Antes de começar

Preparar o vscode.dev

Aqui você vai escrever código de verdade, como os programadores fazem. Leia cada lição nesta tela e faça no vscode.dev, em outra aba.

Dica: uma janela de cada lado

Abra o vscode.dev em uma janela nova (Ctrl + N). No Chromebook, Alt + [ encosta a janela à esquerda e Alt + ] encosta à direita. Assim você lê e digita ao mesmo tempo.

1Abrir e preparar

  1. Abra o vscode.dev

    Abra uma aba nova (Ctrl + T), escreva vscode.dev e aperte Enter. Não precisa instalar nada.

  2. Abra uma pasta para o seu site

    Clique no menu ☰ (três risquinhos, no canto de cima, à esquerda) → File → Open Folder… (quer dizer Arquivo → Abrir pasta).

    Na janela que abrir: entre em Meus arquivos, clique em Nova pasta, dê o nome meu-site e clique em Abrir.

    O navegador vai pedir permissão. Clique no botão que permite editar os arquivos (por exemplo, Editar arquivos / Edit files). Se aparecer “Do you trust the authors…?”, clique em Yes, I trust the authors.

  3. Crie o arquivo index.html

    Na coluna da esquerda aparece o nome da pasta, MEU-SITE. Passe o mouse em cima dele: aparecem ícones pequenos. Clique no primeiro (New File… = Novo arquivo), escreva index.html e aperte Enter.

  4. Salve sempre

    Aperte Ctrl + S depois de cada mudança. Se a aba do arquivo mostra uma bolinha ● ao lado do nome, é porque ainda não salvou.

  5. Veja a sua página

    Abra o app Arquivos do Chromebook → Meus arquivos → meu-site → dê dois cliques em index.html. A página abre no Chrome.

    Mudou o código? Faça assim: Ctrl + S no vscode.dev → volte na aba da página → Ctrl + R para recarregar.

O nome precisa terminar em .html

Só assim o vscode.dev sabe que o arquivo é HTML. Confira no canto de baixo, à direita: tem que estar escrito HTML. Sem isso, o Emmet não funciona.

2O que é o Emmet?

O Emmet é um ajudante que já vem dentro do vscode.dev. Você escreve uma abreviação curta, aperta Tab, e ele escreve o código completo para você.

Exemplo de Emmet

Digitep+Tab→vira:

Por que vira isso?

  • pé o nome da tag. O Emmet escreve a tag que abre (<p>) e a que fecha (</p>).
  • |O cursor fica no meio, pronto para você escrever o texto.

O Emmet economiza tempo, mas o importante é você entender o que ele escreveu. Por isso, em cada lição, mostramos a abreviação, o Tab e o que ela vira, com a explicação.

O Tab não funcionou?

Às vezes aparece uma listinha de sugestões embaixo do que você digitou. Aperte Tab ou Enter para escolher. Se nada aparecer, confira se o arquivo foi salvo com o nome terminando em .html.

Aula 1 · Lição 1

A estrutura da página

Toda página HTML tem um esqueleto: html, head e body. São caixas, uma dentro da outra.

html — a página inteira
head — a cabeça

Informações sobre a página: o nome da aba, os acentos… Quase nada daqui aparece na tela.

body — o corpo

Tudo o que aparece na tela fica aqui dentro: títulos, textos, imagens, listas, links.

1O Emmet escreve o esqueleto

Com o arquivo index.html aberto e vazio:

Atalho Emmet

Digite!+Tab→vira:

Por que vira isso?

  • !é o atalho para “página completa”. Em vez de uma tag só, o Emmet escreve o esqueleto inteiro de uma página HTML.

2Entendendo cada parte

<!DOCTYPE html>
Avisa ao navegador: “isto é uma página HTML”. Fica sempre na primeira linha.
<html lang="en">
Abre a página inteira. O lang diz o idioma. Troque en (inglês) por pt-BR (português do Brasil).
<head>
A cabeça: guarda informações sobre a página.
<meta charset="UTF-8">
Faz os acentos e o ç aparecerem certinho.
<meta name="viewport" …>
Faz a página funcionar bem na tela do celular.
<title>Document</title>
O nome que aparece na aba do navegador. Troque Document pelo nome da sua página.
<body> … </body>
O corpo. Todo o conteúdo que aparece na tela vai aqui dentro. É aqui que você vai trabalhar em todas as lições.
</html>
Fecha a página. Fim.

Abrir e fechar

<body> abre a caixa. </body> fecha — repare na barra /. Tudo o que está entre as duas fica dentro.

Os espaços no começo das linhas (o recuo) mostram o que está dentro do quê. Eles não mudam a página, mas deixam o código fácil de ler.

3Digite no vscode.dev

Faça as duas trocas (pt-BR e o título) e escreva um título e um texto dentro do body:

Como deve ficar:

Minha página

Olá, mundo!

Esta é a minha primeira página de verdade.

Resultado. Sem cores e com letra simples, porque ainda não usamos CSS. Isso é normal!

Curiosidade

Se você escrever algo fora do body, o navegador às vezes tenta “consertar” sozinho. Mas não conte com isso: o certo é sempre colocar o conteúdo dentro do body.

Desafio

Aula 1 · Lição 2

Títulos e texto

O HTML tem seis tamanhos de título: de h1 (o mais importante) até h6 (o menos importante). E o p é o texto normal.

Os seis títulos

h1 — Título da página

h2 — Capítulo

h3 — Parte do capítulo

h4 — Parte menor

h5 — Ainda menor
h6 — O menor de todos

p — Um parágrafo de texto normal.

1Pense como um livro

  • h1 é o nome do livro. Use só um por página.
  • h2 são os capítulos.
  • h3 são as partes de cada capítulo… e assim por diante.

Escolha pela importância, não pelo tamanho

Não use h4 só porque quer uma letra menor. O tamanho da letra se muda depois, com CSS. No HTML, você escolhe o título pela importância.

2Emmet para títulos e textos

Atalho Emmet

Digiteh1+Tab→vira:

Por que vira isso?

  • h1é o nome da tag. O Emmet escreve a abertura <h1>, o fechamento </h1> e deixa o cursor no meio. Funciona igual com h2, h3… e p.

Atalho Emmet: um depois do outro

Digiteh2+p+Tab→vira:

Por que vira isso?

  • h2cria um título de capítulo.
  • +quer dizer “e depois”: coloca a próxima tag logo embaixo, no mesmo nível.
  • pcria um parágrafo.

Depois de apertar Tab, o cursor fica dentro do h2. Escreva o título e aperte Tab de novo: o cursor pula para dentro do p.

Extra: texto de enchimento

Digite lorem + Tab dentro de um p: o Emmet escreve um texto falso em latim (“Lorem ipsum…”). Serve para testar a página antes de ter o texto de verdade. lorem10 escreve só 10 palavras.

3Extra: destacar palavras

Dentro de um p, você pode destacar pedaços do texto:

Resultado

Eu gosto de forró e de praia.

  • strong = muito importante (aparece em negrito).
  • em = ênfase, como quando a gente fala mais forte (aparece inclinado).

Desafio

No body do seu index.html, monte:

Aula 1 · Lição 3

Listas

Existem dois tipos de lista: com bolinhas e com números. Cada item da lista é um li.

ul
Lista não ordenada: com bolinhas. A ordem não importa (ex.: lista de compras).
ol
Lista ordenada: com números. A ordem importa (ex.: passo a passo de uma receita).
li
Um item da lista. Fica sempre dentro de um ul ou de um ol.

1Lista com bolinhas

Atalho Emmet

Digiteul>li*3+Tab→vira:

Por que vira isso? Leia da esquerda para a direita:

  • ulcria a lista com bolinhas.
  • >quer dizer “dentro de”: o que vem depois fica dentro do ul. Por isso os li aparecem com recuo.
  • licria um item.
  • *3quer dizer “repita 3 vezes”. Por isso aparecem três li. Quer cinco itens? Use *5.

O cursor começa dentro do primeiro li. Escreva o item e aperte Tab para pular para o próximo.

Depois de preencher:

Resultado

Lista de compras

  • Arroz
  • Feijão
  • Café

2Lista com números

Atalho Emmet

Digiteol>li*3+Tab→vira:

Por que vira isso?

  • olcria a lista numerada. O resto é igual: > coloca dentro, li é o item, *3 repete três vezes.

Você não escreve os números. O navegador numera sozinho: 1, 2, 3…

Resultado

Como fazer café

  1. Ferva a água.
  2. Coloque o pó no filtro.
  3. Despeje a água devagar.

Extra: já com o texto

No Emmet, o que fica entre chaves { } vira o texto. ul>li{Item}*3 cria três itens já escritos “Item”.

Desafio

Aula 1 · Lição 4

Imagens e atributos

A tag img coloca uma imagem na página. Mas ela precisa de uma informação a mais: qual imagem mostrar. Para isso servem os atributos.

1O que é um atributo?

Atributo é uma informação extra que vai dentro da tag de abertura. Sempre no formato nome="valor", com o valor entre aspas.

<img src="flor.png" alt="Uma flor">
  • a tag
  • nome do atributo
  • valor (entre aspas)
src
Vem de source, “fonte”: de onde vem a imagem. É o endereço da imagem.
alt
Texto alternativo: descreve a imagem. Aparece se a imagem não carregar, e é lido em voz alta por programas que ajudam pessoas cegas.

O img não fecha

Repare: não existe </img>. A imagem não tem nada “dentro” dela, então a tag não precisa fechar.

2Emmet para imagem

Atalho Emmet

Digiteimg+Tab→vira:

Por que vira isso?

  • imgo Emmet sabe que imagem sempre precisa de src e alt, então já escreve os dois atributos, com as aspas vazias.
  • |O cursor fica entre as aspas do src. Cole o endereço, aperte Tab e o cursor pula para o alt.

3Pegue uma imagem

Escolha uma figura e toque em Copiar endereço. Depois, no vscode.dev, clique entre as aspas do src="" e aperte Ctrl + V para colar.

Por que o endereço é tão comprido?

Estes endereços começam com data:image/svg+xml, porque a própria imagem está escrita dentro do endereço. Assim ela funciona sem internet e sem baixar nada.

Normalmente, o src é curto: o nome de um arquivo na sua pasta (src="foto.jpg") ou um endereço da internet (src="https://…/foto.jpg").

Vai ficar assim (o endereço foi encurtado aqui):

Resultado

Minha flor preferida

Uma flor rosa

4Extra: mudar o tamanho

O atributo width (largura) diz quantos pontinhos (pixels) de largura a imagem vai ter:

Desafio

Aula 1 · Lição 5

Links

Um link é um texto (ou imagem) que você clica para ir a outra página. É o que faz a internet ser uma “rede”: as páginas ligadas umas às outras.

<a href="https://pt.wikipedia.org/wiki/Fortaleza">Conheça Fortaleza</a>
a
A tag do link. Vem de anchor, “âncora”.
href
O atributo com o endereço para onde o link leva. Precisa começar com https://.
Conheça Fortaleza
O texto entre a abertura e o fechamento é o que aparece na tela para clicar.
Resultado

O navegador deixa o link azul e sublinhado sozinho.

1Emmet para link

Atalho Emmet

Digitea+Tab→vira:

Por que vira isso?

  • ao Emmet sabe que todo link precisa de href, então já escreve o atributo vazio.
  • |O cursor fica nas aspas do href. Escreva o endereço, aperte Tab e o cursor pula para o meio, onde vai o texto do link.

2Abrir em uma aba nova

Normalmente, o link abre na mesma aba e a sua página some. Para abrir em uma aba nova, use o atributo target="_blank":

Atalho Emmet

Digitea:blank+Tab→vira:

Por que vira isso?

  • acria o link.
  • :blanké uma variação: já coloca o target="_blank" (abrir em aba nova).
  • http://o Emmet começa o endereço para você. Troque por https:// e o resto do endereço.
  • relrel="noopener noreferrer" é uma proteção: impede que a outra página mexa na sua aba. Pode deixar como está.

Como pegar um endereço

Abra o site que você quer, clique uma vez na barra de endereço lá em cima (o endereço fica todo marcado), aperte Ctrl + C. Volte no vscode.dev, clique entre as aspas do href e aperte Ctrl + V.

3Extra: imagem que é link

Coloque um img dentro do a. Aí, clicar na imagem abre o link:

Desafio

Aula 1 · Lição 6

Juntar tudo: a página sobre mim

Agora você sabe o bastante para fazer uma página completa, só com HTML. Monte a sua “página sobre mim” no index.html.

A sua página precisa ter

1Um exemplo para se guiar

Não copie igual: escreva do seu jeito, com as suas informações.

Página da Ana

Ana Souza

Um sol amarelo

Eu moro em Fortaleza e estou aprendendo a fazer sites.

Meu sonho é trabalhar com tecnologia.

Meus hobbies

  • Ouvir forró
  • Cozinhar
  • Ir à praia

Um lugar que eu gosto

Conheça Fortaleza

2Resumo do que você já sabe

TagPara que serveEmmet
html head bodyO esqueleto. O conteúdo visível vai no body.!
h1 … h6Títulos, do mais importante ao menos importante.h1 h2+p
pParágrafo de texto.p lorem
strong emDestacar palavras.strong em
ul ol liListas com bolinhas / com números, e seus itens.ul>li*3
imgImagem. Atributos src e alt.img
aLink. Atributo href.a a:blank

3Publicar e mostrar para a turma

Para a sua página ter um endereço na internet e qualquer pessoa abrir, dá para publicar de graça no GitHub Pages. Tudo pelo navegador, sem instalar nada. Faça com o professor na primeira vez.

  1. Entre no GitHub

    Abra github.com e entre na sua conta. Não tem conta? Peça ajuda ao professor para criar.

  2. Crie um repositório

    Clique no + (canto de cima, à direita) → New repository. Nome: minha-pagina. Deixe marcado Public. Clique em Create repository.

  3. Crie o arquivo

    Clique em creating a new file (ou Add file → Create new file). No nome do arquivo, escreva index.html.

  4. Copie o seu código

    No vscode.dev, clique no código e aperte Ctrl + A (seleciona tudo) e Ctrl + C (copia). No GitHub, clique na área grande de texto e aperte Ctrl + V.

  5. Salve no GitHub

    Clique em Commit changes… e, na janelinha, em Commit changes de novo.

  6. Ligue o GitHub Pages

    Clique em Settings → Pages (na coluna da esquerda). Em Branch, escolha main e clique em Save.

  7. Pegue o seu endereço

    Espere 1 ou 2 minutos e recarregue. Vai aparecer o endereço, parecido com https://seu-usuario.github.io/minha-pagina/. Mostre para a turma!

As imagens funcionam?

Sim. As imagens da Lição 4 estão escritas dentro do próprio endereço, então vão junto com o código. Não precisa enviar mais nada.

Aula 2

CSS: a aparência da página

Esta aula abre quando você terminar a Aula 1.

Na lição 6 (Juntar tudo), monte a sua página sobre mim e toque em Marcar como concluída. Pronto: a Aula 2 abre na hora.

Ir para a lição 6

Aula 2 · Lição 1

O que é CSS

Na aula 1, você fez a estrutura da página com HTML: o que existe nela. Agora vem o CSS: a aparência. Cor, tamanho da letra, espaços, bordas.

HTML
O corpo da página: títulos, textos, listas, imagens. Diz o que tem.
CSS
A roupa da página: cores, letras, espaços. Diz como fica.

1Abra o seu site de novo

  1. Abra o vscode.dev

    Menu ☰ → File → Open Recent (Abrir recente) → meu-site. Se não aparecer, use File → Open Folder… e escolha a pasta meu-site de novo.

  2. Permita de novo

    O navegador pode pedir permissão outra vez. Clique no botão que permite editar os arquivos.

  3. Abra o index.html

    Clique nele na coluna da esquerda. Abra também a página no Chrome, como na aula 1 (app Arquivos → dois cliques).

2Onde escrever o CSS

Para começar, o CSS vai dentro de uma tag <style>, que fica no head. O head guarda informações sobre a página, e o CSS é isso: uma informação de como a página deve ficar. Ele não aparece na tela.

Atalho Emmet (no head, embaixo do title)

Digitestyle+Tab→vira:

Por que vira isso?

  • styleé o nome da tag, igual a p ou h1: o Emmet abre, fecha e deixa o cursor no meio. Aperte Enter para abrir espaço e escrever o CSS dentro.

3Uma regra de CSS

O CSS é feito de regras. Cada regra diz: “esta parte da página fica assim”.

h1 { color: blue; }
  • seletor: qual parte muda
  • propriedade: o que muda
  • valor: como fica
h1
O seletor: é o nome da tag do HTML. Esta regra vale para todos os h1 da página.
{ }
As chaves abrem e fecham a regra, como a abertura e o fechamento de uma tag.
color: blue;
Propriedade, dois pontos :, valor, e termina com ponto e vírgula ;. Aqui: “a cor da letra é azul”.

Digite no seu index.html (só o que está no head mudou):

O CSS fala inglês

color quer dizer cor, blue quer dizer azul. Se escrever cor: azul;, não funciona. E se nada mudou, confira: faltou o ;? Faltou fechar a chave }? Salvou (Ctrl + S) e recarregou (Ctrl + R)?

Desafio

Aula 2 · Lição 2

Cores

Duas propriedades mudam cores: color muda a cor da letra, e background-color muda a cor do fundo.

1Cores pelo nome (em inglês)

2Cores pelo código

Os nomes são poucos. Para ter qualquer cor, usamos um código que começa com # e tem 6 letras ou números, como #1C6EA4. Você não precisa decorar: copie de uma paleta.

O vscode.dev mostra a cor

Ao lado de cada cor escrita no CSS aparece um quadradinho colorido. Passe o mouse em cima dele para abrir um seletor de cores e escolher com o mouse.

3Emmet para cores

Atalho Emmet (dentro das chaves)

Digitec+Tab→vira:
Digitebgc+Tab→vira:

Por que vira isso?

  • cé o apelido de color. O Emmet escreve a propriedade inteira, os dois pontos, um valor de exemplo e o ;. #000 é preto: troque pela cor que quiser.
  • bgcsão as primeiras letras de background-color (cor de fundo). #fff é branco.

4Pintar o fundo da página

Lembra que o body é o corpo da página, onde fica todo o conteúdo? Se o CSS pintar o fundo do body, a página inteira muda de cor.

Quem pinta é o CSS

O body continua sendo a estrutura (HTML). A cor de fundo é do CSS. A regra só está dizendo: “pinte o fundo do corpo”.

Cuidado com letra clara em fundo claro: fica difícil de ler. Use letra escura em fundo claro, ou letra clara em fundo escuro.

Desafio

Aula 2 · Lição 3

Letras

Com CSS você escolhe o tamanho, o tipo de letra, o negrito e o alinhamento.

1Tamanho: font-size

Atalho Emmet

Digitefz24+Tab→vira:

Por que vira isso?

  • fzé o apelido de font-size (tamanho da letra).
  • 24é o tamanho. O Emmet coloca px sozinho.
  • pxpixels: os pontinhos da tela. A letra normal tem uns 16px. Quanto maior o número, maior a letra.

2Tipo de letra: font-family

Cada computador tem fontes diferentes. Por isso, escrevemos uma lista: se o computador não tiver a primeira, usa a próxima. No fim, colocamos sempre uma família, que todo computador tem:

sans-serifLetra sem pezinho
serifLetra com pezinho
monospaceLetra de máquina

Atalho Emmet

Digiteff+Tab→vira:
  • fffont-family. O cursor fica antes do ;: escreva, por exemplo, Arial, sans-serif.

3Negrito e alinhamento

Atalhos Emmet

Digitefw:b+Tab→vira:
Digiteta:c+Tab→vira:

Por que vira isso?

  • fwfont-weight: o “peso” da letra.
  • :bos dois pontos escolhem o valor: b = bold (negrito).
  • tatext-align: o alinhamento do texto.
  • :ccenter (centro). Também existe ta:l (left, esquerda) e ta:r (right, direita).

Tudo junto:

Regra no body vale para tudo

A fonte que você coloca no body passa para tudo o que está dentro dele: títulos, textos, listas. Isso se chama herança. Depois, é só mudar o que precisar em cada tag.

Desafio

Aula 2 · Lição 4

Espaços e bordas

Para o CSS, todo elemento é uma caixa. Um parágrafo, um título, uma imagem: todos são caixas. E toda caixa tem camadas.

margin: espaço de fora
border: a borda
padding: espaço de dentro
o conteúdo (o texto)

1Emmet para espaços e bordas

Atalhos Emmet

Digitep20+Tab→vira:
Digitem20+Tab→vira:
Digitebd++Tab→vira:
Digitebdrs+Tab→vira:

Por que vira isso?

  • p20padding de 20px: espaço de dentro, entre o texto e a borda.
  • m20margin de 20px: espaço de fora, entre esta caixa e as outras.
  • bd+border com valores prontos: 1px de grossura, solid (linha contínua) e cor #000 (preto).
  • bdrsborder-radius: arredonda os cantos. Escreva, por exemplo, 12px.

O mesmo “p”, dois significados

No HTML, p + Tab cria um parágrafo. Dentro do <style>, p20 + Tab vira padding. O Emmet sabe onde o cursor está e escolhe certo.

2Centralizar a página

Numa tela grande, o texto fica esticado de um lado ao outro. Duas linhas no body resolvem:

max-width: 700px;
A página pode ter no máximo 700px de largura.
margin: 0 auto;
Nenhum espaço em cima e embaixo (0). Dos lados, auto: o navegador divide o espaço que sobra igual dos dois lados. Resultado: a página fica no meio.

3Imagem redonda

width (w150 + Tab) muda a largura. E border-radius: 50%; arredonda tanto que uma imagem quadrada vira um círculo.

Tudo junto:

Desafio

Aula 2 · Lição 5

Classes: estilo só para alguns

A regra p { color: red; } pinta todos os parágrafos. E se você quiser destacar só um? Para isso existe a classe.

1Duas partes: uma no HTML, outra no CSS

class="destaque"
No HTML: um atributo que dá um nome para o elemento. Você inventa o nome.
.destaque { }
No CSS: o ponto antes do nome quer dizer “os elementos com esta classe”.

Atalho Emmet (no HTML, dentro do body)

Digitep.destaque+Tab→vira:

Por que vira isso?

  • pcria o parágrafo.
  • .no Emmet, o ponto quer dizer classe, igual ao CSS. Por isso o Emmet escreve o atributo class.
  • destaqueé o nome da classe, que vai entre as aspas.

No HTML (dentro do body):

No CSS (dentro do style):

Como dar nome a uma classe

Use letras minúsculas, sem espaço e sem acento. Para juntar palavras, use hífen: cor-favorita, foto-perfil. A mesma classe pode ser usada em vários elementos, até de tags diferentes.

Desafio

Aula 2 · Lição 6

Juntar tudo: a sua página com estilo

Pegue a sua “página sobre mim” da aula 1 e deixe ela com a sua cara.

A sua página precisa ter

1Um exemplo para se guiar

Não copie igual: escolha as suas cores e o seu jeito.

Uma novidade no exemplo

No img há display: block;. A imagem normalmente fica “na linha”, como uma palavra. Com display: block, ela vira uma caixa inteira, e aí o margin: 0 auto; consegue colocar ela no meio.

2Resumo do CSS que você já sabe

PropriedadePara que serveEmmet
colorCor da letra.c
background-colorCor do fundo.bgc
font-sizeTamanho da letra.fz24
font-familyTipo de letra.ff
font-weightNegrito.fw:b
text-alignAlinhamento do texto.ta:c
paddingEspaço de dentro.p20
marginEspaço de fora.m20
borderBorda.bd+
border-radiusCantos arredondados.bdrs
widthLargura.w150
.nomeSeletor de classe.p.nome (no HTML)

3Atualizar a página publicada

Se você publicou a página na aula 1, dá para atualizar o mesmo endereço:

  1. Abra o seu repositório

    Em github.com, entre no repositório minha-pagina e clique no arquivo index.html.

  2. Clique no lápis

    O ícone de lápis (Edit this file), no canto de cima do código.

  3. Troque o código

    Clique no código do GitHub, aperte Ctrl + A e Delete. No vscode.dev, Ctrl + A e Ctrl + C. Volte no GitHub e Ctrl + V.

  4. Salve

    Clique em Commit changes… e em Commit changes de novo. Em 1 ou 2 minutos, o seu endereço mostra a página nova.

Aula 3

Organizar a página

Esta aula abre quando você terminar a Aula 2.

Na lição 6 da Aula 2 (Juntar tudo), deixe a sua página com estilo e toque em Marcar como concluída. Pronto: a Aula 3 abre na hora.

Ir para a lição 6 da Aula 2

Aula 3 · Lição 1

As partes da página

Até agora, tudo ficava solto dentro do body. Os sites de verdade dividem o body em partes, como uma casa tem cômodos.

header cabeçalho: o nome do site
nav menu de links
main o conteúdo principal
section uma parte
section outra parte
header
Cabeçalho: a parte de cima, com o nome do site (o h1) e, muitas vezes, o menu.
nav
Navegação: o menu com links para as partes do site.
main
O conteúdo principal da página. Só existe um por página.
section
Uma seção: uma parte com um tema, que normalmente começa com um h2.
footer
Rodapé: a parte de baixo, com contato e créditos.

Atalho Emmet (dentro do body)

Digiteheader+main+footer+Tab→vira:

Por que vira isso?

  • +quer dizer “e depois”, como você viu no h2+p. As três partes ficam uma embaixo da outra, no mesmo nível.

Aperte Tab para pular de uma parte para a outra e aperte Enter para abrir espaço dentro de cada uma.

O body organizado:

Não mudou nada na tela?

É isso mesmo! Essas tags não mudam a aparência sozinhas. Elas dão significado: o Google e os programas que leem a tela para pessoas cegas entendem o que é cada parte. E o CSS consegue escolher cada parte, como você vai ver nas próximas lições.

E o div? É uma caixa sem significado, só para agrupar coisas. Use quando nenhuma dessas tags servir.

Desafio

Aula 3 · Lição 2

O CSS em um arquivo separado

Até agora, o CSS ficava no <style>, dentro do HTML. Os sites de verdade guardam o CSS em um arquivo só dele: o style.css.

  • O HTML fica mais limpo: só a estrutura.
  • Um site com várias páginas usa o mesmo arquivo de CSS. Você muda uma vez e todas as páginas mudam.

1Passo a passo

  1. Crie o arquivo

    No vscode.dev, passe o mouse na pasta MEU-SITE, clique em New File… e escreva style.css. Igual você fez com o index.html.

  2. Mude o CSS de lugar

    No index.html, selecione as regras que estão dentro do <style> e aperte Ctrl + X (recortar). No style.css, aperte Ctrl + V. Não leve as tags <style> e </style>: o arquivo .css tem só as regras.

  3. Apague o style vazio

    No index.html, apague o <style></style> que sobrou.

  4. Ligue os dois arquivos

    No head do index.html, no lugar do style, use o Emmet abaixo. Salve os dois arquivos.

Atalho Emmet (no head)

Digitelink:css+Tab→vira:

Por que vira isso?

  • linka tag que liga a página a outro arquivo. Não confunda com o a: o link não aparece na tela. Ele também não fecha, igual ao img.
  • :cssa variação para CSS: o Emmet já escreve os atributos certos.
  • reldiz o que é o arquivo: stylesheet quer dizer “folha de estilo”, ou seja, CSS.
  • hrefo endereço do arquivo, igual ao href do link. O Emmet já sugere style.css.

index.html (o head):

style.css (só as regras, sem a tag style):

O CSS sumiu da página?

Confira: o nome no href é igual ao nome do arquivo (style.css, tudo minúsculo)? Os dois arquivos estão na mesma pasta? Você salvou os dois?

Desafio

Aula 3 · Lição 3

Lado a lado: flexbox

Normalmente, as caixas ficam uma embaixo da outra. Com display: flex, elas ficam lado a lado.

1A caixa de fora e as caixas de dentro

O flex vai na caixa de fora (a que guarda as outras). Aí as caixas de dentro se arrumam lado a lado. Vamos fazer três cartões:

Atalho Emmet (no HTML)

Digitesection.cartoes>div.cartao*3+Tab→vira:

Por que vira isso? Tudo o que você já sabe, junto:

  • section.cartoesuma section com a classe cartoes. É a caixa de fora.
  • >dentro de.
  • div.cartaoum div (caixa sem significado) com a classe cartao.
  • *3três vezes.

2O CSS do flex

Atalhos Emmet (no CSS)

Digited:f+Tab→vira:
Digitefxw:w+Tab→vira:

Por que vira isso?

  • d:fdisplay: flex. Na caixa de fora: “arrume quem está dentro lado a lado”.
  • fxw:wflex-wrap: wrap. Se não couber (no celular, por exemplo), as caixas descem para a linha de baixo.
gap: 16px;
O espaço entre as caixas de dentro. Este você digita inteiro.
flex: 1;
Vai nas caixas de dentro: todas dividem o espaço em partes iguais.

Tudo junto:

E o min-width?

min-width: 140px; diz que o cartão tem no mínimo 140px. Numa tela pequena, se não couber, o flex-wrap joga o cartão para baixo.

Desafio

Aula 3 · Lição 4

Um menu de verdade

Quase todo site tem um menu em cima. Ele é feito com o que você já sabe: um nav, uma lista e links.

Atalho Emmet (dentro do header)

Digitenav>ul>li*3>a+Tab→vira:

Por que vira isso?

  • nav>uluma lista dentro do nav.
  • >li*3três itens dentro da lista.
  • >aum link dentro de cada item. Como o *3 veio antes, cada um dos três itens ganha o seu link.

1Links para as partes da mesma página

O link pode levar para uma parte da própria página. Dê um id (um nome único) para a parte e use # no href:

id="hobbies"
Um nome para a parte. Diferente da classe, o id é único: só um elemento da página pode ter aquele id.
href="#hobbies"
O # quer dizer: “vá para a parte com este id”.

2O CSS do menu

Passe o mouse em cima dos botões do resultado: eles mudam de cor.

nav a
Dois nomes separados por espaço: “os a que estão dentro do nav”. Os outros links da página não mudam.
list-style: none;
Tira as bolinhas da lista. Emmet: lis:n.
text-decoration: none;
Tira o sublinhado do link. Emmet: td:n.
a:hover
O :hover quer dizer “quando o mouse passa em cima”. A regra só vale nesse momento.

Desafio

Aula 3 · Lição 5

Juntar tudo: um site organizado

Agora a sua página tem cara de site de verdade: cabeçalho com menu, conteúdo em cartões e rodapé.

A sua página precisa ter

1Um exemplo para se guiar

index.html (o body):

style.css:

2Publicar com o style.css

Agora o site tem dois arquivos. No GitHub, os dois precisam estar no repositório:

  1. Atualize o index.html

    Como na Aula 2: abra o index.html no GitHub, clique no lápis, troque o código e clique em Commit changes.

  2. Crie o style.css

    Na página do repositório, clique em Add file → Create new file. Nome: style.css. Copie o CSS do vscode.dev (Ctrl + A, Ctrl + C), cole e clique em Commit changes.

  3. Confira

    Em 1 ou 2 minutos, abra o seu endereço e recarregue. Se a página aparecer sem cores, confira o nome do arquivo: tem que ser style.css, igual ao href.

3Resumo da Aula 3

O quêPara que serveEmmet
header main footerAs partes da página.header+main+footer
section divUma parte com tema / uma caixa para agrupar.div.cartao*3
linkLiga o HTML ao arquivo de CSS.link:css
display: flexLado a lado (vai na caixa de fora).d:f
flex-wrap: wrapDesce se não couber.fxw:w
nav + lista + linksO menu.nav>ul>li*3>a
id e href="#…"Link para uma parte da página.—
nav aOs links que estão dentro do nav.—
:hoverQuando o mouse passa em cima.—

Aula 4

Formulários

Esta aula abre quando você terminar a Aula 3.

Na lição 5 da Aula 3 (Juntar tudo), organize o seu site e toque em Marcar como concluída. Pronto: a Aula 4 abre na hora.

Ir para a lição 5 da Aula 3

Aula 4 · Lição 1

O formulário

O formulário é a parte do site onde a pessoa escreve e envia informações: um cadastro, uma mensagem de contato, uma pesquisa.

form
A caixa que guarda todos os campos do formulário.
label
O nome do campo, que aparece na tela: “Seu nome”, “Seu e-mail”…
input
O campo onde a pessoa escreve. Ele não fecha, igual ao img.

1Emmet para formulário

Atalhos Emmet (dentro do body)

Digiteform+Tab→vira:
Digitelabel+Tab→vira:
Digiteinp+Tab→vira:

Por que vira isso?

  • actiondiz para onde o formulário envia os dados. Por enquanto, deixe vazio.
  • forno label, liga o nome ao campo: escreva aqui o id do input.
  • typeo tipo do campo. text é texto comum.
  • nameo nome do dado quando o formulário for enviado (ex.: nome).
  • idum nome único para o campo, o mesmo que vai no for do label.

2O label e o input, ligados

Digite dentro do body:

No resultado acima, clique na palavra “Seu nome:”: o cursor vai sozinho para o campo. É isso que o for="nome" + id="nome" fazem.

placeholder
Uma dica cinza dentro do campo, que some quando a pessoa começa a escrever.

Desafio

Aula 4 · Lição 2

Tipos de campo

Mudando o type do input, o navegador muda o campo sozinho: mostra um calendário para datas, só aceita números, confere o e-mail…

email
E-mail. No celular, o teclado já mostra o @.
number
Só números, com setinhas para aumentar e diminuir.
date
Data, com um calendário para escolher.
password
Senha: mostra bolinhas no lugar das letras.

Atalho Emmet

Digiteinput:email+Tab→vira:
  • :emaildepois dos dois pontos vem o tipo. Funciona com os outros também: input:date, input:password…

1Texto grande, escolhas e caixinhas

textarea
Campo de texto grande, para mensagens. Esse fecha: </textarea>. O rows diz quantas linhas aparecem.
select + option
Uma lista para escolher. Cada opção é um option. Emmet: select>option*3.
radio
Bolinhas: dá para marcar só uma. Para isso, todas precisam ter o mesmo name.
checkbox
Caixinha de marcar: sim ou não.
br
Uma quebra de linha: o que vem depois começa na linha de baixo. Não fecha.

Desafio

Aula 4 · Lição 3

O botão e os campos obrigatórios

Todo formulário precisa de um botão para enviar. E alguns campos não podem ficar vazios.

Atalho Emmet

Digitebtn:s+Tab→vira:
  • btnapelido de button (botão). Ele fecha: o texto do botão vai no meio.
  • :ssubmit: “enviar”. Este botão envia o formulário.

1required: obrigatório

O atributo required diz que o campo é obrigatório. Ele não tem valor: é só escrever a palavra.

Teste no resultado: clique em Enviar com tudo vazio. Depois, escreva um e-mail sem @. O navegador avisa sozinho, sem você programar nada.

E para onde vai a mensagem?

Para receber os dados de verdade, o site precisa de um servidor ou de um serviço que guarde as mensagens. Isso é um próximo passo. Por enquanto, o seu formulário fica pronto e bonito, mas não envia para lugar nenhum. Nos resultados desta apostila, o envio é só de teste.

Desafio

Aula 4 · Lição 4

Formulário com estilo

Sem CSS, o formulário fica apertado e pequeno. Com poucas regras, ele fica fácil de usar, até no celular.

input, textarea
A vírgula junta seletores: a mesma regra vale para os dois.
display: block;
No label: o nome fica em cima do campo, numa linha só dele.
width: 100%;
O campo ocupa toda a largura. Emmet: w100p (o p vira %).
box-sizing: border-box;
Faz o padding e a borda caberem dentro dos 100%. Sem isso, o campo passa um pouco da borda da página.
:focus
Como o :hover, mas vale quando o campo está selecionado (com o cursor dentro).
border: none;
Tira a borda do botão.

Desafio

Aula 4 · Lição 5

Juntar tudo: “Fale comigo”

Coloque na parte de contato do seu site um formulário completo e bonito.

O seu formulário precisa ter

1Um exemplo para se guiar

index.html (a section de contato):

style.css (acrescente no fim):

Duas novidades no CSS

label.inline quer dizer “os label que têm a classe inline”: assim o label da caixinha fica ao lado dela, e não em cima.

input[type="text"] escolhe só os input do tipo texto. Assim a caixinha (checkbox) não fica com 100% de largura.

2Resumo da Aula 4

O quêPara que serveEmmet
formA caixa do formulário.form
label + forO nome do campo, ligado ao id do campo.label
input + typeCampo: text, email, number, date, password, radio, checkbox.inp input:email
textareaTexto grande.—
select + optionLista de escolha.select>option*3
buttonBotão de enviar.btn:s
requiredCampo obrigatório.—
:focusQuando o campo está selecionado.—