Mostrando postagens com marcador Acessibilidade. Mostrar todas as postagens
Mostrando postagens com marcador Acessibilidade. Mostrar todas as postagens

Como Criar Caixas de Texto em HTML: O Guia Completo da Tag < input type="text" >

Como Criar Caixas de Texto em HTML5: O Guia Definitivo da Tag <input>

Chegou a hora de colocar a mão na massa! Deixe seu site interativo aprendendo a criar campos de texto limpos, modernos e acessíveis usando o HTML5.

Agora que já explicamos na aula passada o que são formulários em HTML e a importância absurda que eles têm para a interatividade da internet, vamos sair da teoria e começar a programar.

Vamos iniciar com o "feijão com arroz" da web: a caixa de texto simples. É exatamente aquela caixinha marota que você usa todo dia para digitar seu nome num cadastro, pesquisar algo no Google ou inserir seu e-mail para fazer login. Apertem os cintos, porque vamos aprender o jeito certo, atualizado para o mercado de trabalho.

A Tag <input> e a Caixa de Texto (Text Input Box)

Para criar uma caixa de texto no HTML, utilizamos a tag de autofechamento <input> combinada com o atributo type="text". É essencial adicionar os atributos name (para envio ao servidor) e id (para acessibilidade via CSS e rótulos).

A tag <input> (que traduzida literalmente significa "entrada") é o canivete suíço do programador Front-End. Ela pode assumir várias formas, e para dizermos ao navegador que queremos uma área livre para digitação, usamos o atributo type="text".

Assim, a sintaxe básica para criarmos um formulário do tipo Caixa de Texto fica assim:

<!-- Exemplo de uma caixa de texto simples -->
<input type="text" name="nome_usuario" id="nome_usuario">
🛠️ Curiosidade de Sênior:

Reparou que a tag <input> não tem fechamento (como </input>)? Ela é o que chamamos de tag vazia ou self-closing tag. Toda a mágica dela acontece apenas através dos atributos insercode nela.

O Fim da Era das Tabelas: O Jeito Moderno de Alinhar Formulários

Vamos propor um exercício: Criar dois campos, "Nome" e "Sobrenome", como se fossem um formulário real.

Como fazíamos antigamente (Não faça mais isso!):
Lá nos primórdios da internet, a gente apelava para a tag <table> para alinhar o texto com a caixinha. O código virava uma sopa de <tr> e <td> enorme, nada amigável para celulares.

A Solução Moderna (Semântica e Responsiva):
Hoje em dia, a regra é clara: tabelas só servem para dados (como planilhas). Para formulários, nós agrupamos cada rótulo e seu input dentro de uma <div> e aplicamos uma pitada de CSS. Além disso, usamos a tag <label> para ligar o texto à caixa de texto. Veja o poder do HTML5 em ação:

<form action="#" method="POST">
  <!-- Grupo Nome -->
  <div style="margin-bottom: 15px;">
    <label for="campo_nome" style="display: block; font-weight: bold;">Nome:</label>
    <input type="text" name="nome" id="campo_nome" style="padding: 8px; width: 100%; max-width: 300px;">
  </div>

  <!-- Grupo Sobrenome -->
  <div style="margin-bottom: 15px;">
    <label for="campo_sob" style="display: block; font-weight: bold;">Sobrenome:</label>
    <input type="text" name="sobrenome" id="campo_sob" style="padding: 8px; width: 100%; max-width: 300px;">
  </div>
</form>

Simulação do Código Acima:

💡 Dica de Acessibilidade (UX):

Reparou no for="campo_nome" dentro do label? Ele faz par com o id="campo_nome" do input. Quando você faz isso, se o usuário clicar na palavra "Nome", o cursor já pisca direto dentro da caixinha! Teste no exemplo acima. Quem acessa pelo celular agradece!

Curso HTML e CSS Progressivo

Domine o Front-End Sem Sofrimento! 🚀

Apostila Digital HTML e CSS

Cansado de depender de tutoriais desatualizados e vídeos que dão sono? Estude no seu ritmo, de forma sequencial, sem depender de internet e sem ver um único anúncio.

