Aviso: Este post foi traduzido para o português usando um modelo de tradução automática. Por favor, me avise se encontrar algum erro.
Comentários
Para adicionar um comentário a um html
, utiliza o seguinte código:
<!-- Comentario -->
Cabeça
O HTML
deve começar com uma tag !DOCTYPE
que indica ao navegador a versão do HTML. Ao colocar apenas HTML
, o navegador entende que é a versão 5.
<!DOCTYPE html>
A seguir deve ser colocado um contêiner com a tag html
com um atributo chamado lang
que indica o idioma no qual a página foi escrita.
<!DOCTYPE html><html lang="es"></html>
Dentro são criados dois contêineres adicionais, o de head
e o de body
<!DOCTYPE html><html lang="es"><head></head><body></body></html>
No contêiner head
vai tudo o que o navegador precisa para poder carregar, enquanto no body
vai tudo o que será exibido na página.
Uma das tags do head
é meta
que possui um atributo chamado charset
que indica o tipo de codificação do texto, geralmente é utf-8
, utf-16
.
Outro tipo de meta
é o name="description"
, que é uma descrição para os navegadores. É importante para o SEO.
Outro tipo de meta é o name="robots"
que é para os robôs dos motores de busca e indica se a página pode ser seguida ou não.
Outro atributo do head
é title
, que indica o título que é visto na aba.
Outro meta é name="viewport"
que é para o design responsivo.
Outro meta é name="theme-color"
que é para a cor da barra de navegação.
Outro objetivo é o favicon, que é o ícone que aparece na guia. É escrito com a tag link
e os atributos type
e href="path"
.
Algumas tags muito importantes para o SEO são todas as relacionadas a Open Graph
, que são as que aparecem quando um link é compartilhado nas redes sociais. Para isso, uma página muito útil é open graph, onde você coloca seu link e ela te diz como ele apareceria em cada rede social. Essas metatags são
property="og:title"
que é o título que aparece nas redes sociais.
property="og:description"
é a descrição que é vista nas redes sociais.
property="og:image"
que é a imagem que aparece nas redes sociais.
property="og:image:alt"
que é o texto alternativo da imagem que aparece nas redes sociais.
Há uma tag para o CSS
que é link
Na página de Open Graph podem ser vistas todas as tags que podem ser colocadas no head
.
Outra tag importante para o SEO é link rel="alternate"
, que é usada para indicar que existe uma versão alternativa da página, por exemplo, em outro idioma.
Outra tag importante para o SEO é link rel="canonical"
, que serve para indicar que há uma versão canônica da página, por exemplo em outro idioma.
Com as tags style
e script
é possível escrever CSS
e JavaScript
no html
.
<!DOCTYPE html><html lang="es"><head><meta charset="utf-8"/><meta name="description" content="Descripción para los buscadores"/><meta name="robots" content="index,folow"/><title>Título pestaña</title><meta name="viewport" content="width=device-width"/><meta name="theme-color" content="#09f"/><link rel="stulesheet" href="path"/><link rel="icon" type="image/png" href="path"/><meta property="og:title" content="Título para las redes sociales"/><meta property="og:description" content="Descripción para las redes sociales"/><meta property="og:image" content="path"/><meta property="og:image:alt" content="Texto alternativo para la imagen"/><link rel="alternate" href="path" hreflang="en"/><link rel="canonical" href="path"/></head><body></body></html>
Corpo
Há tags de contêiner que ajudam a criar uma estrutura e trazem mais tags dentro. E há tags de contêiner que são as que contêm o texto, imagens, etc.
Etiquetas contenedoras
Cabeçalho
Esta é a tag para descrever o header
<!DOCTYPE html><html lang="es"><head><meta charset="utf-8"/><meta name="description" content="Descripción para los buscadores"/><meta name="robots" content="index,folow"/><title>Título pestaña</title><meta name="viewport" content="width=device-width"/><meta name="theme-color" content="#09f"/><link rel="stulesheet" href="path"/><link rel="icon" type="image/png" href="path"/><meta property="og:title" content="Título para las redes sociales"/><meta property="og:description" content="Descripción para las redes sociales"/><meta property="og:image" content="path"/><meta property="og:image:alt" content="Texto alternativo para la imagen"/><link rel="alternate" href="path" hreflang="en"/><link rel="canonical" href="path"/></head><body><header>Header</header></body></html>
Navegação
Com a etiqueta nav
cria a navegação. Dentro desta etiqueta, podem ser colocados links com a etiqueta a
e pode ser colocado um logotipo com a etiqueta img
.
<!DOCTYPE html><html lang="es"><head><meta charset="utf-8"/><meta name="description" content="Descripción para los buscadores"/><meta name="robots" content="index,folow"/><title>Título pestaña</title><meta name="viewport" content="width=device-width"/><meta name="theme-color" content="#09f"/><link rel="stulesheet" href="path"/><link rel="icon" type="image/png" href="path"/><meta property="og:title" content="Título para las redes sociales"/><meta property="og:description" content="Descripción para las redes sociales"/><meta property="og:image" content="path"/><meta property="og:image:alt" content="Texto alternativo para la imagen"/><link rel="alternate" href="path" hreflang="en"/><link rel="canonical" href="path"/></head><body><header><nav><a href="path">Enlace</a><img src="path" alt="Texto alternativo"/></nav></header></body></html>
Links
Como na navegação, os links são criados com a tag a
e levam um atributo href="path"
que indica o link para o qual leva o link. Também levam um atributo target="_blank"
que indica que se abre em uma nova aba. Além disso, pode-se colocar o atributo rel="noreferer"
que indica que não se passa informações da página de onde vem o link.
<a href="path" target="_blank">Enlace</a>
Se o link for um link para uma seção da página, coloca-se o atributo href="#id"
.
<a href="#id">Enlace</a>
Portanto, em outra parte da página deve ser colocado um contêiner com o atributo id="id"
.
<div id="id"></div>
Se o link for um email, coloca o atributo href="mailto:email"
.
<a href="mailto:email">Email</a>
Se o link for um telefone, adiciona-se o atributo href="tel:phone"
.
<a href="tel:phone">Teléfono</a>
Se quiser colocar um link para abrir o WhatsApp, use o atributo href="https://wa.me/phone"
.
<a href="https://wa.me/phone">WhatsApp</a>
Principal
Esta é a tag para descrever o main
<!DOCTYPE html><html lang="es"><head><meta charset="utf-8"/><meta name="description" content="Descripción para los buscadores"/><meta name="robots" content="index,folow"/><title>Título pestaña</title><meta name="viewport" content="width=device-width"/><meta name="theme-color" content="#09f"/><link rel="stulesheet" href="path"/><link rel="icon" type="image/png" href="path"/><meta property="og:title" content="Título para las redes sociales"/><meta property="og:description" content="Descripción para las redes sociales"/><meta property="og:image" content="path"/><meta property="og:image:alt" content="Texto alternativo para la imagen"/><link rel="alternate" href="path" hreflang="en"/><link rel="canonical" href="path"/></head><body><header><nav><a href="path">Enlace</a><img src="path" alt="Texto alternativo"/></nav></header><main></main></body></html>
Rodapé
Esta é a tag para descrever o footer
<!DOCTYPE html><html lang="es"><head><meta charset="utf-8"/><meta name="description" content="Descripción para los buscadores"/><meta name="robots" content="index,folow"/><title>Título pestaña</title><meta name="viewport" content="width=device-width"/><meta name="theme-color" content="#09f"/><link rel="stulesheet" href="path"/><link rel="icon" type="image/png" href="path"/><meta property="og:title" content="Título para las redes sociales"/><meta property="og:description" content="Descripción para las redes sociales"/><meta property="og:image" content="path"/><meta property="og:image:alt" content="Texto alternativo para la imagen"/><link rel="alternate" href="path" hreflang="en"/><link rel="canonical" href="path"/></head><body><header><nav><a href="path">Enlace</a><img src="path" alt="Texto alternativo"/></nav></header><main></main><footer></footer></body></html>
Seção
Dentro de main
podem fazer seções
<!DOCTYPE html><html lang="es"><head><meta charset="utf-8"/><meta name="description" content="Descripción para los buscadores"/><meta name="robots" content="index,folow"/><title>Título pestaña</title><meta name="viewport" content="width=device-width"/><meta name="theme-color" content="#09f"/><link rel="stulesheet" href="path"/><link rel="icon" type="image/png" href="path"/><meta property="og:title" content="Título para las redes sociales"/><meta property="og:description" content="Descripción para las redes sociales"/><meta property="og:image" content="path"/><meta property="og:image:alt" content="Texto alternativo para la imagen"/><link rel="alternate" href="path" hreflang="en"/><link rel="canonical" href="path"/></head><body><header><nav><a href="path">Enlace</a><img src="path" alt="Texto alternativo"/></nav></header><main><section></section></main><footer></footer></body></html>
Artigo
Dentro de main
podem haver artigos
<!DOCTYPE html><html lang="es"><head><meta charset="utf-8"/><meta name="description" content="Descripción para los buscadores"/><meta name="robots" content="index,folow"/><title>Título pestaña</title><meta name="viewport" content="width=device-width"/><meta name="theme-color" content="#09f"/><link rel="stulesheet" href="path"/><link rel="icon" type="image/png" href="path"/><meta property="og:title" content="Título para las redes sociales"/><meta property="og:description" content="Descripción para las redes sociales"/><meta property="og:image" content="path"/><meta property="og:image:alt" content="Texto alternativo para la imagen"/><link rel="alternate" href="path" hreflang="en"/><link rel="canonical" href="path"/></head><body><header><nav><a href="path">Enlace</a><img src="path" alt="Texto alternativo"/></nav></header><main><section><article></article></section></main><footer></footer></body></html>
Divisor
Quando as tags semânticas se esgotam, pode-se utilizar a tag div
, que é um contêiner genérico.
<!DOCTYPE html><html lang="es"><head><meta charset="utf-8"/><meta name="description" content="Descripción para los buscadores"/><meta name="robots" content="index,folow"/><title>Título pestaña</title><meta name="viewport" content="width=device-width"/><meta name="theme-color" content="#09f"/><link rel="stulesheet" href="path"/><link rel="icon" type="image/png" href="path"/><meta property="og:title" content="Título para las redes sociales"/><meta property="og:description" content="Descripción para las redes sociales"/><meta property="og:image" content="path"/><meta property="og:image:alt" content="Texto alternativo para la imagen"/><link rel="alternate" href="path" hreflang="en"/><link rel="canonical" href="path"/></head><body><header><nav><a href="path">Enlace</a><img src="path" alt="Texto alternativo"/></nav></header><main><section><article><div></div></article></section></main><footer></footer></body></html>
Listas não ordenadas ul
Dentro de main
podem haver listas não ordenadas, cada item da lista deve ter a tag li
<!DOCTYPE html><html lang="es"><head><meta charset="utf-8"/><meta name="description" content="Descripción para los buscadores"/><meta name="robots" content="index,folow"/><title>Título pestaña</title><meta name="viewport" content="width=device-width"/><meta name="theme-color" content="#09f"/><link rel="stulesheet" href="path"/><link rel="icon" type="image/png" href="path"/><meta property="og:title" content="Título para las redes sociales"/><meta property="og:description" content="Descripción para las redes sociales"/><meta property="og:image" content="path"/><meta property="og:image:alt" content="Texto alternativo para la imagen"/><link rel="alternate" href="path" hreflang="en"/><link rel="canonical" href="path"/></head><body><header><nav><a href="path">Enlace</a><img src="path" alt="Texto alternativo"/></nav></header><main><section><article><div><ul><li></li></ul></div></article></section></main><footer></footer></body></html>
Listas ordenadas ol
Dentro de main
podem ter listas ordenadas, cada item da lista deve ter a tag li
<!DOCTYPE html><html lang="es"><head><meta charset="utf-8"/><meta name="description" content="Descripción para los buscadores"/><meta name="robots" content="index,folow"/><title>Título pestaña</title><meta name="viewport" content="width=device-width"/><meta name="theme-color" content="#09f"/><link rel="stulesheet" href="path"/><link rel="icon" type="image/png" href="path"/><meta property="og:title" content="Título para las redes sociales"/><meta property="og:description" content="Descripción para las redes sociales"/><meta property="og:image" content="path"/><meta property="og:image:alt" content="Texto alternativo para la imagen"/><link rel="alternate" href="path" hreflang="en"/><link rel="canonical" href="path"/></head><body><header><nav><a href="path">Enlace</a><img src="path" alt="Texto alternativo"/></nav></header><main><section><article><div><ul><li></li></ul><ol><li></li></ol></div></article></section></main><footer></footer></body></html>
Pode-se alterar o tipo de ordem da lista com o atributo type="a"
para letras, type="i"
para números romanos, type="1"
para números arábicos.
<ol type="a"><li></li></ol>
Se quer que a ordem da lista comece em um número específico, coloca o atributo start="number"
.
<ol start="2"><li></li></ol>
Se queremos que a ordem da lista vá em ordem inversa, colocamos o atributo reversed
.
<ol reversed><li></li></ol>
Se quisermos que um item de lista tenha um valor, colocamos o atributo value="número"
.
<ol><li value="2"></li></ol>
Papel role
Cada uma das tags que vimos anteriormente tem um papel, mas o papel de cada uma delas pode ser alterado com a tag role="papel"
.
<!DOCTYPE html><html lang="es"><head><meta charset="utf-8"/><meta name="description" content="Descripción para los buscadores"/><meta name="robots" content="index,folow"/><title>Título pestaña</title><meta name="viewport" content="width=device-width"/><meta name="theme-color" content="#09f"/><link rel="stulesheet" href="path"/><link rel="icon" type="image/png" href="path"/><meta property="og:title" content="Título para las redes sociales"/><meta property="og:description" content="Descripción para las redes sociales"/><meta property="og:image" content="path"/><meta property="og:image:alt" content="Texto alternativo para la imagen"/><link rel="alternate" href="path" hreflang="en"/><link rel="canonical" href="path"/></head><body><header><nav><a href="path">Enlace</a><img src="path" alt="Texto alternativo"/></nav></header><main><section><article><div><ul><li></li></ul><ol><li></li></ol></div><div role="list"><div role="listitem"></div></div></article></section></main><footer></footer></body></html>
Etiquetas de conteúdo
Para criar um novo parágrafo utilizamos a tag <p></p>
. Para dar ênfase a algo dentro de um parágrafo podemos pensar em usar negrito (<b></b>
), mas é melhor usar a tag <strong></strong>
, já que a tag b
está **deprecada**.
Para criar um título temos as tags h1
, h2
, h3
, h4
, h5
, h6
.
Para criar hiperlinks usa a tag a
, o atributo href
indica o endereço do hyperlink. Se for colocado um cifrão #
a página não será recarregada.
Etiquetas multimédia
As tags multimídia não têm tag de abertura e fechamento, por exemplo a tag img
não é escrita como <img></img>
mas sim como <img/>
. Isso ocorre porque ela é substituída por uma imagem. Portanto, em geral as tags substituíveis não têm tag de fechamento.
Existem dois tipos de imagens
- Com perda: Essas imagens perdem qualidade, mas são mais leves. jpg, jpeg* Sem perda: Essas imagens não perdem a qualidade, mas são muito pesadas. GIF, PNG-8, PNG-24, SVG
Otimização das imagens
O tamanho médio deve ser de 70 KB
Etiqueta img
Página para baixar imagens gratuitas na internet pexels
A tag img
tem o atributo src
onde é indicada a fonte.
<img src="path"/>
O atributo alt
onde se indica o texto alternativo.
<img src="path" alt="Texto alternativo"/>
O atributo title
, onde se indica o título da imagem, serve para que quando passarmos o mouse sobre a imagem apareça o título. Também é útil para o SEO
, para que os mecanismos de busca saibam do que se trata a imagem.
<img src="path" alt="Texto alternativo" title="Título"/>
Também podemos colocar o atributo width
e height
para indicar o tamanho da imagem, mas é melhor não colocá-los e deixar que o navegador faça o cálculo.
<img src="path" alt="Texto alternativo" title="Título" width="100" height="100"/>
Com o atributo hidden
podemos ocultar a imagem. O que é muito útil quando queremos que uma imagem apareça após o usuário realizar uma ação. Assim, com o JavaScript podemos remover o atributo hidden
e a imagem aparecerá.
<img src="path" alt="Texto alternativo" title="Título" hidden/>
Para que as páginas carreguem mais rápido, pode-se colocar o atributo loading="lazy"
, que faz com que a imagem seja carregada quando o usuário se aproxima dela.
<img src="path" alt="Texto alternativo" title="Título" loading="lazy"/>
**Importante!** Não é necessário colocar o atributo
loading="lazy"
em imagens importantes para o SEO, como, por exemplo, o logo. Nem nas imagens que estão no início da página web, pois isso pode causar um piscar.
Etiqueta figure
Esta tag nos permite criar um contêiner para a imagem, por exemplo, nos permite adicionar uma descrição. Para isso, é necessário usar a tag figcapture
.
<figure><img src="path" alt="Texto alternativo" title="Título"/><figcaption>Descripción</figcaption></figure>
Tag video
Com esta tag é possível adicionar vídeos, para isso usa-se o atributo src
. Para que apareçam os botões de reprodução, deve-se colocar o atributo controls
. O último atributo é preload="auto"
, isso é para que o vídeo comece a ser baixado quando a página começa a carregar, assim quando o usuário for reproduzi-lo já terá muito conteúdo carregado e levará menos tempo para começar.
<video src="path" controls preload="auto"></video>
Se você quiser que comece a reproduzir em um minuto determinado, em src
logo após a fonte deve-se colocar #t=xx,yy
<video src="path#t=1,2" controls></video>
Se o vídeo estiver em vários formatos, a fonte deve ser colocada dentro de uma tag chamada source
, onde são indicadas as diferentes possíveis fontes do vídeo. O navegador decidirá qual fonte usar. Isso se deve ao fato de que existem navegadores que reproduzem melhor certos vídeos do que outros.
<video controls><source src="path" type="video/mp4"/><source src="path" type="video/webm"/></video>
Se não quisermos que haja controles de reprodução e que o vídeo seja reproduzido automaticamente, colocamos o atributo autoplay
.
<video src="path" autoplay></video>
Mas para não incomodar o usuário, podemos fazer com que seja reproduzido sem som, para isso adicionamos o atributo muted
.
<video src="path" autoplay muted></video>
Se quisermos que o vídeo seja reproduzido em loop, colocamos o atributo loop
.
<video src="path" autoplay muted loop></video>
Isso é muito útil para colocar um vídeo de fundo em uma página da web.
Para alterar a imagem do vídeo quando não está sendo reproduzido, use o atributo poster="path"
.
<video src="path" autoplay muted loop poster="path"></video>
Tag audio
Para reproduzir áudio usa a tag audio
, para isso utiliza o atributo src
.
<audio src="path"></audio>
Para que apareçam os controles de reprodução, coloca-se o atributo controls
.
<audio src="path" controls></audio>
Se quisermos que o áudio seja reproduzido automaticamente, colocamos o atributo autoplay
.
<audio src="path" autoplay></audio>
Se quisermos que o áudio seja reproduzido em loop, colocamos o atributo loop
.
<audio src="path" autoplay loop></audio>
Se quisermos que o áudio seja reproduzido em loop, colocamos o atributo loop
.
<audio src="path" autoplay loop></audio>
Tag iframe
Quando compartilhamos um vídeo do YouTube, temos a opção de copiar o código. Isso gera um código HTML que possui a tag iframe
. Essa tag serve para incorporar conteúdo de outras páginas da web.
<iframe src="path"></iframe>
Falamos sobre a página do YouTube, mas poderíamos incorporar qualquer página. Embora existam algumas páginas que não permitem isso.
Etiqueta dialog
Você deve ter visto que muita gente em seus portfólios coloca seus projetos e quando você clica nele, um caixa de diálogo é aberta com mais informações, ou em galerias de imagens quando você clica em uma imagem, um caixa de diálogo é aberta com a imagem maior. Isso é feito com a tag dialog
.
<dialog></dialog>
Dentro você pode colocar o que quiser, por exemplo um título, um texto, uma imagem, etc.
<dialog id="id"><h1>Título</h1><p>Texto</p><img src="path" alt="Texto alternativo"/></dialog>
Para que se abra o diálogo, pode-se colocar um botão dentro de um script.
<dialog id="dialog"><h1>Título</h1><p>Texto</p><img src="path" alt="Texto alternativo"/></dialog><button id="open">Abrir</button><script>window.open.addEventListener("click", () => {window.dialog.showModal();});</script>
Formulários
Para criar um formulário, fazemos isso com a tag form
, dentro desta tag colocamos os campos do formulário. O atributo action
indica para onde o formulário será enviado. O atributo method
indica o método de envio, podendo ser get
ou post
. O atributo name
indica o nome do formulário, isso é útil para o JavaScript
.
<form action="path" method="post" name="name"></form>
Agrupamento de elementos
Com a etiqueta fieldset
pode-se agrupar elementos de um formulário. Dentro desta etiqueta colocam-se os elementos do formulário. O atributo legend
indica o título do grupo de elementos.
<form action="path" method="post" name="name"><fieldset><legend>Título</legend></fieldset></form>
Rótulo
Com a etiqueta label
cria uma legenda para um elemento do formulário. O atributo for
indica o id do elemento do formulário ao qual se refere.
A seguir-se coloca o elemento do formulário, por exemplo input
.
É necessário especificar o type
, que pode ser do tipo text
, email
, password
, number
, date
, time
, color
, range
, file
, checkbox
, radio
, submit
, reset
, button
, hidden
.
Se o input
deve ser introduzido obrigatoriamente, pode-se adicionar o atributo required
.
Se o usuário já havia inserido um valor no input
, por meio do atributo autocomplete
pode-se indicar que ele seja preenchido automaticamente.
Com o atributo pattern
pode-se especificar uma expressão regular para validar o input
. Por exemplo, para validar se o e-mail ou telefone estão corretos.
<form action="path" method="post" name="name"><fieldset><legend>Título</legend><label for="id">Nombre:</label><input type="text" id="id" name="name" placeholder="Nombre" required autocomplete="on"/></fieldset></form>
Outra maneira de especificar o input
de uma label
é colocar o input
dentro da label
. Agora não é necessário o atributo for
porque se entende que a label
se refere ao input
que está dentro.
<form action="path" method="post" name="name"><fieldset><legend>Título</legend><label>Nombre:<input type="text" id="id" name="name" placeholder="Nombre" required/></label></fieldset></form>
Selecionar
Com a etiqueta select
cria uma lista suspensa. Dentro desta etiqueta, colocam-se as opções da lista suspensa com a etiqueta option
. O atributo value
indica o valor da opção. O atributo selected
indica a opção que está selecionada por padrão.
<form action="path" method="post" name="name"><fieldset><legend>Título</legend><label>Nombre:<input type="text" id="id" name="name" placeholder="Nombre" required/></label><label>País:<select name="country"><option value="es">España</option><option value="fr">Francia</option><option value="it" selected>Italia</option></select></label></fieldset></form>
Em caso de ter muitas opções, pode-se usar a tag datalist
para criar uma lista de opções. Dessa forma, quando o usuário começa a digitar uma das opções da lista, são exibidas as opções que correspondem ao que foi digitado. Dentro dessa tag, as opções são colocadas com a tag option
. O atributo value
indica o valor da opção.
<form action="path" method="post" name="name"><fieldset><legend>Título</legend><label>Nombre:<input type="text" id="id" name="name" placeholder="Nombre" required/></label><label>País:<input type="text" list="countries" name="country"/><datalist id="countries"><option value="es">España</option><option value="fr">Francia</option><option value="it">Italia</option></datalist></label></fieldset></form>
Enviar
Para enviar o formulário, usa-se a tag input
com o atributo type="submit"
.
<form action="path" method="post" name="name"><fieldset><legend>Título</legend><label>Nombre:<input type="text" id="id" name="name" placeholder="Nombre" required/></label><input type="submit" value="Enviar"/></fieldset></form>
Detalhes
Se quiser fazer seções de texto que normalmente estejam contraídas, como por exemplo uma seção de perguntas frequentes, podemos usar a tag details
. Dentro desta tag colocamos a tag summary
, que é o título da seção. E dentro da tag details
colocamos o texto da seção.
<details><summary>Título</summary><p>Texto</p></details>
Se quisermos que algum apareça por padrão, colocamos o atributo open
.
<details open><summary>Título</summary><p>Texto</p></details>