# Projeto Terrário Parte 1: Introdução ao HTML ```mermaid journey title Your HTML Learning Journey section Foundation Create HTML file: 3: Student Add DOCTYPE: 4: Student Structure document: 5: Student section Content Add metadata: 4: Student Include images: 5: Student Organize layout: 5: Student section Semantics Use proper tags: 4: Student Enhance accessibility: 5: Student Build terrarium: 5: Student ``` ![Introdução ao HTML](../../../../translated_images/webdev101-html.4389c2067af68e98280c1bde52b6c6269f399eaae3659b7c846018d8a7b0bbd9.br.png) > Sketchnote por [Tomomi Imura](https://twitter.com/girlie_mac) HTML, ou Linguagem de Marcação de Hipertexto, é a base de todos os sites que você já visitou. Pense no HTML como o esqueleto que dá estrutura às páginas da web – ele define onde o conteúdo vai, como está organizado e o que cada parte representa. Enquanto o CSS mais tarde "vestirá" seu HTML com cores e layouts, e o JavaScript dará vida com interatividade, o HTML fornece a estrutura essencial que torna tudo isso possível. Nesta lição, você criará a estrutura HTML para uma interface de terrário virtual. Este projeto prático ensinará conceitos fundamentais de HTML enquanto você constrói algo visualmente envolvente. Você aprenderá a organizar conteúdo usando elementos semânticos, trabalhar com imagens e criar a base para um aplicativo web interativo. Ao final desta lição, você terá uma página HTML funcional exibindo imagens de plantas em colunas organizadas, pronta para ser estilizada na próxima lição. Não se preocupe se parecer básico no início – é exatamente assim que o HTML deve ser antes que o CSS adicione o toque visual. ```mermaid mindmap root((HTML Fundamentals)) Structure DOCTYPE Declaration HTML Element Head Section Body Content Elements Tags & Attributes Self-closing Tags Nested Elements Block vs Inline Content Text Elements Images Containers (div) Lists Semantics Meaningful Tags Accessibility Screen Readers SEO Benefits Best Practices Proper Nesting Valid Markup Descriptive Alt Text Organized Structure ``` ## Quiz Pré-Aula [Quiz pré-aula](https://ff-quizzes.netlify.app/web/quiz/15) > 📺 **Assista e Aprenda**: Confira este vídeo explicativo útil > > [![Vídeo sobre Fundamentos de HTML](https://img.youtube.com/vi/1TvxJKBzhyQ/0.jpg)](https://www.youtube.com/watch?v=1TvxJKBzhyQ) ## Configurando Seu Projeto Antes de mergulharmos no código HTML, vamos configurar um espaço de trabalho adequado para seu projeto de terrário. Criar uma estrutura de arquivos organizada desde o início é um hábito crucial que será útil ao longo de sua jornada de desenvolvimento web. ### Tarefa: Crie a Estrutura do Projeto Você criará uma pasta dedicada para seu projeto de terrário e adicionará seu primeiro arquivo HTML. Aqui estão duas abordagens que você pode usar: **Opção 1: Usando o Visual Studio Code** 1. Abra o Visual Studio Code 2. Clique em "Arquivo" → "Abrir Pasta" ou use `Ctrl+K, Ctrl+O` (Windows/Linux) ou `Cmd+K, Cmd+O` (Mac) 3. Crie uma nova pasta chamada `terrarium` e selecione-a 4. No painel Explorer, clique no ícone "Novo Arquivo" 5. Nomeie seu arquivo como `index.html` ![Explorador do VS Code mostrando a criação de novo arquivo](../../../../translated_images/vs-code-index.e2986cf919471eb984a0afef231380c8b132b000635105f2397bd2754d1b689c.br.png) **Opção 2: Usando Comandos no Terminal** ```bash mkdir terrarium cd terrarium touch index.html code index.html ``` **O que esses comandos fazem:** - **Cria** um novo diretório chamado `terrarium` para seu projeto - **Navega** até o diretório terrarium - **Cria** um arquivo vazio `index.html` - **Abre** o arquivo no Visual Studio Code para edição > 💡 **Dica Pro**: O nome do arquivo `index.html` é especial no desenvolvimento web. Quando alguém visita um site, os navegadores automaticamente procuram por `index.html` como a página padrão para exibir. Isso significa que uma URL como `https://mysite.com/projects/` automaticamente servirá o arquivo `index.html` da pasta `projects` sem precisar especificar o nome do arquivo na URL. ## Entendendo a Estrutura do Documento HTML Todo documento HTML segue uma estrutura específica que os navegadores precisam entender e exibir corretamente. Pense nessa estrutura como uma carta formal – ela tem elementos obrigatórios em uma ordem específica que ajudam o destinatário (neste caso, o navegador) a processar o conteúdo corretamente. ```mermaid flowchart TD A[""] --> B[""] B --> C[""] C --> D[""] C --> E["<meta charset>"] C --> F["<meta viewport>"] B --> G["<body>"] G --> H["<h1> Heading"] G --> I["<div> Containers"] G --> J["<img> Images"] style A fill:#e1f5fe style B fill:#f3e5f5 style C fill:#fff3e0 style G fill:#e8f5e8 ``` Vamos começar adicionando a base essencial que todo documento HTML precisa. ### A Declaração DOCTYPE e o Elemento Raiz As duas primeiras linhas de qualquer arquivo HTML servem como a "introdução" do documento ao navegador: ```html <!DOCTYPE html> <html></html> ``` **Entendendo o que esse código faz:** - **Declara** o tipo de documento como HTML5 usando `<!DOCTYPE html>` - **Cria** o elemento raiz `<html>` que conterá todo o conteúdo da página - **Estabelece** padrões modernos da web para renderização adequada no navegador - **Garante** exibição consistente em diferentes navegadores e dispositivos > 💡 **Dica do VS Code**: Passe o mouse sobre qualquer tag HTML no VS Code para ver informações úteis dos MDN Web Docs, incluindo exemplos de uso e detalhes de compatibilidade com navegadores. > 📚 **Saiba Mais**: A declaração DOCTYPE impede que os navegadores entrem no "modo quirks", que era usado para suportar sites muito antigos. O desenvolvimento web moderno usa a simples declaração `<!DOCTYPE html>` para garantir [renderização compatível com padrões](https://developer.mozilla.org/docs/Web/HTML/Quirks_Mode_and_Standards_Mode). ### 🔄 **Checagem Pedagógica** **Pausa e Reflexão**: Antes de continuar, certifique-se de que você entende: - ✅ Por que todo documento HTML precisa de uma declaração DOCTYPE - ✅ O que o elemento raiz `<html>` contém - ✅ Como essa estrutura ajuda os navegadores a renderizar páginas corretamente **Teste Rápido**: Você consegue explicar com suas próprias palavras o que significa "renderização compatível com padrões"? ## Adicionando Metadados Essenciais ao Documento A seção `<head>` de um documento HTML contém informações cruciais que os navegadores e mecanismos de busca precisam, mas que os visitantes não veem diretamente na página. Pense nisso como as informações "nos bastidores" que ajudam sua página a funcionar corretamente e aparecer corretamente em diferentes dispositivos e plataformas. Esses metadados dizem aos navegadores como exibir sua página, qual codificação de caracteres usar e como lidar com diferentes tamanhos de tela – tudo essencial para criar páginas web profissionais e acessíveis. ### Tarefa: Adicione o Cabeçalho do Documento Insira esta seção `<head>` entre suas tags de abertura e fechamento `<html>`: ```html <head> <title>Welcome to my Virtual Terrarium ``` **Desmembrando o que cada elemento faz:** - **Define** o título da página que aparece nas abas do navegador e nos resultados de busca - **Especifica** a codificação de caracteres UTF-8 para exibição correta de texto em todo o mundo - **Garante** compatibilidade com versões modernas do Internet Explorer - **Configura** design responsivo ajustando o viewport à largura do dispositivo - **Controla** o nível inicial de zoom para exibir o conteúdo no tamanho natural > 🤔 **Pense Nisso**: O que aconteceria se você configurasse uma tag meta de viewport assim: ``? Isso forçaria a página a ter sempre 600 pixels de largura, quebrando o design responsivo! Saiba mais sobre [configuração adequada de viewport](https://developer.mozilla.org/docs/Web/HTML/Viewport_meta_tag). ## Construindo o Corpo do Documento O elemento `` contém todo o conteúdo visível da sua página – tudo o que os usuários verão e com o que interagirão. Enquanto a seção `` forneceu instruções ao navegador, a seção `` contém o conteúdo real: texto, imagens, botões e outros elementos que criam sua interface de usuário. Vamos adicionar a estrutura do corpo e entender como as tags HTML trabalham juntas para criar conteúdo significativo. ### Entendendo a Estrutura das Tags HTML O HTML usa tags emparelhadas para definir elementos. A maioria das tags tem uma tag de abertura como `