"Estava travado tentando entender a estrutura moderna do HTML5 e CSS Grid, mas a didática dessa apostila salvou meus projetos no trabalho. Recomendo de olhos fechados!"
— Carlos M., Desenvolvedor Front-End.

O Atributo maxlength: Impondo Limites no Formulário

No exemplo antigo, mencionei o atributo size. Hoje, ele está praticamente aposentado. Para definir a largura da caixa na tela, nós usamos CSS (como no exemplo acima, onde usei width: 100%).

Porém, se você deixar a caixa livre, o usuário pode escrever um romance ali dentro. Para limitar a quantidade de caracteres permitida, entra em cena o poderoso maxlength.

Imagine que você está pedindo a idade do usuário. Qual o sentido de ele digitar 4 números ali? Nenhum (a não ser que tenhamos elfos acessando o site). Vamos limitar para no máximo 3 caracteres!

<label for="idade_user">Idade:</label>
<input type="text" id="idade_user" name="idade" maxlength="3">
⚠️ Atenção com a Segurança:

O maxlength é maravilhoso para evitar erros de digitação (UX). Mas lembre-se: qualquer usuário com conhecimento básico pode usar a ferramenta "Inspecionar Elemento" do Chrome e remover essa trava. Portanto, sua linguagem de servidor (como PHP ou Node) sempre precisará validar esse tamanho de novo no Back-End.

Exercício Prático: Formatando o CEP

Faça um site que exiba duas caixas de texto para o leitor inserir o número do CEP. Lembrando que o CEP brasileiro tem 8 dígitos (5 antes do hífen, 3 depois).

<form>
  <label for="cep_p1">Digite seu CEP:</label>
  <!-- Primeiros 5 digitos -->
  <input type="text" id="cep_p1" name="cep_parte1" maxlength="5" style="width: 60px; text-align: center;">
  
  <span style="font-weight: bold; margin: 0 5px;">-</span>
  
  <!-- Últimos 3 digitos -->
  <input type="text" id="cep_p2" name="cep_parte2" maxlength="3" aria-label="Fim do CEP" style="width: 40px; text-align: center;">
</form>
-

Tente digitar mais que 5 números na primeira caixa. O navegador te bloqueia na hora! O atributo aria-label ali serve para os leitores de tela de pessoas com deficiência visual saberem do que se trata aquela segunda caixa sem rótulo.

Como dar dicas no Input: Adeus value, Olá placeholder!

No início da internet, se o programador quisesse colocar uma dica pré-escrita na caixa ("Digite seu nome aqui"), ele usava o atributo value.

O problema do value é que ele é um valor real. Se você deixasse lá um value="aaaa" pedindo o ano de nascimento, o usuário era obrigado a clicar na caixa, apagar o "aaaa" manualmente, e só depois escrever o próprio ano. Chato, né?

Para resolver isso, o HTML5 introduziu o atributo definitivo para dicas visuais: o glorioso placeholder (texto de espaço reservado). Ele insere um "texto fantasma" cinza na caixa, que some magicamente assim que o usuário digita a primeira letra.

<label for="ano_nasc">Ano de Nascimento:</label>
<!-- Jeito Moderno com Placeholder -->
<input type="text" id="ano_nasc" name="ano" maxlength="4" placeholder="Ex: 1995">

Simples, lindo e direto ao ponto! Estudar formulários modernos é fascinante porque o ganho na experiência do usuário final (o tal do UX - User Experience) é imediato.

Para se aprofundar na documentação oficial dos inputs, você pode consultar as fontes abertas como o MDN Web Docs (Mozilla).

O que estudar a seguir?

Seu conhecimento não pode parar por aqui. Nos próximos tutoriais, nós vamos evoluir a complexidade dos formulários abordando:

  • Como esconder caracteres usando <input type="password"> para criar sistemas de login.
  • Como criar botões de Enviar e Limpar dados com o type="submit" e type="reset".
  • A diferença crucial entre usar requisições GET e POST no atributo action do seu formulário.

Perguntas Frequentes (FAQ) sobre o <input type="text">

