Geral fala pra não usar div em tudo, pra usar 'containers semânticos', mas quais são eles e quando utilizá-los?

Nessa thread você vai aprender a usar:
- address
- article
- aside
- header
- footer
- main
- menu
- nav
- section

*vai ser um conteúdo avançado, façam perguntas!
O HTML foi criado inicialmente pra divulgação de documentos científicos na web. Diferente de um artigo escrito em word, não seguimos convenções como a norma ABNT pra separar sessões ou definir hierarquias, usamos contêineres HTML
Todo elemento tem uma finalidade e utilizá-los de forma correta facilita o trabalho de todos os mecanismos que interpretam nossa página pra oferecer a mesma experiência de conteúdo pra todo tipo de usuário e para crawlers buscarem seu conteúdo.
Primeiro vamos falar dos contêineres que possuem a categoria 'sectioning content'.
Esses elementos são:
- article
- aside
- nav
- section

Ser um sectioning content é quase como criar um capítulo dentro de um livro. Todos os títulos e informações são encapsulados dentro desse +
capítulo, se referindo apenas a ele. Uma section, por exemplo, pode ter seu próprio header, footer e seus próprios headings (h1~h6). Quando o HTML é interpretado, essas informações são associadas as suas respectivas sessões que por sua vez serão associadas ao body.
Mas pra além disso, cada elemento desses tem contextos apropriados pra serem utilizados:

- Article
Um article cria uma sessão pra um conteúdo independente do conteúdo principal do site. Pode ser uma referência externa, uma postagem de blog, um comentário de usuário ou um widget
Caso vá utilizar como uma postagem de blog, as informações sobre o autor podem ficar dentro de uma tag address. As informações dessa tag então estarão associadas apenas a esse artigo e não ao site todo (graças ao sectioning content).
- Aside
Esse elemento se refere a conteúdo de referência que costuma ficar na lateral. Ele pode ser usado pra agrupar menus, receber anúncios, aqueles 'mapas de palavras', qualquer conteúdo não diretamente associado ao conteúdo principal da página.
Muitos desses casos de uso não são praticados mais na web atual, mas pense sempre nele quando precisar abrigar 'conteúdo relacionado' ou conteúdo que não tem referencia direta com o principal do site
- Nav
Se refere a navegação principal do site, recebendo listas links que se referenciam pra outras páginas e trechos do site. Não tem problema ter mais de um nav em um site, você pode diferenciá-los com o atributo 'title'.
- Setion
É um grupo de conteúdo que está dentro do mesmo tema. Se você tiver fazendo um site de portfólio, as seções 'sobre mim', 'experiências profissionais' e 'contato' podem ser abrigados em diferentes sections.
Nota: Não usem elementos de sessão pra qualquer coisa que não sejam esses fins, caso você só queira agrupar certo conteúdo em um container pra estilizá-los e só isso, você pode (só nesse caso) usar div
Agora vamos para os contêineres 'flow-content'. Esses elementos podem receber qualquer tipo de conteúdo e texto corrido:

- Address
Esse elemento geralmente fica dentro do footer com informações de contato. Quando no footer diretamente no body, ele contém as informações de +
endereço DO SITE, ou seja, informações de contato como logradouro ou email, redes sociais, etc. Dentro de um contêiner de seção (sectioning content) são as informações referentes a aquele contexto (autor, data de publicação, referência externa, etc)
- Header
Recebe os títulos, índices, logos e formulários de busca. Geralmente abriga também o banner onde fica um botão call-to-action. Semanticamente ele foi feito pra agrupar headings (h1 ~ h6) ou um hgroup, mas seu uso foi expandido.
- Footer
O rodapé do site ou da seção. Representa notas de rodapé, apêndices, mapas do site, índices e textos de licenciamento e copyright ™. Lembrem-se, cada sectioning content pode ter seu próprio footer (se fizer sentido).
- Main
O main abriga o conteúdo principal do documento e geralmente fica diretamente no body. Pode existir apenas UM main dentro de um documento de HTML.
Uma estrutura comum é
body
| - header
| - main
| - footer
- Menu
Você tem uma lista de controles ou botões que emitem ações? Pensa em um site que tem templates de botões e você tem controles que você pode alterar a cor e tamanho do botão e e copiar o código. Isso cabe dentro de um menu.
Menu é bem complexo e não funciona em navegadores muito antigos, mas vale muito a pena ser utilizado nesse caso de uso. Pra não me prolongar, links de referência:
- developer.mozilla.org/en-US/docs/Web…
- w3docs.com/learn-html/htm…
- Sobre div e span
Na documentação oficial é desencorajado utilizar esses elementos, eu não tirei do cu.

