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
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.
Como esse tipo de card tem esse formato apenas por estética e seu conteúdo tá dentro do contexto do resto do conteúdo do site, podemos usar uma <div> como container. Se toda a informação da seção estiver contida no card e em mais nenhum lugar, use <section>
Como o conteúdo desse card está direto no body, se você usar uma div e um header, esse header irá pertencer ao contexto do body. Caso seu body já tiver um header isso é considerado uma má prática, é como você criar dois cabeçalhos pro mesmo texto em um artigo
Nesse caso podemos usar um <hgroup>, é um container que serve pra guardar um ou mais headers. O nível desse heading é o mesmo do maior heading dentro dele. Se você tiver um h2 e um h3, o seu hgroup será um header de nível 2.
Caso tenha usado <section> e não <div> +
Você pode usar o elemento <header> pois como a <section> cria uma nova seção, o header vai se referir apenas ao card e não a todo o body.
No corpo do card podemos usar uma div pois esse container só vai servir pra alinhar e espaçar o corpo dos textos e não pra definir outlines
- Card contendo link pra artigo/ página externa
São usados como links para artigos, outras páginas e sites externos. Caso forem usados como links que fazem referência pro conteúdo da mesma página que eles estão, use o exemplo anterior
Como esse tipo de card faz referência a conteúdos fora do contexto do site, o correto é usar um article. Como ele cria um outline (uma seção), é possível usar header e footer dentro do corpo do card. Quando o botão do card redireciona para uma outra página, é melhor utilizar um a
Se você precisa que o card inteiro seja clicável, talvez você queira colocar o card inteiro dentro de uma âncora. O Heydon Pickering escreveu um artigo sobre como fazer isso de forma acessível:
- Lista de cards
Lista de cards, geralmente à partir de informações trazidas do backend. Um exemplo são as trilhas de recomendação da netflix
Nesse caso, pra cada card siga as regras descritas acima, a única diferença é que esses cards estarão dentro de um <li>. Caso a ordem dos cards seja importante pra entender o conteúdo, use um <ol>, caso o conteúdo puder ser lido em qualquer ordem, use um <ul>.
Essa pode não ser a única forma de construir cards e eu talvez não tenha coberto todos os casos de uso, mas é uma formula que eu considero segura e tento aos poucos aplicar no dia-a-dia. É mais complexo do que o que costumamos ver por ai, mas tal como o JS, o HTML sempre tem +
espaço pra melhoria contínua e demanda estudo constante apesar de não mudar tão constantemente.
No tweet abaixo vou deixar referências, qualquer pergunta pode fazer na thread pra galera que tem as mesmas dúvidas ver também!
Galera a @Luxferia me deu a dica de que o hgroup tá descontinuado. Vcs só vão achar essa informação documentada no item 11.1 da W3C - itens obsoletos. Caso forem agrupar headings usem div ou header
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.
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:
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