1. Qual a diferença entre os atributos 'name' e 'id' na caixa de texto?

Resumindo a treta de forma simples: o atributo id conversa com o Front-End (o navegador do usuário). Ele serve para você mudar a cor da caixa com CSS ou ligá-la ao rótulo. Já o name conversa com o Back-End (o servidor, banco de dados). Ele cria a variável que carrega o texto digitado pelo usuário quando ele clica no botão "Enviar".

2. Posso usar <input type="text"> para criar campos de Senha?

Definitivamente não! O type="text" expõe os caracteres digitados em tela cheia, deixando a senha visível para qualquer pessoa perto do usuário. A tag correta para criar campos sigilosos e seguros é o <input type="password">, que automaticamente transforma as letras em "bolinhas" ou asteriscos na renderização do DOM.

3. Como faço para a caixa já carregar com o cursor piscando para o usuário começar a digitar logo?

Essa é uma excelente técnica de usabilidade! Para focar automaticamente no campo assim que a página terminar de carregar (igual à caixa de pesquisa na tela inicial do Google), basta adicionar o atributo booleano nela: autofocus. A sintaxe ficaria: <input type="text" name="busca" autofocus>.

Guia Definitivo dos Formulários HTML5: Estrutura, Atributos Modernos e UX

Guia Definitivo dos Formulários HTML5: O Coração da Interatividade na Web Moderno

Neste artigo do nosso Curso de HTML e CSS, daremos início a um dos conceitos mais fundamentais de toda a arquitetura web: os Formulários. Se as tags de texto e imagens servem para o site conversar com o usuário, os formulários são a única ferramenta nativa que permite ao usuário responder.

Se você já se perguntou se os formulários ainda são relevantes na era das Inteligências Artificiais e das aplicações de página única (SPAs), a resposta curta é: eles são mais importantes hoje do que nunca. Toda caixa de comando do ChatGPT, toda tela de checkout da Amazon e todo painel de login do Instagram é, em sua essência, um formulário HTML. Vamos entender como dominar essa tecnologia do jeito certo.

A Evolução da Web: Da Leitura Estática à Web Interativa

Quando o físico Tim Berners-Lee idealizou o HTML no início da década de 1990, seu objetivo principal era estritamente acadêmico: criar um sistema onde cientistas pudessem compartilhar artigos, relatórios e dados de pesquisa de forma organizada e hipertextual. Naquela época, o fluxo de informação era unilateral. Você acessava uma página, lia o conteúdo técnico e fechava o navegador. Não havia curtidas, comentários, carrinhos de compras ou perfis pessoais. Chamamos esse período de Web 1.0.

A grande revolução que transformou a internet no ecossistema dinâmico que conhecemos hoje (a Web 2.0 e suas evoluções) aconteceu quando os sites ganharam a capacidade de coletar e processar dados enviados pelo público. Os formulários (ou forms) foram os grandes heróis dessa transição. Eles transformaram leitores passivos em usuários ativos.

Estude com o Material Completo e Atualizado! 📚

Não dependa de tutoriais soltos na internet. Tenha em mãos a nossa apostila oficial com centenas de exercícios práticos, gabaritos comentados e dicas exclusivas de otimização para o mercado de trabalho.

Apostila Oficial HTML + CSS Progressivo

A Anatomia de um Formulário: A Tag `<form>`

Um erro clássico de iniciantes é jogar caixas de texto soltas na página. Para o navegador entender que um grupo de entradas pertence ao mesmo conjunto de dados, todos os elementos de captura precisam estar encapsulados dentro da tag contêiner <form>.

O HTML, por si só, é uma linguagem de marcação. Ele cuida do visual e da estrutura: cria o botão, desenha a caixa de senha e renderiza as opções de seleção. No entanto, quando o usuário clica em "Enviar", o HTML precisa repassar esses dados para que uma linguagem de programação (como JavaScript, PHP, Python ou Node.js) processe a requisição, valide as informações e salve tudo em um banco de dados. Fazemos essa ponte por meio de dois atributos obrigatórios: action e method.

O Atributo `action` (Para onde os dados vão?)