Mas quando usar div?
- Já criou uma seção pro seu conteúdo mas precisa de mais um container pra meter um flex ou um background? Usa div.
- Precisa 'recriar' um elemento html pq o original não suporta o estilo que você precisa? (select, input:date, table, etc), usa div (mas busque por formas acessíveis de usar!).

Quando usar span?
- APENAS dentro de elementos textuais, lista abaixo
developer.mozilla.org/en-US/docs/Web…
- apenas pra estilizar um elemento e tags de 'inline text semantics' como strong, i, u, etc não fazem sentido pro seu caso. Lista dessas tags:
developer.mozilla.org/en-US/docs/Web…
Não entendeu algo? Caguei no pau? Quer acrescentar algo? Comenta ai, me chama DM, me mande um pix de R$1 real falando sobre.

Se eu ver que você deu like nesse post e ainda não usa esses elementos corretamente no seu dia-a-dia eu vou te assombrar
Eu li a porra da W3 por horas pra escrever isso aqui, quem ler acho bom ler tudinho caralho

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Cu & Código

Cu & Código Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @lixeletto

6 Oct
Galera, bateu uma dúvida aqui que talvez vocês tenham também: Que marcação utilizar ao criar um card no HTML?

O HTML varia muito dependendo do tipo de card:
- Card só como estética de conteúdo
- Card contendo link pra artigo/ página externa
- Lista de cards Card contento uma imagem no...
A diferença de HTML entre um card só pela estética de card e um card para um link externo tá na necessidade de definir um escopo de conteúdo via sectioning content, se você nunca ouviu falar sobre isso eu explico um pouco na minha outra thread:
- Card só como estética de conteúdo
É a utilização da estética de card apenas pra organizar conteúdo, não referencia e nem contém links pra conteúdos externos. Geralmente são cards que apresentam features ou competências. 3 cards apresentando 3 feat...
Read 18 tweets
26 Nov 20
Gente, acabei de ver um cara falar pra trocar o <form> por uma <div> pra cessar o trigger do evento ao clicar no botão, nunca, sob hipótese alguma, substituam o elemento form por outra coisa, segue o porquê:
1 - Você perde a lista gigante de métodos disponíveis no elemento form (HTMLFormElement), na dúvida? Abre seu devTools e no console digite:

`dir(HTMLFormElement)`

Em seguida acesse o grupo `prototype` dele:
Tal como a <div> ele herda muitos métodos do prototype HTMLElement, mas ele tem métodos próprios valiosíssimos:

- elements
Retorna uma HTMLFormControlsCollection, que é uma array com todos os seus inputs
developer.mozilla.org/en-US/docs/Web…
Read 11 tweets
8 Sep 20
E vamos falar sobre as propriedades `position` e como usá-las sem fuder o seu layout e causar traumas pra vida inteira, a thread 🧵
Qual a diferença entre os dois?
Ao definir qualquer position que não static, você habilita os controles de posição (Y: top bottom, X: left right), esses controles começam zerados e com eles você movimenta seu elemento nas dimensões X e Y da página.
A diferença entre relative e absolute é o que é a posição (0, 0) do elemento posicionado.

No caso de `relative`, a posição padrão (0, 0) é o local atual do elemento, à partir do canto superior esquerdo dele. Por isso que ao colocar `position: relative` o elemento n sai do lugar
Read 17 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!

:(