` e uma tag de fechamento como `

`, com conteúdo entre elas: `

Olá, mundo!

`. Isso cria um elemento de parágrafo contendo o texto "Olá, mundo!". ### Tarefa: Adicione o Elemento Body Atualize seu arquivo HTML para incluir o elemento ``: ```html Welcome to my Virtual Terrarium ``` **Aqui está o que essa estrutura completa fornece:** - **Estabelece** a estrutura básica do documento HTML5 - **Inclui** metadados essenciais para renderização adequada no navegador - **Cria** um corpo vazio pronto para seu conteúdo visível - **Segue** as melhores práticas modernas de desenvolvimento web Agora você está pronto para adicionar os elementos visíveis do seu terrário. Usaremos elementos `
` como contêineres para organizar diferentes seções de conteúdo e elementos `` para exibir as imagens das plantas. ### Trabalhando com Imagens e Contêineres de Layout Imagens são especiais no HTML porque usam tags "auto-fechadas". Diferente de elementos como `

` que envolvem conteúdo, a tag `` contém todas as informações necessárias dentro da própria tag usando atributos como `src` para o caminho do arquivo de imagem e `alt` para acessibilidade. Antes de adicionar imagens ao seu HTML, você precisará organizar seus arquivos de projeto corretamente criando uma pasta de imagens e adicionando os gráficos das plantas. **Primeiro, configure suas imagens:** 1. Crie uma pasta chamada `images` dentro da pasta do projeto terrarium 2. Baixe as imagens das plantas da [pasta de solução](../../../../3-terrarium/solution/images) (14 imagens de plantas no total) 3. Copie todas as imagens das plantas para sua nova pasta `images` ### Tarefa: Crie o Layout de Exibição das Plantas Agora adicione as imagens das plantas organizadas em duas colunas entre suas tags ``: ```html
plant
plant
plant
plant
plant
plant
plant
plant
plant
plant
plant
plant
plant
plant
``` **Passo a passo, aqui está o que está acontecendo nesse código:** - **Cria** um contêiner principal da página com `id="page"` para conter todo o conteúdo - **Estabelece** dois contêineres de coluna: `left-container` e `right-container` - **Organiza** 7 plantas na coluna esquerda e 7 plantas na coluna direita - **Envolve** cada imagem de planta em um div `plant-holder` para posicionamento individual - **Aplica** nomes de classe consistentes para estilização com CSS na próxima lição - **Atribui** IDs únicos a cada imagem de planta para interação com JavaScript posteriormente - **Inclui** caminhos de arquivo corretos apontando para a pasta de imagens > 🤔 **Considere Isso**: Note que todas as imagens atualmente têm o mesmo texto alternativo "plant". Isso não é ideal para acessibilidade. Usuários de leitores de tela ouviriam "plant" repetidamente 14 vezes sem saber qual planta cada imagem mostra. Você consegue pensar em textos alternativos melhores e mais descritivos para cada imagem? > 📝 **Tipos de Elementos HTML**: Elementos `
` são "em nível de bloco" e ocupam toda a largura, enquanto elementos `` são "em linha" e ocupam apenas a largura necessária. O que você acha que aconteceria se você mudasse todas essas tags `
` para tags ``? ### 🔄 **Checagem Pedagógica** **Entendimento da Estrutura**: Reserve um momento para revisar sua estrutura HTML: - ✅ Você consegue identificar os contêineres principais no seu layout? - ✅ Você entende por que cada imagem tem um ID único? - ✅ Como você descreveria o propósito dos divs `plant-holder`? **Inspeção Visual**: Abra seu arquivo HTML em um navegador. Você deve ver: - Uma lista básica de imagens de plantas - Imagens organizadas em duas colunas - Layout simples e sem estilo **Lembre-se**: Essa aparência simples é exatamente como o HTML deve ser antes da estilização com CSS! Com essa marcação adicionada, as plantas aparecerão na tela, embora ainda não pareçam polidas – isso é o que o CSS fará na próxima lição! Por enquanto, você tem uma base sólida de HTML que organiza seu conteúdo corretamente e segue as melhores práticas de acessibilidade. ## Usando HTML Semântico para Acessibilidade HTML semântico significa escolher elementos HTML com base em seu significado e propósito, não apenas em sua aparência. Quando você usa marcação semântica, está comunicando a estrutura e o significado do seu conteúdo para navegadores, mecanismos de busca e tecnologias assistivas como leitores de tela. ```mermaid flowchart TD A[Need to add content?] --> B{What type?} B -->|Main heading| C["

"] B -->|Subheading| D["

,

, etc."] B -->|Paragraph| E["

"] B -->|List| F["

    ,
      "] B -->|Navigation| G["