O atributo action define o destino exato dos dados coletados. Ele recebe a URL do script do servidor (o backend ou API) que processará o formulário.

<!-- Exemplo enviando os dados para um script de login no servidor -->
<form action="/api/v1/auth/login">
    <!-- Os inputs entram aqui -->
</form>

Dica Moderna: Em aplicações modernas construídas com frameworks JavaScript (como React, Vue ou Next.js), muitas vezes omitimos o atributo action ou capturamos o evento de envio diretamente via JavaScript usando event.preventDefault() para evitar que a página recarregue.

O Atributo `method` (Como os dados viajam?)

O atributo method especifica o método HTTP utilizado para transferir os dados ao servidor. Existem dois valores fundamentais que você precisa dominar:

  • GET (Público e Visível): Os dados preenchidos são anexados diretamente na barra de endereço (URL) do navegador, no formato ?campo=valor&outro=valor. É ideal para formulários de busca (como a pesquisa do Google), pois permite salvar a URL com os parâmetros nos favoritos. Nunca use GET para senhas ou dados sensíveis!
  • POST (Privado e Seguro): Os dados são encapsulados de forma oculta dentro do corpo da requisição HTTP (HTTP Body). Eles não aparecem na barra de endereços do navegador e não ficam salvos no histórico. É obrigatório para telas de login, cadastros, inserção de cartões de crédito e envio de arquivos pesados.
<!-- Estrutura padrão segura para formulários de cadastro -->
<form action="/processar-cadastro.php" method="POST">
    <!-- Conteúdo protegido do formulário -->
</form>

Elementos Essenciais de Estrutura e Acessibilidade

Criar um formulário profissional exige atenção à semântica e à acessibilidade (a11y). Leitores de tela utilizados por pessoas com deficiência visual dependem da marcação correta do HTML para interpretar o que deve ser digitado em cada campo. Conheça as três tags estruturais fundamentais:

1. A Tag `<label>` (O rótulo identificador)

A tag <label> define o texto descritivo de um campo. Você deve associar explicitamente a label ao seu respectivo input usando o atributo for da label apontando para o id do input.

<!-- O clique no texto "Nome Completo" foca automaticamente o campo de digitação -->
<label for="txtNome">Nome Completo:</label>
<input type="text" id="txtNome" name="usuario_nome">

2. As Tags `<fieldset>` e `<legend>` (Agrupamento Lógico)

Quando lidamos com formulários extensos (como um cadastro de e-commerce), é excelente prática separar as seções logicamente. O <fieldset> cria um box visual agrupando campos relacionados, enquanto a tag <legend> define o título daquela seção.

<fieldset>
    <legend>Dados de Entrega</legend>
    <label for="txtCep">CEP:</label>
    <input type="text" id="txtCep" name="cep">
</fieldset>

Blueprint Prático: Código Completo e Estilizado de um Formulário Moderno

Abaixo está um modelo completo de formulário de contato integrado com os melhores padrões visuais e funcionais atuais, utilizando recursos nativos do HTML5 para validação (como os atributos required e placeholder):

<!-- Formulário Semântico de Alta Performance -->
<form action="/enviar-contato" method="POST" style="max-width: 500px; background: #ffffff; padding: 25px; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); font-family: sans-serif;">
    
    <fieldset style="border: 1px solid #cbd5e1; border-radius: 6px; padding: 20px; margin-bottom: 15px;">
        <legend style="font-weight: bold; color: #1e293b; padding: 0 10px;">Fale Conosco</legend>
        
        <!-- Campo de Texto Nativo -->
        <div style="margin-bottom: 15px;">
            <label for="nome" style="display: block; font-weight: 600; margin-bottom: 5px; color: #475569;">Nome:</label>
            <input type="text" id="nome" name="nome_cliente" placeholder="Ex: João Silva" required style="width: 100%; padding: 10px; border: 1px solid #cbd5e1; border-radius: 4px; box-sizing: border-box;">
        </div>
        
        <!-- Campo do tipo Email com validação sintática automática -->
        <div style="margin-bottom: 15px;">
            <label for="email" style="display: block; font-weight: 600; margin-bottom: 5px; color: #475569;">E-mail:</label>
            <input type="email" id="email" name="email_cliente" placeholder="seu-email@provedor.com" required style="width: 100%; padding: 10px; border: 1px solid #cbd5e1; border-radius: 4px; box-sizing: border-box;">
        </div>
        
        <!-- Caixa de seleção exclusiva (Radio Button) -->
        <div style="margin-bottom: 15px;">
            <span style="display: block; font-weight: 600; margin-bottom: 5px; color: #475569;">Tipo de Contato:</span>
            <label style="margin-right: 15px; font-weight: normal;">
                <input type="radio" name="motivo" value="suporte" checked> Suporte Técnico
            </label>
            <label style="font-weight: normal;">
                <input type="radio" name="motivo" value="comercial"> Comercial
            </label>
        </div>

        <!-- Caixa de texto em bloco expandido -->
        <div style="margin-bottom: 15px;">
            <label for="mensagem" style="display: block; font-weight: 600; margin-bottom: 5px; color: #475569;">Mensagem:</label>
            <textarea id="mensagem" name="mensagem_texto" rows="5" placeholder="Digite seus comentários..." required style="width: 100%; padding: 10px; border: 1px solid #cbd5e1; border-radius: 4px; box-sizing: border-box; resize: vertical;"></textarea>
        </div>

        <!-- Caixa de marcar aceitação de termos -->
        <div style="margin-bottom: 15px;">
            <label style="font-weight: normal; display: flex; align-items: center; gap: 8px;">
                <input type="checkbox" name="politica_privacidade" value="aceito" required> 
                Aceito as Políticas de Privacidade.
            </label>
        </div>
        
    </fieldset>
    
    <!-- Botão de Submissão Geral -->
    <button type="submit" style="width: 100%; background: #2563eb; color: #ffffff; padding: 12px; border: none; border-radius: 4px; font-size: 1rem; font-weight: bold; cursor: pointer; transition: background 0.2s;">Enviar Formulário</button>
</form>


Perguntas Frequentes (FAQ) sobre Formulários

Para que serve o atributo 'name' nos inputs de um formulário?

O atributo name é a chave identificadora do dado que o servidor lerá. Sem o preenchimento dele, o navegador simplesmente ignora o input durante o envio. Por exemplo, se o seu input for name="email_usuario" e o usuário digitar "teste@link.com", o servidor receberá um par do tipo email_usuario=teste@link.com. O atributo id serve para o CSS e JavaScript na tela; o name serve exclusivamente para o servidor de banco de dados.

Qual a diferença real entre o método GET e o método POST no envio de formulários?

A diferença principal reside na visibilidade e na segurança dos dados transportados. O método GET expõe todas as variáveis abertamente na URL do navegador, limitando o tamanho do envio a cerca de 2048 caracteres. Já o método POST trafega os dados de maneira oculta dentro do corpo da requisição HTTP, suportando transmissões de dados massivas, arquivos anexos pesados e oferecendo o isolamento necessário para senhas e tokens de segurança.

É seguro validar formulários apenas com os recursos nativos do HTML5 como o 'required'?

Não. A validação nativa do HTML5 (como adicionar o atributo required ou usar type="email") é fantástica para melhorar a experiência do usuário (UX), poupando tempo ao evitar o envio incorreto instantaneamente. Porém, qualquer usuário com conhecimento básico de console do desenvolvedor pode deletar a propriedade required do código inspecionado. Portanto, toda validação visual no front-end deve ser obrigatoriamente replicada no back-end do servidor para garantir a segurança dos dados e evitar injeções maliciosas.


🚀 Próximos Passos de Aprendizado:

Agora que você aprendeu a criar a estrutura contêiner de um formulário e compreendeu as regras de envio por trás do HTTP, está pronto para desvendar os tipos avançados de inputs que surgiram com a especificação moderna da web:

  • Dominando os tipos de inputs: Email, Number, Tel, Range e Date
  • Criando Menus Suspensos dinâmicos com a tag Select e Option
  • Como estilizar formulários com CSS profissional sem quebrar a responsividade

SEO para Imagens no HTML: Guia de alt, title e Direitos

Fala, mestre do código! Preparado para o próximo nível?

 SEO para Imagens: 
O Guia Definitivo de alt, title, Direitos Autorais e a Morte do HTML4

Até agora em nossa jornada pelo curso de HTML, nós já vimos como usar a tag <img> para exibir imagens, como manipular a altura e largura das figuras, e até demos uma pincelada sobre o alinhamento de elementos na tela.

Porém, colocar uma imagem na tela é fácil. Qualquer júnior faz. Fazer o Google entender essa imagem, ranquear seu site no topo das buscas (no Google Imagens) e garantir que você não tome um processo judicial por direitos autorais... aí é trabalho para um Desenvolvedor Sênior. Hoje, vamos fechar o módulo de imagens com chave de ouro, falando sobre SEO (Search Engine Optimization), acessibilidade e boas práticas do mercado moderno.


O Segredo do Tráfego: Nome do Arquivo, title e alt

O que é SEO para imagens no HTML? É a prática de otimizar mídias para os motores de busca e leitores de tela usando o atributo alt (texto alternativo), title (título descritivo) e nomes de arquivo semânticos com palavras-chave, garantindo acessibilidade e ranqueamento no Google.

Muitos iniciantes se perguntam:

  • "Se eu não colocar um nome otimizado, deixar como IMG_0023.jpg, a imagem aparece?" Sim.
  • "Se eu não colocar o atributo title, a imagem carrega?" Sim.
  • "E se eu ignorar o atributo alt?" A imagem será exibida do mesmo jeito.

Então, por que perder tempo descrevendo imagens com texto? A resposta vale ouro: Robôs não têm olhos (pelo menos, não como os nossos). O algoritmo do Google lê o Document Object Model (DOM) do seu site. Ele usa os textos que você escreve dentro da tag <img> como critério absoluto de ranqueamento.

Além disso, o atributo alt é obrigatório para a Acessibilidade (WCAG). Pessoas com deficiência visual usam leitores de tela que leem em voz alta o que está escrito no alt. Se você deixa vazio, você exclui usuários do seu site e o Google te penaliza com o Helpful Content Update.

🛠️ Curiosidade de SEO: As palavras-chave do seu projeto devem estar distribuídas de forma inteligente no título, na meta tag description, no texto e dentro das imagens. O Google Imagens é o segundo maior motor de buscas do mundo, perdendo apenas para o próprio Google principal!

Cansado de Tutoriais Soltos e Código Quebrado? 🛑

Pare de "bater cabeça" com HTML e CSS. Tenha o mapa completo da Carreira Front-End em suas mãos. Aprenda acessibilidade, SEO técnico e layouts responsivos de forma definitiva com a Apostila HTML & CSS Progressivo. Estude offline, sem distrações.

Capa da Apostila Digital HTML e CSS Progressivo
"Eu negligenciava o SEO básico e meus sites nunca recebiam visitas. Essa apostila me ensinou a pensar como o Google e como um dev profissional. Recomendo de olhos fechados!"
— Thiago M., Desenvolvedor Front-End
🚀 QUERO DOMINAR O FRONT-END AGORA
Prefere o cheiro de papel? Compre o Livro Físico e receba em casa!

Entendendo o Contexto: A Analogia das Velas

Imagine que você vai escrever um artigo sobre "Velas". Você usa a palavra na title tag ("Conheça as mais belas velas de navios") e na meta description. Mas e na hora de colocar a imagem?

Você renomeia o arquivo para algo focado, como vela-de-um-barco-no-brasil.jpg. No HTML moderno, você usa a tag semântica <figure> para englobar a imagem, e capricha nos atributos:

<!-- O jeito profissional e otimizado para o Google em 2026 -->
<figure>
    <img src="vela-de-caravela.jpg" 
         alt="Grande vela de tecido branco estendida em uma caravela antiga no mar" 
         title="Vela principal da caravela portuguesa" 
         width="200" height="150">
    <figcaption>Exemplo de uma vela de embarcação histórica.</figcaption>
</figure>

Por que toda essa riqueza de detalhes? Porque o termo "vela" é ambíguo. Alguém buscando por "velas" no Google Imagens pode querer ver duas coisas completamente diferentes:

Vela de uma caravela em alto mar

Velas de Navegação

 Velas de cera acesas para iluminação e religião

Velas de Iluminação

Como o Google sabe quem é quem? Pelo Silo de Conteúdo. Ele cruza o texto do artigo, os atributos title e alt, e decide a intenção de busca. Faça sua parte no código, e os motores de busca farão a mágica no tráfego!


Direitos Autorais: Onde Conseguir Imagens Sem Ser Processado?

"Vou ali no Google Imagens, pego qualquer foto e jogo no meu site, ué!". Se você pensa assim, cuidado. Isso é um erro amador que pode acabar em multas pesadas.

Assim como escrever um livro ou compor uma música, a fotografia tem dono. Salvar uma imagem protegida e colocar no seu servidor sem permissão é violação de Direito Autoral (Copyright). O Google pode até banir seu site da internet (DMCA Takedown).

⚠️ Atenção (Licenças): Onde encontrar boas fotos então? Busque bancos de imagens gratuitos sob licença Creative Commons ou domínio público. O projeto HTML Progressivo usa e recomenda fontes seguras como o Wikimedia Commons, além de plataformas modernas como Unsplash e Pexels. Respeite o trabalho dos fotógrafos e designers!

A Mina de Ouro: Antes (HTML4) vs. Depois (HTML5 e CSS)

Se você pesquisar tutoriais antigos (lá de 2013), vai encontrar um mundo completamente diferente. Naquela época, nós usávamos marcações hoje consideradas mortas (deprecated), como `` ou criávamos layouts usando tabelas <table> e atributos como cellpadding.

O grande problema dessas técnicas do passado é que elas misturavam Estrutura (HTML) com Design (CSS). Isso deixava o site pesado, péssimo para SEO e completamente quebrado quando acessado por celulares.

Hoje, a regra de ouro do Front-End moderno é:

  1. HTML5: Cuida apenas da semântica. Diz o que é um título (<h1>), o que é um parágrafo (<p>) e o que é uma imagem (<img>).
  2. CSS3: Cuida da aparência. Quer a imagem alinhada à esquerda? Use display: flex ou float no CSS. Quer arredondar bordas? Use border-radius.

O estudo da história do HTML é essencial para você entender o "porquê" as coisas funcionam hoje. Mas daqui para frente no curso, focaremos em te transformar em um monstro do CSS moderno!

💡 Dica Progressiva: Quer todos os meus cursos completos, exercícios resolvidos e apostilas em um só lugar? Conheça o nosso Mega Pack Progressivo e leve todo o arsenal de programação web para estudar no seu ritmo!


Perguntas Frequentes (FAQ)

Qual a diferença entre o atributo alt e o title na tag img?

O alt (texto alternativo) descreve literalmente o que está na imagem. Se a foto quebrar, é ele que aparece, além de ser lido por leitores de tela para cegos. Já o title é o "título" secundário que geralmente aparece como um balão flutuante (tooltip) quando o usuário passa o mouse por cima da figura.

Ainda devo usar o atributo align no HTML?

Não. O atributo align="left|right|center" direto na tag HTML está obsoleto (deprecated) no HTML5. O padrão de mercado hoje é usar a propriedade display: flex; ou margin: 0 auto; via CSS para posicionar mídias.

Onde posso baixar imagens grátis sem problemas de direitos autorais?

Evite baixar direto do Google Imagens. Utilize repositórios de domínio público ou licença Creative Commons Zero (CC0), como o Wikimedia Commons, Unsplash, Pexels e Pixabay. Eles fornecem fotos de altíssima qualidade totalmente liberadas para uso comercial.


🚀 O que estudar a seguir:

Agora que você domina a semântica de mídia no HTML5, está na hora de começar a construir o esqueleto das suas páginas. Seus próximos passos essenciais são:

  • Como criar links e âncoras (A Tag <a>).
  • Tabelas Semânticas em HTML5 (Quando usar de verdade).
  • Introdução ao CSS: Cascading Style Sheets.