Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

para Web
Prof.ª Ana Paula Costacurta
Prof.ª Carla Dalzoto
Tecnologias de 
desenvolvimenTo 
FronTend
Indaial – 2023
1a Edição
Impresso por:
Elaboração:
Prof.ª Ana Paula Costacurta
 Prof.ª Carla Dalzoto
Copyright © UNIASSELVI 2023
 Revisão, Diagramação e Produção:
Equipe Desenvolvimento de Conteúdos EdTech
Centro Universitário Leonardo da Vinci – UNIASSELVI
Ficha catalográfica elaborada pela equipe Conteúdos EdTech UNIASSELVI
C397 CENTRO UNIVERSITÁRIO LEONARDO DA VINCI.
Núcleo de Educação a Distância. COSTACURTA, Ana Paula. 
Tecnologias de Desenvolvimento FrontEnd para Web. Ana Paula Costacurta. 
Carla Dalzoto. Indaial - SC: Arqué, 2023.
274p.
ISBN XXX-XX-XXX-XXXX-X
“Graduação - EaD”.
1. Desenvolvimento Front-End 2. Desenvolvimento Web 3. HTML 
CDD 005.12
Bibliotecário: João Vivaldo de Souza CRB- 9-1679
Acadêmico, bem-vindo ao estudo das tecnologias de desenvolvimento Front-
End para Web. Este material abrange conceitos básicos e intermediários para enriquecer 
seus conhecimentos sobre desenvolvimento web e evoluir na carreira de desenvolvedor 
web. Nosso objetivo é ensiná-lo a utilizar tecnologias como HTML, CSS, JavaScript, 
Bootstrap e React.JS, além de testar exemplos de uso delas. 
Na Unidade 1, abordaremos os elementos HTML, estilizado com CSS, estilização 
com framework bootstrap 5, criação de formulários web, formatação de layout dos 
campos com bootstrap e a publicar a página no GitHub Pages. 
Na Unidade 2, estudaremos sobre criando laços, interações, controle de fluxo, 
tratamento de erros, criaremos objetos com propriedades e métodos, aprenderemos a 
usar Array, Map e Set funções em JavaScript ES6+, conheceremos a biblioteca React.
JS e aprenderemos a aplicar funções em um formulário web, a criar renderizações dos 
elementos, componentes funcionais e componentes de classe no React.JS, além de ver 
os componentes integrados do DOM para manipulação dos componentes do documento 
através do JavaScript.
Aprenderemos também como testar os componentes utilizando ferramentas 
e roteiros prontos, criar ambiente, usar a biblioteca JEST MONGODB e a extensão do 
navegador para realização de testes.
Por fim, na Unidade 3, falaremos sobre o Micro Frontend, configurando uma 
aplicação de página única, criar rotas e armazenamento local. Também aprenderemos 
a criar um portal para disponibilizar os trabalhos de desenvolvimento realizado, criando 
assim um portfólio para divulgação do seu desenvolvimento como profissional.
Esperamos que este material o ajude a evoluir na sua carreira de desenvolvedor 
web e a divulgar o conhecimento adquirido por meio de um portfólio e currículo de 
desenvolvedor. 
Bons estudos!
Prof.ª Ana Paula Costacurta
Prof.ª Carla Dalzoto
APRESENTAÇÃO
GIO
Olá, eu sou a Gio!
No livro didático, você encontrará blocos com informações 
adicionais – muitas vezes essenciais para o seu entendimento 
acadêmico como um todo. Eu ajudarei você a entender 
melhor o que são essas informações adicionais e por que você 
poderá se beneficiar ao fazer a leitura dessas informações 
durante o estudo do livro. Ela trará informações adicionais 
e outras fontes de conhecimento que complementam o 
assunto estudado em questão.
Na Educação a Distância, o livro impresso, entregue a todos 
os acadêmicos desde 2005, é o material-base da disciplina. 
A partir de 2021, além de nossos livros estarem com um 
novo visual – com um formato mais prático, que cabe na 
bolsa e facilita a leitura –, prepare-se para uma jornada 
também digital, em que você pode acompanhar os recursos 
adicionais disponibilizados através dos QR Codes ao longo 
deste livro. O conteúdo continua na íntegra, mas a estrutura 
interna foi aperfeiçoada com uma nova diagramação no 
texto, aproveitando ao máximo o espaço da página – o que 
também contribui para diminuir a extração de árvores para 
produção de folhas de papel, por exemplo.
Preocupados com o impacto de ações sobre o meio ambiente, 
apresentamos também este livro no formato digital. Portanto, 
acadêmico, agora você tem a possibilidade de estudar com 
versatilidade nas telas do celular, tablet ou computador.
Preparamos também um novo layout. Diante disso, você 
verá frequentemente o novo visual adquirido. Todos esses 
ajustes foram pensados a partir de relatos que recebemos 
nas pesquisas institucionais sobre os materiais impressos, 
para que você, nossa maior prioridade, possa continuar os 
seus estudos com um material atualizado e de qualidade.
Acadêmico, você sabe o que é o ENADE? O Enade é um 
dos meios avaliativos dos cursos superiores no sistema federal de 
educação superior. Todos os estudantes estão habilitados a participar 
do ENADE (ingressantes e concluintes das áreas e cursos a serem 
avaliados). Diante disso, preparamos um conteúdo simples e objetivo 
para complementar a sua compreensão acerca do ENADE. Confira, 
acessando o QR Code a seguir. Boa leitura!
Olá, acadêmico! Para melhorar a qualidade dos materiais ofertados a você – 
e dinamizar, ainda mais, os seus estudos –, nós disponibilizamos uma diversidade de QR 
Codes completamente gratuitos e que nunca expiram. O QR Code é um código que permite 
que você acesse um conteúdo interativo relacionado ao tema que você está estudando. Para 
utilizar essa ferramenta, acesse as lojas de aplicativos e baixe um leitor de QR Code. Depois, 
é só aproveitar essa facilidade para aprimorar os seus estudos.
ENADE
LEMBRETE
Olá, acadêmico! Iniciamos agora mais uma 
disciplina e com ela um novo conhecimento. 
Com o objetivo de enriquecer seu conheci-
mento, construímos, além do livro que está em 
suas mãos, uma rica trilha de aprendizagem, 
por meio dela você terá contato com o vídeo 
da disciplina, o objeto de aprendizagem, materiais complementa-
res, entre outros, todos pensados e construídos na intenção de 
auxiliar seu crescimento.
Acesse o QR Code, que levará ao AVA, e veja as novidades que 
preparamos para seu estudo.
Conte conosco, estaremos juntos nesta caminhada!
QR CODE
SUMÁRIO
UNIDADE 1 — INTRODUÇÃO AO DESENVOLVIMENTO FRONT-END PARA WEB ..........1
TÓPICO 1 — INTRODUÇÃO À INTERNET: CONCEITOS FUNDAMENTAIS E 
COMPONENTES BÁSICOS ......................................................................... 3
1 INTRODUÇÃO .............................................................................................................. 3
2 FUNDAMENTOS DA INTERNET ...................................................................................4
2.1 COMO A WEB SURGIU E EVOLUIU ............................................................................................4
2.2 DESVENDANDO O ENDEREÇO WEB ........................................................................................6
2.3 HOSPEDAGEM DE SITES ............................................................................................................8
3 FUNDAMENTOS DO HTML: ESTRUTURAÇÃO DE PÁGINAS WEB ........................... 10
3.1 EVOLUÇÃO DO HTML ..................................................................................................................11
3.2 FUNCIONAMENTO DE NAVEGADORES E MOTORES DE BUSCA .................................... 13
3.3 COMO ESTRUTURAR UM SITE ................................................................................................ 16
4 INTRODUÇÃO A ESTRUTURA DO HTML .................................................................. 19
4.1 CRIANDO O PRIMEIRO ARQUIVO HTML ................................................................................. 19
4.2 ESTRUTURA BÁSICA DO DOCUMENTOS HTML ..................................................................22
4.3 SINTAXE DO ELEMENTO HTML .............................................................................................. 26
RESUMO DO TÓPICO 1 ................................................................................................. 31
AUTOATIVIDADE ..........................................................................................................32
TÓPICO 2 — HTML, FORMULÁRIOS E CSS:FUNDAMENTOS E ESTILIZAÇÃO ..........35 
1 INTRODUÇÃO ............................................................................................................35
2 INTRODUÇÃO AOS ELEMENTOS HTML ....................................................................35
2.1 ELEMENTO CABEÇALHO ......................................................................................................... 36
2.2 ELEMENTOS ESTRUTURAIS E ORGANIZADORES ............................................................. 40
2.3 MODELO DE OBJETOS DE DOCUMENTOS ..........................................................................47
3 INTRODUÇÃO AOS FORMULÁRIOS WEB .................................................................50
3.1 ESTRUTURA DOS FORMULÁRIOS .......................................................................................... 50
3.2 CRIANDO UM FORMULÁRIO DE LOGIN .................................................................................57
3.3 VALIDAÇÃO DOS DADOS DO FORMULÁRIO ....................................................................... 60
4 INTRODUÇÃO À ESTILIZAÇÃO .................................................................................66
4.1 SINTAXE DAS REGRAS DE ESTILO CSS ............................................................................... 66
4.2 SELETORES DE ELEMENTOS HTML EM CSS ..................................................................... 68
4.3 VALORES DE PROPRIEDADES DO CSS .................................................................................71
RESUMO DO TÓPICO 2 .................................................................................................87
AUTOATIVIDADE ..........................................................................................................88
TÓPICO 3 — ESTILIZAÇÃO COM FRAMEWORK BOOTSTRAP ..................................... 91
1 INTRODUÇÃO ............................................................................................................. 91
2 FRAMEWORK BOOTSTRAP 5: CONCEITOS E FUNDAMENTOS ............................... 91
2.1 INTRODUÇÃO AO FRAMEWORK BOOTSTRAP 5 ...................................................................92
2.2 CLASSES DO FRAMEWORK BOOTSTRAP 5 ........................................................................ 94
2.3 CASO DE USO BOOTSTRAP 5: CRIAR TELA DE CADASTRO DE USUÁRIO ...................97
3 BOOTSTRAP 5: CRIANDO FORMULÁRIOS .............................................................100
3.1 CLASSES DE ENTRADA DE DADOS DO BOOTSTRAP 5 ................................................. 100
3.2 CASO DE USO BOOTSTRAP 5: CRIAÇÃO TELA DE LOGIN ..............................................104
3.3 CRIANDO BOTÕES NO BOOTSTRAP 5..................................................................................113
4 VALIDANDO DE FORMULÁRIOS COM BOOTSTRAP .............................................. 116
4.1 MECANISMO DE VALIDAÇÃO DO BOOTSTRAP 5 ................................................................117
4.2 CASO DE USO: VALIDAÇÃO TELA DE LOGIN ......................................................................119
4.3 PUBLICAÇÃO DO PROJETO DE LOGIN NO GITHUB ........................................................122
LEITURA COMPLEMENTAR ....................................................................................... 125
RESUMO DO TÓPICO 3 ...............................................................................................128
AUTOATIVIDADE ........................................................................................................ 129
REFERÊNCIAS ............................................................................................................133
UNIDADE 2 — JAVASCRIPT MODERNO ..................................................................... 135
TÓPICO 1 — PROGRAMANDO EM JAVASCRIPT ........................................................ 137
1 INTRODUÇÃO .......................................................................................................... 137
2 FUNÇÕES ................................................................................................................ 137
2.1 ESCOPO E SHADOWING .........................................................................................................139
2.2 RETORNO DE FUNÇÕES ........................................................................................................140
2.3 FUNÇÃO ANÔNIMA E FUNÇÃO FLECHA.............................................................................142
3 MODELO DE OBJETOS DE DOCUMENTOS .............................................................143
3.1 HIERARQUIA DE NÓS ...............................................................................................................144
3.2 SELECIONANDO E MANIPULANDO ELEMENTOS DO OBJETO DOM ...........................145
3.3 GERENCIANDO ATRIBUTOS ..................................................................................................146
4 VISÃO GERAL DE FORMULÁRIOS WEB .................................................................. 147
4.1 ESTRUTURA ............................................................................................................................... 147
4.2 CAMPOS DE ENTRADA ...........................................................................................................148
4.3 ATRIBUTOS GLOBAIS E CONTROLE DE TEXTO .................................................................151
RESUMO DO TÓPICO 1 ............................................................................................... 153
AUTOATIVIDADE ........................................................................................................154
TÓPICO 2 — CRIANDO UM FORMULÁRIO WEB ......................................................... 157
1 INTRODUÇÃO .......................................................................................................... 157
2 INTRODUÇÃO BOOTSTRAP 5 ................................................................................. 157
2.1 CONTAINER ................................................................................................................................ 157
2.2 BREAKPOINTS .........................................................................................................................159
2.3 CLASSES ....................................................................................................................................160
3 ESTILIZADO FORMULÁRIOS COM BOOTSTRAP 5 .................................................161
3.1 GRUPO DE INPUTS ...................................................................................................................162
3.2 UNIÃO DE OBJETOS INDEPENDENTES ..............................................................................163
3.3 VALIDAÇÃO DO FORMULÁRIO WEB ...................................................................................165
4 ENVIANDO DADOS DO FORMULÁRIO WEB ............................................................ 166
4.1 FUNÇÃO PARA VALIDAÇÃO DOS CAMPOS ....................................................................... 167
4.2 MÉTODO DE ENVIO DOS DADOS .......................................................................................... 167
4.3 PUBLICAÇÃO DOS FORMULÁRIOS NO GITHUB ............................................................... 170
RESUMO DO TÓPICO 2 ............................................................................................... 173
AUTOATIVIDADE ........................................................................................................ 174
TÓPICO 3 — OBJETOS EM JAVASCRIPT ................................................................... 177
1 INTRODUÇÃO .......................................................................................................... 177
2 COLEÇÕES DE DADOS EM JAVASCRIPT ............................................................... 177
2.1 ARRAY ..........................................................................................................................................1772.2 MAP ........................................................................................................................................... 180
2.3 SET ..............................................................................................................................................182
3 TRABALHANDO COM OBJETOS .............................................................................184
3.1 CRIAÇÃO DE OBJETOS ..........................................................................................................184
3.2 PROPRIEDADES .......................................................................................................................186
3.3 DEFINIÇÃO DE MÉTODOS ...................................................................................................... 187
4 VSCODE PARA JAVASCRIPT ..................................................................................189
4.1 INSTALAÇÃO DO VSCODE .....................................................................................................189
4.2 CONFIGURANDO VSCODE ....................................................................................................189
4.3 MONTANDO UM AMBIENTE DE ESTUDO ...........................................................................190
LEITURA COMPLEMENTAR ....................................................................................... 192
RESUMO DO TÓPICO 3 ...............................................................................................194
AUTOATIVIDADE ........................................................................................................ 195
REFERÊNCIAS ............................................................................................................198
UNIDADE 3 — INTRODUÇÃO AO REACT JAVASCRIPT ............................................. 199
TÓPICO 1 — COMEÇANDO COM REACT JAVASCRIPT ..............................................201
1 INTRODUÇÃO ...........................................................................................................201
2 VISÃO GERAL ..........................................................................................................201
3 COMPONENTES E PROPS ...................................................................................... 202
4 ESTRUTURA ........................................................................................................... 204
5 INTRODUÇÃO JSX (JAVASCRIPT SYNTAX EXTENSION) .....................................207
5.1 O QUE É JSX? ........................................................................................................................... 207
5.2 POR QUE JSX? ........................................................................................................................ 207
5.3 SINTAXE JSX BÁSICA ............................................................................................................ 207
5.4 UMA PALAVRA DE CAUTELA ...............................................................................................208
5.5 APROFUNDANDO-SE NA JSX .............................................................................................209
5.5.1 JSX também é uma expressão ..................................................................................209
5.5.2 Especificando atributos com JSX .............................................................................209
5.5.3 JSX representa objetos ................................................................................................210
5.5.4 Manipulando filhos com JSX ........................................................................................211
6 INCORPORANDO JAVASCRIPT EM ATRIBUTOS JSX ........................................... 211
6.1 COMPREENDENDO OS ATRIBUTOS JSX .............................................................................212
6.1.1 Atribuindo expressões JavaScript a atributos JSX ................................................212
6.1.2 Um nome de classe dinâmica .....................................................................................212
6.2 INCORPORANDO FUNÇÕES EM ATRIBUTOS JSX ............................................................213
6.3 DOMINANDO FILHOS EM JSX ...............................................................................................214
6.3.1 Entendendo filhos em JSX ...........................................................................................214
6.3.2 Incorporando expressões como filhos JSX .............................................................214
6.3.3 JavaScript complexo como filhos JSX ....................................................................215
6.3.4 Renderização condicional de filhos JSX ..................................................................215
RESUMO DO TÓPICO 1 ............................................................................................... 217
AUTOATIVIDADE ........................................................................................................218
TÓPICO 2 — DADOS E STATUS .................................................................................. 219
1 INTRODUÇÃO ........................................................................................................... 219
2 EVENTOS ............................................................................................................... 220
3 MANIPULADORES ................................................................................................... 221
4 DADOS .................................................................................................................... 223
5 HOOKS .................................................................................................................... 225
6 ESTADOS ................................................................................................................227
RESUMO DO TÓPICO 2 ............................................................................................... 231
AUTOATIVIDADE ....................................................................................................... 232
TÓPICO 3 — NAVEGAÇÃO E ATIVOS REACT ............................................................ 233
1 INTRODUÇÃO .......................................................................................................... 233
2 NAVEGAÇÃO ........................................................................................................... 233
3 CRIANDO ROTAS .................................................................................................... 236
4 REQUISIÇÕES HTTP .............................................................................................. 242
5 USANDO ATIVOS .................................................................................................... 249
6 PRIMEIRO PROJETO UTILIZANDO REACT ............................................................ 254
LEITURA COMPLEMENTAR ...................................................................................... 264
RESUMO DO TÓPICO 3 ...............................................................................................270
AUTOATIVIDADE ........................................................................................................ 271
REFERÊNCIAS ............................................................................................................273
1
UNIDADE 1 — 
INTRODUÇÃO AO 
DESENVOLVIMENTO 
FRONT-END PARA WEB
OBJETIVOS DE APRENDIZAGEM
PLANO DE ESTUDOS
 A partir do estudo desta unidade, você deverá ser capaz de:
• compreender os conceitos fundamentais da internet, incluindo os principais 
componentes que a compõem;
• entender a evolução da web desde seu surgimento até os dias atuais;
• descrever o funcionamento de navegadores e motores de busca na internet;
•	 identificar	as	principais	ferramentas	e	técnicas	para	estruturar	um	site	utilizando	
HTML;
• praticar a criaçãode um arquivo HTML básico e publicá-lo em um servidor web;
• compreender a estrutura básica do documento HTML tradicional e seus principais 
elementos.
 A cada tópico desta unidade você encontrará autoatividades com o objetivo de 
reforçar o conteúdo apresentado.
TÓPICO 1 – INTRODUÇÃO À INTERNET: CONCEITOS FUNDAMENTAIS E COMPONENTES 
BÁSICOS
TÓPICO 2 – CRIANDO UM FORMULÁRIO WEB COM HTML 5 
TÓPICO 3 – INTRODUÇÃO AO JAVASCRIPT ES6+
Preparado para ampliar seus conhecimentos? Respire e vamos em frente! Procure 
um ambiente que facilite a concentração, assim absorverá melhor as informações.
CHAMADA
2
CONFIRA 
A TRILHA DA 
UNIDADE 1!
Acesse o 
QR Code abaixo:
3
INTRODUÇÃO À INTERNET: 
CONCEITOS FUNDAMENTAIS E 
COMPONENTES BÁSICOS
TÓPICO 1 — UNIDADE 1
1 INTRODUÇÃO 
A	sigla	HTML	significa	"Hypertext	Markup	Language",	em	português,	"Linguagem	
de	Marcação	de	Hipertexto".	É	a	linguagem	padrão	para	criação	de	páginas	web,	é	o	alicer-
ce	das	páginas	web,	permitindo	definir	a	estrutura	e	o	significado	do	conteúdo,	permitindo	
a	estruturação	do	conteúdo	e	a	definição	da	sua	apresentação	na	internet.	Ao	combiná-lo	
com	CSS	e	JavaScript,	é	possível	criar	páginas	mais	sofisticadas	e	dinâmicas.	
O	CSS	é	a	sigla	para	"Cascading	Style	Sheets",	que	em	português	significa	"Fo-
lhas	de	Estilo	em	Cascata".	Trata-se	de	uma	 linguagem	de	estilo	usada	para	definir	a	
apresentação	e	o	layout	de	uma	página	web,	incluindo	elementos	como	cores,	fontes,	
tamanhos,	posicionamento	e	outros	aspectos	visuais.	Com	o	CSS,	é	possível	separar	a	
estrutura	de	uma	página	 (definida	em	HTML)	da	sua	apresentação	visual,	permitindo	
assim	a	criação	de	páginas	mais	sofisticadas	e	de	fácil	manutenção.
JavaScript	é	uma	linguagem	de	programação	de	alto	nível	que	é	utilizada	para	
adicionar interatividade e dinamismo a páginas web. Ela permite que os desenvolvedo-
res criem animações, efeitos visuais, validação de formulários, interação com usuários e 
muitas outras funcionalidades que tornam as páginas web mais atraentes e interativas. 
Além	disso,	o	JavaScript	também	é	utilizado	em	diversos	outros	ambientes,	como	no	
desenvolvimento	de	aplicações	para	desktop,	dispositivos	móveis,	jogos,	entre	outros.
Neste	primeiro	 tema	de	aprendizagem	abordaremos	conceitos	 fundamentais	
sobre	a	internet,	como	a	história	da	web,	a	descoberta	de	páginas	e	a	criação	de	en-
dereços.	Além	disso,	serão	explicados	os	navegadores	e	a	hospedagem	de	conteúdo	
nos	servidores	web,	incluindo	uma	orientação	sobre	como	organizar	pastas	para	criar	
um	site	simples.	Também	será	abordado	o	funcionamento	do	servidor	de	localização	de	
domínio e dos motores de busca.
No tópico sobre HTML, serão apresentados os elementos básicos da linguagem, 
incluindo	a	sintaxe	e	as	diferenças	entre	as	versões	antigas	e	a	versão	HTML5.	Serão	
destacados	os	elementos	válidos	para	o	elemento	<head>	e	a	importância	da	utilização	
de metadados para as páginas web. Além disso, será abordada a evolução das versões 
da linguagem HTML. O objetivo é fornecer aos estudantes uma base sólida para que 
possam	criar	páginas	simples	com	clareza	e	eficácia,	utilizando	a	estrutura	básica	dos	
documentos HTML.
4
Para	demonstrar	na	prática	como	organizar	conteúdos	com	elementos	de	sepa-
ração,	criação	de	divisões,	 listas	e	inclusão	de	imagens,	será	apresentado	um	exemplo	
simples	de	uma	calculadora	em	uma	página	web.	Esse	exemplo	permitirá	que	os	estu-
dantes	 tenham	uma	compreensão	mais	 concreta	 sobre	 como	utilizar	 os	 conceitos	de	
HTML aprendidos anteriormente e como criar elementos interativos em uma página web. 
Com isso, além de entenderem como a internet funciona e como as páginas são 
criadas, os estudantes terão uma base sólida sobre a linguagem HTML e como estrutu-
rar	um	site	simples	de	forma	eficaz	e	atrativa.
A internet, a rede global de computadores, foi criada nos anos 1960 pelo Depar-
tamento	de	Defesa	dos	Estados	Unidos,	com	o	objetivo	de	compartilhar	informações	e	
recursos entre os pesquisadores. No entanto, foi só na década de 1990 que a web, que 
é	uma	das	aplicações	mais	populares	da	internet,	se	popularizou.	Desde	então,	a	web	
evoluiu	rapidamente,	permitindo	não	apenas	o	compartilhamento	de	informações,	mas	
também a comunicação em tempo real, a criação de comunidades online e o comércio 
eletrônico. Hoje em dia, a web é uma parte essencial da vida moderna e continua a evo-
luir rapidamente.
Perfeito, agora estamos prontos para embarcar em uma jornada através do 
tempo	e	conhecer	a	origem	da	web.	
2 FUNDAMENTOS DA INTERNET
Para	se	tornar	um	desenvolvedor	front-end	para	a	web,	é	essencial	possuir	ha-
bilidades que permitam a criação de sites modernos e interativos. Para tanto, é neces-
sário adquirir conceitos introdutórios sobre a web e a internet. Nesse sentido, é impor-
tante	explorar	a	história	da	criação	da	web	e	seu	desenvolvimento	ao	longo	do	tempo,	
compreendendo	sua	evolução	e	entendendo	as	tecnologias	utilizadas	no	desenvolvi-
mento de sites. 
Conhecer	a	história	da	web	permite	vislumbrar	tendências	futuras,	além	de	for-
necer	uma	base	sólida	para	o	aprendizado	de	tecnologias	mais	avançadas.	Por	 isso,	
esse	conhecimento	é	fundamental	para	quem	deseja	atuar	na	área	de	desenvolvimento	
front-end para a web.
2.1 COMO A WEB SURGIU E EVOLUIU
Em	1989,	a	Rede	Mundial	de	Computadores	(ou	WWW,	que	significa	“World	Wide	
Web”,	em	inglês),	conhecida	como	web,	foi	criada	no	Conselho	Europeu	para	Pesquisa	
Nuclear	(ou	CERN	que	significa	European	Organization	for	Nuclear	Research,	em	inglês)	
5
por	Tim	Berners-Lee	e	Robert	Cailliau,	com	a	finalidade	inicial	de	compartilhar	informa-
ções	entre	universidades	e	institutos	pelo	mundo	(CERN,	2022a).	Desde	então,	a	Web	se	
tornou	uma	plataforma	fundamental	para	o	compartilhamento	de	informações	e	recur-
sos entre usuários e instituições em todo o mundo, tendo uma arquitetura descentrali-
zada	e	distribuída	baseada	em	hiperlinks.
De	acordo	com	Relihan,	Cahill	e	Hinckey	(1994),	a	Web	é	um	sistema	de	hiper-
texto	distribuído	em	toda	a	Internet,	operando	na	base	cliente/servidor,	onde	os	clientes	
W3	(ou	WWW)	solicitam	representações	de	objetos	de	documentos	aos	servidores	W3.	O	
espaço	de	objeto	W3	é	formado	por	nós	e	partes	de	nós,	chamados	de	fragmentos,	que	
são	conectados	entre	si	por	hiperlinks.	A	web	é	composta	por	um	conjunto	de	páginas	
que	contêm	hipertexto	e	hipermídia,	como	texto,	gráficos,	vídeo,	som,	entre	outros,	e	os	
servidores	web	fornecem	essas	informações	em	hipertexto	para	os	navegadores	web	
(CERN,	2022b).
Embora muitas pessoas usem os termos internet e web de forma intercambi-
ável,	é	importante	destacar	que	eles	não	são	sinônimos.	Robbins	(2018)	ressalta	que	a	
internet é uma rede global de computadores interconectados, enquanto a web é ape-
nas	uma	das	várias	maneiras	pelas	quais	as	 informações	podem	ser	compartilhadas	
na internet. Compreender a diferença entre esses termos é essencial para entender a 
estrutura e o funcionamento da internet e da web.
Você sabia que pode conhecer o primeiro protótipo de navegador 
da web? Ele se chama WorldWideWeb e foi desenvolvido por Tim 
Berners-Lee em 1990, enquanto trabalhava no CERN (European 
Organization for Nuclear Research). Esse navegador foi o precursor 
dos navegadores modernos que utilizamos atualmente e pode ser 
acessado através do seguinte link: https://worldwideweb.cern.ch/.
O WorldWideWeb foi desenvolvido para ser utilizado em computa-
dores NeXT, uma linha de computadores pessoais criada por Steve 
Jobs depois que ele deixou a Apple em 1985. O navegador permitia 
que os usuários acessassem documentos usando hiperlinks, o que 
revolucionou a forma como as informações eram compartilhadas e 
acessadas na época.
CURIOSIDADE
Um	marco	importante	na	história	da	WWW	foi	a	criação	do	primeiro	servidor	web,	
em 1991, também por Tim Berners-Lee, que o desenvolveu em uma linguagem de pro-
gramação	chamada	Objective-C.	Esse	servidor	permitiu	que	a	primeira	página	web	do	
mundo fosse criada e acessada por outros computadores conectadosà internet. 
https://worldwideweb.cern.ch/
6
A	página,	que	pode	ser	vista	até	hoje	no	endereço:		<http://info.cern.ch/hyper-
text/WWW/TheProject.html>,	que	contém	informações	sobre	o	projeto	WWW,	incluindo	
sua	história,	sua	arquitetura	e	o	que	ele	pretendia	alcançar.	A	partir	daí,	a	web	começou	
a crescer rapidamente e evoluir, tornando-se uma ferramenta essencial para a comuni-
cação	e	o	compartilhamento	de	informações	em	todo	o	mundo.
Após a introdução sobre a web e a internet, é importante entender como as pá-
ginas web são acessadas na rede mundial de computadores. Isso pode ser feito através 
do endereço IP ou do domínio. Dessa forma, os usuários podem acessar as páginas web 
na	internet	sem	precisar	memorizar	números	complexos	de	endereçamento	IP.	
Entender	esses	conceitos	é	fundamental	para	a	configuração	de	servidores	e	
hospedagem	de	sites	na	internet.	Além	disso,	ter	conhecimento	sobre	como	funcionam	
os endereços IP e os nomes de domínio é importante para solucionar problemas de co-
nexão	à	internet	e	para	garantir	a	segurança	na	rede.	É	fundamental	manter	a	seguran-
ça	do	nome	de	domínio	e	do	servidor,	pois	uma	falha	de	segurança	pode	levar	à	invasão	
do site e comprometimento de informações sensíveis.
2.2 DESVENDANDO O ENDEREÇO WEB
O	protocolo	de	internet,	também	conhecido	como	Protocolo	da	internet	ou	(IP	
que	significa	Internet	Protocol,	em	inglês),	é	um	endereço	numérico	único	que	permite	a	
comunicação	entre	computadores	e	servidores	web.	Assim	como	o	CPF	identifica	cada	
pessoa de forma única, o IP é necessário para transmitir as informações de forma cor-
reta entre os dispositivos conectados na internet.
O	Localizador	Uniforme	de	Recursos	(ou	URL	que	significa	“Uniform	Resource	
Locator”.	em	inglês)	é	a	forma	mais	fácil	e	intuitiva	de	acessar	um	site	na	internet.	Ela	
é	composta	por	duas	partes	principais:	o	protocolo	de	transferência	de	hipertexto	e	o	
nome de domínio.
O	nome	de	domínio,	como	"google.com",	é	o	endereço	completo	que	identifica	
o site. Quando digitamos o nome de domínio no navegador, o Sistema de Nome de Do-
minio	(ou	DNS	que	significa	“Domain	Name	System”,	em	inglês)	faz	a	tradução	para	o	
endereço IP correspondente, permitindo que o navegador se conecte ao servidor web 
correto e carregue a página solicitada
Assim como a busca de contato na agenda telefônica, ao inserirmos a URL, o 
DNS é responsável por encontrar o endereço IP correspondente, permitindo o acesso 
à	página	web	desejada.	Agora	vamos	analisar	cada	uma	das	partes	da	sintaxe	da	URL	
para	entendermos	melhor	como	ela	é	estruturada.	
7
Vamos	utilizar	como	exemplo	a	URL	"https://www.exemplo.com.br/produtos/note-
book-i7".	A	partir	dessa	URL,	podemos	analisar	sua	estrutura	e	identificar	seus	componentes:
• Protocolo - "https":	 é	a	primeira	parte	da	URL	e	é	 responsável	por	especificar	a	
forma como as informações serão transmitidas. No caso da URL fornecida, o pro-
tocolo	é	o	Protocolo	de	Transferência	de	Hipertexto	Seguro	(ou	HTTPS	que	significa	
"Hypertext	Transfer	Protocol	Secure”,	em	inglês),	que	fornece	uma	camada	adicional	
de segurança na comunicação entre o navegador do usuário e o servidor web. Este 
protocolo criptografa as informações transmitidas entre o cliente e o servidor, tor-
nando-as mais seguras contra interceptações e violações de privacidade. Embora o 
protocolo	mais	comum	seja	o	Protocolo	de	Transferência	de	Hipertexto	(ou	HTTP	que	
significa	“Hypertext	Transfer	Protocol	-	HTTP”,	em	 inglês),	é	possível	utilizar	outros	
protocolos,	como	o	Protocolo	de	transferência	de	dados	(ou	FTP	que	significa	“File	
Transfer	Protocol”,	em	inglês)	para	transferência	de	arquivos	ou	o	Mailto	para	envio	
de	e-mails.	É	 importante	destacar	que	se	o	protocolo	não	for	 informado	na	URL,	o	
navegador irá automaticamente adicionar o HTTP como padrão.
• Subdomínio - "www”:	É	um	subdomínio	padrão	utilizado	em	muitos	sites,	geral-
mente	usado	para	diferenciar	a	versão	WWW	(World	Wide	Web)	de	um	site	das	outras	
versões	que	possam	existir,	como	a	versão	mobile	ou	a	versão	de	desenvolvimento.	
Esse subdomínio pode ser omitido em alguns casos, mas é comum encontrá-lo na 
maioria dos endereços URL.
• Domínio - "exemplo.com.br":	É	o	nome	que	identifica	um	site	na	internet.	É	forma-
do	por	duas	partes:	o	nome	escolhido	para	o	site,	que	é	conhecido	como	domínio	de	
segundo	nível	(ou	SLD	que	significa	“second-level	domain”,	em	inglês),	e	o	domínio	de	
alto	nível	(ou	TLD	que	significa	“top-level	domain”,	em	inglês),	que	indica	a	categoria	
ou	país	do	site.	No	caso	do	exemplo,	o	TLD	é	".com.br",	que	é	utilizado	para	sites	co-
merciais brasileiros.
• Caminho - "/produtos/notebook-i7":	É	a	parte	da	URL	que	identifica	o	diretório	e	o	
nome	do	arquivo	do	recurso	que	está	sendo	acessado	no	servidor	web.	No	exemplo,	o	
caminho	é	composto	por	diretório	(produtos)	e	o	nome	do	arquivo	(notebook-i7),	que	
indica	um	produto	específico	em	um	site	de	venda	de	eletrônicos,	por	exemplo.	Se	o	
caminho	não	for	especificado,	o	servidor	irá	buscar	por	um	arquivo	padrão,	como	o	
"index.html".
É importante lembrar que o registro do domínio deve ser feito para 
que o site possa ser encontrado na internet. Para os domínios com 
extensão ".BR", o registro pode ser realizado no site do Registro.br 
ou através de provedores de serviços. No momento do registro, é 
necessário informar um DNS próprio ou de algum provedor de hos-
pedagem para permitir o acesso ao site.
Saiba mais em: https://registro.br/dominio/regras/
IMPORTANTE
8
Com	o	conhecimento	adquirido	sobre	o	endereço	IP,	o	domínio	e	a	sintaxe	da	
URL,	temos	uma	base	sólida	para	compreender	os	processos	envolvidos	na	hospeda-
gem	de	sites	e	páginas	na	web.	Na	próxima	seção,	vamos	explorar	os	conceitos	fun-
damentais	da	hospedagem	de	sites	na	internet,	incluindo	o	papel	do	servidor	web	e	os	
diferentes	tipos	de	hospedagem	disponíveis.	Veremos	como	a	escolha	do	provedor	de	
hospedagem	pode	impactar	na	performance	e	segurança	do	seu	site,	além	de	discutir	
as	opções	de	hospedagem.	Aprenda	tudo	o	que	precisa	saber	para	garantir	que	seu	site	
esteja sempre disponível e acessível na web.
2.3 HOSPEDAGEM DE SITES
A	hospedagem	de	 sites	 é	 fundamental	 para	 que	uma	página	web	possa	 ser	
acessada	na	internet.	Através	de	um	serviço	de	hospedagem,	os	arquivos	e	dados	de	
um	site	são	armazenados	em	servidores	de	internet,	permitindo	que	usuários	de	qual-
quer	lugar	do	mundo	tenham	acesso	a	ele.	É	importante	conhecer	os	diferentes	tipos	
de	hospedagem	disponíveis	para	escolher	a	opção	mais	adequada	às	necessidades	do	
seu site.
De	acordo	 com	Robbins	 (2018),	 um	servidor	web	é	um	hardware	 com	aces-
so à internet e com um software instalado para aceitar solicitações HTTP, permitindo 
a	transferência	de	hipertexto.	Os	servidores	web	são	utilizados	para	várias	atividades,	
como envio e recebimento de e-mails, transferência de dados e criação ou publicação 
de	páginas.	Segundo	Netcraft	(2022),	os	servidores	web	mais	populares	em	2022	são	o	
Nginx	e	o	Apache.
A	hospedagem	de	sites	pode	ser	feita	 localmente	ou	na	nuvem.	Quando	en-
viamos	os	arquivos	do	site	para	o	servidor	web,	chamamos	essa	ação	de	hospedagem	
(ROBBINS,	2018).	Com	os	servidores	web,	é	possível	disponibilizar	vários	sites	em	uma	
mesma	máquina,	o	que	chamamos	de	hospedagem	virtual	(Virtual	Host,	em	inglês).	A	
configuração	pode	ser	baseada	em	IP	ou	em	nome,	sendo	que	a	primeira	opção	significa	
que	há	um	endereço	IP	diferente	para	cada	site,	e	a	segunda	opção	indica	que	há	vários	
nomes	para	cada	endereço	IP	(APACHE,	2022).
Você encontrará mais informações sobre como configurar o virtual 
host no Apache, incluindo detalhes e exemplos, no seguinte link: 
https://httpd.apache.org/docs/2.4/vhosts/index.html.
Este recurso pode ser útil para quem deseja aprofundar seus 
conhecimentos sobre a configuração do virtual host em um 
servidor web.
DICA
https://httpd.apache.org/docs/2.4/vhosts/index.html
9
Compreender	o	processo	de	hospedagem	de	sites	é	fundamental	para	quem	
deseja	ter	uma	presença	onlineconsistente.	Isso	porque	a	hospedagem	é	responsável	
por manter o seu site disponível na web, permitindo que ele seja acessado por qualquer 
pessoa	em	qualquer	 lugar	do	mundo.	Além	disso,	a	escolha	do	tipo	de	hospedagem	
adequado para o seu projeto pode impactar diretamente em sua performance, segu-
rança e escalabilidade.
Para	começar,	é	importante	entender	que	a	hospedagem	consiste	em	armaze-
nar os arquivos do seu site em um servidor web. Esse servidor é responsável por rece-
ber as requisições de acesso ao seu site e enviar os arquivos correspondentes para o 
navegador do usuário.
Existem	diversos	tipos	de	hospedagem	disponíveis	no	mercado,	cada	um	com	
características	específicas	que	os	tornam	mais	adequados	para	diferentes	tipos	de	pro-
jetos. Entre as opções mais comuns, podemos citar:
• Hospedagem compartilhada:	nesse	tipo	de	hospedagem,	vários	sites	são	armaze-
nados	no	mesmo	servidor,	compartilhando	recursos	como	espaço	em	disco,	memória	
e processamento. Essa é uma opção mais econômica e indicada para projetos meno-
res e com menos tráfego.
• Hospedagem VPS (ou	Virtual	Private	Server,	em	inglês)	é	uma	opção	intermediária	
entre	a	hospedagem	compartilhada	e	a	hospedagem	dedicada.	Nesse	caso,	o	ser-
vidor é dividido em várias máquinas virtuais, cada uma com seus próprios recursos. 
Isso	permite	um	maior	controle	e	flexibilidade	em	relação	aos	recursos	do	servidor,	
mas sem o custo de um servidor dedicado.
• Hospedagem dedicada:	nesse	tipo	de	hospedagem,	você	aluga	um	servidor	inteiro	
para	o	seu	projeto.	 Isso	significa	que	você	tem	total	controle	sobre	os	recursos	do	
servidor	e	pode	customizá-lo	de	acordo	com	as	suas	necessidades.	Essa	é	uma	op-
ção mais indicada para projetos de grande porte e com alto tráfego.
• Cloud hosting (ou	hospedagem	em	nuvem,	em	português):	essa	é	uma	opção	mais	
moderna,	que	utiliza	a	tecnologia	de	computação	em	nuvem	para	hospedar	sites.	
Nesse caso, os recursos são distribuídos entre diversos servidores, permitindo uma 
maior	escalabilidade	e	 redundância.	Essa	é	uma	opção	 indicada	para	projetos	que	
exigem	alta	disponibilidade	e	escalabilidade.
A	escolha	do	tipo	de	hospedagem	 ideal	para	o	seu	projeto	dependerá	de	di-
versos	fatores,	como	o	tamanho	do	seu	site,	o	tráfego	esperado,	as	necessidades	de	
segurança	e	desempenho,	entre	outros.	É	 importante	avaliar	com	cuidado	as	opções	
disponíveis	e	escolher	aquela	que	melhor	atende	às	suas	necessidades	e	orçamento.
10
Embora existam hospedagens gratuitas que possam ser usadas 
para testes, é importante lembrar que elas geralmente não são 
recomendadas para um site oficial devido a preocupações de 
segurança e credibilidade. 
No entanto, o provedor Hostinger oferece uma opção de hos-
pedagem gratuita disponível em <https://br.000webhost.com/>, 
que vem com algumas limitações que devem ser consideradas.
DICA
Os servidores web são os fornecedores dos serviços e os navegadores web são 
os clientes dos serviços que solicitam informações para os servidores. Agora vamos en-
tender	a	forma	de	busca	das	páginas	ou	sites	na	internet	realizado	pelo	motor	de	busca	
e	conhecer	melhor	os	navegadores	web.	
Finalizamos	nosso	primeiro	tópico	do	primeiro	tema	de	aprendizagem,	falamos	
sobre os conceitos básicos da internet, vamos relembrar rapidamente o que estudamos 
até	o	momento:	 conhecemos	sobre	a	 rede	de	alcance	mundial	 conhecida	por	www,	
o	conjunto	de	redes	de	computadores	conhecido	como	internet,	os	endereços	 IPs,	o	
nome	do	site	conhecido	como	domínio,	a	tradução	do	domínio	em	endereço	IP	realizado	
pelo	DNS,	a	sintaxe	de	uma	URL,	quais	os	tipos	de	hospedagens	de	sites	disponíveis	
atualmente	e,	por	fim,	entendemos	o	funcionamento	do	motor	de	busca	do	Google.	
No	 próximo	 tópico,	 daremos	 início	 à	 exploração	 da	 linguagem	HTML,	 funda-
mental para a criação de páginas web. Veremos a evolução da linguagem ao longo dos 
anos	e	sua	importância	na	construção	de	sites.	Além	disso,	abordaremos	conceitos	bá-
sicos	e	apresentaremos	exemplos	práticos	que	ajudarão	na	compreensão	da	estrutura	
e	sintaxe	do	HTML.
3 FUNDAMENTOS DO HTML: ESTRUTURAÇÃO DE 
PÁGINAS WEB
Desde sua criação em 1989 por Tim Berners-Lee, o HTML passou por diversas 
mudanças	e	melhorias	propostas	e	implementadas	por	diferentes	grupos	de	trabalho.	
Nesta	seção,	iremos	explorar	a	evolução	do	HTML,	desde	suas	primeiras	versões	até	as	
mais recentes, e como essas mudanças impactaram a criação de páginas web.
Como a base da criação de páginas na internet, o HTML é uma linguagem de 
marcação	que	define	a	estrutura	e	o	conteúdo	de	uma	página.	É	importante	entender	os	
elementos básicos do HTML e sua relação com navegadores e motores de busca. Além 
disso, você irá aprender sobre a estruturação de documentos HTML e como criar uma 
página	web	com	conteúdo	estruturado,	 seguindo	as	melhores	práticas	e	os	padrões	
atualmente	utilizados	na	web.
11
3.1 EVOLUÇÃO DO HTML
O	HTML	é	uma	linguagem	fundamental	para	a	criação	de	páginas	web	e	sua	his-
tória	é	marcada	por	mudanças	significativas	ao	longo	dos	anos.	Segundo	Ferreira	e	Eis	
(2010),	o	HTML	foi	criado	em	1989	por	Tim	Berners-Lee,	enquanto	em	1990	foi	lançado	
o	navegador	Mosaic	por	Marc	Andreessen,	que	impulsionou	a	popularização	do	HTML	
entre desenvolvedores e fabricantes de navegadores.
O HTML passou por diversas mudanças ao longo do tempo, com cada versão 
trazendo	novos	recursos	e	melhorias	em	relação	à	anterior.	A	padronização	do	HTML	
pelo	W3C,	a	partir	da	versão	3.2	em	1997,	foi	um	marco	importante	para	a	evolução	e	
ampla	utilização	da	linguagem.	Dentre	as	principais	versões	do	HTML,	destacam-se	o	
original, que foi a primeira versão criada por Tim Berners-Lee em 1989, o HTML+ em 
1993,	o	HTML	2.0	em	1995,	o	HTML	3.0	em	1997	e	o	HTML	4.01	em	1999,	que	é	ampla-
mente	utilizado	até	hoje.	
Em	2000,	foi	 lançada	a	versão	XHTML,	que	 reformulou	o	HTML	4.01	usando	a	
sintaxe	XML,	mas	não	teve	tanto	sucesso.	Em	2004,	foi	criado	o	grupo	de	trabalho	das	
tecnologias	de	aplicação	de	hipertexto,	 conhecido	pela	 sigla	em	 inglês	WHATWG	 (Web	
Hypertext	Application	Technology	Working	Group),	devido	à	insatisfação	com	a	nova	ver-
são	da	linguagem	de	marcação	para	hipertexto	extensível	(EXtensible	HyperText	Markup	
Language	–	XHTML)	que	estava	sendo	desenvolvida	pelo	W3C	(FERREIRA;	EIS,	2010).
Em	2006,	os	dois	grupos	demonstraram	interesse	em	trabalhar	juntos	no	de-
senvolvimento do HTML 5, que tem como objetivo principal a manipulação do elemento, 
permitindo	a	modificação	de	características	dos	objetos	por	meio	de	API.	Desde	2012,	o	
W3C	escolhe	os	pacotes	de	correção	de	erros	(patches)	do	WHATWG	(W3C.ORG,	2021).
Inicialmente, a linguagem HTML não foi criada para ser uma lingua-
gem de marcação para a World Wide Web (WWW). Em vez disso, Tim 
Berners-Lee a desenvolveu como uma linguagem de marcação para 
documentos acadêmicos e científicos. No entanto, ele percebeu 
rapidamente que o HTML poderia ser usado como uma linguagem 
de marcação para a WWW, o que acabou se tornando sua principal 
aplicação. Desde então, o HTML evoluiu bastante e se tornou funda-
mental para a criação de páginas web como conhecemos hoje.
CURIOSIDADE
Além das versões do HTML que já mencionamos, é importante destacar que a 
evolução do HTML não se limitou apenas à adição de novos recursos e tags. Também 
houve	uma	preocupação	crescente	em	relação	à	acessibilidade,	usabilidade	e	perfor-
mance da web.
12
A	versão	mais	recente	do	HTML	é	o	HTML5,	lançado	em	2014,	que	trouxe	muitos	
novos	recursos	e	melhorias	em	relação	às	versões	anteriores,	por	exemplo	melhorias	
em	relação	à	acessibilidade,	com	a	 inclusão	de	novas	tags	semânticas	que	ajudam	a	
indicar	o	conteúdo	de	uma	página	de	maneira	mais	clara	para	usuários	com	deficiências	
visuais.	Além	disso,	o	HTML5	também	trouxe	melhorias	em	relação	à	performance,	com	
recursos	como	o	armazenamento	local	e	a	possibilidade	de	se	usar	o	cache	do	navega-
dor	para	armazenar	recursos	estáticos,	como	imagens	e	arquivos	CSS.
Outra mudança importante na evolução do HTMLfoi a separação do conteú-
do da apresentação. Com a introdução do CSS, foi possível separar as informações de 
estilo	e	layout	da	página	do	conteúdo	em	si,	permitindo	maior	flexibilidade	no	design	e	
facilitando a manutenção do código. Essa separação também contribuiu para a criação 
de	sites	mais	acessíveis,	já	que	os	estilos	podem	ser	modificados	sem	afetar	o	conteúdo	
da página.
Em resumo, a evolução do HTML não se limitou apenas a adição de novas tags 
e recursos, mas também envolveu uma preocupação crescente com a acessibilidade, 
usabilidade e performance da web, bem como a separação do conteúdo da apresenta-
ção por meio do uso de CSS.
Para visualizar as mudanças e atualizações nas diferentes versões 
do HTML, é possível acessar o link https://www.w3.org/TR/?title=html, 
que apresenta uma lista de todas as especificações e rascunhos rela-
cionados ao HTML desenvolvidos pelo World Wide Web Consortium 
(W3C). Nesse link, é possível encontrar desde as primeiras versões 
experimentais do HTML até a versão mais recente, o HTML5, que 
trouxe importantes melhorias e novos recursos para a criação de 
páginas web.
DICA
Após	explorarmos	a	evolução	do	HTML	ao	longo	dos	anos,	é	importante	enten-
der como essa linguagem se relaciona com os navegadores e motores de busca. Como 
base	da	criação	de	páginas	na	internet,	o	HTML	é	responsável	por	definir	a	estrutura	e	o	
conteúdo de uma página, e é interpretado pelos navegadores para apresentar o conte-
údo aos usuários. Além disso, a forma como as páginas são estruturadas em HTML pode 
afetar sua visibilidade nos motores de busca, sendo importante considerar as boas prá-
ticas	de	SEO	(Search	Engine	Optimization)	na	criação	de	páginas	web.	Vamos	explorar	
essa	relação	mais	a	fundo	na	próxima	seção.
13
3.2 FUNCIONAMENTO DE NAVEGADORES E MOTORES DE 
BUSCA
Os	navegadores	web,	também	conhecidos	como	browsers,	são	programas	que	
permitem o acesso à internet em computadores e dispositivos móveis. De acordo com 
o	Statcounter	(2022),	o	Chrome	é	o	navegador	mais	popular	em	todo	o	mundo,	seguido	
pelo	Safari,	Edge	e	Firefox.
A interface do usuário de um navegador é composta por vários componentes 
principais, incluindo a barra de endereço, botões de navegação, menu do navegador, 
barra de favoritos e guias. Na Figura 1, podemos observar os principais componentes do 
navegador	Chrome,	que	é	um	dos	navegadores	mais	populares.
Figura 1 – Interface do navegador Chrome com indicação dos componentes
Fonte: a autora.
Após	conhecermos	os	componentes	da	interface	do	navegador,	podemos	en-
tender o funcionamento do navegador em si. Quando inserimos um endereço de página 
na	barra	de	endereço	do	navegador,	uma	solicitação	utilizando	o	Protocolo	de	Transfe-
rência	de	Hipertexto,	ou	HTTP	(Hypertext	Transfer	Protocol)	em	inglês,	é	enviada	para	
um	servidor	web	(MOZILLA.ORG,	2022a).
O servidor web receberá a solicitação e retornará os dados para o navegador, 
mas	eles	não	estarão	prontos	para	serem	exibidos	na	tela.	Serão	uma	mistura	de	textos	
e	 imagens	que	precisarão	ser	traduzidos	para	a	apresentação	na	tela	 (MOZILLA.ORG,	
2022a).
O	mecanismo	de	renderização	(rendering	engine)	do	navegador	é	responsável	
por	 realizar	essa	tradução.	Também	conhecido	como	mecanismo	de	 layout	ou	motor	
do	navegador,	ele	varia	de	acordo	com	o	navegador	utilizado.	Por	exemplo,	o	Blink	é	o	
mecanismo	de	renderização	multi	plataforma	desenvolvido	pelo	Google	e	utilizado	no	
navegador	Chrome	(MOZILLA.ORG,	2022a).
14
Para entender ainda mais sobre o funcionamento dos navegado-
res, recomendamos acessar o site disponível em: https://web.dev/
howbrowserswork/. Lá você encontrará informações detalhadas 
sobre os componentes dos navegadores, como eles trabalham 
juntos para processar e exibir conteúdo da web, e as tecnologias 
subjacentes que permitem essa interação. É uma leitura valiosa 
para desenvolvedores web que desejam otimizar seus sites para 
garantir uma experiência de usuário suave e consistente em to-
dos os navegadores.
DICA
Na tabela 1, podemos observar a comparação entre a situação de João indo ao 
mercado e o processo de acessar um site na internet. Assim como João precisa consul-
tar	a	localização	do	mercado	e	percorrer	um	caminho	para	chegar	até	ele,	ao	acessar-
mos um site precisamos digitar o endereço na barra de endereço do navegador e rea-
lizar	uma	requisição	ao	servidor	web	para	obter	as	informações	desejadas.	Além	disso,	
assim como a estrada que leva João ao mercado precisa estar em boas condições para 
garantir	uma	viagem	segura,	a	qualidade	da	conexão	com	a	internet	e	a	disponibilidade	
do	servidor	web	também	são	fatores	importantes	para	garantir	uma	boa	experiência	ao	
acessar um site.
Tabela 1 – Analogia de fazer compras com acesso site na internet
 Fonte: a autora.
SITUAÇÃO REAL ACESSO INTERNET
João navegador web
Estrada internet
Mercado servidor web
Produtos Arquivos componentes do site
Endereço do mercado domínio do site
Linguagem falada para fazer o pedido protocolos	http
Situação da estrada (boa ou ruim) qualidade da internet
GPS (consultar endereço) servidor DNS
Produtos chegam na residência o navegador monta e apresenta o site
Os arquivos que compõem um site podem ser divididos em dois tipos: códigos 
e	recursos.	Os	códigos	são	os	arquivos	hipertexto	que	contêm	a	estrutura,	o	estilo	e	o	
comportamento da página, enquanto os recursos são as imagens, áudios, vídeos, docu-
mentos e outros elementos que compõem o conteúdo da página.
15
Além	disso,	os	arquivos	de	código	geralmente	possuem	extensões	como	.html,	
.css	e	 .js,	enquanto	os	arquivos	de	recursos	podem	ter	uma	variedade	de	extensões,	
dependendo do tipo de arquivo.
Antes de começar a codificar o seu site, é importante fazer um 
planejamento adequado para garantir que ele atenda às suas 
necessidades e às dos usuários. O Mozilla Developer Network 
oferece um guia útil sobre o que você precisa considerar antes 
de criar seu site. O guia inclui dicas sobre como definir seus obje-
tivos, identificar seu público-alvo, escolher um nome de domínio, 
selecionar a tecnologia apropriada e muito mais. 
Para acessar o guia completo, visite o link: https://developer.mo-
zilla.org/pt-BR/docs/Learn/Getting_started_with_the_web/What_
will_your_website_look_like
DICA
O objetivo principal de criar um site é ser encontrado na internet pelos usuários. 
Por isso, é fundamental compreender como funciona o processo de busca nos motores 
de	busca,	como	o	Google,	para	que	seu	site	possa	ser	facilmente	localizado.
Ao	acessar	um	motor	de	busca,	como	o	Google,	por	meio	de	um	navegador,	es-
tamos	acessando	um	servidor	especializado	em	buscar	e	indexar	informações	de	outras	
páginas	da	 internet.	É	 importante	destacar	que	muitas	pessoas	confundem	o	motor	
de busca com o navegador, pois, em muitos casos, a página inicial do navegador é um 
motor	de	busca	(MOZILLA.ORG,	2022f).
Para	entender	melhor	como	funciona	o	motor	de	busca	do	Google,	é	necessário	
conhecer	as	etapas	do	processo.	A	primeira	etapa	é	a	descoberta	das	páginas	existen-
tes	na	web,	que	é	realizada	por	meio	da	descoberta	da	URL.	Na	segunda	etapa,	o	Google	
identifica	cada	página	encontrada,	 indexando	as	 informações.	Por	fim,	o	resultado	da	
pesquisa	é	exibido	no	navegador,	finalizando	a	busca.
 
Para	aumentar	as	chances	de	seu	site	ser	encontrado	na	busca,	é	possível	utili-
zar	metadados	no	cabeçalho	do	arquivo,	que	são	informações	utilizadas	pelo	otimizador	
do	mecanismo	de	busca	(Search	Engine	Optimization	-	SEO).	O	uso	de	palavras-chave	
em metadados pode ajudar a informar de forma concisa e precisa qual é o conteúdo 
oferecido pela página, tornando mais fácil para o motor de busca entender do que se 
trata o seu site e apresentá-lo de forma adequada nos resultados de pesquisa.
16
Se você deseja se aprofundar em SEO e aprender mais sobre como 
otimizar seu site para mecanismos de busca, recomendamos acessar 
o guia para iniciantes fornecido pela Google. Você pode acessar o guia 
que contém informações valiosas sobre comomelhorar o desempe-
nho de pesquisa do seu site e aumentar a visibilidade nos resultados 
do Google por meio do link: https://developers.google.com/search/
docs/fundamentals/seo-starter-guide?hl=pt-br
DICA
Para garantir que um site seja fácil de manter e acessar, é fundamental que 
seus	arquivos	estejam	organizados	em	uma	estrutura	de	diretórios	lógica	e	consistente.	
Essa	estrutura	ajuda	na	manutenção	do	site,	permitindo	que	as	atualizações	sejam	re-
alizadas	de	forma	mais	rápida	e	precisa.
Uma	vez	que	os	arquivos	estão	organizados	e	prontos,	eles	são	enviados	para	
um	servidor	web	que	os	armazena	e	os	disponibiliza	para	acesso	público	através	da	
internet.	Ter	uma	estrutura	de	diretórios	bem	definida	não	apenas	facilita	a	manutenção	
do site, mas também ajuda na sua usabilidade, pois permite que os visitantes encon-
trem	facilmente	o	que	estão	procurando.	Vamos	ver	na	próxima	seção	vamos	ver	uma	
opção de estruturação de um site.
3.3 COMO ESTRUTURAR UM SITE
A estruturação adequada de um site é essencial para garantir a facilidade de 
manutenção	e	acesso	aos	arquivos.	Isso	inclui	uma	organização	lógica	dos	diretórios	e	
arquivos	do	site,	bem	como	o	uso	de	técnicas	de	otimização	para	melhorar	sua	perfor-
mance	e	visibilidade	nos	mecanismos	de	busca.	Neste	contexto,	é	importante	entender	
como	a	estrutura	do	site	é	configurada	e	quais	são	as	boas	práticas	para	garantir	um	site	
eficiente	e	fácil	de	usar.
A	seguir,	vamos	explorar	alguns	conceitos	 importantes	sobre	páginas	e	sites	
na web, assim como a estrutura mínima de pastas que todos os sites devem ter. As 
páginas	são	arquivos	hipertexto	apresentados	pelo	navegador,	que	também	pode	in-
corporar recursos como estilo, scripts e mídias. Já os sites são conjuntos de páginas 
web	vinculados	por	meio	de	links	clicáveis,	chamados	hiperlinks.	Esses	links	podem	ser	
internos	(entre	páginas	do	mesmo	site)	ou	externos	(para	outras	páginas	da	internet),	e	
ainda	é	possível	criar	âncoras	que	apontam	para	uma	seção	específica	da	própria	página	
(MOZILLA.ORG,	2022e).
17
Hiperlinks, também conhecidos como links, são elementos em um 
documento eletrônico que permitem ao usuário acessar outros docu-
mentos ou recursos relacionados. Em português, o termo hiperlink é 
comumente traduzido como "hiperlink", "link" ou "ligação".
CURIOSIDADE
A	estrutura	das	pastas	de	um	site	é	fundamental	para	uma	organização	ade-
quada	dos	arquivos.	É	recomendável	ter	pastas	separadas	para	imagens,	estilos	e	ar-
quivos	JavaScript,	além	do	arquivo	de	entrada	do	site,	geralmente	chamado	index.html,	
que	fica	na	pasta	raiz	do	projeto.	(MOZILLA.ORG,	2022d).
As	páginas	da	web	podem	ser	classificadas	em	dois	tipos:	estáticas	e	dinâmicas.	
Páginas estáticas são aquelas que sempre apresentam as mesmas informações, enquan-
to	as	dinâmicas	são	geradas	por	programas	que	fornecem	informações	sob	demanda	ou	
contém	um	programa	para	gerar	o	conteúdo	(TANENBAUM;	WETHERALL,	2011).
Da	mesma	 forma,	 há	 servidores	 estáticos	 e	 dinâmicos.	 Servidores	 estáticos	
possuem	arquivos	que	não	mudam	durante	a	execução	e	são	enviados	para	o	navega-
dor	como	estão	hospedados.	Já	os	servidores	dinâmicos	exigem	um	servidor	de	apli-
cação e um banco de dados. Antes de enviar a página para o navegador, o servidor de 
aplicação	completa	a	página	com	dados	consultados	no	banco	de	dados	(MOZILLA.ORG,	
2022f).
Embora	os	websites	estáticos	sejam	mais	fáceis	de	configurar	para	iniciantes,	
existem	sistemas	de	gerenciamento	de	conteúdo	(ou	CMS	que	significa	“Content	Mana-
gement	System”,	em	inglês)	que	permitem	realizar	todas	as	ações	no	site	sem	conheci-
mento	de	linguagem	de	programação	e	marcação	(MOZILLA.ORG,	2022f).
Uma	outra	prática	comum	na	estruturação	de	um	site	é	a	utilização	de	URLs	
amigáveis	e	descritivas.	URLs	amigáveis	são	aquelas	que	utilizam	palavras-chave	rele-
vantes para o conteúdo da página, ao invés de códigos ou números gerados automati-
camente.	Isso	ajuda	na	usabilidade	do	site,	pois	facilita	a	identificação	do	conteúdo	da	
página pelos usuários e pelos motores de busca. Além disso, URLs amigáveis também 
contribuem	para	a	otimização	para	motores	de	busca	(ou	SEO	que	significa	“Search	En-
gine	Optimization”,	em	inglês)	do	site,	pois	os	motores	de	busca	consideram	a	relevância	
das	palavras-chave	na	URL	para	o	ranqueamento	nas	páginas	de	resultados.
18
SEO ou Search Engine Optimization é uma expressão em inglês que 
pode ser traduzida para o português como Otimização para Motores 
de Busca, também conhecida pela sigla SEO. Trata-se de um conjunto 
de técnicas e estratégias utilizadas para melhorar o posicionamen-
to de um site nos resultados de pesquisa de mecanismos de busca, 
como o Google, por exemplo. O objetivo do SEO é aumentar a visibi-
lidade e o tráfego orgânico de um site, tornando-o mais relevante e 
acessível para usuários que buscam por informações relacionadas ao 
conteúdo oferecido pelo site.
CURIOSIDADE
Outro ponto importante na estruturação de um site é o uso adequado das meta 
tags,	que	são	trechos	de	código	HTML	que	fornecem	informações	sobre	a	página,	como	
título,	descrição	e	palavras-chave.	Essas	informações	são	utilizadas	pelos	motores	de	
busca	para	indexar	e	exibir	a	página	nos	resultados	de	busca.	Portanto,	é	importante	
definir	corretamente	essas	meta	tags	para	garantir	que	o	conteúdo	da	página	seja	exi-
bido corretamente e que o site seja facilmente encontrado pelos usuários.
Por	fim,	é	 importante	ressaltar	que	a	estruturação	de	um	site	é	um	processo	
contínuo,	que	deve	ser	revisado	e	atualizado	regularmente.	À	medida	que	o	site	cresce	
e	evolui,	novas	pastas	e	páginas	podem	ser	adicionadas,	e	a	estrutura	existente	pode	
precisar	ser	reorganizada.	Além	disso,	é	importante	manter	a	consistência	na	estrutura	
e	na	nomenclatura	de	arquivos	e	pastas,	para	facilitar	a	manutenção	e	a	identificação	
dos arquivos. 
A estrutura básica de um site consiste em um conjunto de arquivos que são ar-
mazenados	em	um	servidor	web	e	acessados	por	meio	de	um	navegador.	O	documento	
HTML	é	o	principal	componente	desses	arquivos	e	define	a	estrutura	e	o	conteúdo	da	
página.	Para	criar	um	documento	HTML,	é	necessário	conhecer	a	linguagem	de	mar-
cação	HTML	e	suas	tags.	As	tags	são	usadas	para	definir	diferentes	tipos	de	elementos,	
como	títulos,	parágrafos,	imagens	e	links.
É	fundamental	compreender	que	o	HTML	é	apenas	uma	das	diversas	linguagens	
utilizadas	na	criação	de	um	site.	Para	além	do	HTML,	é	comum	utilizar	outras	tecnologias	
como	CSS	e	JavaScript	para	estilizar	e	adicionar	interatividade	ao	site.	Durante	o	processo	
de	criação,	é	imprescindível	considerar	a	experiência	do	usuário	e	garantir	que	a	navega-
ção	seja	intuitiva	e	fácil.	A	escolha	das	cores,	fontes	e	layout	também	influenciam	signifi-
cativamente	na	experiência	do	usuário	e	devem	ser	cuidadosamente	pensadas.	
Compreender a estrutura básica de um site e as ferramentas necessárias para 
sua	criação	é	apenas	o	primeiro	passo	para	desenvolver	uma	presença	online	eficaz.	É	
preciso	também	considerar	a	relevância	do	conteúdo,	a	otimização	para	os	motores	de	
busca	e	a	segurança	do	site.	Diante	disso,	vamos	mergulhar	no	vasto	mundo	da	criação	
de	sites,	iniciando	pelo	aprendizado	do	HTML.
19
4 INTRODUÇÃO A ESTRUTURA DO HTML 
O	HTML	(Hypertext	Markup	Language)	é	uma	linguagem	de	marcação	funda-
mental	para	o	desenvolvimento	de	páginas	na	web.	Ele	utiliza	elementos	para	definir	
e	organizar	o	conteúdo,	tornando	possível	a	estruturação	do	texto,	imagens,	vídeos	e	
outros tipos de mídia.
Cada elemento HTML é representado por uma tag que contém informações 
sobre o conteúdo, como sua função e a maneira como deve ser apresentado. Esses 
elementos	são	muito	importantes,	pois	fornecem	significado	semântico	para	a	página,	
permitindo que ela seja lida e interpretada pelos mecanismos de busca e pelos usuários 
com	deficiência	visual,	por	exemplo.
O HTML é uma linguagem em constante evolução, e a versão mais recente é o 
HTML5. Ela inclui muitos novos recursos e funcionalidades que ampliam as possibilida-des	de	criação	de	conteúdo	na	web,	como	tags	de	vídeo	e	áudio,	elementos	semânticos	
que	facilitam	a	acessibilidade	e	suporte	para	aplicativos	da	web.	Mas	antes	de	explorar	
esses	novos	recursos,	é	importante	conhecer	em	detalhes	os	elementos	HTML	tradicio-
nais	e	sua	importância	na	criação	de	uma	página	bem	estruturada.
4.1 CRIANDO O PRIMEIRO ARQUIVO HTML
Para começar a criar um site, precisamos criar um arquivo HTML. Um arquivo 
HTML	é	um	documento	de	texto	que	contém	código	HTML	(Hypertext	Markup	Langua-
ge)	que	define	a	estrutura	e	o	conteúdo	de	uma	página	da	web.	Ele	é	interpretado	pelos	
navegadores	da	web	para	exibir	o	conteúdo	na	tela	do	usuário.	O	código	HTML	consiste	
em	elementos	(tags)	que	indicam	ao	navegador	como	renderizar	o	conteúdo,	como	tí-
tulos,	parágrafos,	 imagens,	 links	e	outros	recursos	multimídia.	arquivo	HTML	é	a	base	
de	uma	página	da	web	e	pode	incluir	folhas	de	estilo	em	cascata	(CSS)	e	scripts	para	
fornecer	formatação	visual	e	interatividade	na	página.	É	a	estrutura	desse	arquivo	que	
define	como	o	conteúdo	será	apresentado	na	página,	incluindo	texto,	imagens,	vídeos,	
formulários e muito mais.
Para criar o nosso primeiro arquivo HTML, não será necessário incluir a estrutura 
básica	que	normalmente	é	utilizada	em	páginas	da	web,	 já	que	o	objetivo	neste	mo-
mento é apenas entender o processo de criação do arquivo e sua posterior publicação.
Para	criar	um	arquivo	HTML,	podemos	usar	qualquer	editor	de	texto,	como	o	
Bloco	de	Notas	ou	o	Sublime	Text.	Vamos	criar	agora	o	nosso	primeiro	arquivo	HTML,	
chamado	de	"index.html".	Este	arquivo	contém	apenas	a	frase	"Hello,	World!",	sem	ne-
nhum	elemento	HTML,	pois	o	objetivo	neste	momento	é	apenas	criar	o	documento	que	
será a porta de entrada do nosso site quando acessarmos a URL.
20
Para criar o arquivo no sistema operacional Windows 10, podemos abrir o Prompt 
de	Comando	pressionando	as	teclas	"Windows+R"	e	digitando	"cmd".	Com	o	Prompt	de	
Comando	aberto,	podemos	navegar	até	a	pasta	raiz	do	nosso	projeto	usando	o	coman-
do	"cd	<<caminho/nome>>".
Uma	vez	na	pasta	raiz,	digite	"notepad	index.html"	e	pressione	a	tecla	"Enter".	
Como	o	arquivo	"index.html"	ainda	não	existe	na	pasta,	uma	mensagem	perguntando	se	
deseja	criar	um	novo	arquivo	será	exibida.	Clique	em	"Sim"	e	o	Notepad	será	aberto	para	
que possamos editar o arquivo.
No	editor	de	texto,	digite	a	frase	"Hello,	World!"	e	salve	o	arquivo	pressionando	
"CTRL+S".	Feche	o	documento	e	navegue	até	a	pasta	raiz	do	projeto	no	Explorador	de	
Arquivos	do	Windows.	Clique	com	o	botão	direito	do	mouse	no	arquivo	"index.html"	e	
selecione	a	opção	"Abrir	com"	e	escolha	o	navegador	de	sua	preferência,	como	o	Google	
Chrome.
A estrutura básica de um documento HTML. Um arquivo HTML 
começa com a tag <html>, que é seguida pela tag <head>. O con-
teúdo do cabeçalho da página é definido entre as tags <head>. 
Em seguida, temos a tag <body>, que define o conteúdo principal 
da página. Todo o conteúdo que queremos exibir na página deve 
estar dentro das tags <body> e </body>.
IMPORTANTE
Pronto!	Criamos	nosso	primeiro	arquivo	HTML.	Agora	precisamos	publicar	a	pá-
gina,	o	que	pode	ser	feito	criando	um	GitHub	Pages	e	um	repositório	no	GitHub	com	o	
nome do seu projeto. Uma maneira fácil e gratuita de publicar uma página na internet, 
o	GitHub	Pages	é	uma	ótima	opção.	Ele	permite	criar	e	hospedar	um	site	diretamente	
do	seu	repositório	do	GitHub,	sem	a	necessidade	de	configurar	um	servidor	ou	comprar	
um domínio. Nesta seção, vamos mostrar passo a passo como publicar uma página no 
GitHub	Pages	a	partir	do	seu	repositório	do	GitHub.
Após	criar	sua	conta	no	GitHub	e	acessar	o	GitHub	Pages,	é	hora	de	criar	o	re-
positório	que	será	usado	para	hospedar	a	página.	O	nome	do	repositório	deve	seguir	o	
formato	<iniciaisseunome>.calculadorasimples.github.io,	onde	<iniciaisseunome>	deve	
ser	substituído	por	um	nome	de	sua	escolha.	Após	criar	o	repositório,	como	mostrado	
na	figura	2,	selecione	o	link	"Upload	files"	para	fazer	o	upload	dos	arquivos	da	sua	página.
21
Figura 2 – Tela repositório GitHub pages
Fonte: a autora.
Vamos	fazer	o	upload	do	arquivo	"index.html"	que	criamos	e	das	pastas	"script",	
"estilos"	e	"imagens".	Para	criar	essas	pastas	no	repositório,	basta	selecionar	a	opção	
"Criar	novo	arquivo"	(Add	file)	e	digitar	os	nomes	das	pastas	e	dos	arquivos,	como	"script/
script.js",	"estilos/estilo.css"	e	"imagens/icone.png".	Lembre-se	de	salvar	cada	arquivo	
em	branco	e	pressionar	o	botão	"Commit	changes"	no	final	da	página	para	enviar	as	al-
terações	para	o	repositório.	Dessa	forma,	o	seu	repositório	do	GitHub	ficará	semelhante	
à	tela	apresentada	na	figura	3.
Figura 3 – Tela do repositório do projeto com os arquivos incluídos no GitHub
Fonte: a autora.
22
Após concluirmos o upload da estrutura da página web, precisamos publicá-la 
para	que	possa	ser	acessada.	Para	isso,	selecione	a	opção	"Settings"	no	menu	localizado	
logo	após	o	nome	do	projeto	e,	na	seção	"Code	and	automation"	da	barra	lateral,	clique	
em	"Pages".	Em	seguida,	crie	as	GitHub	Pages	e	acesse	o	endereço	que	será	apresenta-
do	na	tela	para	visualizar	a	página	web	que	acabou	de	ser	criada.
Para criar um documento HTML bem estruturado e organizado, é importante seguir 
algumas boas práticas. Entre elas, destacam-se:
• Utilizar uma estrutura semântica: isso significa utilizar os elementos HTML ade-
quados para cada tipo de conteúdo. Dessa forma, além de facilitar a compreensão do 
código para outros desenvolvedores, também ajuda os mecanismos de busca a enten-
derem melhor o conteúdo da página.
• Utilizar comentários para organizar o código: inserir comentários no código é uma 
ótima maneira de identificar blocos de conteúdo e facilitar a leitura e manutenção do 
código.
• Utilizar indentação e espaços em branco: essa prática 
ajuda a tornar o código mais legível, organizado e fácil de ser 
editado.
• Validar o código: é importante sempre validar o código HTML 
para verificar se está seguindo os padrões estabelecidos e 
corrigir eventuais erros.
• Utilizar recursos externos: ao utilizar arquivos CSS, JavaS-
cript ou imagens externas, é importante especificar o cami-
nho absoluto ou relativo para garantir que os recursos sejam 
carregados corretamente.
Ao seguir essas boas práticas, é possível criar um documento 
HTML bem estruturado, organizado e eficiente.
BOAS PRÁTICAS
Parabéns!	Você	acaba	de	criar	o	seu	primeiro	documento	HTML,	armazená-lo	
no	repositório	na	nuvem	do	GitHub,	publicá-lo	e	testá-lo.	Agora,	é	hora	de	conhecer	a	
estrutura básica de um documento HTML tradicional. O código HTML é composto por 
elementos,	que	são	marcadores	utilizados	para	definir	o	tipo	de	conteúdo	que	será	exi-
bido na página.
4.2 ESTRUTURA BÁSICA DO DOCUMENTOS HTML
A estrutura básica dos documentos HTML independe da versão e é fundamen-
tal para a criação de qualquer página web. Todo documento HTML começa com a de-
claração do tipo de documento, que informa ao navegador qual é a versão do HTML 
utilizada	e	é	feita	com	a	tag	<!DOCTYPE>.	Em	seguida,	temos	a	tag	<html>,	que	envolve	
todo	o	conteúdo	da	página	e	indica	o	início	do	documento	HTML.	Dentro	da	tag	<html>,	
temos	as	tags	<head>	e	<body>.
23
1
2
3
4
5
6
7
8
9
<!DOCTYPE	…>
<html>
<head>
…
</head>
<body>
…
</body>
</html>
A	tag	<head>	é	onde	são	adicionadas	informações	sobre	a	página,	como	o	título,	
descrição,	palavras-chave	e	referências	a	arquivos	CSS	e	JavaScript.	Já	a	tag	<body>	é	
onde	o	conteúdo	da	página	é	colocado,	como	textos,	imagens,	vídeos,	tabelas,	formulá-
rios	e	outros	elementos	que	compõem	a	página.	No	quadro	1,	podemos	ver	um	exemplo	
de arquivo HTML que inclui a estrutura básica de um documento HTML tradicional, con-
tendo	os	elementos	estruturais	conhecidos	por tag HTML, o objetivo neste momento 
será	de	abordar	a	compreensão	da	finalidade	de	cada	linha	do	código	apresentado.
Quadro 1 – Trecho de código em HTML tradicional
Fonte: a autora.
Na	primeira	linha,	temos	o	<!DOCTYPE>	um	elemento	que	indica	ao	navegador	
qual	é	aversão	do	HTML	que	está	sendo	utilizada	na	página.	Ele	é	colocado	no	início	do	
documento	HTML,	antes	do	elemento	<html>.	Nas	primeiras	versões	do	HTML,	como	o	
HTML	4.01,	o	<!DOCTYPE>	era	necessário	para	especificar	a	DTD	(Document	Type	Defini-
tion)	que	o	documento	seguia,	o	que	garantia	que	o	navegador	renderizasse	o	conteúdo	
de acordo com as regras daquela versão do HTML.
Os	navegadores	ainda	entendem	o	Document	Type	Definition	(DTD)	declarado	no	
elemento	<!DOCTYPE>	do	HTML.	O	DTD	é	uma	declaração	que	define	a	sintaxe	do	docu-
mento	HTML	e	define	os	elementos	e	atributos	permitidos	no	documento.	Embora	o	uso	de	
DTD	seja	opcional	em	documentos	HTML5,	ele	ainda	é	amplamente	utilizado	em	versões	
anteriores	do	HTML.	No	quadro	2	está	um	exemplo	de	uso	do	elemento	<!DOCTYPE>	com	
um	DTD	(Document	Type	Definition)	especificado	para	a	versão	4.01	do	HTML.
Quadro 2 – Trecho de código em HTML tradicional
Fonte: a autora.
1
2
3
4
5
6
7
8
9
10
11
<!DOCTYPE	HTML	PUBLIC	"-//W3C//DTD	HTML	4.01//EN"	
"http://www.w3.org/TR/html4/strict.dtd">
<html>
		<head>
				…
		</head>
		<body>
				….
				….
		</body>
</html>
24
Neste	exemplo,	estamos	utilizando	o	DTD	para	a	versão	4.01	do	HTML,	que	defi-
ne	as	regras	de	sintaxe	e	estruturação	para	o	documento.	O	DTD	é	especificado	na	de-
claração	do	elemento	<!DOCTYPE>,	onde	estamos	usando	a	referência	pública	do	DTD	e	
a	URL	para	seu	arquivo	de	definição.	Essa	declaração	ajuda	os	navegadores	a	interpretar	
corretamente	o	documento	HTML.	Se	o	DTD	não	for	especificado,	o	navegador	interpre-
tará	o	documento	HTML	de	acordo	com	suas	próprias	regras	e	configurações	internas,	o	
que	pode	levar	a	resultados	imprevisíveis.	É	importante	lembrar	que	o	uso	de	DTD	é	uma	
prática recomendada para garantir a validação do documento HTML e a compatibilidade 
entre os navegadores.
Com	o	HTML5,	o	<!DOCTYPE>	ainda	é	utilizado,	mas	a	sua	função	é	um	pouco	
diferente.	Ele	ainda	especifica	a	versão	do	HTML,	mas	a	DTD	não	é	mais	necessária.	Em	
vez	disso,	o	HTML5	define	um	conjunto	de	regras	que	o	navegador	deve	seguir	para	
renderizar	o	conteúdo,	 independentemente	da	DTD.	Portanto,	na	prática,	ao	utilizar	o	
<!DOCTYPE>	na	versão	HTML5,	estamos	apenas	indicando	qual	é	a	versão	do	HTML	que	
estamos	utilizando.	Um	exemplo	de	<!DOCTYPE>	para	o	HTML5	é:	<!DOCTYPE	html>.
A	instrução	“<!DOCTYPE	html>”	indica	para	o	navegador	que	o	documento	HTML	
deve	ser	renderizado	no	modo	de	padrões	completos	(ou	full	standards	mode),	que	se-
gue	as	especificações	do	HTML5.	Esse	modo	garante	que	o	documento	será	renderiza-
do	de	acordo	com	as	especificações	do	W3C,	sem	nenhuma	compatibilidade	com	ver-
sões anteriores do HTML. O modo de padrões completos é o modo padrão para a maioria 
dos navegadores modernos e é considerado o modo mais consistente e previsível para 
a	renderização	de	documentos	HTML.	
Caso	 não	 seja	 utilizado	 o	modo	 de	 padrão	 completo,	 o	 navegador	 entra	 em	
modo de compatibilidade (ou quirks mode, em inglês) é	um	modo	de	renderização	uti-
lizado	pelos	navegadores	para	renderizar	páginas	da	web	que	não	seguem	os	padrões	
atuais do HTML e CSS. Esse modo foi criado para garantir que os sites criados antes dos 
padrões	atuais	ainda	possam	ser	exibidos	corretamente	nos	navegadores	modernos,	
sem a necessidade de ajustes no código original.
No	entanto,	o	modo	quirks	pode	causar	problemas	de	compatibilidade	com	os	
navegadores modernos, principalmente em relação ao posicionamento de elementos e 
à formatação visual da página. Por isso, é recomendado que os desenvolvedores evitem 
o	uso	do	modo	quirks	e	sigam	as	normas	e	padrões	atuais	do	HTML	e	CSS.
Os	elementos	<html></html>,	presente	na	linha	2	e	10,	é	considerado	o	elemen-
to	raiz	de	um	documento	HTML,	uma	vez	que	todo	o	conteúdo	da	página	é	aninhado	
dentro	dele.	O	aninhamento,	por	sua	vez,	refere-se	à	inserção	de	elementos	HTML	den-
tro	de	outros	elementos	HTML	(MOZILLA.ORG,	2022g).
25
Nas	 linhas	3	e	5,	 encontramos	os	elementos	 <head>	 </head>,	 as	quais	 con-
têm	conteúdos	não	visíveis	para	o	usuário,	conhecidos	como	metadados.	O	elemento	
<head>	deve	estar	aninhado	dentro	do	elemento	<html>.	Entre	os	elementos	que	podem	
ser	utilizados	dentro	de	<head>	estão	<title>,	<base>,	<link>,	<style>,	<meta>,	<script>	e	
<noscript>	(MOZILLA.ORG,	2022g).
O	elemento	<title>,	presente	na	linha	4,	é	utilizado	para	indicar	o	título	da	página,	
que	aparecerá	na	aba	do	navegador	(MOZILLA.ORG,	2022g).
Entre	as	linhas	6	e	8,	encontramos	os	elementos	<body>	</body>,	que	contém	
todos os elementos HTML visuais que serão apresentados na página para os usuários, a 
partir	da	linha	7	(MOZILLA.ORG,	2022g).
No link https://developer.mozilla.org/pt-BR/docs/Web/HTML/
Quirks_Mode_and_Standards_Mode você pode aprender mais 
sobre os modos Quirks e Standards em HTML. Esse recurso 
é importante para entender como o navegador interpreta o 
código HTML e como isso pode afetar a exibição da página. É 
uma leitura útil para desenvolvedores web que desejam criar 
páginas web compatíveis e consistentes em diferentes navega-
dores e dispositivos.
DICA
Encerramos	aqui	o	terceiro	tópico	do	primeiro	tema	de	aprendizagem,	com	isso	
chegamos	ao	fim	do	nosso	primeiro	tema	de	aprendizagem,	vamos	relembrar	de	for-
ma	resumida	o	que	estudamos.	um	breve	histórico	da	evolução	da	 linguagem	HTML,	
conhecemos	uma	forma	de	estrutura	um	site,	criamos	um	documentos	“.html”	apenas	
com	texto	simples,	subimos	a	estrutura	do	site	no	repositório	GitHub	e	publicamos	a	
página	em	um	GitHub	Pages.	Vimos	também	os	elementos	principais	que	formam	a	
estrutura básica de um documento HTML. 
É	fundamental	destacar	que	a	estrutura	básica	dos	documentos	HTML	é	ape-
nas	o	ponto	de	partida	para	a	criação	de	uma	página	web	eficaz.	A	partir	dessa	estrutu-
ra,	é	possível	adicionar	uma	infinidade	de	elementos	e	personalizações	para	criar	uma	
experiência	única	e	agradável	para	o	usuário.	Com	esse	conhecimento	sólido,	podemos	
avançar	para	o	próximo	tema	de	aprendizagem,	onde	vamos	nos	aprofundar	ainda	mais	
na	linguagem	HTML	e	dar	início	aos	conteúdos	sobre	estilização	de	páginas	com	CSS.	
Com	isso,	estaremos	cada	vez	mais	preparados	para	criar	sites	de	qualidade	e	com	ex-
celente	experiência	para	os	usuários.
26
4.3 SINTAXE DO ELEMENTO HTML
Os elementos HTML são a base da construção de páginas web e podem ser 
utilizados	para	diversos	fins,	como	inserir	imagens,	texto,	parágrafos	e	outros	tipos	de	
conteúdo. Cada elemento é representado por uma tag, que indica ao navegador como o 
conteúdo	deve	ser	interpretado	e	exibido	ao	usuário.	
A	sintaxe	de	um	elemento	HTML	é	fundamental	para	que	a	página	seja	interpre-
tada	corretamente	pelo	navegador	e	exibida	de	forma	adequada	ao	usuário.	A	sintaxe	de	
um elemento HTML é um dos conceitos mais importantes para quem está aprendendo a 
desenvolver	páginas	web.	Ela	define	a	estrutura	básica	de	cada	elemento	e	é	composta	
por	tags	de	abertura	e	fechamento,	além	de	atributos.	Na	figura	4,	é	possível	visualizar	
um	exemplo	de	sintaxe	de	um	elemento	HTML.
Figura 4 – Elemento HTML
Fonte: https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/HTML_basics/
grumpy-cat-small.png. Acesso em: 11 dez. 2022.
As	tags	são	responsáveis	por	criar	e	definir	os	elementos	HTML	da	página,	com	
o	objetivo	de	organizar,	identificar	e	limitar	os	conteúdos	da	página.	Quando	falamos	em	
elementos HTML, estamos nos referindo às tags que os representam.
Existem	dois	 tipos	de	elementos	HTML:	 os	 elementos	 com	fechamento	e	 os	
elementos	de	autofechamento,	também	conhecidos	como	elementos	sem	fechamento	
automático.	O	elemento	HTML	com	fechamento	é	aquele	que	possui	conteúdo	e	é	con-
siderado o elemento HTML comum. Esse tipo de elemento apresenta uma tag de aber-
tura	(envolvida	por	parênteses	angulares	"<elemento>")	para	indicar	o	início	do	elemento	
e	uma	tag	de	fechamento	(inclui	a	barra	antes	do	nome	do	elemento)	para	indicar	o	fim	
do	elemento	após	o	conteúdo.	Na	figura	5,	apresentamos	um	exemplo	de	elemento	com	
fechamento.Os	elementos	HTML	de	auto	fechamento,	também	conhecidos	como	elementos	
vazios	ou	tags	void,	são	aqueles	que	não	possuem	conteúdo	interno.	Eles	são	represen-
tados	na	sintaxe	do	HTML	com	uma	barra	inclinada	após	o	nome	do	elemento,	como	
https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/HTML_basics/grumpy-cat-small.png
https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/HTML_basics/grumpy-cat-small.png
https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/HTML_basics/grumpy-cat-small.png
27
em	"<elemento	/>".	Esse	tipo	de	elemento	não	requer	um	elemento	de	fechamento	adi-
cional.	É	importante	ressaltar	que	a	utilização	correta	desses	elementos	é	fundamental	
para	garantir	a	validade	do	código	HTML	e	evitar	erros	de	sintaxe.
Ao	compreendermos	a	sintaxe	dos	elementos	HTML,	estamos	dando	um	impor-
tante passo na construção de uma página web. No entanto, para criar páginas web mais 
ricas em conteúdo e com funcionalidades mais avançadas, é necessário compreender 
também os atributos associados a esses elementos. Compreender os atributos nos per-
mite	adicionar	informações	adicionais	aos	elementos	HTML	e	personalizar	sua	apresen-
tação	e	comportamento.	Isso	pode	melhorar	significativamente	a	experiência	do	usuá-
rio, aumentando o engajamento com o conteúdo apresentado. Portanto, é fundamental 
dominar	os	atributos	HTML	para	criar	páginas	web	de	alta	qualidade	e	eficazes.
A	personalização	e	a	funcionalidade	de	um	site	dependem	dos	atributos	utiliza-
dos	em	cada	elemento.	Por	meio	dos	atributos,	é	possível	definir	características	como	
cor,	tamanho,	estilo,	 interatividade,	acessibilidade,	entre	outras.	Cada	elemento	HTML	
possui	atributos	específicos	que	são	próprios	dele,	mas	também	existem	atributos	glo-
bais que podem ser aplicados a qualquer elemento HTML, independentemente da ver-
são do HTML. 
Os atributos globais são uma ferramenta valiosa para os desenvolvedores web, 
pois	permitem	personalizar	e	adaptar	a	aparência	e	funcionalidade	dos	elementos	HTML	
de	maneira	mais	flexível.	Ao	adicionar	esses	atributos	a	elementos	específicos,	é	pos-
sível	criar	páginas	web	mais	dinâmicas	e	 interativas,	o	que	melhora	a	experiência	do	
usuário e fornece uma maior variedade de opções para apresentação e interação com o 
conteúdo	da	página.	Neste	contexto,	é	importante	destacar	os	elementos	globais	mais	
relevantes para a criação de páginas web, pois esses atributos são aplicáveis em todas 
as versões do HTML.
O atributo “class”	pode	ser	utilizado	em	todas	as	versões	do	HTML.	Ele	é	usado	
para	definir	uma	ou	mais	classes	para	um	elemento	HTML,	permitindo	que	o	estilo	seja	apli-
cado	a	esse	elemento	por	meio	de	folhas	de	estilo	CSS.	O	atributo	"class"	é	um	dos	atributos	
globais	do	HTML,	o	que	significa	que	pode	ser	utilizado	em	qualquer	elemento	HTML.
O atributo "id"	pode	ser	utilizado	em	todas	as	versões	do	HTML.	Ele	é	um	atri-
buto	global	que	é	usado	para	 identificar	um	elemento	exclusivamente	dentro	de	um	
documento	HTML.	Ele	é	usado	para	fins	de	script,	para	aplicação	de	estilos	em	CSS	e	
para	criação	de	âncoras	dentro	da	mesma	página.	No	entanto,	é	importante	lembrar	que	
o	valor	do	atributo	"id"	deve	ser	único	dentro	do	documento,	não	podendo	haver	mais	de	
um	elemento	com	o	mesmo	valor	de	"id".
O atributo "lang"	pode	ser	utilizado	em	todos	os	elementos	HTML	e	em	todas	
as	versões	do	HTML.	Ele	é	usado	para	especificar	o	 idioma	principal	do	conteúdo	de	
um elemento ou de um documento inteiro. Através desse atributo, os navegadores e 
28
mecanismos	de	busca	podem	entender	qual	 idioma	está	sendo	utilizado	na	página	e	
oferecer	uma	melhor	experiência	ao	usuário.	É	especialmente	útil	em	páginas	com	con-
teúdo	multilíngue,	pois	ajuda	os	navegadores	e	mecanismos	de	pesquisa	a	identificar	e	
o	atributo	title	pode	ser	utilizado	em	todos	os	elementos	HTML	e	em	todas	as	versões	
do HTML. 
O atributo “title”	 	é	utilizado	para	fornecer	 informações	adicionais	sobre	um	
elemento	HTML,	geralmente	exibido	em	uma	dica	de	ferramenta	quando	o	usuário	pas-
sa	o	mouse	sobre	o	elemento.	Ele	pode	ser	usado	em	elementos	como	links,	imagens,	
botões	e	outros	elementos	interativos.	O	suporte	para	o	atributo	“title”	é	amplo	e	con-
sistente em todos os principais navegadores.processar o idioma correto do conteúdo.
O atributo “style”	pode	ser	utilizado	em	todos	os	elementos	HTML	e	em	to-
das	as	versões	do	HTML.	Ele	permite	definir	estilos	de	formatação	para	um	elemento	
usando	CSS	embutido.	É	importante	notar	que	é	considerada	uma	boa	prática	separar	
a	estilização	do	HTML	e	utilizar	arquivos	externos	de	CSS	para	manter	a	consistência	e	
a manutenibilidade do código.
O uso excessivo ou desnecessário de atributos pode prejudicar 
a performance e acessibilidade da página. Portanto, é recomen-
dado que sejam utilizados somente os atributos necessários e 
que sejam escritos de forma clara e semântica, visando a melhor 
compreensão por parte dos usuários e ferramentas de leitura 
assistiva. Além disso, é importante lembrar que a escolha cor-
reta dos atributos pode contribuir para uma melhor indexação 
da página pelos mecanismos de busca, o que é essencial para a 
visibilidade do conteúdo na web.
IMPORTANTE
É	importante	notar	que	esses	atributos	podem	não	ser	mais	recomendados	ou	
suportados em versões mais recentes do HTML e é sempre recomendado usar as me-
lhores	práticas	de	codificação	e	se	manter	atualizado	com	as	especificações	do	HTML.	
Na	versão	HTML5	introduziu	novos	atributos	e	também	mudou	ou	removeu	alguns	dos	
atributos	das	versões	anteriores	do	HTML.	A	seguir,	alguns	exemplos	de	atributos	que	
foram substituídos ou removidos na versão HTML5:
•	 o	atributo	"bgcolor"	foi	substituído	pelo	uso	de	estilos	CSS;
•	 o	atributo	"border"	foi	substituído	pelo	uso	de	estilos	CSS;
•	 o	atributo	"align"	em	alguns	elementos	foi	substituído	pelo	uso	de	estilos	CSS;
•	 o	atributo	"valign"	em	alguns	elementos	foi	substituído	pelo	uso	de	estilos	CSS;
•	 o	atributo	"frame"	em	alguns	elementos	foi	removido;
•	 o	atributo	"rules"	em	alguns	elementos	foi	removido.
29
Também, vale lembrar que alguns desses atributos mencionados podem ser 
usados em navegadores mais antigos por questões de compatibilidade, mas em geral é 
recomendado	o	uso	de	estilos	CSS	para	definir	as	propriedades	visuais	dos	elementos.	A	
versão 5 do HTML incluiu vários novos atributos, alguns dos quais são:
• data-*:	permite	adicionar	dados	personalizados	a	um	elemento	HTML.
• placeholder:	fornece	um	texto	de	exemplo	dentro	de	um	campo	de	formulário	antes	
que o usuário insira algum dado.
• required:	 indica	 que	 um	 campo	 de	 formulário	 é	 obrigatório	 para	 ser	 preenchido	
antes do envio.
• autofocus:	define	que	um	campo	de	formulário	deve	receber	o	foco	automaticamente	
quando a página é carregada.
• contenteditable: permite que o usuário edite o conteúdo de um elemento HTML 
diretamente na página.
• draggable: indica se um elemento pode ser arrastado e solto em outra parte da página.
• aria-*:	adiciona	atributos	para	melhorar	a	acessibilidade	em	páginas	para	pessoas	
com	deficiência	visual	ou	auditiva.
Esses	 são	apenas	alguns	exemplos	de	atributos	adicionados	na	versão	5	do	
HTML. Lembrando que os elementos HTML são essenciais na construção de uma pági-
na	web	e	os	atributos	permitem	personalizá-la	de	maneira	flexível.	
As boas práticas para atributos de elementos HTML visam garantir a acessibilidade, a 
usabilidade e a manutenção do código da página web. Algumas dicas são:
• Use atributos semânticos: utilize atributos que descrevem claramente o conteúdo e 
a função do elemento, como "alt" para imagens e "title" para links.
• Evite atributos obsoletos: evite o uso de atributos que não são mais suportados pelo 
HTML atual, como o "bgcolor" e o "align".
• Utilize valores apropriados: utilize valores apropriados para os atributos, de acordo 
com o tipo de dado esperado. Por exemplo, o atributo "src" de uma imagem deve con-
ter a URL da imagem.
• Seja consistente:mantenha a consistência no uso dos atribu-
tos para elementos semelhantes, para facilitar a manutenção e 
a leitura do código.
• Priorize a acessibilidade: use atributos que facilitem a nave-
gação e a compreensão para pessoas com deficiência, como 
"aria-label" para descrever o propósito de um elemento para 
leitores de tela.
• Mantenha o código organizado: mantenha os atributos em 
ordem alfabética e em linhas separadas, para facilitar a leitura e 
a manutenção do código.
Ao seguir essas boas práticas, é possível criar páginas web aces-
síveis, de fácil manutenção e com um código limpo e organizado.
BOAS PRÁTICAS
30
Encerramos	nosso	primeiro	tema	de	aprendizagem,	foram	abordados	concei-
tos fundamentais sobre desenvolvimento front-end para web, incluindo a introdução 
à internet e seus componentes básicos, além da estruturação de páginas web com 
HTML	e	estilização	com	CSS.	Foi	explorado	também	o	framework	Bootstrap	5,	com	seus	
conceitos e fundamentos, bem como a criação de telas de cadastro de usuário e login, 
utilizando	suas	classes	e	mecanismos	de	validação.	Ao	longo	dos	tópicos,	foram	apre-
sentados	exemplos	práticos	e	casos	de	uso	para	consolidar	o	aprendizado.	Com	esses	
conhecimentos,	o	aluno	pode	dar	os	primeiros	passos	na	criação	de	páginas	web	res-
ponsivas e modernas. 
31
Neste tópico, você aprendeu:
•	 A	Web	é	um	conjunto	de	páginas	que	contém	hipertexto	e	hipermídias.	As	respostas	
que	o	servidor	web	envia	para	o	navegador	são	em	hipertexto.	Web	e	 internet	são	
coisas diferentes: Web é uma das formas que as informações podem ser transferidas 
na internet e a Internet é a rede mundial de computadores conectados que formam 
a teia mundial. 
•	 Os	sites	são	hospedados	no	servidor	web	de	um	provedor,	quando	digitamos	o	ende-
reço	no	navegador	o	servidor	DNS	realiza	a	tradução	para	o	endereço	IP	do	serviço.	
Para que seja possível acessar os sites é necessário registrar o domínio. 
•	 O	endereço	completo	de	acesso	ao	site	é	chamado	de	URL,	é	composto	por:	proto-
colo	de	comunicação	web	conhecido	por	HTTP	(para	páginas	sem	segurança),	sub-
domínio,	domínio	de	segundo	nível	(SLD),	domínio	de	alto	nível	(TLD)	que	no	Brasil	
normalmente	é	“.com.br”	e	o	caminho	composto	por	diretório	e	nome	do	arquivo.	
•	 Um	arquivo	HTML	é	um	documento	de	texto	que	contém	código	HTML	para	definir	a	
estrutura e conteúdo de uma página da web. Para criar um arquivo HTML, é necessá-
rio	usar	um	editor	de	texto,	como	o	Bloco	de	Notas	ou	o	Sublime	Text,	e	salvá-lo	com	
a	extensão	".html".	Para	publicar	a	página,	é	possível	usar	o	GitHub	Pages,	uma	plata-
forma	gratuita	que	permite	hospedar	um	site	diretamente	do	repositório	do	GitHub.
•	 A	estrutura	básica	do	documento	HTML	é	composta	por	três	elementos:	<!DOCTYPE>,	
<html>	e	<head>	e	<body>.	O	primeiro	elemento	indica	a	versão	do	HTML	utilizada	no	
documento,	enquanto	as	tags	<html>,	<head>	e	<body>	delimitam	o	conteúdo	da	pá-
gina e fornecem informações sobre a mesma.
• Elementos HTML são representados por tags, que indicam ao navegador como o 
conteúdo	deve	ser	interpretado	e	exibido.	Existem	dois	tipos	de	elementos:	com	fe-
chamento	e	de	autofechamento.	É	importante	utilizar	corretamente	os	elementos	de	
autofechamento	para	evitar	erros	de	sintaxe.
•	 Compreender	os	atributos	é	fundamental	para	personalizar	a	apresentação	e	com-
portamento	dos	elementos	HTML.	Atributos	globais,	como	"class",	 "id"	e	 "lang",	são	
ferramentas	valiosas	para	os	desenvolvedores	web	e	podem	ser	utilizados	em	qual-
quer elemento HTML.
RESUMO DO TÓPICO 1
32
AUTOATIVIDADE
1 Muito resumidamente, para mapear um domínio em um endereço IP, o navegador 
web	chama	um	procedimento	de	biblioteca	chamado	resolvedor,	passando	o	domí-
nio	como	um	parâmetro.	O	resolvedor	envia	uma	consulta	contendo	o	domínio	para	
um servidor DNS local, que procura o domínio e retorna uma resposta contendo o 
endereço	IP	para	o	resolvedor,	que	então	o	retorna	ao	chamador.	Sobre	a	tradução	
realizada	no	momento	que	acessamos	as	páginas	na	internet,	assinale	a	alternativa	
CORRETA:
a)	 (			)	 Quando	vamos	acessar	um	site	na	internet	normalmente	não	utilizamos	o	ende-
reço	IP,	utilizamos	o	que	chamamos	de	Identificador	Uniforme	de	Recursos	ou	
URI (Uniform Resource Identifier),	formada	por	duas	partes	principais:		protocolo	
e nome do site (domain name).
b)	 (			)	 O	nome	do	 site	 	 (domain name)	 é	 o	 endereço	completo	que	 identifica	o	 site,	
sendo	assim	não	é	necessário	realizar	a	tradução	para	o	endereço	IP,	pois	o	na-
vegador sabe o endereço do servidor web.
c)	 (			)	 Para	que	seja	possível	acessar	um	site	hospedado	em	um	servidor	web	é	neces-
sário	definir	um	endereço	numérico	IP	(Internet	Protocol)	para	o	serviço	web.	
d)	 (			)	 Podemos	comparar	esse	endereço	IP	com	o	nosso	CEP	é	o	DNS	é	como	os	cor-
reios, porque podemos ter um mesmo IP para várias máquinas, ou seja, não é 
único.
2	 “UNICEF	alerta	para	importância	do	projeto	de	lei	que	garante	acesso	à	internet	com	
fins	educacionais	a	alunos	e	professores	da	educação	básica	pública.	Com	a	pan-
demia, o País corre risco de regredir mais de duas décadas no acesso de meninas e 
meninos à educação. Investir em acesso à internet é fundamental para reverter esse 
quadro.”
Fonte:	https://www.unicef.org/brazil/comunicados-de-im-
prensa/unicef-alerta-para-	importancia-do-projeto-de-lei-
-que-garante-acesso-a-internet-com-fins-educacionais.	
Acesso	em:	15	dez.	2022.
Com	base	na	importância	da	internet	na	atualidade,	analise	as	sentenças	a	seguir:
I-	 Apesar	da	UNICEF	alertar	da	importância	do	projeto	de	lei,	atualmente	a	internet	é	
um	conjunto	de	páginas	de	hipertexto	apenas.  
33
II-	 A	rede	de	alcance	mundial	(World	Wide	Web	-	WWW),	também	chamada	de	Internet,	
foi proposta em 1969 por Tim Berners-Lee e Robert Cailliau, no CERN (European Or-
ganization	for	Nuclear	Research).	Originalmente,	a	web	não	foi	idealizada	para	com-
partilhamento	de	informações	e	com	o	tempo	foi	migrando	para	compartilhamento	
de dados apenas da educação.
III-	 Muitas	vezes	é	usada	a	palavra	web	para	se	referir	a	internet,	porém	é	importante	
saber que não são a mesma coisa. A Internet é um conjunto de redes de computa-
dores conectados entre si formando uma teia mundial e a web é uma das diversas 
formas que as informações podem ser transferidas pela internet. Os dois são impor-
tantes para a educação, pois sem internet a web não funciona.
Assinale a alternativa CORRETA:
a)	 (			)	 As	sentenças	I	e	II	estão	corretas.
b)	 (			)	 Somente	a	sentença	II	está	correta.
c)	 (			)	 As	sentenças	I	e	III	estão	corretas.
d)	 (			)	 Somente	a	sentença	III	está	correta.
3	 “No	HTML,	o	doctype	é	a	introdução	"<!DOCTYPE	html>"	encontrada	no	topo	de	todos	
os	documentos.	Seu	único	propósito	é	evitar	que	o	browser	mude	para	os	chamados	
“quirks	mode”	quando	renderizar	um	documento;	isto	é,	o	"<!DOCTYPE	html>"	doc-
type	garante	que	o	browser	faça	um	esforço	na	tentativa	de	seguir	as	especificações	
relevantes,	em	vez	de	usar	um	modo	de	renderização	diferente	e	que	seja	incompa-
tível	com	algumas	especificações.”
Fonte:	https://developer.mozilla.org/pt-BR/docs/Glossary/
Doctype.	Acesso	em:	15	dez.	2022.
De acordo com os princípios e as normativas elencadas no estatuto da ABEPRO, classi-
fique	V	para	as	sentenças	verdadeiras	e	F	para	as	falsas:
(			)	O	elemento	<!DOCTYPE	html>	não	é	uma	tag	do	HTML,	é	uma	instrução	para	o	na-
vegador	para	saber	com	a	versão	de	código	está	sendo	utilizada	e	entrar	no	modo	
standart.
(			)	Pode	ser	incluída	em	qualquer	linha	do	documento	HTML.
(			)	Nas	versões	anteriores	do	HTML,	essa	instrução	fazia	referência	a	definição	de	tipo	
de	documento	ou	DTD	(Document	Type	Definition),	que	especifica	as	regras	para	as	
linguagens	de	marcação	realizar	a	renderização	do	conteúdo	de	forma	correta.
Assinale a alternativa que apresenta a sequência CORRETA:
a)	 (			)	 V	–	F	–	F.
b)	 (			)	 V	–	F	–	V.
c)	 (			)	 F	–	V	–	F.
d)	 (			)	 F	–	F	–	V.
34
4	 Quando	 acessamos	 via	 navegador	 um	motor	 de	 busca,	 como	 o	 Google,	 estamosacessando	um	serviço	web	em	um	servidor	especializado	para	realizar	a	busca	de	
outras páginas na internet. Muitas pessoas confundem o motor de busca com o na-
vegador,	 pois	muitas	vezes	quando	abrimos	o	navegador	é	 a	primeira	página	que	
aparece é a página inicial de algum motor de busca. Disserte sobre o objetivo de se 
criar	uma	página	web	pensando	no	otimizador	de	mecanismo	de	busca	(SEO)	e	por-
que	é	importante	conhecer	o	funcionamento	do	motor	de	busca.
5	 Os	navegadores	são	os	clientes	que	fazem	solicitações	de	acesso	ao	servidores	web	
que	hospedam	uma	página	web,	já	aprendemos	que	os	sites	devem	ter	domínios	que	
apontam	para	o	endereço	IP	que	são	traduzidos	por	Servidor	DNS.	Neste	contexto,	
disserte	sobre	as	formas	de	disponibilizar	vários	sites	em	um	único	servidor	e	como	o	
navegador se comunica com servidor web.
35
HTML, FORMULÁRIOS E CSS: 
FUNDAMENTOS E ESTILIZAÇÃO
UNIDADE 1 TÓPICO 2 — 
1 INTRODUÇÃO 
Acadêmico,	no	segundo	tema	de	aprendizagem,	falaremos	sobre	a	estrutura	
dos	formulários	web.	Conheceremos	os	elementos	e	atributos	necessários	para	criação	
de um formulário, entendendo o funcionamento dos campos de entrada, atributos glo-
bais	e	controle	de	texto.	Para	consolidar	o	conteúdo,	colocaremos	em	prática	criando	
um	formulário	de	login	com	campos	de	entrada,	campos	de	seleção,	botão	e	links.
O estilo em cascata aplica formatação ao elemento HTML pai e também a todos 
os	elementos	filhos	aninhados.	Compreenderemos	a	linguagem	de	folha	de	estilo	CSS,	
a	sintaxe	básica	das	regras	CSS	e	colocaremos	em	prática	com	um	código	HTML	de	
exemplo	de	página	que	apresenta	uma	calculadora	simples.
Estudaremos	de	forma	breve	o	conteúdo	básico	sobre	o	framework	Bootstrap	5,	
para	criar	páginas	responsivas.	Compreenderemos	o	funcionamento	dos	layout	de	grid	
e	container,	utilizando	para	criar	um	formulário	de	cadastro.	Conheceremos	os	pontos	
de	 interrupções,	configuração	usada	para	dimensões	do	conteúdo	das	páginas	apre-
sentados	nos	dispositivos	ou	tamanho	diversos	de	telas.	Apresentaremos	as	principais	
classes	necessárias	para	estilização	de	formulários	de	exemplo.
Por	fim,	usaremos	o	 framework	Bootstrap	5,	 para	entender	o	 funcionamento	
dos	grupos	de	campos	de	entradas	e	a	união	de	objetos	independentes.	Conhecendo	
as principais classes necessárias para formatação de um formulário e campos para for-
necer	feedback	de	validação	de	campos	obrigatórios.
2 INTRODUÇÃO AOS ELEMENTOS HTML
Neste	tópico,	você	aprenderá	sobre	a	sintaxe	dos	elementos	HTML,	começando	
com a estrutura básica de um elemento e como os elementos HTML são usados para 
criar	conteúdo	na	web.	Abordaremos	os	elementos	de	cabeçalho,	organização	de	con-
teúdo, divisões e listas em HTML. Além disso, falaremos sobre a criação de conteúdo 
hipermídia	usando	elementos	de	âncora	e	imagens.	Com	essas	habilidades	básicas	em	
HTML,	você	poderá	criar	páginas	da	web	simples	e	funcionais.	Vamos	começar!
Neste	capítulo,	vamos	explorar	em	detalhes	como	escrever	corretamente	a	sin-
taxe	de	um	elemento	HTML,	incluindo	exemplos	práticos	e	dicas	úteis	para	garantir	que	
seu	código	seja	bem	formado	e	semântico.
36
2.1 ELEMENTO CABEÇALHO
O	elemento	<head>,	também	conhecido	como	elemento	cabeçalho	em	HTML,	
é fundamental para a estrutura de uma página web, pois contém informações cruciais 
para	o	seu	correto	funcionamento	e	apresentação	visual.	É	um	elemento	presente	em	
todas	as	versões	do	HTML	e	em	todas	as	páginas	web,	sendo	responsável	por	armazenar	
dados	como	o	título	da	página,	metadados,	links	para	arquivos	externos	e	informações	
importantes	para	mecanismos	de	busca.	A	correta	utilização	do	elemento	<head>	é	es-
sencial	para	a	construção	de	páginas	web	bem	estruturadas	e	com	bom	desempenho.
Dentro	 do	 elemento	 <head>,	 são	 incluídas	 diversas	 informações	 relevantes,	
como	o	título	da	página,	as	meta	tags	que	descrevem	o	conteúdo	da	página	e	auxiliam	
na	 indexação	pelos	motores	de	busca,	os	 links	para	arquivos	de	estilo	CSS	e	scripts	
JavaScript, entre outras. 
Por	conta	da	sua	importância,	é	fundamental	que	os	desenvolvedores	web	te-
nham	um	bom	conhecimento	sobre	o	elemento	<head>	e	saibam	como	utilizá-lo	corre-
tamente	a	fim	de	garantir	uma	experiência	de	navegação	adequada	para	os	usuários	e	
melhorar	a	visibilidade	da	página	nos	resultados	de	busca.	
Dentro	do	elemento	<head>,	é	comum	utilizar	vários	elementos	que	podem	ser	
utilizados	em	diferentes	versões	do	HTML.	Entre	os	elementos	mais	comuns,	indepen-
dentemente da versão do HTML, estão:
• <title>:	define	o	título	da	página	que	é	exibido	na	aba	do	navegador.
• <meta>:	define	informações	adicionais	sobre	a	página,	como	a	descrição,	palavras-
chave,	codificação	de	caracteres,	entre	outros.
• <link>:	define	a	relação	entre	a	página	atual	e	um	arquivo	externo,	como	um	arquivo	
CSS;
• <script>: define	um	script	em	JavaScript	para	ser	executado	na	página.
• <style>: define	um	estilo	CSS	para	ser	aplicado	na	página.
• <base>: define	uma	URL	base	para	todas	as	URLs	relativas	em	uma	página.
• <noscript>:	 define	um	conteúdo	alternativo	para	navegadores	que	não	suportam	
scripts ou que têm scripts desativados.
É	importante	destacar	que	nem	todos	os	elementos	mencionados	anteriormen-
te são obrigatórios e que outras tags também podem ser usadas dentro do elemento 
<head>.	Além	disso,	existem	diversas	práticas	recomendadas	para	a	utilização	efetiva	
do	<head>	em	uma	página	web.	Abaixo	estão	algumas	delas:
• Inclua um título descritivo: o título da página é um dos elementos mais importan-
tes	dentro	do	<head>,	pois	ele	é	exibido	nos	resultados	dos	mecanismos	de	busca	e	é	
muitas	vezes	a	primeira	coisa	que	os	usuários	veem	ao	acessar	a	página.	O	título	deve	
ser conciso e descritivo, informando ao usuário sobre o conteúdo da página.
37
• Utilize metadados relevantes: os metadados incluem informações adicionais so-
bre	a	página,	como	a	descrição	da	página	e	palavras-chave.	Essas	informações	aju-
dam	os	mecanismos	de	busca	a	entender	melhor	o	conteúdo	da	página	e	podem	
influenciar	na	classificação	da	página	nos	resultados	de	pesquisa.
• Referencie arquivos externos adequadamente:	as	folhas	de	estilo	e	scripts	são	
frequentemente	incluídos	em	páginas	web	através	de	referências	a	arquivos	exter-
nos.	 É	 importante	 garantir	 que	 esses	 arquivos	 sejam	 referenciados	 corretamente	
para	evitar	problemas	de	carregamento	da	página	ou	conflitos	de	código.
• Evite a inclusão de scripts desnecessários:	a	inclusão	de	scripts	no	<head>	pode	
retardar o carregamento da página. Portanto, é importante evitar a inclusão de scripts 
desnecessários	e,	quando	possível,	referenciá-los	no	final	da	página	ou	em	um	arqui-
vo	externo.
• Utilize o atributo "charset":	o	atributo	"charset"	especifica	o	conjunto	de	carac-
teres	utilizado	pelo	documento	HTML.	É	importante	incluí-lo	no	<head>	para	garantir	
que	o	conteúdo	da	página	seja	exibido	corretamente	em	todos	os	navegadores.
• Valide o código HTML: a validação do código HTML é importante para garantir que a 
página	seja	exibida	corretamente	em	todos	os	navegadores	e	dispositivos.	Existem	fer-
ramentas	online	gratuitas	que	podem	ajudar	a	verificar	se	o	código	HTML	está	correto.
• Atualize as informações do <head> regularmente: é importante manter as infor-
mações	do	<head>	atualizadas,	especialmente	se	houver	alterações	significativas	na	
página, como mudanças no conteúdo ou na estrutura.
Na	versão	HTML5,	foram	introduzidos	novos	elementos	que	podem	ser	utiliza-
dos	dentro	do	elemento	<head>,	tais	como:
• meta charset:	define	a	codificação	de	caracteres	utilizada	no	documento;
• meta name="viewport":	define	as	configurações	de	visualização	da	página	em	dis-
positivos móveis;
• link rel="stylesheet":	define	o	arquivo	de	estilo	externo	utilizado	na	página;
• script async e script defer:	definem	o	carregamento	assíncrono	ou	diferido	dos	
scripts	utilizados	na	página.
Esses	elementos	são	importantes	para	o	correto	funcionamento	e	visualização	
da	página,	além	de	contribuir	para	a	sua	otimização	e	desempenho.No	quadro	2,	apre-
sentamos	um	exemplo	de	código	em	HTML	que	ilustra	a	utilização	dos	elementos	<title>,	
<link>,	<meta>	e	<base>	dentro	do	<head>	de	uma	página	web.
Para	testar	o	código	em	seu	navegador,	você	pode	criar	um	arquivo	de	texto	
simples	utilizando	um	editor	de	texto	como	o	Bloco	de	Notas,	presente	em	sistemas	
operacionais	como	o	Windows	10.	Basta	copiar	e	colar	o	código	de	exemplo	no	arquivo	
de	texto,	salvar	com	a	extensão	".html"	e	abrir	o	arquivo	no	navegador	de	sua	preferên-
cia.	Assim,	você	poderá	visualizar	o	resultado	da	página	web	com	os	elementos	<title>	e	
<link>	corretamente	configurados.
38
Quadro 3 – Código em HTML 
Fonte: a autora.
1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE	html>
<html>
<head>
<meta	charset="utf-8"	/>	//	Apenas	a	partir	da	versão	HTML5
<base	target="_blank"	href="file:///C:/Users/usuario/Documents/calculadorasimples.com/">
<title>	Calculadora	Simples	</title>
<link	rel=”icon”	type="image/png"	sizes="16x16"	href="imagens/calculadora.png">
</head>
<body>
<!–	tag	de	comentário:	incluir	elementos	que	serão	apresentados	na	tela	–>
</body>
</html>
O	código	do	quadro	3	é	um	exemplo	de	um	documento	HTML,	que	inclui	ele-
mentos	comuns	para	a	criação	de	uma	página	web.	A	primeira	linha	do	código	é	o	doc-
type	(tipo	de	documento),	que	indica	para	o	navegador	que	o	documento	segue	as	es-
pecificações	do	HTML	e	qual	versão	está	sendo	utilizada.	Neste	caso,	o	doctype	utilizado	
é a versão mais recente do HTML, que é a HTML5.
A	tag	<html>	é	o	elemento	principal	do	documento	e	envolve	todo	o	conteúdo	
da	página	web.	Dentro	do	elemento	<html>,	temos	o	elemento	<head>,	que	contém	in-
formações importantes sobre o documento, como o título da página, o ícone da página 
e	outras	informações	adicionais,	como	descrição	e	palavras-chave.
Dentro	do	elemento	<head>,	temos	a	tag	<meta	charset="utf-8"	/>,	que	é	uti-
lizada	para	definir	a	codificação	de	caracteres	utilizada	no	documento.	No	caso	deste	
exemplo,	a	codificação	escolhida	é	a	UTF-8,	que	é	capaz	de	representar	uma	grande	
variedade de caracteres de diferentes idiomas.
Também	dentro	do	elemento	<head>,	temos	o	elemento	<base	target="_blank"	
href="file:///C:/Users/usuario/Documents/calculadorasimples.com/">,	que	define	a	URL	
base	para	todas	as	URLs	relativas	no	documento.	Neste	exemplo,	a	URL	base	é	um	ar-
quivo local em um diretório do computador do usuário.
O	elemento	<title>	define	o	título	da	página,	que	é	exibido	na	aba	do	navegador	
quando a página é aberta. 
39
O	elemento	<link>	é	utilizado	para	definir	a	relação	entre	a	página	atual	e	um	ar-
quivo	externo,	como	um	arquivo	CSS.	Neste	caso,	o	atributo	"rel"	é	definido	como	"icon",	
indicando	que	o	arquivo	é	um	ícone	da	página,	o	atributo	"type"	define	o	tipo	de	arquivo	
como	imagem	PNG	e	o	atributo	"sizes"	define	o	tamanho	do	ícone.	O	atributo	"href"	es-
pecifica	o	caminho	do	arquivo	de	imagem.
A	última	seção	do	código	é	o	elemento	<body>,	que	contém	o	conteúdo	da	pági-
na	web	que	será	exibido	aos	usuários.	Neste	exemplo,	não	há	conteúdo	definido	dentro	
do	elemento	<body>,	apenas	um	comentário	para	fins	ilustrativos.
Para	testar	o	código	HTML	apresentado	no	quadro	3,	siga	os	passos	abaixo:
1.	 Crie	um	diretório	raiz	chamado	"calculadorasimples.com".
2.	Dentro	do	diretório	raiz,	crie	uma	pasta	chamada	"imagens".
3.	Acesse	o	site	https://www.flaticon.com/br/icone-gratis/calculadora_522506,	baixe	
o	ícone	de	tamanho	16px	e	salve-o	com	o	nome	"calculadora.png"	na	pasta	"imagens"	
criada no passo 2.
4.	Abra	um	novo	arquivo	de	texto,	cole	o	código	do	quadro	3	e	salve-o	com	o	nome	
"index.html"	na	pasta	raiz	criada	no	passo	1.
5.	 Verifique	o	caminho	completo	do	diretório	onde	você	salvou	o	seu	projeto	e	altere	o	
trecho	da	linha	5	que	vem	depois	de	"file:///"	no	quadro	3.	Por	exemplo,	se	o	diretório	
raiz	 for	 salvo	 em	 "C:/Users/usuario/Documents/calculadorasimples.com/",	 altere	 a	
linha	5	para:	"file:///C:/Users/usuario/Documents/calculadorasimples.com/".
6.	Clique	duas	vezes	no	arquivo	"index.html"	para	abri-lo	em	um	navegador	e	visualizar	
o resultado.
Para descobrir todos os tipos de links que podem ser utilizados 
no elemento <link>, uma boa opção é acessar o site https://
developer.mozilla.org/en-US/docs/Web/HTML/Link_types. 
Além disso, se você quer entender o que é um favicon, pode ler 
mais sobre o assunto no site https://developer.mozilla.org/en-
US/docs/Glossary/Favicon. 
Ambas as fontes são excelentes recursos para quem deseja se 
aprofundar na criação de páginas web e entender os detalhes 
técnicos envolvidos nesse processo.
DICA
40
O elemento <style> é utilizado para inclusão de estilos em uma 
página HTML e é estudado no momento do aprendizado sobre 
CSS. Já os elementos <script>, <noscript> e <template> são utili-
zados para trabalhar com scripts e comportamentos dinâmicos 
na página, e são estudados no momento em que estivermos 
aprendendo sobre JavaScript. Todos esses elementos são impor-
tantes para criar páginas web dinâmicas e interativas.
ESTUDOS FUTUROS
O	início	da	construção	de	uma	página	web	se	dá	pela	definição	de	seu	cabeça-
lho,	como	já	aprendemos	anteriormente.	Agora,	vamos	avançar	no	aprendizado	e	co-
nhecer	os	elementos	que	nos	permitem	organizar	os	conteúdos	das	páginas.	A	estru-
turação adequada dos conteúdos é essencial para a apresentação de uma página de 
forma clara e coesa, facilitando a compreensão do usuário e tornando a navegação mais 
agradável.
2.2 ELEMENTOS ESTRUTURAIS E ORGANIZADORES
Os	elementos	semânticos	são	utilizados	para	organizar	e	estruturar	o	conteúdo	
de	uma	página	HTML,	tornando-o	mais	claro	e	significativo	para	os	usuários	e	para	os	
motores	de	busca.	Cada	elemento	semântico	tem	um	propósito	específico	e	indica	ao	
navegador	o	significado	e	a	finalidade	do	conteúdo,	permitindo	que	ele	seja	exibido	de	
maneira	adequada	para	diferentes	dispositivos	e	aplicativos.	Além	disso,	a	utilização	de	
elementos	semânticos	facilita	a	manutenção	e	a	atualização	do	código	HTML,	tornan-
do-o mais legível e fácil de entender.
Ao	executar	o	código	HTML	apresentado	no	quadro	3	e	abrir	o	arquivo	"index.
html"	em	um	navegador,	a	página	exibida	será	semelhante	à	figura	5.	Nela,	é	possível	
notar	a	presença	da	imagem	do	favicon	na	aba	do	navegador	e	do	título	"Calculadora	
Simples"	na	parte	superior	da	janela	do	navegador.
Figura 5 – Aba do navegador quando executado o trecho de código do quadro 2
Fonte: a autora.
41
Um	elemento	semântico	em	HTML	é	um	tipo	de	tag	que	possui	um	significado	
e	uma	função	específica,	além	de	indicar	aos	navegadores	e	aos	mecanismos	de	busca	
qual é o propósito do conteúdo que está sendo apresentado na página. Esses elemen-
tos	são	importantes	porque	ajudam	a	organizar	o	conteúdo	do	site	de	uma	forma	lógica	
e	intuitiva,	facilitando	a	compreensão	do	usuário	e	melhorando	a	acessibilidade	e	usa-
bilidade do site.
Os	elementos	semânticos	também	ajudam	na	otimização	do	SEO	(Search	Engi-
ne	Optimization),	pois	indicam	aos	motores	de	busca	o	conteúdo	e	a	estrutura	do	site,	
o	que	pode	ajudar	a	melhorar	o	ranking	nas	pesquisas.	Além	disso,	a	utilização	desses	
elementos pode tornar o código HTML mais legível e fácil de ser mantido, especialmente 
quando	se	trata	de	projetos	grandes	e	complexos.
O	elemento	semântico	mais	conhecido	que	pode	ser	utilizado	em	todas	as	ver-
sões	do	HTML	é	o	<div>.	Embora	não	tenha	um	significado	semântico	específico,	ele	é	am-
plamente	utilizado	para	organizar	e	agrupar	conteúdo	em	seções	distintas	em	uma	página	
da	web.	Ele	pode	ser	estilizado	com	CSS	para	criar	diferentes	layouts	e	estilos	visuais.	O	
<div>	é	tão	versátil	que	é	frequentemente	referido	como	o	"canivete	suíço"	do	HTML.
Temos	também,	os	elementos	de	título	<h1>	até	<h6>	estão	disponíveis	em	to-
das	as	versões	do	HTML	e	podem	ser	utilizados	para	definir	os	títulos	e	subtítulos	das	
seções	da	página.	Esses	elementos	também	ajudam	a	organizar	o	conteúdo	de	uma	
forma	hierárquica	e	fornecem	informações	importantes	para	os	mecanismos	de	busca	
sobre a estruturada página.
As	versões	anteriores	do	HTML	não	possuíam	muitos	elementos	semânticos.	
Na	verdade,	a	maioria	dos	elementos	eram	utilizados	apenas	para	formatação	e	estilo,	
como	o	uso	de	tabelas	para	criar	layouts	e	atributos	de	estilo	em	linha.	Com	o	HTML5,	
houve	uma	grande	ênfase	na	semântica	e	na	estruturação	do	conteúdo.
Em	resumo,	a	grande	diferença	dos	elementos	semânticos	na	versão	HTML5	é	a	
ênfase na estruturação do conteúdo, permitindo que os desenvolvedores criem páginas 
web	mais	acessíveis,	compreensíveis	e	otimizadas	para	motores	de	busca.
Além	dos	elementos	<h*>	e	<div>,	que	são	amplamente	utilizado,	os	outros	cin-
co	elementos	semânticos	mais	comuns	em	todas	as	versões	do	HTML	são:
• <p>: utilizado	para	criar	parágrafos;
• <a>:	utilizado	para	criar	links;
• <img>:	utilizado	para	inserir	imagens;
• <ul> e <ol>:	utilizados	para	criar	listas	não	ordenadas	e	ordenadas,	respectivamente;
• <table>: utilizado	para	criar	tabelas.
• <form>:	utilizado	para	criar	formulários.
42
O	HTML5	introduziu	diversos	novos	elementos	semânticos	para	ajudar	a	orga-
nizar	o	conteúdo	de	uma	página	de	forma	mais	clara	e	significativa.	Alguns	exemplos	
desses novos elementos são:
• <header>: define	o	cabeçalho	da	página	ou	de	uma	seção;
• <nav>:	define	a	área	de	navegação	do	site;
• <article>:	define	um	conteúdo	independente	e	autossuficiente;
• <section>:	define	uma	seção	lógica	da	página;
• <aside>:	define	um	conteúdo	complementar	ou	relacionado	a	uma	seção;
• <footer>: define	o	rodapé	da	página	ou	de	uma	seção.
Esses	 elementos,	 juntamente	 com	 os	 elementos	 já	 existentes	 como	 <div>,	
<span>	e	<p>,	ajudam	a	criar	uma	estrutura	de	conteúdo	mais	clara	e	significativa,	o	que	
pode	melhorar	a	usabilidade	e	acessibilidade	da	página.
Quando	executarmos	os	códigos	do	quadro	em	ambas	as	versões,	poderemos	
ver	a	utilização	dos	elementos	HTML5	e	sua	comparação	com	o	uso	do	seu	antecessor.	
A	aparência	da	tela	que	o	navegador	irá	apresentar	será	semelhante	à	tela	apresentada	
na	figura	6.	A	principal	diferença	entre	os	códigos	é	a	forma	de	declaração	do	tipo	de	
documento	(doctype)	e	a	estruturação	dos	elementos	HTML.	
Figura 6 – Tela da página da calculadora
Fonte: a autora.
43
No	código	HTML	4.01,	a	declaração	do	doctype	é	explícita	e	utiliza	uma	sintaxe	
mais longa. Além disso, a estrutura do documento é baseada em divs, onde cada seção 
é	definida	com	uma	classe	para	aplicação	de	estilo.	
Já	no	código	HTML5,	a	declaração	do	doctype	é	mais	simples	e	direta.	A	estru-
tura	do	documento	é	baseada	em	elementos	semânticos,	como	<header>,	<nav>,	<sec-
tion>,	<article>,	<aside>,	<footer>,	etc.	Esses	elementos	permitem	que	o	conteúdo	seja	
estruturado	de	forma	mais	clara	e	semântica,	o	que	facilita	a	acessibilidade	e	indexação	
de conteúdo pelos motores de busca.
Além dos elementos estudados, foram utilizados caracteres especiais 
no quadro 3, como a string "&nbsp;" foi usada para adicionar espaços 
em branco quando necessário, e a string "&copy" foi utilizada para 
incluir o símbolo "©" de copyright no rodapé da página.
DICA
As tags de imagem e multimídia são elementos essenciais na construção de 
páginas web, permitindo a inclusão de elementos visuais e sonoros que aprimoram a 
experiência	do	usuário.	Além	dos	elementos	de	organização	e	divisão	já	vistos,	o	HTML	
oferece	várias	tags	para	exibição	de	imagens,	tais	como	a	<img>,	que	insere	imagens	
estáticas	na	página,	e	a	<picture>,	utilizada	para	definir	imagens	responsivas	com	vá-
rias	fontes,	escolhendo	a	melhor	opção	para	o	dispositivo	do	usuário.	Também	há	a	tag	
<svg>,	permitindo	a	exibição	de	gráficos	vetoriais	escaláveis.
44
Quadro 4 – Comparação código das versões antes e depois do HTML5
 HTML4 HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<!DOCTYPE	HTML	PUBLIC	"-//W3C//DTD	HTML	
4.01//EN"	 
"http://www.w3.org/TR/html4/strict.dtd">
<html>
				<head>
							….
</head
<body>
								<div	class="header">
												<h2>Título	Principal</div></h2>
								</div>
								<div	class="nav">
												<ul>
																<li><a	href="#">Home</a></li>
																<li><a	href="#">Sobre	nós</a></li>
																<li><a	href="#">Produtos</a></li>
																<li><a	href="#">Contato</a></li>
												</ul>
								</div>
								<div	class="aside">
												<h3>	AJUDA	</h1>
																<h4>	Como	usar	a	calculadora	</h4>
								</div>
								<div	class="section">
												<div	class="header">
																<h3>	CALCULADORA	</h3>
												</div>
												<div	class="article">
																<h4>	|_________|	</h4>
																<h4>	|	7	|	8	|	9	|	+|	</h4>
																<h4>	|	4	|	5	|	6	|	-&nbsp;|	</h4>
																<h4>	|	1	|	2	|	3	|	*|	</h4>
																<h4>	|	0	|	,&nbsp;&nbsp;|	=	|	/	|	</h4>
												</div>
												<div	class="footer">
																<h4>	Operações	Comuns:	</h4>
												</div>
								</div>
								<div	class="footer">
												<h5>Copyright	&copy	2023	</h5>
								</div>
				</body>
</html>
<!DOCTYPE	html>
<html>
				<head>
								…
				</head>
				<body>
								<header>
												<h2>Título	Principal	</h2>
								</header>
								<nav>
												<ul>
																<li><a	href="#">Home</a></li>
																<li><a	href="#">Sobre	nós</a></li>
																<li><a	href="#">Produtos</a></li>
																<li><a	href="#">Contato</a></li>
												</ul>
								</nav>
								<aside>
												<h3>	AJUDA	</h1>
																<h4>	Como	usar	a	calculadora	</h4>
								</aside>
								<section>
												<header>
																<h3>	CALCULADORA	</h3>
												</header>
												<article>
																<h4>	|_________|	</h4>
																<h4>	|	7	|	8	|	9	|	+|	</h4>
																<h4>	|	4	|	5	|	6	|	-&nbsp;|	</h4>
																<h4>	|	1	|	2	|	3	|	*|	</h4>
																<h4>	|	0	|	,&nbsp;&nbsp;|	=	|	/	|	</h4>
												</article>
												<footer>
																<h4>	Operações	Comuns:	</h4>
												</footer>
								</section>
								<footer>
												<h5>Copyright	&copy	2022	</h5>
								</footer>
				</body>
</html>
Fonte: a autora.
http://www.w3.org/TR/html4/strict.dtd
45
No	que	diz	 respeito	às	tags	de	multimídia	em	HTML,	destacam-se	a	<audio>,	
reproduzindo	arquivos	de	áudio,	como	música	ou	efeitos	sonoros,	e	a	<video>,	que	re-
produz	arquivos	de	vídeo,	como	filmes	ou	vídeos	curtos.	É	comum	utilizar	a	tag	<source>	
em	conjunto	com	<audio>	ou	<video>	para	especificar	diferentes	formatos	de	arquivo	e	
fornecer	fallbacks	para	navegadores	que	não	suportam	um	formato	específico.	Apenas	
a	tag	<video>	foi	introduzida	no	HTML5	e	não	é	suportada	em	versões	mais	antigas.	É	
importante	verificar	a	compatibilidade	das	tags	que	você	está	usando	com	a	versão	do	
HTML	em	que	você	está	trabalhando.
Vamos	 analisar	 um	 exemplo	 prático	 da	 utilização	 do	
elemento	<img>,	<div>,	<li>	em	HTML5,	que	pode	ser	visto	no	
Quadro	5.	Nesse	exemplo,	mostraremos	somente	a	parte	que	
está	alterada	em	relação	ao	código	HTML	do	Quadro	4.
Algumas boas práticas para utilizar os elementos estruturais e organizacionais do HTML 
de forma eficiente incluem:
• Utilizar corretamente os níveis de cabeçalho: use os elementos <h1> até <h6> 
para definir a hierarquia dos títulos na página. O título mais importante deve ser o 
<h1>, seguido pelo <h2> e assim por diante. Isso ajuda a organizar o conteúdo e facilita 
a leitura do usuário.
• Evitar o uso excessivo de elementos <div>: embora os elementos <div> sejam úteis 
para agrupar conteúdo, o uso excessivo pode tornar a estrutura do site confusa e difícil 
de entender. Em vez disso, use os elementos semânticos corretos para cada tipo de 
conteúdo.
• Incluir atributos alt em imagens: o atributo alt é usado para for-
necer uma descrição alternativa da imagem para usuários que uti-
lizam leitoresde tela. Certifique-se de incluir uma descrição clara e 
concisa para cada imagem.
• Manter a estrutura do HTML simples e organizada: evite o 
uso excessivo de tags aninhadas e mantenha a estrutura do có-
digo organizada. Isso ajuda a facilitar a manutenção do site 
no futuro.
• Validar o código HTML: verifique se o seu có-
digo HTML está correto e em conformidade com 
os padrões estabelecidos pela W3C. Isso ajuda a 
garantir que seu site seja compatível com diferentes 
navegadores e dispositivos.
Seguir essas boas práticas ajuda a tornar a estrutura e organiza-
ção do seu site mais clara, fácil de entender e acessível a todos os 
usuários.
BOAS PRÁTICAS
46
Quadro 5 – Código em HTML5
Fonte: a autora.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<section>
<header>
<h1>	|_________|	</h1>
</header>>
<article>
<img	src="imagens/sete.png"	height="50px">
<img	src="imagens/oito.png"	height="50px">
<img	src="imagens/nove.png"	height="50px">
<img	src="imagens/mais.png"	height="50px">
<br>
<img	src="imagens/quatro.png"	height="50px">
<img	src="imagens/cinco.png"	height="50px">
<img	src="imagens/seis.png"	height="50px">
<img	src="imagens/menos.png"	height="50px">
<br>
<img	src="imagens/um.png"	height="50px">
<img	src="imagens/dois.png"	height="50px">
<img	src="imagens/tres.png"	height="50px">
<img	src="imagens/multiplicacao.png"	height="50px">
<br>
<img	src="imagens/zero.png"	height="50px">
<img	src="imagens/virgula.png"	height="50px">
<img	src="imagens/igual.png"	height="50px">
<img	src="imagens/dividir.png"	height="50px">
<br>
</article>
<footer>
<h5>	Explicação	das	Operações	Comuns:	</h5>
<ol>
<li>	Soma	é	nun1+nun2	=	resultado	</li>
<li>	Subtração	é	nun1-num2	=	resultado	</li>
</ol>
</footer>
</section>
Após	executar	o	código	do	Quadro	5	no	navegador	para	testar	o	código	HTML,	
será	exibida	uma	tela	semelhante	à	apresentada	na	figura	7.
47
Figura 7 – Execução do código do quadro 5
Fonte: a autora.
Neste	tópico	aprendemos	sobre	os	principais	elementos	de	organização	e	di-
visão	em	HTML,	bem	como	sobre	a	 importância	das	tags	de	imagem	e	multimídia	na	
construção de páginas web. Com isso, podemos criar páginas mais estruturadas e ricas 
em conteúdo visual e sonoro.
2.3 MODELO DE OBJETOS DE DOCUMENTOS
O modelo de objetos de documentos (ou Document Object Model - DOM, em in-
glês)	é	uma	representação	hierárquica	ou	em	forma	de	árvore	de	um	documento	HTML.	
Ele permite a manipulação e interação com os elementos da página web através de uma 
abordagem	orientada	a	objetos,	tornando	possível	a	modificação	dinâmica	dos	elemen-
tos	através	da	linguagem	JavaScript	(MDN,	2023c).	Em	resumo,	o	DOM	é	uma	ferramen-
ta	essencial	para	a	construção	de	páginas	web	dinâmicas	e	interativas.
48
O DOM não deve ser confundido com o modelo de objetos do 
navegador (ou Browser Object Model - BOM, em inglês), que é 
usado para interagir com o próprio navegador, em vez de com 
o conteúdo da página. Alguns exemplos de recursos do BOM 
incluem os métodos console.log(), alert("") e prompt().
IMPORTANTE
O DOM é uma interface de programação de aplicativos (ou Application Program-
ming	Interface	-	API,	em	inglês)	porque	ele	fornece	uma	maneira	padronizada	para	que	
os desenvolvedores interajam com os elementos de uma página HTML ou XML por meio 
de um conjunto consistente de métodos e propriedades.
Esses	métodos	e	propriedades	são	definidos	na	especificação	do	DOM,	permi-
tindo	que	os	desenvolvedores	escrevam	código	que	possa	ser	executado	em	diferentes	
plataformas e navegadores da web. Como o DOM é uma API independente de lingua-
gem,	ele	pode	ser	usado	com	várias	linguagens	de	programação,	como	JavaScript,	Py-
thon	e	PHP.
Por	exemplo,	um	desenvolvedor	pode	usar	o	DOM	para	modificar	a	estrutura	e	
o conteúdo de uma página da web em tempo real, adicionando ou removendo elemen-
tos, alterando estilos e atributos, ou respondendo a eventos do usuário. Essa interação 
programática é possível porque o DOM representa a página da web como um conjunto 
de objetos, tornando-o mais fácil de manipular em um ambiente de programação. Para 
entender	melhor	o	funcionamento	do	DOM,	podemos	visualizar	um	trecho	de	código	
HTML no quadro 6.
Quadro 6 - Documento HTML
1
2
3
4
5
6
7
8
9
10
<!DOCTYPE	html>
<html	lang="pt">
<head>
<title>Meu	Documento</title>
</head>
<body>
<h1>Meu	Cabeçalho</h1>
<a	href=”URL”>Meu	Link</a>
</body>
</html>
Fonte: a autora.
49
O documento HTML apresentado no quadro 6 pode ser representado pela árvo-
re DOM apresentada na Figura 8, que é composta por diversos objetos e dados funda-
mentais. Entre eles, destacam-se:
• Documento	 (ou	 Document,	 inglês):	 objeto	 raiz	 da	 representação	 do	 documento	
HTML, que contém todos os demais nós;
• Nós	(ou	Node,	inglês):	todos	os	objetos	do	documento	HTML,	incluindo	elementos,	
texto	e	comentários;
• Elemento	 (ou	Element,	 inglês):	 tipo	de	nó	que	 representa	 as	 tags	do	documento	
HTML,	como	<html>,	<body>	e	<div>;
• Atributos	(ou	Attribute,	inglês):	tipo	de	nó	que	representa	os	atributos	das	tags	do	
documento HTML, como id, class e src;
• Texto	(ou	Text,	inglês):	tipo	de	nó	que	representa	o	texto	que	fica	entre	as	tags	de	
abertura	e	fechamento,	como	o	conteúdo	de	um	parágrafo	ou	título.
Com o DOM, é possível acessar e manipular esses objetos e dados diretamente 
por meio de linguagens de programação, como JavaScript, facilitando a criação de apli-
cações	web	dinâmicas	e	interativas.
Figura 8 – Árvore DOM
Fonte: a autora.
50
Antes	de	prosseguirmos	com	o	conteúdo	sobre	formulários,	Para	ser	capaz	de	
realizar	alterações	nos	elementos	HTML	por	meio	do	JavaScript	e	validar	os	campos	
de	um	formulário,	é	fundamental	ter	um	conhecimento	sólido	dos	conceitos	 relacio-
nados ao DOM, que representa o documento HTML em forma de árvore de nós. Isso é 
fundamental para manipular e interagir com os elementos da página web, incluindo os 
widgets do formulário. 
Agora,	vamos	explorar	outro	importante	recurso	do	HTML:	os	formulários.	Eles	
são fundamentais para a interação do usuário com a página, permitindo que sejam en-
viadas	informações	para	o	servidor	e	realizadas	diversas	ações.	Acompanhe	o	próximo	
tópico	para	aprender	mais	sobre	como	utilizar	essa	ferramenta.
3 INTRODUÇÃO AOS FORMULÁRIOS WEB
Vamos	começar	a	explorar	uma	das	ferramentas	mais	poderosas	da	construção	
de páginas web: os formulários. Com eles, é possível criar uma interação direta entre o 
usuário e o site, permitindo o envio de informações e dados importantes. Neste tópico, 
veremos os requisitos básicos para a construção de formulários em HTML, sua estru-
tura,	estilo,	controles	e	entradas.	Além	disso,	aprenderemos	como	realizar	a	validação	e	
o	envio	dos	formulários	para	garantir	uma	experiência	de	uso	mais	fluida	e	segura	para	
os usuários.
Além disso, os formulários são uma das principais ferramentas para coletar in-
formações	 dos	 usuários	 em	um	website,	 seja	 para	 fins	 de	 pesquisa,	 cadastro,	 login,	
compra,	entre	outros.	Com	o	HTML,	é	possível	criar	formulários	personalizados	com	di-
versos	tipos	de	campos,	desde	campos	de	texto	simples	até	seletores	de	data,	botões	
de	rádio	e	caixas	de	seleção.	É	fundamental	que	os	desenvolvedores	web	tenham	co-
nhecimento	sobre	como	criar,	validar	e	enviar	formulários	em	HTML	para	proporcionar	
uma	experiência	positiva	aos	usuários	e	evitar	erros	e	problemas	no	envio	de	informa-
ções importantes.
3.1 ESTRUTURA DOS FORMULÁRIOS
Uma característica importante dos formulários em HTML é a capacidade de per-
mitir aos usuários inserir informações de maneira interativa e enviar esses dados para 
um	servidor.	Esses	dados	podem	ser	usados	para	diversos	fins,	como	criar	uma	conta,	
enviar uma mensagem ou efetuar uma compra online.
Para	construir	um	formulário	em	HTML,	é	necessário	utilizar	diversos	elemen-
tos,	como	campos	de	texto,	botões	e	menus.	Esses	elementos	são	agrupados	dentro	
da	tag	<form>,que	define	o	início	e	o	fim	do	formulário.	Entre	os	principais	atributos	do	
51
formulário,	destacam-se	o	method	e	o	action.	O	atributo	method	define	a	forma	como	
os dados serão enviados por meio do protocolo HTTP, enquanto o atributo action espe-
cifica	o	endereço	URL	para	onde	os	dados	serão	enviados.
No	Quadro	7,	é	possível	visualizar	a	estrutura	básica	de	um	formulário	em	HTML,	
que	pode	ser	expandida	e	personalizada	de	acordo	com	as	necessidades	do	desenvol-
vedor	e	do	usuário	final.
Quadro 7 – Esqueleto básico de um formulário HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE	html>
<html>
<head>
<meta	charset=utf-8	/>
<meta	name="viewport"	content="width=device-width,	initial-scale=1.0">
<title>Formulário</title>
</head>
<body>
<form	method=”#”	action=”#URL”>
… // Inserir os elementos de interação, também conhecidos como widgets.
</form>
</body>
</html>
Fonte: a autora.
O elemento HTML <form> não é o único elemento essencial na estrutura dos 
formulários.	Os	elementos	de	formulário	(ou		widgets,	em	inglês)	são	elementos	HTML	
que permitem aos usuários interagir com o formulário, inserindo, selecionando e en-
viando	informações.	Alguns	exemplos	de	dos	elementos	são:
• O elemento <input> é usado para criar vários tipos de controles de formulário, como 
caixas	de	texto,	caixas	de	seleção,	botões	de	rádio	e	mais.
• O elemento <select>	é	usado	para	criar	menus	suspensos	e	caixas	de	lista.
• O elemento <textarea> é	usado	para	criar	uma	entrada	de	texto	de	várias	linhas.
• O elemento <button> é usado para criar botões clicáveis.
• O elemento <label> é usado para fornecer um nome ou descrição para um controle 
de formulário.
Agora,	vamos	conhecer	alguns	dos	elementos	mais	comuns	utilizados	em	do-
cumentos HTML. Entender a função de cada elemento é fundamental para construir 
uma	página	web	funcional	e	estilizada	de	forma	adequada.	Com	o	conhecimento	desses	
elementos, é possível criar formulários, adicionar imagens, vídeos, áudio e muito mais. 
52
Além	 disso,	 esses	 elementos	 podem	 ser	 combinados	 e	 personalizados	 para	
criar	uma	experiência	única	para	o	usuário.	Vamos	mergulhar	nesse	universo	de	possi-
bilidades	e	aprimorar	ainda	mais	nossas	habilidades	em	HTML!
O	elemento	<input>	é	um	elemento	HTML	que	permite	ao	usuário	inserir	dados	
em	um	formulário	de	página	da	web.	É	utilizado	para	coletar	 informações	do	usuário,	
como	texto,	 senha,	 caixas	de	 seleção,	 botões	de	opção,	 arquivos	para	upload,	 entre	
outros.
O	elemento	<input>	possui	vários	atributos	que	ajudam	a	definir	o	tipo	de	en-
trada	e	as	opções	disponíveis	para	o	usuário.	Alguns	exemplos	de	tipos	de	entrada	são	
"text"	(para	texto),	"password"	(para	senhas),	"checkbox"	(para	caixas	de	seleção),	"radio"	
(para	botões	de	opção),	"file"	(para	upload	de	arquivos),	entre	outros.
É	importante	notar	que	o	elemento	<input>	não	possui	uma	tag	de	fechamento,	
pois	é	uma	tag	de	auto-fechamento,	ou	seja,	não	há	conteúdo	a	ser	exibido	entre	as	
tags	de	abertura	e	fechamento.	O	elemento	<input>	é	um	dos	elementos	mais	comuns	
usados em formulários de página da web e é fundamental para a coleta de informações 
e interação do usuário com o site.
Cada	elemento	de	formulário	em	HTML	possui	um	conjunto	específico	de	atri-
butos que determinam sua aparência e funcionalidade. Compreender como usar e per-
sonalizar	esses	widgets	é	essencial	para	criar	formulários	eficazes	e	amigáveis			ao	usu-
ário. Os atributos mais comuns incluem:
• name:	Define	o	nome	do	widget,	que	é	usado	para	identificá-lo	ao	enviar	os	dados	do	
formulário.
• id:	Define	um	identificador	único	para	o	widget,	que	é	usado	para	referenciar	o	widget	
em	scripts	e	folhas	de	estilo.
• value:	Define	o	valor	inicial	do	widget,	que	pode	ser	preenchido	automaticamente	ou	
ser	configurado	pelo	usuário.
• placeholder:	 Define	 o	 texto	 de	 espaço	 reservado	que	 aparece	dentro	 do	widget,	
dando ao usuário uma sugestão sobre o tipo de informação que deve ser inserido.
• required:	 Define	 se	 o	widget	 é	 obrigatório	 ou	 não,	 ou	 seja,	 se	 o	 usuário	 precisa	
preenchê-lo	para	enviar	o	formulário.
• disabled:	 Define	 se	 o	widget	 está	 desativado	 ou	não,	 ou	 seja,	 se	 o	 usuário	 pode	
interagir com ele ou não.
• readonly:	Define	se	o	widget	é	somente	leitura	ou	não,	ou	seja,	se	o	usuário	pode	ver	
e	copiar	o	valor,	mas	não	pode	modificá-lo.
• size:	Define	o	tamanho	do	widget	em	caracteres	ou	pixels,	dependendo	do	tipo	de	
widget.
53
• maxlength:	Define	o	número	máximo	de	caracteres	que	o	usuário	pode	inserir	no	
widget.
• min e max:	Definem	o	valor	mínimo	e	máximo	permitido	para	o	widget,	dependendo	
do tipo de widget.
• step:	Define	o	intervalo	entre	os	valores	permitidos,	para	widgets	de	tipo	numérico.
Esses são apenas alguns dos atributos mais comuns que podem ser usados em 
widgets	de	formulário	em	HTML.	A	escolha	e	a	combinação	adequada	desses	atributos	
podem	tornar	os	formulários	mais	eficientes	e	amigáveis			ao	usuário.
Para atribuir valores aos atributos de ID e name em elementos HTML, é recomendado 
seguir um padrão específico que evite o uso do camelCase. Em vez disso, o padrão mais 
recomendado é utilizar o sublinhado (_) como separador de palavras, escrevendo todas as 
letras em minúsculas, como em "nome_log".
A utilização desse padrão é importante porque ajuda a diferen-
ciar os nomes dos atributos dos nomes de classe do estilo CSS, 
que utilizam o traço (-) como separador de palavras. Isso torna o 
código HTML mais legível e fácil de entender, facilitando a manu-
tenção e o desenvolvimento do código, além de evitar conflitos 
de nomenclatura entre os elementos.
No entanto, é crucial lembrar que o nome do ID deve ser único 
dentro da página, para evitar problemas com a funcionalidade 
do código. Por isso, é necessário escolher um nome significativo 
e que não entre em conflito com outros IDs já existentes na 
página. Ao seguir essas práticas recomendadas, é possível es-
crever códigos HTML mais limpos e fáceis de trabalhar.
BOAS PRÁTICAS
O atributo "type" do elemento <input>	em	HTML	é	usado	para	definir	o	tipo	
de entrada que será aceita pelo campo de entrada. Ele é um atributo obrigatório para o 
elemento	e	seu	valor	pode	ser	um	dos	muitos	tipos	predefinidos	de	entrada,	como	"text",	
"password",	"number",	"email",	"date",	"checkbox",	"radio"	e	outros.
O tipo "text"	é	usado	para	campos	de	entrada	de	texto	simples,	enquanto	o	tipo	
"password"	é	usado	para	ocultar	os	caracteres	inseridos	pelo	usuário,	exibindo-os	como	
asteriscos	ou	pontos,	por	exemplo.	O	tipo	"number" é usado para campos de entrada 
numérica, enquanto o tipo "email" é usado para campos de entrada de endereços de 
e-mail,	verificando	se	o	endereço	inserido	está	no	formato	correto.
54
O tipo "checkbox"	 é	usado	para	criar	uma	caixa	de	seleção	que	permite	ao	
usuário selecionar uma ou mais opções de um conjunto de opções independentes. Já 
o tipo "radio"	é	usado	para	criar	uma	caixa	de	seleção	circular	que	permite	ao	usuário	
selecionar apenas uma opção entre um conjunto de opções dependentes.
O tipo "date"	é	usado	para	campos	de	entrada	de	data	e	hora,	enquanto	o	tipo	
"file" é usado para criar um botão de upload que permite ao usuário selecionar um ar-
quivo para ser enviado junto com o formulário.
Os atributos de cada tipo de entrada variam de acordo com o tipo selecionado, 
permitindo	personalizar	a	aparência	e	o	comportamento	do	campo	de	entrada.	É	 im-
portante	compreender	como	usar	esses	atributos	para	criar	formulários	mais	eficazes	e	
amigáveis			ao	usuário.	Os	elementos	<input>	são	considerados	um	dos	dos	mais	impor-
tantes e versáteis elementos de formulário em HTML. 
Para aprender mais sobre os elementos do formulário HTML, você 
pode consultar a documentação oficial da Mozilla sobre o elemento 
<input>. Este é um elemento fundamental para coletar informações 
do usuário em formulários da web. 
A documentação fornece uma visão geral completa dos atributos 
disponíveis para o elemento, bem como exemplos de uso e consi-derações de acessibilidade. O link para a documentação é: https://
developer.mozilla.org/pt-BR/docs/Web/HTML/Element/Input.
DICA
Nem todos os tipos de input são aceitos em todas as versões do HTML, alguns 
tipos de inputs foram adicionados em versões mais recentes do HTML e podem não ser 
suportados	em	navegadores	mais	antigos.	Por	exemplo,	o	tipo	"date"	foi	adicionado	no	
HTML5	e	pode	não	ser	suportado	em	navegadores	mais	antigos.	É	importante	verificar	a	
compatibilidade dos tipos de inputs com as versões do HTML e os navegadores em que 
o site será usado.
Os botões são elementos fundamentais em formulários e em interfaces de usu-
ário	em	geral.	Eles	permitem	aos	usuários	executarem	ações,	como	enviar	um	formulário,	
adicionar	um	item	ao	carrinho	de	compras,	realizar	uma	pesquisa,	entre	outras.	Existem	
vários tipos de botões em HTML, cada um com sua própria função e aparência. O atributo 
"type" do elemento <button>	é	usado	para	especificar	o	tipo	de	botão	que	será	criado.	
Existem	três	valores	possíveis	para	o	atributo	"type":	"submit",	"reset"	e	"button".
55
O valor "submit"	indica	que	o	botão	enviará	o	formulário	quando	clicado.	Ge-
ralmente,	esse	tipo	de	botão	é	usado	em	conjunto	com	o	elemento	"form"	para	enviar	
dados de formulário para um servidor.
O valor "reset" indica que o botão irá limpar todos os dados do formulário quan-
do clicado. Este tipo de botão é útil para permitir que o usuário limpe o formulário e 
comece	a	preenchê-lo	novamente.
O valor "button"	indica	que	o	botão	não	possui	uma	função	específica	definida.	
Esse tipo de botão pode ser usado em conjunto com JavaScript para adicionar uma 
funcionalidade	personalizada,	como	executar	uma	função	específica	quando	o	botão	é	
clicado.	O	atributo	"type"	do	elemento	"button"	é	opcional	e	se	não	for	especificado,	o	
valor	padrão	será	"submit".
Para melhorar a usabilidade e a experiência do usuário em uma página web, existem algu-
mas boas práticas que podem ser aplicadas aos botões. Algumas delas incluem:
• Escolha uma cor contrastante para o botão - Isso ajuda o botão a se destacar do 
resto do conteúdo na página e a torná-lo facilmente reconhecível para o usuário.
• Use um texto claro e objetivo - O texto no botão deve ser claro e conciso, e deve 
transmitir claramente a ação que será executada quando o botão for clicado.
• Evite botões excessivamente grandes ou pequenos - O tamanho do botão deve ser 
proporcional ao restante do conteúdo na página, para que ele não pareça despropor-
cionalmente grande ou pequeno.
• Use ícones quando apropriado - Ícones podem ajudar a melhorar a usabilidade dos 
botões, especialmente em dispositivos móveis.
• Alinhe os botões de maneira consistente - Ao colocar vários 
botões em uma página, é importante que eles estejam alinhados 
de maneira consistente para criar um design limpo e organizado.
• Posicione os botões em locais estratégicos - Coloque os bo-
tões em locais onde o usuário possa esperar encontrá-los, como 
na parte inferior da página ou próxima às opções de escolha.
• Faça testes de usabilidade - Antes de lançar um site, faça 
testes com usuários reais para garantir que os botões estejam 
bem posicionados e sejam facilmente utilizáveis.
BOAS PRÁTICAS
56
Para complementar seu conhecimento sobre os elementos do formulário em HTML, 
você pode consultar os seguintes links:
• <select>: https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/select
• <button> https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/button
• <textarea>: https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/textarea
• <form>: https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/form
Cada um desses elementos possui atributos e características específicas que podem 
ser úteis para tornar a experiência do usuário mais agradável e intuitiva ao preencher 
um formulário.
DICA
O	elemento	<select>	é	usado	em	HTML	para	criar	uma	caixa	de	seleção,	que	per-
mite	ao	usuário	escolher	uma	ou	várias	opções	de	um	conjunto	pré-definido	de	valores.	
É	especialmente	útil	para	formulários	que	necessitam	de	escolha	entre	várias	opções,	
como selecionar um estado civil, um país de origem, um produto em uma lista de op-
ções, entre outras possibilidades.
Para	criar	uma	caixa	de	seleção	com	o	elemento	"select",	é	necessário	definir	o	
elemento	pai	com	a	tag	<select>	e	adicionar	os	elementos	filhos	com	a	tag	<option>.	A	
tag	<option>	define	as	opções	disponíveis	para	escolha	na	caixa	de	seleção	e	deve	con-
ter	um	valor	atribuído	ao	atributo	"value"	e	um	texto	descritivo	para	o	usuário.
Aqui estão algumas boas práticas a serem consideradas ao usar o elemento 
select em um formulário HTML:
• Limite o número de opções: Selecione apenas as opções mais importantes e re-
levantes	para	os	usuários.	Se	houver	muitas	opções,	divida-as	em	várias	 listas	de	
seleção	ou	considere	o	uso	de	uma	caixa	de	pesquisa.
•	 Defina	um	valor	padrão:	Especifique	uma	opção	padrão	selecionada	na	lista.	Isso	
ajuda os usuários a entender o propósito da lista de seleção e evita erros de entrada 
de dados.
• Forneça uma etiqueta clara: Use uma etiqueta descritiva para a lista de seleção 
para ajudar os usuários a entender o que a lista representa e qual informação é espe-
rada deles.
• Organize as opções: Ordene as opções em ordem lógica ou alfabética para tornar a 
navegação fácil para o usuário.
• Evite o uso de barra de rolagem: Evite o uso de barras de rolagem (ou scrollbars, 
em	inglês)	na	lista	de	seleção.	Se	o	número	de	opções	for	grande,	divida	a	lista	em	
várias listas menores.
57
• Não use a lista de seleção para entrada de texto: Não use a lista de seleção para 
entrada	de	texto,	pois	é	mais	difícil	para	os	usuários	e	pode	ser	propenso	a	erros.
Seguindo essas boas práticas, é possível criar uma lista de seleção clara e fácil 
de usar para os usuários em seus formulários HTML.
Depois	de	adquirir	esse	conhecimento,	é	hora	de	colocá-lo	em	prática,	criando	
uma tela de login.
3.2 CRIANDO UM FORMULÁRIO DE LOGIN
Para	criar	uma	interface	de	login	amigável	e	eficiente,	vamos	utilizar	alguns	ele-
mentos	HTML	específicos.	Esses	elementos	serão	dispostos	em	conjunto	para	criar	o	
formulário	de	login	com	o	layout	apresentado	na	Figura	9.
Figura 9 – Layout tela de login
Fonte: a autora.
No	Quadro	8,	você	pode	ver	um	exemplo	de	formulário	HTML	que	implementa	
o	layout	apresentado	na	Figura	9.	É	importante	notar	que	este	é	apenas	um	exemplo	e	
que	o	código	pode	ser	adaptado	para	diferentes	finalidades	e	layouts,	dependendo	das	
necessidades do projeto.
58
Quadro 8 – Código HTML do formulário de login
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<!DOCTYPE	html>
<html>
<head>
<meta	charset=utf-8	/>
<meta	name="viewport"	content="width=device-width,	initial-scale=1.0">
<title>Formulário	de	Login</title>
</head>
<body>
<form	method="#"	action="#URL">
<h1>Login</h1>
<p>
<label	for="nome_login">Usuário:	</label>
<input	id="nome_login"	name="nome_login"	type="text"/>
</p>
<p>
<label	for="senha_login">Senha:	</label>
<input	id="senha_login"	name="senha_login"	type="password"/>
</p>
<p>
<label>
<input	type="checkbox"	name="manterlogado"	value="sim"	/>	Manter	logado
</label>
</p>
<p>	<button	type="submit"	>Login</button>	</p>
<p>	<a	href="#URL">Ainda	não	tem	conta?</a></p>
<p>	<a	href="#URL">Esqueceu	a	senha?</a></p>
</form>
</body>
</html>
Fonte: a autora.
Vamos analisar o código do Quadro 9 e entender os elementos de formulário 
HTML	que	foram	utilizados.	O	código	apresenta	um	formulário	de	login	básico	para	um	
site	ou	aplicativo.	O	formulário	tem	duas	caixas	de	texto	para	que	o	usuário	insira	seu	
nome	de	usuário	 e	 senha,	bem	como	uma	caixa	de	 seleção	que	permite	ao	usuário	
manter	sua	sessão	ativa	após	fazer	login.	Também	há	um	botão	"Login"	que	o	usuário	
pode clicar para enviar o formulário e efetuar o login.
O	elemento	<label>	é	usado	para	rotular	o	campo	de	entrada,	ajudando	o	usuário	
a	entender	o	que	precisa	serpreenchido.	O	elemento	<input>	é	o	campo	de	entrada	real,	
onde	o	usuário	pode	inserir	suas	informações	de	login,	como	nome	de	usuário	e	senha.	
59
Temos	dois	elementos	<a>	o	primeiro	que	será	utilizado	para	criar	um	link	para	
a	página	de	registro,	caso	o	usuário	ainda	não	tenha	uma	conta,	e	o	segundo	para	a	
página	de	reenvio	de	senha,	caso	o	usuário	tenha	esquecido	a	senha.	
Já	o	elemento	<button>	será	responsável	por	exibir	o	botão	de	login,	permitindo	
que o usuário envie seus dados e acesse o sistema.
O	"submit"	é	um	evento	que	ocorre	quando	um	formulário	HTML	é	enviado	pelo	
usuário.	Esse	evento	é	desencadeado	quando	o	usuário	clica	no	botão	"Enviar"	ou	pres-
sione	a	tecla	"Enter"	após	preencher	os	campos	do	formulário.	Quando	o	evento	"sub-
mit"	é	acionado,	o	navegador	reúne	todos	os	dados	do	formulário,	cria	uma	solicitação	
HTTP	e	envia	os	dados	para	o	servidor	especificado	no	atributo	"action"	do	formulário.
Normalmente, o servidor processa os dados do formulário e envia uma resposta 
de	 volta	 ao	 navegador,	 que	 pode	 ser	 exibida	 na	mesma	 página	 ou	 em	 uma	 página	
diferente,	 dependendo	 do	 que	 foi	 especificado	 no	 atributo	 "target"	 do	 formulário.	
É	 possível	 manipular	 o	 evento	 "submit"	 com	 JavaScript	 para	 validar	 os	 dados	 do	
formulário	antes	de	enviá-los	ao	servidor,	ou	para	executar	outras	ações	personalizadas	
no momento do envio.
Existem duas formas de utilizar o elemento <input>, como podemos ver no quadro 8. A 
primeira forma é usada na linha 12 com o elemento <label> e na linha 13 com o elemen-
to <input>. É importante observar que esses dois elementos estão relacionados pelo 
atributo "for" do elemento <label> e pelo atributo "id" do elemento <input>, ambos com 
o mesmo identificador "nome_login".
Já a segunda forma é utilizada nas linhas 20 e 21, onde o elemento 
<input> está aninhado dentro do elemento <label>. Nesse caso, o uso 
do atributo "for" no elemento <label> e do atributo "id" no elemento 
<input> é opcional.
Além disso, na linha 21 é utilizado o elemento <input> do tipo 
checkbox. 
Caso queira se aprofundar nesse assunto, é possível consultar 
mais informações, no link: https://developer.mozilla.org/pt-BR/
docs/Web/HTML/Element/Input/checkbox#valor.
IMPORTANTE
Existem	diversos	 atributos	 do	 elemento	 <form>	 que	 funcionam	 em	 todas	 as	
versões do HTML, alguns dos quais são:
60
• action:	especifica	o	URL	da	página	para	a	qual	os	dados	do	formulário	serão	envia-
dos após a submissão.
• method:	especifica	o	método	HTTP	utilizado	para	enviar	os	dados	do	formulário	(ge-
ralmente	GET	ou	POST).
• enctype:	específica	como	os	dados	do	formulário	são	codificados	antes	de	serem	
enviados	ao	servidor	 (por	exemplo,	application/x-www-form-urlencoded	ou	multi-
part/form-data).
Esses	são	apenas	alguns	exemplos	de	atributos	que	funcionam	em	todas	as	
versões	do	HTML,	mas	há	outros	atributos	que	também	podem	ser	usados,	dependendo	
da necessidade do desenvolvedor.
O atributo enctype funciona em todas as versões do HTML, mas a 
sintaxe pode variar um pouco. Na especificação do HTML 4, o valor 
padrão para o atributo “enctype” era “application/x-www-form-urlen-
coded”, enquanto na especificação do HTML 5 o valor padrão foi al-
terado para multipart/form-data.
O atributo "target" é utilizado para especificar o nome ou o ID do 
frame onde o resultado da submissão do formulário será exibido. 
Esse atributo foi introduzido na especificação do HTML 4 e continua 
a funcionar em todas as versões subsequentes do HTML, incluindo o 
HTML 5. Portanto, é um atributo que pode ser utilizado sem proble-
mas em qualquer versão do HTML.
IMPORTANTE
O	primeiro	tópico	do	segundo	tema	de	aprendizagem	foi	finalizado	com	suces-
so. De forma resumida, aprendemos sobre a estrutura de formulários, a representação 
da árvore DOM do documento HTML, os diferentes tipos de campos de entrada em for-
mulários,	os	atributos	globais	utilizados	em	formulários	e	como	controlar	a	entrada	de	
texto.	Com	esse	conhecimento,	 já	somos	capazes	de	estruturar	e	 incluir	campos	em	
nossos	formulários,	vamos	conhecer	como	enviar	os	dados	do	formulário.
3.3 VALIDAÇÃO DOS DADOS DO FORMULÁRIO
Quando	um	usuário	preenche	um	formulário	em	uma	página	web,	é	necessário	
que as informações contidas nele sejam enviadas para o servidor para que possam ser 
processadas	e	armazenadas.	Para	isso,	é	utilizado	o	método	de	envio	de	dados	de	for-
mulários	em	HTML.	Existem	dois	métodos	principais	para	enviar	dados	de	formulários:	o	
método	GET	e	o	método	POST.
61
O	atributo	“required”	é	utilizado	em	elementos	de	formulário	HTML,	como	inputs	
e	selects,	para	indicar	que	aquele	campo	é	obrigatório	e	deve	ser	preenchido	pelo	usu-
ário antes de submeter o formulário. Quando o atributo required é adicionado a um 
elemento, o navegador do usuário irá impedir a submissão do formulário caso o campo 
obrigatório	não	tenha	sido	preenchido.	Isso	ajuda	a	garantir	que	as	informações	neces-
sárias sejam fornecidas pelo usuário e evita que o servidor receba dados incompletos 
ou inválidos. 
Vamos	adicionar	o	atributo	required	nos	elementos	<input>	do	formulário	de	lo-
gin,	como	feito	nas	linhas	18	e	24	do	código,	no	Quadro	9,	para	indicar	que	esses	campos	
são obrigatórios e não podem ser enviados em branco.
Quadro 9 – Código HTML do formulário de login
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<!DOCTYPE	html>
<html>
<head>
<meta	charset=utf-8	/>
<meta	name="viewport"	content="width=device-width,	initial-scale=1.0">
<title>Formulário	de	Login</title>
</head>
<body>
<form	method="#"	action="#URL">
<h1>Login</h1>
<p>
<label	for="nome_login">Usuário:	</label>
<input	id="nome_login"	name="nome_login"	type="text"	required/>
</p>
<p>
<label	for="senha_login">Senha:	</label>
<input	id="senha_login"	name="senha_login"	type="password"	required/>
</p>
<p>
<label>
<input	type="checkbox"	name="manterlogado"	value="sim"	/>	Manter	logado
</label>
</p>
<p>	<button	type="submit"	>Login</button>	</p>
<p>	<a	href="#URL">Ainda	não	tem	conta?</a></p>
<p>	<a	href="#URL">Esqueceu	a	senha?</a></p>
</form>
</body>
</html>
Fonte: a autora.
62
Após	adicionar	o	atributo	"required"	nos	elementos	"input"	do	formulário,	clique	
no	botão	de	login	e	observe	as	mudanças	de	comportamento	no	preenchimento	dos	
campos	obrigatórios,	que	agora	não	podem	mais	ser	deixados	em	branco	ao	enviar	os	
dados	(Figura	10).
Figura 10 - Tela de login com campos obrigatórios
Fonte: a autora.
Agora,	vamos	criar	as	pastas	e	arquivos	restantes	para	finalizar	a	estrutura	do	
nosso	projeto.	A	organização	final	ficará	assim:
•	 login	(diretório	raiz	ou	nome	do	projeto)
◦ view
▪ cadastro.html
▪ home.html
▪ reset.html
◦	 index.html	(página	principal	que	tem	a	tela	de	login)
Serão abordados mais à frente diversos tópicos relacionados à pro-
gramação web, incluindo a criação de um arquivo JavaScript para 
validação de formulários, a obtenção de dados de um servidor e o 
armazenamento de dados do lado do cliente.
ESTUDOS FUTUROS
63
Vamos	agora	criar	a	página	“home.html”	com	o	código	do	Quadro	10,	para	po-
dermos	incluir	o	link	no	<form>	do	arquivo	“index.html	que”	é	nossa	tela	de	login.
Quadro 10 - Código da página home.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE	html>
<html>
 <head>
  <meta	charset=utf-8	/>
  <meta	name="viewport"	content="width=device-width,	initial-scale=1">
  <title>Tela	Principal</title>
 </head>
 <body>
  <div>
   	<h1>Login	realizado	com	sucesso!</h1>
  </div>
 </body>
</html>
Fonte: a autora.
Vamos	criar	agora	a	página	“reset.html”	utilizando	o	código	do	Quadro	11,	para	
que	possamos	incluir	o	link	do	botão	"Esqueci	minha	senha"	e	implementar	a	chamada	
do	arquivo	“cadastro.html”	incluindo	o	link	do	botão	"Ainda	não	tem	cadastro?".
Quadro 11 - Código da página reset.html
1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE	html>
<html>
	<head>
		<meta	charset=utf-8	/>
		<meta	name="viewport"	content="width=device-width,initial-scale=1">
		<title>Recuperar	Senha</title>
	</head>
	<body>
		<div>
				<h1>Você	esqueceu	sua	Senha	?</h1>
		</div>
	</body>
</html>
Fonte: a autora.
64
Podemos	finalizar	o	nosso	projeto	incluindo	o	método	de	envio	dos	dados	para	o	
destino	e	o	link	da	página	de	destino.	Ao	clicar	no	botão	"Login",	os	dados	do	formulário	
serão	enviados	para	o	destino	especificado	no	atributo	 "action"	do	elemento	<form>,	
que	no	nosso	caso	é	"./home.html".	Esse	atributo	é	responsável	por	indicar	a	página	que	
receberá os dados do formulário após o envio.
É	importante	destacar	que,	na	web,	utilizamos	o	protocolo	HTTP	e	os	métodos	
são	as	formas	de	realizar	a	transmissão	dos	dados.	Os	métodos	mais	comuns	são	"GET"	
e	"POST".	Para	garantir	a	segurança	dos	dados	que	estão	sendo	enviados,	o	recomenda-
do	é	utilizar	o	método	"POST".	No	código	HTML	do	quadro	X,	utilizamos	o	atributo	"me-
thod"	para	indicar	o	método	de	envio	dos	dados.	No	nosso	exemplo,	estamos	utilizando	
o	método	"GET".	
Para compreensão, resumidamente a principal diferença entre os dois métodos 
é a visibilidade de como os dados serão enviados de uma janela para outra. No método 
GET	os	dados	serão	concatenados	na	forma	de	chave/valor	ao	final	da	URL	sendo	visível	
na barra de endereço do navegador. No método POST os dados são encapsulados no 
corpo	da	requisição,	sendo	assim	não	é	possível	visualizar	os	dados	na	barra	de	ende-
reço do navegador.
Quando a segurança dos dados que estão sendo enviados 
é essencial, é recomendado utilizar o método POST no pro-
tocolo HTTP. Para aprofundar o conhecimento sobre este 
protocolo, acesse o link: https://developer.mozilla.org/en-US/
docs/Web/HTTP/Basics_of_HTTP.
IMPORTANTE
65
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<!DOCTYPE	html>
<html>
<head>
<meta	charset=utf-8	/>
<meta	name="viewport"	content="width=device-width,	initial-scale=1.0">
<title>Formulário	de	Login</title>
</head>
<body>
<form	method="GET"	action="./home.html">
<h1>Login</h1>
<p>
<label	for="nome_login">Usuário:	</label>
<input	id="nome_login"	name="nome_login"	type="text"	required/>
</p>
<p>
<label	for="senha_login">Senha:	</label>
<input	id="senha_login"	name="senha_login"	type="password"	required/>
</p>
<p>
<label>
<input	type="checkbox"	name="manterlogado"	value="sim"	/>	Manter	logado
</label>
</p>
<p>	<button	type="submit"	>Login</button>	</p>
<p>	<a	href="./view/cadastro.html">Ainda	não	tem	conta?</a></p>
<p>	<a	href="./view/reset.html">Esqueceu	a	senha?</a></p>
</form>
</body>
</html>
Quadro 12 - Código HTML do formulário de login
Fonte: a autora.
Veja	no	quadro	12,	utilizamos	o	método	"GET",	para	isso	foi	 incluído	o	atributo	
method	para	enviar	o	formulário	HTML	da	tela	de	login	no	arquivo	index.html.	As	alte-
rações	de	direcionamento	para	a	página	 “view/home.html’	quando	acionado	o	botão	
login	estão	nas	linhas	13	e	o	direcionamento	para	página	de	“view/cadastro.html”	ao	ser	
acionado	o	link	“Ainda	não	tem	conta?”	e	“view/reset.html”	quando	for	acionado	o	link	
“Esqueceu	a	senha?”	pode	ser	visto	na	linha	37.
66
O local onde deve ser colocado a tag <script> deve ser analisado com 
cuidado, pois o navegador interpreta o JavaScript no momento que 
ele encontrar a tag <script>, deixando o carregamento da página 
mais lenta. Porém caso você precise do JS para montar a tela então 
seu script deve ficar no elemento <head>, caso contrário pode ficar 
no final do <body> antes da tag de fechamento </body>.
DICA
O	envio	de	dados	de	formulários	deve	ser	realizado	de	forma	segura	e	respon-
sável, assegurando a privacidade e segurança das informações dos usuários. Por isso, é 
importante	utilizar	métodos	de	envio	adequados,	como	o	POST,	e	também	criptografar	
os	dados.	Prosseguindo,	no	próximo	tópico,	aprenderemos	como	aplicar	estilos	aos	do-
cumentos e formulários HTML.
4 INTRODUÇÃO À ESTILIZAÇÃO
A	estilização	de	páginas	e	formulários	é	um	aspecto	crucial	na	criação	de	uma	
experiência	de	usuário	satisfatória.	Além	de	tornar	a	aparência	mais	atraente,	a	estiliza-
ção	também	pode	melhorar	a	usabilidade	dos	elementos	da	página,	como	a	legibilidade	
do	texto	e	a	organização	visual	dos	componentes.	
O CSS é uma ferramenta poderosa para alcançar esses objetivos, permitindo a 
definição	de	regras	de	estilo	que	podem	ser	aplicadas	de	forma	consistente	em	todo	o	
site	ou	formulário.	Com	um	conhecimento	sólido	em	CSS,	podemos	criar	 layouts	ele-
gantes	 e	 responsivos	 que	 se	 adaptam	a	 diferentes	 dispositivos	 e	 tamanhos	 de	 tela.	
Neste	tópico,	vamos	explorar	os	principais	conceitos	de	CSS	e	aprender	a	aplicá-los	de	
forma	eficaz	em	nossos	projetos	de	desenvolvimento	web.
4.1 SINTAXE DAS REGRAS DE ESTILO CSS
 A estrutura básica de uma regra CSS é composta por um seletor, seguido de 
chaves	e	uma	declaração	que	especifica	a	propriedade	e	o	valor	desejados.	O	seletor	
identifica	o	elemento	HTML	que	se	deseja	aplicar	a	estilização,	enquanto	a	declaração	
contém	a	propriedade	que	se	quer	modificar	e	o	valor	que	se	quer	atribuir	a	ela.	
Na	Figura	11,	temos	um	exemplo	de	regra	CSS	que	define	a	cor	do	elemento	<p>	
como	vermelho.	É	importante	ressaltar	que	uma	regra	CSS	pode	conter	uma	ou	mais	
declarações e que múltiplas regras podem ser aplicadas ao mesmo elemento HTML.
67
Figura 11 – Sintaxe das regras CSS
Fonte: https://bit.ly/42QFMg5. Acesso em: 14 dez. 2022.
A	 sintaxe	 de	 uma	 regra	CSS	 é	 composta	 por	 quatro	 elementos	 principais.	 O	
primeiro	elemento	é	o	seletor	(ou	selector,	em	inglês),	que	representa	o	elemento	HTML	
que	será	estilizado	com	a	regra	CSS.	Ele	pode	ser	um	nome	de	tag	HTML,	uma	classe,	
um ID ou até mesmo um seletor de atributos.
O	segundo	elemento	é	a	declaração	 (ou	declaration,	 inglês),	que	é	uma	 linha	
com	um	conjunto	de	regras	que	especificam	quais	as	propriedades	do	elemento	HTML	
serão	estilizadas	e	qual	o	valor	da	propriedade.
A	propriedade	(ou	property,	inglês)	é	o	terceiro	elemento	da	sintaxe	e	fica	do	lado	
esquerdo	do	valor	da	propriedade,	antes	dos	dois	pontos.	Ela	define	qual	a	propriedade	
do	elemento	HTML	que	se	deseja	afetar	com	a	 regra.	Existem	diversas	propriedades	
que	podem	ser	estilizadas,	como	cor,	tamanho,	fonte,	espaçamento	e	posicionamento,	
entre outras.
O	último	elemento	da	sintaxe	de	uma	regra	CSS	é	o	valor	da	propriedade	(ou	
property	value,	em	inglês),	que	fica	do	lado	direito	da	propriedade	após	os	dois	pontos.	
Ele	indica	a	escolha	da	aparência	da	propriedade	que	está	sendo	estilizada.	Por	exem-
plo,	se	a	propriedade	for	"cor"	e	o	valor	for	"vermelho",	o	texto	do	elemento	HTML	afetado	
será	exibido	na	cor	vermelha.
Com	esses	quatro	elementos,	podemos	definir	regras	CSS	para	personalizar	a	
aparência dos elementos HTML de nossas páginas e formulários.
Para	criar	regras	CSS	de	forma	correta,	é	importante	seguir	algumas	diretrizes	
básicas, tais como:
•	 Inserir	ponto	e	vírgula	(	;	)	ao	final	de	cada	declaração;
•	 Envolver	o	conjunto	de	declarações	com	chaves,	ou	seja,	utilizar	abre-chaves	(	{	)	para	
iniciar	o	conjunto	de	declarações	e	fecha-chaves	(	}	)	ao	final	da	última	declaração;
•	 Utilizar	vírgula	para	atribuir	o	mesmo	conjunto	de	regras	a	mais	de	um	seletor.
68
Ao criar regras de estilo CSS, é importante considerar alguns aspectos rele-
vantes,	como	a	propriedade	box-sizing,	que	pode	alterar	o	cálculo	do	tamanho	de	um	
elemento,	afetando	sua	largura,	altura	e	preenchimento.	
Além	disso,	é	possível	utilizar	diferentes	unidades	de	medida,	como	pixels,	em	e	
rem,	para	definir	valores	em	propriedades	CSS.	A	criação	de	animações	e	transições	em	
elementos	também	é	possível	por	meio	de	regras	de	estilo	CSS,	melhorando	a	experiên-
cia	do	usuário	e	deixando	a	página	mais	interativa.	
As	pseudo-classes	são	seletores	que	permitem	estilizar	elementos	em	um	es-
tado	específico,	como	quando	o	cursor	do	mouse	está	sobre	o	elemento	ou	quando	o	
elemento está sendo clicado. 
Por	fim,	as	variáveis	CSS	permitem	a	definição	de	valores	reutilizáveisem	uma	
página,	tornando	a	manutenção	do	código	mais	fácil	e	rápida.	Conhecendo	esses	as-
pectos	fundamentais	e	a	sintaxe	do	CSS,	é	possível	criar	regras	mais	complexas	e	apli-
cá-las	de	forma	eficiente	aos	elementos	HTML,	considerando	as	nuances	da	cascata,	
herança,	box	model,	posicionamento	e	responsividade.
Com	essas	informações	básicas	de	sintaxe	sobre	as	regras	de	estilo	CSS,	pode-
mos	avançar	no	aprendizado	e	entender	como	criar	regras	mais	complexas	e	aplicá-las	
de	forma	eficiente	aos	elementos	HTML,	utilizando	uma	variedade	de	seletores	de	ele-
mentos	e	considerando	as	diversas	nuances	do	CSS,	como	a	cascata,	herança,	box	mo-
del,	posicionamento	e	responsividade.	Com	esse	conhecimento,	podemos	criar	páginas	
web	atraentes	e	bem	estilizadas,	que	se	adaptam	a	diferentes	dispositivos	e	tamanhos	
de	tela,	proporcionando	uma	experiência	de	usuário	agradável	e	acessível.
4.2 SELETORES DE ELEMENTOS HTML EM CSS
Os	seletores	em	CSS	são	usados	para	 selecionar	 e	 estilizar	 elementos	HTML	
específicos	em	uma	página	web.	Eles	permitem	que	você	aplique	estilos	diferentes	para	
diferentes elementos, classes ou IDs. Os seletores são fundamentais para a criação de 
regras de estilo em CSS e são uma das ferramentas mais importantes para criar páginas 
web	atraentes	e	bem	estilizadas.	Nesta	seção,	vamos	explorar	os	diferentes	tipos	de	
seletores	em	CSS	e	como	usá-los	para	estilizar	seus	elementos	HTML.
69
Não existem seletores CSS específicos que funcionam apenas no 
HTML5. Os seletores CSS são independentes do tipo de documento 
HTML e podem ser aplicados em qualquer versão do HTML, incluindo 
o HTML5. No entanto, o HTML5 introduziu novos elementos, como 
o <nav>, <header>, <footer>, <article>, entre outros, que podem ser 
selecionados usando os seletores CSS padrão. Além disso, o HTML5 
também introduziu novos atributos, como data-*, que podem ser 
usados como seletor de atributos no CSS.
IMPORTANTE
Existem	diversos	tipos	de	seletores	em	CSS,	cada	um	com	sua	própria	função	e	
aplicação. Alguns dos principais tipos de seletores incluem:
• Seletores de elemento: selecionam elementos HTML com base no nome do ele-
mento,	como	"p"	para	parágrafos	ou	"h1"	para	títulos.
• Seletores de classe:	selecionam	elementos	HTML	que	possuem	um	valor	específico	
de	classe	atribuído,	indicado	com	um	ponto	seguido	do	nome	da	classe,	como	".des-
taque"	para	elementos	com	a	classe	"destaque".
• Seletores de ID:	selecionam	elementos	HTML	com	um	valor	específico	de	ID	atri-
buído,	indicado	com	um	hashtag	seguido	do	nome	do	ID,	como	"#cabecalho"	para	o	
elemento	com	o	ID	"cabecalho".
• Seletores de atributo: selecionam elementos HTML com base no valor de um atri-
buto	específico,	como	"[href]"	para	elementos	que	possuem	o	atributo	"href"	definido.
• Seletores de descendente: selecionam elementos HTML que são descendentes de 
outro	elemento,	indicado	com	um	espaço	entre	os	seletores,	como	"ul	li"	para	selecio-
nar	todos	os	elementos	"li"	que	são	descendentes	de	uma	lista	não	ordenada	"ul".
•	 Seletores	de	filho	direto:	selecionam	elementos	HTML	que	são	filhos	diretos	de	ou-
tro	elemento,	indicado	com	o	sinal	">"	entre	os	seletores,	como	"ul	>	li"	para	selecionar	
apenas	os	elementos	"li"	que	são	filhos	diretos	de	uma	lista	não	ordenada	"ul".
Esses	são	apenas	alguns	exemplos	de	seletores	em	CSS,	e	cada	um	tem	sua	
própria	sintaxe	e	aplicação	específica.	Combinar	diferentes	tipos	de	seletores	pode	ser	
uma	maneira	poderosa	de	 selecionar	 e	 estilizar	 elementos	HTML	de	 forma	precisa	 e	
eficiente.
70
O link https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Selectors é 
uma ótima referência para quem deseja aprender mais sobre seletores em CSS. 
Lá você encontrará uma lista completa de todos os seletores dis-
poníveis, com exemplos de uso e explicações detalhadas. 
É importante lembrar que a escolha do seletor adequado pode 
facilitar muito a estilização dos elementos HTML, tornando o pro-
cesso mais eficiente e organizado. Portanto, é recomendável estu-
dar bem os seletores e praticar seu uso em projetos reais.
DICA
Uma	coisa	importante	a	mencionar	sobre	seletores	é	a	especificidade.	A	espe-
cificidade	dos	seletores	é	uma	das	características	mais	importantes	dos	seletores	em	
CSS.	É	usada	para	determinar	qual	regra	CSS	será	aplicada	a	um	elemento	específico	
quando	existem	várias	regras	que	podem	ser	aplicadas	ao	mesmo	elemento.
A	especificidade	é	 calculada	atribuindo	um	valor	 numérico	para	 cada	 seletor	
em	uma	regra,	sendo	que	quanto	mais	específico	for	um	seletor,	maior	será	o	seu	valor	
numérico.	Por	exemplo,	um	seletor	de	id	(#id)	tem	um	valor	numérico	maior	do	que	um	
seletor	de	classe	(.class),	e	um	seletor	de	elemento	(tag)	tem	o	menor	valor	numérico.
Quando várias regras se aplicam a um elemento, o navegador irá aplicar a regra 
com	a	especificidade	mais	alta.	Se	houver	mais	de	uma	regra	com	a	mesma	especifici-
dade, o navegador aplicará a regra que aparece por último no arquivo CSS.
A	especificidade	pode	ser	uma	fonte	comum	de	problemas	em	CSS,	especial-
mente	quando	desenvolvedores	 inexperientes	tentam	sobrescrever	estilos	existentes	
usando	seletores	muito	específicos	ou	!important.	É	importante	lembrar	que,	em	geral,	
é	melhor	evitar	o	uso	excessivo	de	!important	e,	em	vez	disso,	criar	uma	hierarquia	lógica	
de	seletores	para	evitar	conflitos.
O uso de "!important" pode ser considerado uma má prática de codificação, pois viola o 
princípio de cascata do CSS, que é a base para a organização e priorização das regras de 
estilo. Essa propriedade deve ser usada apenas quando outras alternativas, como a espe-
cificidade dos seletores, não funcionarem para alcançar o resultado desejado. Portanto, 
é importante manter um equilíbrio no uso da propriedade "!important" e seguir as boas 
práticas de codificação para tornar o código CSS mais legível e fácil de manter no futuro.
IMPORTANTE
71
A propriedade "!important" é uma declaração que pode ser adi-
cionada a uma regra CSS para indicar que aquela propriedade 
deve ter a mais alta prioridade e sobrepor todas as outras regras 
que possam estar afetando o mesmo elemento. Isso significa 
que, se uma propriedade tiver a declaração "!important", ela irá 
anular qualquer valor de propriedade atribuído anteriormente, 
independentemente da especificidade do seletor ou da ordem 
em que as regras são declaradas.
Ao	dominar	os	seletores	de	elementos	e	suas	especificidades,	você	terá	uma	
base sólida para aplicar as propriedades do CSS aos seus elementos HTML e criar pági-
nas	web	bem	estilizadas.	É	importante	lembrar	que	as	regras	CSS	também	são	afetadas	
por	outros	fatores,	como	a	ordem	em	que	as	regras	são	declaradas,	a	herança	de	pro-
priedades,	o	box	model	e	o	posicionamento	dos	elementos.	Portanto,	continue	apren-
dendo	e	aprimorando	seus	conhecimentos	em	CSS	para	se	tornar	um	desenvolvedor	
web	mais	habilidoso.
Vamos dar continuidade aos estudos em CSS e aprender sobre as proprieda-
des	CSS.	Com	elas,	podemos	adicionar	regras	específicas	aos	seletores	de	elementos,	
permitindo	criar	estilos	únicos	e	personalizados	para	nossas	páginas	web.	Combinar	os	
seletores	de	elementos	e	propriedades	do	CSS	permitirá	que	você	crie	layouts	atraentes	
e responsivos para seus projetos web.
4.3 VALORES DE PROPRIEDADES DO CSS
As	propriedades	do	CSS	são	usadas	para	estilizar	elementos	HTML	em	uma	pá-
gina	web.	Cada	propriedade	possui	um	valor	que	define	como	ela	deve	ser	aplicada	aos	
elementos	selecionados.	Os	valores	das	propriedades	do	CSS	podem	ser	definidos	em	
várias	unidades,	como	valores	numéricos,	palavras-chave,	cores,	entre	outros.	Entender	
e	saber	utilizar	corretamente	os	valores	das	propriedades	é	essencial	para	criar	estilos	
atraentes	e	funcionais	em	uma	página	web.	Neste	tópico,	vamos	explorar	os	diferentes	
tipos de valores que podem ser usados nas propriedades do CSS.
Existem	diversas	propriedades	CSS	disponíveis,	cada	uma	com	sua	função	es-
pecífica	 para	 estilizar	 elementos	HTML.	Algumas	 das	 propriedades	maisimportantes	
incluem:
• background: controla a cor, imagem de fundo e posição de um elemento.
• background-color:	definir	a	cor	de	fundo	de	um	elemento.
• color:	define	a	cor	do	texto	de	um	elemento.
• text-align: definir	o	alinhamento	horizontal	do	texto	dentro	de	um	elemento.
72
• line-height:	define	a	altura	da	linha	de	texto	em	relação	ao	tamanho	da	fonte.
• font-family:	especifica	a	fonte	utilizada	para	o	texto	do	elemento.
• font-size:	define	o	tamanho	da	fonte	do	elemento.
• margin: controla o espaço em torno do elemento.
• padding: controla o espaço interno do elemento.
• border: controla a aparência da borda do elemento.
• width:	especifica	a	largura	do	elemento.
• height:	especifica	a	altura	do	elemento.
• display:	controla	como	o	elemento	é	exibido	na	página	(por	exemplo,	se	é	exibido	
como	um	bloco,	como	um	inline	etc.).
Continuando nossa jornada pelas propriedades do CSS, é importante lembrar 
que	elas	são	essenciais	para	controlar	a	aparência	e	o	layout	de	uma	página	web.	Ex-
plorar	essas	propriedades	com	atenção	aos	detalhes	pode	levar	a	um	design	mais	sofis-
ticado e agradável. Vamos, então, aprofundar em algumas delas e entender como elas 
podem	ser	aplicadas	aos	elementos	HTML	para	criar	estilos	personalizados	para	nossas	
páginas web.
As propriedades do CSS são compatíveis com todas as versões do 
HTML, já que o CSS é uma linguagem separada que é usada para 
estilizar o HTML. No entanto, algumas propriedades podem ter 
suporte limitado em navegadores mais antigos. 
É importante considerar a compatibilidade com diferentes nave-
gadores ao escolher as propriedades do CSS para usar em um 
site. Existem várias ferramentas online disponíveis que podem 
ajudar a verificar a compatibilidade das propriedades do CSS com 
diferentes navegadores.
IMPORTANTE
A	propriedade	"background"	é	uma	das	mais	versáteis	do	CSS,	permitindo	a	de-
finição	de	diversas	características	visuais	para	o	plano	de	fundo	de	um	elemento	HTML,	
como	cor,	imagem,	gradiente,	repetição	e	posicionamento.	A	sintaxe	básica	da	proprie-
dade é: background: valor1 valor2 valor3 valor4 valor5;
Os valores aceitos para cada propriedade são:
• cor:	define	a	cor	de	fundo	do	elemento.	Pode	ser	especificada	como	um	nome	de	cor,	
um	valor	hexadecimal	ou	RGB.
• imagem: especifica	uma	imagem	para	ser	exibida	como	plano	de	fundo	do	elemento.
73
• repetição: determina como a imagem será repetida quando ela for menor do que o 
elemento	que	a	contém.	Os	valores	aceitos	incluem	"repeat"	(repete	a	imagem	nas	
direções	horizontal	e	vertical),	 "repeat-x"	 (repete	a	 imagem	apenas	na	direção	ho-
rizontal),	 "repeat-y"	 (repete	a	 imagem	apenas	na	direção	vertical)	 e	 "no-repeat"	 (a	
imagem	não	será	repetida).
• posição: define	onde	a	imagem	será	posicionada	dentro	do	elemento.	As	posições	
podem	ser	expressas	em	valores	absolutos	(como	"10px	20px")	ou	em	termos	de	pa-
lavras-chave	(como	"top	left"	ou	"center").
• tamanho:	determina	o	tamanho	da	imagem	de	fundo.	Pode	ser	especificado	como	
um	valor	absoluto	(como	"200px	100px")	ou	usando	palavras-chave	como	"auto"	ou	
"cover".
A	propriedade	"background"	também	suporta	a	definição	de	gradientes,	que	são	
transições	suaves	entre	duas	ou	mais	cores.	Existem	dois	tipos	de	gradientes	supor-
tados	pelo	CSS:	 linear	e	 radial.	A	propriedade	 "background"	é	bastante	útil	para	criar	
designs	interessantes	e	estilizados	em	uma	página	web.
Já	a	propriedade	“background-color”	é	usada	para	definir	a	cor	de	fundo	de	um	
elemento	em	CSS.	Ela	é	usada	para	definir	a	cor	de	fundo	de	um	elemento,	seja	ele	um	
bloco	de	texto,	uma	imagem,	uma	divião,	uma	tabela,	entre	outros.	A	sintaxe	básica	para	
definir	a	cor	de	fundo	de	um	elemento	é	a	seguinte: background-color: valor;.
O	valor	 pode	 ser	 especificado	 de	várias	maneiras,	 como	 o	 nome	 da	 cor	 (por	
exemplo,	 "red"	 para	vermelho),	 o	 código	 hexadecimal	 (por	 exemplo,	 "#FF0000"	 para	
vermelho)	ou	o	valor	RGB	(por	exemplo,	"rgb(255,	0,	0)"	para	vermelho).	A	propriedade	
background-color	 é	muito	 útil	 para	 criar	 fundos	 de	 cores	 personalizados	 e	 adicionar	
destaque aos elementos de uma página web.
A propriedade background-color é usada para definir apenas a cor de fundo de um ele-
mento, enquanto a propriedade background pode ser usada para definir várias caracte-
rísticas de fundo, como cor, imagem, posição, repetição e tamanho. 
Por exemplo, a declaração background: #FFFFFF url(bg.png) no-repeat top right; define a 
cor de fundo como branco (#FFFFFF), uma imagem de fundo chamada bg.png que não se 
repete (no-repeat) e a posição da imagem no canto superior direito (top right). 
Já a propriedade background-color define apenas a cor de fundo, igno-
rando as outras características definidas na propriedade background. 
É importante entender a diferença entre essas duas propriedades para 
criar estilos personalizados para seus elementos HTML.
IMPORTANTE
74
A	propriedade	“text-align”	é	usada	para	definir	o	alinhamento	horizontal	do	texto	
dentro de um elemento. Ela pode receber os seguintes valores:
• left:	alinha	o	texto	à	esquerda	do	elemento.
• right: alinha	o	texto	à	direita	do	elemento.
• center:	centraliza	o	texto	dentro	do	elemento.
• justify:	alinha	o	texto	justificado,	ou	seja,	estica	as	palavras	para	que	todas	as	linhas	
tenham	a	mesma	largura.
A	propriedade	“text-align”	pode	ser	aplicada	a	elementos	de	bloco,	como	pará-
grafos, títulos e divs. Ela também pode ser usada em conjunto com outras propriedades 
para	criar	layouts	complexos	e	responsivos.	Por	exemplo,	é	comum	usar	text-align:	cen-
ter	em	conjunto	com	margin:	0	auto	para	centralizar	um	elemento	na	página.
Vale	ressaltar	que	a	propriedade	text-align	afeta	apenas	o	alinhamento	horizon-
tal	do	texto.	Para	controlar	o	alinhamento	vertical,	é	necessário	usar	outras	proprieda-
des,	como	“line-height”,	“vertical-align”	ou	“display:flex”.
A	propriedade	“line-height”	define	a	altura	da	linha	de	texto	em	relação	ao	ta-
manho	da	fonte.	Ela	pode	ser	usada	para	controlar	o	espaçamento	entre	as	linhas	de	
texto	em	um	elemento,	como	um	parágrafo	ou	um	título.	
O	valor	da	propriedade	“line-height”	pode	ser	definido	de	várias	maneiras.	Ele	
pode	ser	especificado	como	um	valor	numérico,	que	será	multiplicado	pelo	tamanho	
da	fonte	atual	para	definir	a	altura	da	linha.	Também	pode	ser	especificado	como	uma	
porcentagem	do	tamanho	da	fonte,	ou	pode	ser	definido	como	um	valor	fixo	em	pixels	
ou outras unidades de medida.
Ao	ajustar	a	altura	da	linha,	a	propriedade	“line-height”	também	afeta	o	espaça-
mento	entre	as	letras	e	palavras	dentro	da	linha	de	texto.	Um	valor	muito	alto	pode	fazer	
com	que	o	texto	pareça	espalhado,	enquanto	um	valor	muito	baixo	pode	fazer	com	que	
as	linhas	de	texto	se	sobreponham,	dificultando	a	leitura.	Portanto,	é	importante	esco-
lher	um	valor	adequado	para	a	altura	da	linha	com	base	no	tamanho	e	estilo	da	fonte,	
bem como no tipo de conteúdo e na legibilidade desejada.
A	propriedade	“display”	do	CSS	determina	como	um	elemento	deve	ser	exibido	
na	página.	Existem	vários	valores	que	podem	ser	atribuídos	a	essa	propriedade,	cada	
um com sua própria funcionalidade. Alguns dos valores mais comuns da propriedade 
display	são:
75
• block:	o	elemento	é	exibido	como	um	bloco	e	ocupa	toda	a	 largura	disponível	no	
container	pai.	Qualquer	conteúdo	subsequente	é	exibido	em	uma	nova	linha	abaixo	
do	elemento.	Exemplos	de	elementos	que	possuem	o	valor	block	por	padrão	são	div,	
p	e	h1-h6.
• inline:	 o	 elemento	é	exibido	em	uma	 linha,	 ao	 lado	de	outros	elementos	 inline,	 e	
somente	ocupa	a	largura	necessária	para	exibir	seu	conteúdo.	Não	é	possível	definir	
altura	e	largura	em	elementos	com	valor	inline.	Exemplos	de	elementos	que	possuem	
o valor inline por padrão são span, a, strong e em.
• none: o	elemento	é	removido	do	fluxo	normal	da	página	e	não	é	exibido.	Essa	pro-
priedade pode ser usada para ocultar temporariamente um elemento ou criar um 
comportamento	de	alternância	entre	elementos	visíveis	e	invisíveis.
•	 flex:	o	elementoé	exibido	como	um	container	flexível,	permitindo	que	seus	filhos	
sejam	posicionados	de	forma	flexível.	Essa	propriedade	é	muito	útil	para	criar	layouts	
responsivos.
• grid:	o	elemento	é	exibido	como	um	container	de	grid,	permitindo	que	seus	filhos	
sejam	posicionados	em	células	de	um	grid	definido	pelo	desenvolvedor.	Assim	como	
flex,	é	uma	propriedade	muito	útil	para	criar	layouts	responsivos.
Esses	são	apenas	alguns	exemplos	de	valores	que	podem	ser	atribuídos	à	pro-
priedade	display.	Cada	um	desses	valores	tem	suas	próprias	implicações	no	layout	e	na	
aparência do elemento, por isso é importante entender como eles funcionam e quando 
devem ser usados.
Agora	que	já	vimos	várias	informações	sobre	as	propriedades	do	CSS,	é	hora	de	
colocar em prática o que aprendemos. Vamos aplicar o estilo CSS na nossa calculadora. 
Para	isso,	abra	um	editor	de	texto	simples,	como	o	bloco	de	notas	do	sistema	operacio-
nal Windows, e crie um novo arquivo. Em seguida, copie e cole o código do quadro 13 no 
arquivo	e	salve-o	com	extensão	".html".
Após salvar o arquivo, abra-o em um navegador para testar o código HTML e 
verificar	como	é	simples	aplicar	estilos	aos	elementos	HTML.	É	incrível	como	isso	pode	
mudar	completamente	a	aparência	de	uma	página	web!	Ao	executar	o	arquivo	no	nave-
gador, você verá a calculadora com o estilo aplicado, similar à tela da direita da Figura 12.
76
Quadro 13 - Código HTML do arquivo index.html estilizado
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<!DOCTYPE	html>
<html>
<head>
				<title>	Calculadora	</title>
<link	rel="stylesheet"	href="https://fonts.googleapis.com/css?family=Sofia">
				<style>
								body	{
												background-color:	rgba(0,	0,	0,	0.221);
												width:	100%;
 margin: 0 auto; 
												padding:	0	20px	20px	20px;
								}
				</style>
</head>
<body>
				<header	
style="font-size:	4rem;	
line-height:	0;	
letter-spacing: 
1px;text-align:	center;	
display:	flex;
height:	50px;	
padding-top:	20.15px;
background-color:	#db8e1a;">
								<h2	
style="	font-size:	2rem;	
flex:	1;	
text-transform:	uppercase;">
Título Principal 
</h2>
				</header>
 <nav 
	style="background-color:	#dd4646;
line-height:	1;
height:	1rem;
display:inline-block;	
padding:	1%;	
font-size:	3rem;
height:	inherit;	
width:	100%;
text-transform:	uppercase;				
color:	black;">
																<button	style="height:	2rem;width:	10rem;font-size:	1rem">Home</button>
77
44
45
46
47
48
49 
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
												<button	style="height:	2rem;width:	10rem;font-size:	1rem">Sobre</button>
												<button	style="height:	2rem;width:	10rem;font-size:	1rem">Produtos</button>
												<button	style="height:	2rem;width:	10rem;font-size:	1rem">Contato</button>
				</nav>
 <aside 
style="visibility:	hidden;
width:	100%;
letter-spacing:	1px;
text-align:	center;	
display:	block;
position:	fixed;
top: 0;
right:	0;
width:	180px;
height:	100%;
background-color:	#c4bce2;
padding:	50px;">
								<h3>	AJUDA	</h1>
												<h4>	Como	usar	a	calculadora	</h4>
				</aside>
 <section 
style="		background-color:	rgb(250,	250,	224);		
padding:	1rem;">
								<header
style="border:	0.5rem	outset	pink;
box-shadow:	0	0	0	1rem	skyblue;
	outline:	1rem	solid	skyblue;
border-radius:	5px;
margin: 2rem;
padding: 1rem;
outline-offset:	0.5rem;
max-width:	220px;
	background-color:	black;">
												<h2	style="color:white;text-align:	right;">1000,00	</h2>
								</header>
 <article 
style="max-width:	220px;
border:	0.5rem	outset	pink;
box-shadow:	0	0	0	1rem	skyblue;
outline:	1rem	solid	skyblue;
border-radius:	5px;
margin: 2rem;
padding: 1rem;
78
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
outline-offset:	0.5rem;">
												<img	src="imagens/sete.png"	height="50px">
												<img	src="imagens/oito.png"	height="50px">
												<img	src="imagens/nove.png"	height="50px">
												<img	src="imagens/mais.png"	height="50px">
												<br>
												<img	src="imagens/quatro.png"	height="50px">
												<img	src="imagens/cinco.png"	height="50px">
												<img	src="imagens/seis.png"	height="50px">
												<img	src="imagens/menos.png"	height="50px">
												<br>
												<img	src="imagens/um.png"	height="50px">
												<img	src="imagens/dois.png"	height="50px">
												<img	src="imagens/tres.png"	height="50px">
												<img	src="imagens/multiplicacao.png"	height="50px">
												<br>
												<img	src="imagens/zero.png"	height="50px">
												<img	src="imagens/virgula.png"	height="50px">
												<img	src="imagens/igual.png"	height="50px">
												<img	src="imagens/dividir.png"	height="50px">
												<br>
								</article>
 <footer 
style="font-size:	16px;
line-height:	2;
letter-spacing:	1px;
background-color:	#bfbaba;">
												<h5>	Explicação	das	Operações	Comuns:	</h5>
												<ol>
																<li>	Soma	é	nun1+nun2	=	resultado	</li>
																<li>	Subtração	é	nun1-num2	=	resultado	</li>
												</ol>
								</footer>
				</section>
 <footer 
style="font-size:	16px;
line-height:	2;
letter-spacing:	1px;
background-color:	#bfbaba;">
								<h5>Copyright	©	2022	-	autora	</h5>
				</footer>
</body>
</html>
Fonte: a autora.
79
O	elemento	<link>	é	uma	tag	HTML	que	permite	 incluir	 recursos	externos	em	
um	documento	HTML,	como	folhas	de	estilo,	ícones	de	favicon,	feeds	RSS,	arquivos	de	
script, e outros. Seu propósito principal é estabelecer a relação entre o documento atual 
e	o	recurso	externo,	usando	o	atributo	"rel".	Com	o	elemento	<link>,	é	possível	agregar	
funcionalidades	e	melhorar	o	design	da	página,	utilizando	recursos	que	estão	hospeda-
dos em outros servidores ou em outras partes do mesmo servidor.
Ao	utilizar	o	elemento	<link>	de	forma	correta	e	eficiente,	é	possível	melhorar	a	
qualidade	do	código	HTML	e	a	experiência	do	usuário	ao	navegar	na	página,	permitindo	
o carregamento rápido e a correta formatação de elementos visuais.
Figura 12 – Execução do código HTML do Quadro 9
Fonte: a autora.
Um	exemplo	prático	da	utilização	do	elemento	<link>	é	para	vincular	uma	folha	de	
estilo	CSS	ao	documento	HTML.	Para	isso,	basta	definir	o	valor	"stylesheet"	para	o	atributo	
"rel"	e	a	URL	da	folha	de	estilo	para	o	atributo	"href",	como	mostrado	no	exemplo	a	seguir:	
<link	rel="stylesheet"	href="style.css">.	Com	essa	simples	linha	de	código,	é	possível	aplicar	
estilos	visuais	à	página	e	personalizar	sua	aparência	de	forma	profissional.
O elemento <link> é suportado por todas as versões do HTML, incluindo 
as anteriores ao HTML5. É importante ressaltar que a utilização correta 
do elemento <link> pode melhorar significativamente o desempenho do 
site, já que permite que os recursos externos sejam carregados de forma 
assíncrona e em paralelo com o restante do conteúdo da página.
IMPORTANTE
80
O	elemento	<style>	é	usado	para	definir	um	estilo	em	linha	ou	incorporado	no	
documento	HTML.	Ele	é	usado	para	escrever	o	código	CSS,	que	é	responsável	por	defi-
nir	a	aparência	e	o	layout	de	uma	página	web.	O	elemento	<style>	é	colocado	dentro	da	
seção	<head>	do	documento	HTML	e	pode	incluir	uma	ou	várias	regras	de	estilo.
As	regras	de	estilo	são	escritas	usando	a	sintaxe	do	CSS	e	podem	ser	aplicadas	a	
qualquer elemento HTML na página. Cada regra de estilo é composta por um seletor, que 
identifica	os	elementos	aos	quais	a	regra	deve	ser	aplicada,	seguido	por	um	bloco	de	decla-
rações,	que	define	as	propriedades	CSS	que	devem	ser	aplicadas	a	esseselementos.
No	quadro	13,	o	código	utiliza	atributos	HTML	para	estilizar	os	elementos	da	pá-
gina,	sendo	utilizado	o	atributo	"style"	diretamente	nos	elementos	para	definir	as	regras	
das	propriedades	CSS,	o	que	é	conhecido	como	estilo	inline.	Podemos	notar	que	várias	
propriedades	são	aplicadas,	sendo	que	cada	uma	delas	tem	um	valor	específico	definido	
após	os	dois-pontos	(:).	É	importante	destacar	que	o	uso	excessivo	de	estilo	inline	pode	
tornar o código HTML confuso e difícil de ser mantido, sendo recomendado o uso de 
folhas	de	estilo	externas	para	separar	a	estrutura	do	conteúdo	e	facilitar	a	manutenção	
do código.
Style inline é uma forma de definir o estilo de um elemento HTML diretamente na tag, uti-
lizando o atributo "style". Por exemplo, podemos definir a cor do texto de um parágrafo 
como vermelha utilizando a seguinte tag: <p style="color: red;"> Este é um parágrafo com 
texto vermelho.</p>
No exemplo acima, o atributo "style" é utilizado para definir a cor do texto do parágrafo 
como vermelho. Esse método de definir estilos diretamente nos elementos é chamado 
de "style inline". No entanto, é importante lembrar que o uso excessivo de style inline 
pode tornar o código HTML confuso e difícil de gerenciar, tornando difícil a manutenção 
do site no futuro. Por isso, é recomendado que se utilize uma folha de estilo externa 
sempre que possível.
Uma boa prática é separar o estilo do atributo do elemento HTML, 
criando uma folha de estilo específica para o documento. Essa 
abordagem é mais recomendada, pois é mais flexível e fácil de 
gerenciar em comparação com a definição de estilos diretamen-
te nos elementos HTML. Além disso, também é possível subs-
tituir a folha de estilo padrão do Google ou de outro provedor, 
permitindo um controle completo sobre a aparência e a perso-
nalização de uma página web. 
Isso é feito por meio do uso da tag <link> na seção <head> 
do documento HTML, referenciando a folha de estilo deseja-
da com uma URL. Dessa forma, é possível centralizar todas 
as definições de estilo em um único local e aplicá-las a to-
dos os elementos HTML desejados.
ESTUDOS FUTUROS
81
Para	tornar	nosso	projeto	mais	organizado	e	facilitar	o	gerenciamento	do	códi-
go,	vamos	criar	uma	pasta	chamada	"styles"	dentro	do	diretório	raiz	"calculadorasimples.
com".	Dentro	dessa	pasta,	 criaremos	um	arquivo	chamado	 "styles.css"	utilizando	um	
editor	de	texto	simples,	como	o	bloco	de	notas	do	sistema	operacional	Windows.	Em	
seguida,	copiamos	as	regras	CSS	do	quadro	10	e	as	colamos	no	arquivo	"style.css",	que	
acabamos	de	criar.	É	importante	destacar	que	o	uso	de	uma	folha	de	estilo	separada	é	
uma	boa	prática	para	tornar	o	código	mais	flexível	e	fácil	de	gerenciar.
Na	folha	de	estilo	CSS	do	Quadro	14,	aplicamos	diversas	regras	de	estilo	a	di-
ferentes elementos HTML de uma página web. Algumas das regras aplicadas incluem:
•	 Definição	da	cor	de	fundo,	largura,	margem	e	preenchimento	do	corpo	da	página.
•	 Definição	da	fonte,	tamanho,	espaçamento	entre	 linhas,	espaçamento	entre	 letras,	
alinhamento	e	exibição	flexível	do	cabeçalho	da	página.
•	 Definição	da	cor	de	fundo,	espaçamento,	tamanho	da	fonte,	transformação	de	texto	
e altura do menu de navegação.
•	 Definição	da	altura,	visibilidade,	largura,	espaçamento	entre	letras,	alinhamento	e	po-
sição do painel lateral.
•	 Definição	da	cor	de	fundo,	espaçamento	e	cor	da	borda	dos	painéis,	assim	como	ta-
manho	da	borda,	borda	arredondada	e	distância	do	contorno.
•	 Definição	da	cor	de	fundo,	tamanho	do	espaçamento	e	linha	de	base	do	rodapé	da	
página.
Todas essas regras contribuem para a aparência e estilo visual geral da página 
web,	 e	 foram	cuidadosamente	 escolhidas	 para	 fornecer	 uma	 experiência	 de	 usuário	
agradável e coerente.
82
Quadro 14 - Arquivo de Folha de estilo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
20
31
32
33
34
35
36
37
38
39
40
41
42
43
44
body	{
				background-color:	rgba(0,	0,	0,	0.221);
				width:	100%;
 margin: 0 auto; 
				padding:	0	20px	20px	20px;
}
header	{
				font-size:	4rem;	
				line-height:	0;	
				letter-spacing:	1px;
				text-align:	center;	
				display:	flex;
				height:	50px;	
				padding-top:	20.15px;
				background-color:	#db8e1a;
}
h2	{
				font-size:	2rem;	
				flex:	1;	
				text-transform:	uppercase;
}
nav	{
				background-color:	#dd4646;
				line-height:	1;
				height:	1rem;
				display:inline-block;	
				padding:	1%;	
				font-size:	3rem;
				height:	inherit;	
				width:	100%;
				text-transform:	uppercase;	
				color:	black;
}
nav	button	{
				height:	2rem;
				width:	10rem;
				font-size:	1rem;
}
aside	{
				visibility:	hidden;
				width:	100%;
				letter-spacing:	1px;
				text-align:	center;
83
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
				display:	block;
				position:	fixed;
 top: 0;
				right:	0;
				width:	180px;
				height:	100%;
				background-color:	#c4bce2;
				padding:	50px;
}
section	{
				background-color:	rgb(250,	250,	224);		
 padding: 1rem;
}
.Painel	{
				border:	0.5rem	outset	pink;
				box-shadow:	0	0	0	1rem	skyblue;
				outline:	1rem	solid	skyblue;
				border-radius:	5px;
 margin: 2rem;
 padding: 1rem;
				outline-offset:	0.5rem;
				max-width:	220px;
				background-color:	black;
}
.Painel	h2	{
				color:white;
				text-align:	right;
}
.PainelCentral{
				max-width:	220px;
				border:	0.5rem	outset	pink;
				box-shadow:	0	0	0	1rem	skyblue;
				outline:	1rem	solid	skyblue;
				border-radius:	5px;
 margin: 2rem;
 padding: 1rem;
				outline-offset:	0.5rem;
}
footer{
				font-size:	16px;
				line-height:	2;
				letter-spacing:	1px;
				background-color:	#bfbaba;
}
Fonte: a autora.
84
Na	folha	de	estilo	apresentada	no	Quadro	14	e	aplicado	no	código	html	do	Quadro	
15,	são	utilizados	diferentes	tipos	de	seletores	CSS	para	estilizar	os	elementos	HTML.
•	 O	seletor	"body"	é	utilizado	para	definir	estilos	que	serão	aplicados	ao	corpo	da	página	
HTML como um todo, como a cor de fundo e o espaçamento interno.
•	 O	seletor	"header"	é	utilizado	para	definir	estilos	específicos	para	o	cabeçalho	da	pá-
gina,	como	o	tamanho	da	fonte,	a	cor	de	fundo	e	o	espaçamento	interno.
•	 O	seletor	"h2"	é	utilizado	para	definir	estilos	específicos	para	todos	os	elementos	HTML	
do	tipo	"h2"	na	página,	como	o	tamanho	da	fonte,	a	flexibilidade	e	a	transformação	de	
texto.
•	 O	seletor	"nav"	é	utilizado	para	definir	estilos	específicos	para	a	barra	de	navegação,	
como	a	cor	de	fundo,	a	altura,	o	tamanho	da	fonte	e	a	transformação	de	texto.
•	 O	seletor	 "nav	button"	é	utilizado	para	definir	estilos	específicos	para	os	botões	da	
barra	de	navegação,	como	a	altura,	a	largura	e	o	tamanho	da	fonte.
•	 O	seletor	"aside"	é	utilizado	para	definir	estilos	específicos	para	a	barra	lateral,	como	a	
visibilidade,	o	alinhamento,	a	posição	e	a	cor	de	fundo.
•	 O	seletor	"section"	é	utilizado	para	definir	estilos	específicos	para	todas	as	seções	da	
página HTML, como a cor de fundo e o espaçamento interno.
•	 Os	seletores	".Painel"	e	".PainelCentral"	são	classes	CSS	que	foram	adicionadas	aos	
elementos	HTML	<div>	com	a	finalidade	de	estilizá-los	de	forma	específica,	como	a	
largura	máxima,	a	borda,	a	sombra	e	o	preenchimento.
•	 O	seletor	"footer"	é	utilizado	para	definir	estilos	específicos	para	o	rodapé	da	página,	
como	a	cor	de	fundo,	o	tamanho	da	fonte,	a	linha	de	altura	e	a	transformação	de	texto.
Esses	são	apenas	alguns	exemplos	de	seletores	CSS	que	podem	ser	utilizados	
para	estilizar	elementos	HTML	de	maneira	flexível	e	personalizada.
Quadro 15 - Código HTML do arquivo index.html estilizado
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE	html>
<html>
<head>
				<title>	Calculadora	</title>
				<link	rel="stylesheet"	href="styles/style.css"></head>
<body>
				<header>
								<h2>Título	Principal	</h2>
				</header>
				<nav>
												<button>Home</button>
												<button>Sobre</button>
												<button>Produtos</button>
												<button>Contato</button>
85
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
				</nav>
				<aside>
								<h3>	AJUDA	</h1>
												<h4>	Como	usar	a	calculadora	</h4>
				</aside>
				<section>
								<header	class="Painel">
												<h2>1000,00	</h2>
								</header>
								<article	class="PainelCentral">
												<img	src="imagens/sete.png"	height="50px">
												<img	src="imagens/oito.png"	height="50px">
												<img	src="imagens/nove.png"	height="50px">
												<img	src="imagens/mais.png"	height="50px">
												<br>
												<img	src="imagens/quatro.png"	height="50px">
												<img	src="imagens/cinco.png"	height="50px">
												<img	src="imagens/seis.png"	height="50px">
												<img	src="imagens/menos.png"	height="50px">
												<br>
												<img	src="imagens/um.png"	height="50px">
												<img	src="imagens/dois.png"	height="50px">
												<img	src="imagens/tres.png"	height="50px">
												<img	src="imagens/multiplicacao.png"	height="50px">
												<br>
												<img	src="imagens/zero.png"	height="50px">
												<img	src="imagens/virgula.png"	height="50px">
												<img	src="imagens/igual.png"	height="50px">
												<img	src="imagens/dividir.png"	height="50px">
												<br>
								</article>
								<footer>
												<h5>	Explicação	das	Operações	Comuns:	</h5>
												<ol>
																<li>	Soma	é	nun1+nun2	=	resultado	</li>
																<li>	Subtração	é	nun1-num2	=	resultado	</li>
												</ol>
								</footer>
				</section>
				<footer>
								<h5>Copyright	©	2022	-	autora	</h5>
				</footer>
</body>
</html>
Fonte: a autora.
86
Concluímos nossa introdução ao CSS, essencial para termos uma base sólida 
antes	de	começarmos	a	trabalhar	com	o	framework	Bootstrap	5.	Ao	compreender	as	
principais	propriedades	e	seletores	do	CSS,	poderemos	utilizar	as	funcionalidades	ofe-
recidas	pelo	Bootstrap	de	forma	mais	eficiente	e	entendermos	melhor	como	funcionam	
os	estilos	pré-definidos	que	serão	utilizados	em	nosso	projeto.	Com	o	conhecimento	
adquirido,	estamos	prontos	para	explorar	as	vantagens	do	Bootstrap	5	e	criar	páginas	
web	mais	sofisticadas	e	responsivas.
87
Neste tópico, você aprendeu:
•	 A	sintaxe	básica	de	uma	regra	CSS	é	composta	por	um	seletor,	chaves	e	declarações	
que	especificam	a	propriedade	e	o	valor	desejados.	O	seletor	 identifica	o	elemento	
HTML	a	ser	estilizado,	enquanto	a	declaração	contém	a	propriedade	a	ser	modificada	
e seu valor. 
• Uma regra CSS pode conter uma ou mais declarações, e múltiplas regras podem ser 
aplicadas	ao	mesmo	elemento	HTML.	A	sintaxe	de	uma	regra	CSS	é	composta	por	
quatro elementos principais: o seletor, a declaração, a propriedade e o valor da pro-
priedade.
•	 Para	criar	regras	CSS	corretamente,	é	importante	seguir	algumas	diretrizes	básicas,	
como	inserir	ponto	e	vírgula	ao	final	de	cada	declaração,	envolver	o	conjunto	de	de-
clarações	com	chaves	e	utilizar	vírgula	para	atribuir	o	mesmo	conjunto	de	regras	a	
mais de um seletor. 
•	 Os	seletores	em	CSS	permitem	selecionar	e	estilizar	elementos	HTML	específicos	em	
uma	página	web.	Existem	vários	tipos	de	seletores	em	CSS,	 incluindo	seletores	de	
elemento,	classe,	ID,	atributo,	descendente	e	filho	direto.	Algumas	das	propriedades	
CSS	mais	importantes	incluem	background,	background-color,	color,	text-align,	line-
-height,	font-family,	font-size,	margin,	padding,	border,	width,	height	e	display.
•	 A	propriedade	"background"	é	uma	das	mais	versáteis	do	CSS,	permitindo	a	definição	
de várias características visuais para o plano de fundo de um elemento HTML, como 
cor,	imagem,	gradiente,	repetição	e	posicionamento.	A	propriedade	"background-co-
lor"	é	usada	para	definir	a	cor	de	fundo	de	um	elemento	em	CSS,	e	pode	ser	especifi-
cada	de	várias	maneiras,	como	o	nome	da	cor,	o	código	hexadecimal	ou	o	valor	RGB.
•	 Formulários	são	utilizados	para	realizar	a	interação	com	os	usuários,	compreendemos	
a diferença entre os formulários web e uma página HTML tradicional. Os formulários 
enviam os dados coletados para um destino e o HTML é estático. Criamos um formu-
lário de login para compreender a forma de entrada de dados.
• Compreendemos o conceito do DOM, uma representação do documento HTML em 
forma de árvore de nós, que nada mais é uma forma de representar a página web 
no paradigma de orientação a objeto. Entendemos como selecionar e manipular os 
elementos	do	objeto	DOM	e	realizar	o	gerenciamento	dos	atributos	dos	elementos	
HTML.
RESUMO DO TÓPICO 2
88
AUTOATIVIDADE
1	 “O	uso	de	HTML	válido	para	metadados	de	páginas	garante	que	o	Google	possa	usar	
os	metadados	 conforme	 documentado.	 O	 Google	 tenta	 entender	 o	 HTML	mesmo	
quando ele é inválido ou inconsistente com o padrão HTML, mas os erros na mar-
cação podem causar problemas com a forma como seus metadados são usados na 
Pesquisa	Google.	O	principal	elemento	para	especificar	metadados	sobre	uma	página	
é	o	elemento	<head>	de	um	documento	HTML.	Se	você	usar	um	elemento	inválido	no	
elemento	<head>,	o	Google	ignorará	todos	os	elementos	que	aparecem	depois	dele.”	
Sobre	os	metadados	da	página	que	são	 incluídos	no	elemento	 <head>,	 assinale	a	
alternativa CORRETA:
Fonte: https://developers.google.com/search/docs/crawling-
indexing/valid-page-metadata.	Acesso	em:	15	dez.	2022.
a)	 (			)	 O	elemento	<link>	realiza	a	conexão	entre	dois	recursos,	podendo	ser	externos	
ou	hiperlinks.	Para	incluir	um	arquivo	.css	utilizamos	essa	tag.
b)	 (			)	 O	elemento	<script>	é	utilizado	apenas	para	incluir	diretamente	a	codificação	do	
script,	para	poder	colocar	um	arquivo	script	será	necessário	utilizar	o	elemento	
<link>.
c)	 (			)	 O	elemento	<meta>	é	um	elemento	genérico	que	faz	a	mesma	coisa	que	os	ele-
mentos	<base>,	<link>,	<script>,	<style>	e	<title>.
d)	 (			)	 O	elemento	<title>	dentro	da	tag	<head>	adiciona	um	título	no	corpo	documento	
HTML e é apresentado na tela pelo navegador..
2	 Muitos	 sites	 contêm	 código	 HTML	 como:	 <div	 id="nav">	 <div	 class="header">	 <div	
id="footer">	para	indicar	navegação,	cabeçalho	e	rodapé.	Em	HTML	existem	alguns	
elementos	semânticos	que	podem	ser	usados			para	definir	diferentes	partes	de	uma	
página	web.  Com	base	 nas	 definições	 dos	 elementos	 de	 separação	 de	 conteúdo,	
analise as sentenças a seguir:
Fonte: https://www.w3schools.com/html/html5_semantic_
elements.asp.	Acesso	em:	15	dez.	2022.
I-	 O	elemento	<section>	é	uma	seção	genérica,	geralmente	com	um	título.	Objetivo	
agrupar	conteúdos	semelhantes	e	não	independentes.
II-	 O	elemento	<nav>	é	uma	seção	da	página	que	aponta	para	outra	página	ou	outras	
áreas	da	página	(links	de	navegação).
III-	 O	elemento	<header>	inclui	um	conteúdo	introdutório	da	página	ou	seção.	Podendo	
ser	utilizando	os	elementos	<h1>,	<h2>,	<h3>,	<h4>,	<h5>	e	<h6>	para	mesma	função.
https://developers.google.com/search/docs/crawling-indexing/valid-page-metadata
https://developers.google.com/search/docs/crawling-indexing/valid-page-metadata
https://www.w3schools.com/html/html5_semantic_elements.asp
https://www.w3schools.com/html/html5_semantic_elements.asp
89
Assinale a alternativa CORRETA:
a)	 (			)	 As	sentenças	I	e	II	estão	corretas.
b)	 (			)	 Somente	a	sentença	II	está	correta.
c)	 (			)	 As	sentenças	I	e	III	estão	corretas.
d)	 (			)	 Somente	a	sentença	III	está	correta.
3	 “Em	CSS,	os	 seletores	 são	usados	 		para	direcionar	os	elementos	HTML	em	nossas	
páginas	da	web	que	queremos	estilizar.	Há	uma	grande	variedade	de	seletores	CSS	
disponíveis,	permitindo	uma	precisão	refinada	ao	selecionar	os	elementos	a	serem	
estilizados.”	 De	 acordo	 com	osconceitos	 sobre	 seletores	 de	 elementos	 do	HTML,	
classifique	V	para	as	sentenças	verdadeiras	e	F	para	as	falsas:
Fonte: https://developer.mozilla.org/pt-BR/docs/Learn/CSS/Building_
blocks/Selectors. Acesso em: 15 dez. 2022.
(   )	Podemos	criar	um	seletor	baseado	no	nome	do	elemento,	para	incluir	na	regra	de-
vemos	incluir	$	na	frente,	por	exemplo	regra	para	o	elemento	<p>	seria	$p	{	…	}.
(   )	Utilizando	#painel	como	seletor,	será	aplicado	a	regra	para	o	elemento	com	id	com	
valor painel.
(   )	O	seletor	baseado	no	atributo	do	elemento	deve	ser	incluído	na	regra	CSS	com	nome	
do	elemento	seguindo	de	chaves	contendo	o	atributo,	por	exemplo	para	acessar	o	
atributo	do	elemento	<img	src="myimage.png">	a	regra	ficaria	img{myimage.png}.
Assinale a alternativa que apresenta a sequência CORRETA:
a)	 (			)	 V	–	F	–	F.
b)	 (			)	 V	–	F	–	V.
c)	 (			)	 F	–	V	–	F.
d)	 (			)	 F	–	F	–	V.
4	 A	seguir	veremos	a	imagem	da	sintaxe	de	um	elemento	HTML:
 
Fonte: https://web.fe.up.pt/~ssn/disciplinas/cdi/imgs/element.png. Acesso em: 15 dez. 2022.
https://developer.mozilla.org/pt-BR/docs/Learn/CSS/Building_blocks/Selectors
https://developer.mozilla.org/pt-BR/docs/Learn/CSS/Building_blocks/Selectors
https://web.fe.up.pt/~ssn/disciplinas/cdi/imgs/element.png
90
Disserte	sobre	a	utilização	desse	elemento	e	sobre	os	componentes	presentes	no	ele-
mento da imagem.
5	 “Na	medida	que	se	aprende	mais	sobre	HTML	—	lendo	sobre	recursos,	observando	
exemplos,	etc.	—	é	normal	se	deparar	com	um	assunto:	a	importância	de	se	utilizar	
a	semântica	HTML	(as	vezes	chamada	de	POSH,	ou	Plain	Old	Semantic	HTML).	Esse	
assunto	significa	utilizar	corretamente	os	elementos	HTML,	cada	qual	com	seu	pro-
pósito,	o	máximo	que	for	possível.	Você	deve	estar	se	perguntando	porque	isso	é	tão	
importante.	Afinal,	é	possível	usar	uma	combinação	de	CSS	e	JavaScript	que	faz	com	
que qualquer elemento HTML se comporte da forma que você quiser.”
	 Neste	contexto,	disserte	sobre	os	benefícios	de	utilização	de	elementos	semânticos	
no HTML.
Fonte: https://developer.mozilla.org/pt-BR/docs/Learn/Accessibility/
HTML. Acesso em: 15 dez. 2022.
https://developer.mozilla.org/pt-BR/docs/Learn/Accessibility/HTML
https://developer.mozilla.org/pt-BR/docs/Learn/Accessibility/HTML
91
TÓPICO 3 — 
ESTILIZAÇÃO COM FRAMEWORK 
BOOTSTRAP
UNIDADE 1
1 INTRODUÇÃO
O	Bootstrap	é	um	framework	front-end	de	código	aberto	que	permite	o	desen-
volvimento	de	websites	e	aplicações	web	com	rapidez	e	eficiência.	Ele	foi	criado	pela	
equipe do Twitter e é usado por muitos desenvolvedores em todo o mundo.
O Bootstrap inclui um conjunto de ferramentas para a criação de designs res-
ponsivos	e	móveis,	como	grade	flexível,	componentes	de	interface	do	usuário	pré-pro-
jetados	e	CSS	pré-definido.	Essas	ferramentas	permitem	que	os	desenvolvedores	criem	
interfaces de usuário atraentes e funcionais com facilidade, sem precisar escrever có-
digo	CSS	ou	JavaScript	do	zero.
Além disso, o Bootstrap é compatível com a maioria dos navegadores e é alta-
mente	personalizável,	permitindo	que	os	desenvolvedores	adaptem	facilmente	o	design	
para	atender	às	necessidades	específicas	de	seus	projetos.	Como	resultado,	o	Bootstrap	
se tornou uma das ferramentas mais populares e úteis para desenvolvedores front-end 
e	é	amplamente	utilizado	em	projetos	web	de	todos	os	tipos	e	tamanhos.
2 FRAMEWORK BOOTSTRAP 5: CONCEITOS E 
FUNDAMENTOS
O	Bootstrap	5	é	a	versão	mais	recente	do	popular	framework	front-end	de	códi-
go	aberto,	Bootstrap.	Ele	foi	lançado	em	maio	de	2021	e	traz	várias	melhorias	e	recursos	
novos	em	relação	à	versão	anterior,	Bootstrap	4.
Uma	das	principais	mudanças	no	Bootstrap	5	é	a	remoção	do	jQuery	como	de-
pendência.	Agora,	o	Bootstrap	utiliza	apenas	JavaScript	nativo,	o	que	torna	as	páginas	
mais	leves	e	mais	rápidas.	Além	disso,	o	Bootstrap	5	também	apresenta	melhorias	no	
sistema	de	grade,	tornando-o	mais	flexível	e	fácil	de	usar.	Isso	permite	que	os	desenvol-
vedores	criem	layouts	mais	complexos	e	personalizados	com	menos	esforço.
Outras	melhorias	no	Bootstrap	5	 incluem	aprimoramentos	nos	componentes	
existentes,	como	o	menu	de	navegação,	o	carrossel	e	o	modal,	além	da	adição	de	no-
vos	componentes,	como	o	switch	e	o	toast.	A	personalização	também	foi	aprimorada,	
tornando mais fácil do que nunca ajustar as cores, fontes e estilos do Bootstrap para se 
adequar ao design do projeto.
92
Em	resumo,	o	Bootstrap	5	é	uma	atualização	importante	do	framework	front-
-end mais popular do mundo, que oferece aos desenvolvedores um conjunto de fer-
ramentas	ainda	mais	poderoso	e	flexível	para	criar	designs	responsivos	e	móveis	para	
websites e aplicativos web modernos.
2.1 INTRODUÇÃO AO FRAMEWORK BOOTSTRAP 5
O	framework	Bootstrap	5	oferece	uma	estrutura	invisível	que	ajuda	na	criação	
de	layouts	responsivos.	Para	construir	essa	estrutura,	podemos	utilizar	o	elemento	<div>	
e	três	classes	principais:	largura	fixa	(.container),	ponto	de	interrupção	(.container-«bre-
akpoint»)	e	fluida	(.container-fluid).
O	container	é	uma	classe	importante	do	framework	Bootstrap	5,	pois	permite	
criar	um	elemento	de	contêiner	que	agrupa	o	conteúdo	da	página	em	uma	largura	fixa	
ou	fluida,	além	de	controlar	o	comportamento	em	diferentes	tamanhos	de	tela.
Ao	utilizar	a	classe	.container-fluid,	o	container	ocupará	toda	a	largura	da	janela	
do navegador, sem limitações de largura. Já com a classe .container, temos um contai-
ner	de	largura	fixa	com	um	valor	padrão	de	100%	para	telas	menores	que	576px	e	uma	
largura	máxima	de	1140px	para	telas	maiores.
Outro recurso importante são as classes de ponto de interrupção, que permitem 
definir	diferentes	tamanhos	de	container	em	diferentes	tamanhos	de	tela,	conforme	de-
finido	nos	breakpoints.	Por	exemplo,	podemos	definir	a	classe	.container-sm	para	telas	
menores	que	576px,	.container-md	para	telas	maiores	que	576px	e	menores	que	768px,	
.container-lg	para	telas	maiores	que	768px	e	menores	que	992px,	e	assim	por	diante.
O	conceito	de	grid	também	é	fundamental	para	a	criação	de	layouts	responsi-
vos	com	o	framework	Bootstrap	5.	Em	resumo,	a	grid	é	composta	por	três	elementos	
principais:	colunas	dentro	de	linhas	e	linhas	dentro	de	containers.
O	container	é	o	elemento	mais	externo	da	grid	e	possui	diversas	classes	que	
determinam	sua	 largura	e	comportamento	em	diferentes	tamanhos	de	tela.	A	classe	
".container"	é	a	 largura	fixa	padrão,	que	mantém	o	conteúdo	centralizado	e	com	uma	
Para entender melhor como utilizar o container no seu projeto e 
aproveitar ao máximo seus recursos, recomendamos acessar o 
link https://getbootstrap.com/docs/5.0/layout/containers/ e con-
ferir a documentação oficial do Bootstrap 5.
DICA
93
largura	máxima	definida.	Já	a	classe	".container-fluid"	faz	com	que	o	container	ocupe	
toda	a	largura	da	janela,	adaptando-se	automaticamente	a	diferentes	tamanhos	de	tela.
Dentro	do	container,	podemos	criar	linhas	com	a	classe	".row",	que	contém	as	
colunas	do	layout.	As	colunas	são	definidas	com	a	classe	".col"	seguida	do	número	de	
colunas	que	ela	deve	ocupar	em	cada	tamanho	de	tela.	Por	exemplo,	uma	coluna	com	
a	classe	".col-12"	ocupará	12	colunas	em	telas	pequenas,	enquanto	uma	coluna	com	a	
classe	".col-md-6"	ocupará	6	colunas	em	telas	médias	ou	maiores.
O elemento <span> é semelhante ao elemento <div>, mas com 
uma diferença crucial: o elemento <div> é um elemento de nível 
de bloco, enquanto o elemento <span> é um elemento em linha.
Ao utilizar as classes do sistema de grid do Bootstrap 5, podemos 
criar layouts flexíveis e responsivos para nossos formulários e ou-
tros elementos na página. O uso correto dessas classes ajuda a 
ajustar o conteúdo da página para diferentes tamanhos de tela, 
permitindo uma melhor experiência para o usuário. 
Para saber mais sobre o sistema de grid do Bootstrap 5, confira o 
link: https://getbootstrap.com/docs/5.0/layout/grid/.
DICA
Os	pontos	de	interrupção	(breakpoints)	são	um	conceito	importante	no	design	
responsivo	e	determinam	como	o	layout	deve	se	comportar	em	diferentesdispositivos	
ou	tamanhos	de	tela.	No	Bootstrap	5,	existem	seis	pontos	de	interrupção,	também	co-
nhecidos	como	níveis	de	grade.	
A Tabela 2 apresenta esses pontos de interrupção e suas respectivas dimen-
sões	em	pixels.	É	importante	compreender	como	utilizar	esses	pontos	de	interrupção	
para	criar	layouts	que	se	adaptem	a	diferentes	dispositivos	e	tamanhos	de	tela.	
Tabela 2 – Níveis de grade
Fonte: Bootstrap (2023, s.p.).
Ponto de interrupção (Breakpoint) Infixo	de	classe Dimensões
Muito	pequeno	(Extra	small) - <576px
Pequena	(Small) sm ≥576px
Médio	(Medium) md ≥768px
Grande	(Large) lg ≥992	px
Extra	grande	(Extra	large) xl ≥1200px
Extra	extra	grande	(Extra	extra	large) xxl ≥1400px
94
Para mais informações sobre os pontos de interrupção do Boots-
trap 5, consulte a documentação oficial em: https://getbootstrap.
com/docs/5.0/layout/grid/#breakpoints. Lá você encontrará deta-
lhes sobre as dimensões de tela correspondentes a cada ponto de 
interrupção, além de exemplos de uso e dicas para adaptar seu 
layout em diferentes dispositivos. É importante dominar o uso dos 
breakpoints para garantir que seu site seja visualizado corretamen-
te em qualquer dispositivo e proporcionar a melhor experiência de 
usuário possível.
DICA
Ótimo!	Já	realizamos	a	introdução	ao	framework	Bootstrap	5	e	aos	seus	princi-
pais	conceitos.	Agora,	vamos	continuar	conhecendo	as	classes	principais	do	framework	
e	os	estilos	pré-definidos	disponíveis	para	utilização,	sem	a	necessidade	de	criar	regras	
CSS	do	zero.
2.2 CLASSES DO FRAMEWORK BOOTSTRAP 5
O	Bootstrap	5	possui	diversas	classes	para	estilização	de	elementos	HTML,	mas	
algumas das principais classes incluem:
• Classes de Grid: As classes .container, .row e .col são as principais classes de grid 
utilizadas	para	definir	a	estrutura	de	layout	do	site.
•	 Classes	de	Tipografia:	As	classes	.h1,	.h2,	.h3,	.h4,	.h5	e	.h6	são	utilizadas	para	de-
finir	os	tamanhos	de	cabeçalho,	enquanto	as	classes	.lead,	.text-muted	e	.text-justify	
são	utilizadas	para	estilizar	o	conteúdo	de	texto.
• Classes de Cores:	As	classes	.bg-primary,	.bg-secondary,	.bg-success,	.bg-danger,	
.bg-warning	e	.bg-info	são	utilizadas	para	definir	as	cores	de	fundo	dos	elementos.
• Classes de Botões:	 As	 classes	 .btn,	 .btn-primary,	 .btn-secondary,	 .btn-success,	
.btn-danger,	.btn-warning	e	.btn-info	são	utilizadas	para	estilizar	os	botões	do	site.
• Classes de Formulários:	As	classes	.form-control,	.form-label,	.form-check	e	.form-
select	são	utilizadas	para	estilizar	elementos	de	formulários	como	campos	de	entrada	
de dados, rótulos e botões de opção.
Há	uma	variedade	de	classes	no	Bootstrap	5	que	podem	ser	utilizadas	para	es-
tilizar	elementos	HTML,	sendo	que	as	mencionadas	anteriormente	são	apenas	algumas	
das mais importantes. Agora, vamos nos concentrar nas classes do sistema de grid para 
organizar	a	estilização	da	nossa	tela	de	cadastro	de	forma	eficiente	e	responsiva.	Nesta	
seção,	vamos	conhecer	três	classes	essenciais:	grid,	d-grid	e	d-flex.
A	classe	é	a	grid	é	um	dos	principais	recursos	do	framework	Bootstrap	5	para	
criação	de	layouts	responsivos	em	páginas	web.	Com	a	utilização	da	classe	grid,	é	pos-
sível	criar	um	sistema	de	colunas	e	linhas	que	se	ajustam	automaticamente	de	acordo	
95
com	o	tamanho	da	tela	em	que	a	página	é	exibida.	Na	classe	grid,	os	elementos	HTML	
são	organizados	em	um	sistema	de	grade	que	é	dividido	em	12	colunas.	As	colunas	
podem	ser	agrupadas	em	linhas,	permitindo	que	os	elementos	sejam	organizados	de	
forma	harmônica	e	equilibrada	na	página.
A	classe	grid	oferece	grande	flexibilidade,	permitindo	a	personalização	de	diver-
sos	pontos	de	interrupção	(breakpoints),	possibilitando	que	o	layout	da	página	se	adap-
te	a	diferentes	dispositivos,	como	desktops,	tablets	e	smartphones.	É	uma	ferramenta	
poderosa	para	criar	layouts	responsivos	e	flexíveis	em	páginas	web,	proporcionando	aos	
usuários	uma	experiência	mais	agradável	e	intuitiva.
O uso do grid no Bootstrap 5 é bastante simples. Primeiramente, precisamos 
adicionar	um	elemento	com	a	classe	"container"	para	envolver	as	suas	colunas.	Dentro	
deste	container,	podemos	criar	linhas	(elementos	com	a	classe	"row")	que,	por	sua	vez,	
contêm	as	suas	colunas	(elementos	com	a	classe	"col").
Podemos	definir	o	tamanho	de	cada	coluna	usando	as	classes	"col-{tamanho}"	
para	cada	ponto	de	interrupção	(breakpoint)	do	grid,	onde	"tamanho"	pode	ser	um	nú-
mero	de	1	a	12.	Por	exemplo,	"col-6"	define	uma	coluna	que	ocupa	6	espaços	de	grade	
em	todos	os	tamanhos	de	tela.	Para	ajustar	o	tamanho	de	uma	coluna	para	um	deter-
minado	ponto	de	interrupção,	você	pode	utilizar	a	classe	"col-{tamanho}-{breakpoint}".	
Por	exemplo,	 "col-6-md"	define	uma	coluna	que	ocupa	6	espaços	de	grade	em	telas	
maiores	que	768	pixels.
Além	disso,	é	possível	adicionar	outras	classes	de	modificação,	como	"offset-{-
tamanho}",	para	definir	um	espaço	em	branco	à	esquerda	da	coluna,	ou	"order-{ordem}",	
para	definir	a	ordem	de	exibição	da	coluna.
As	linhas	e	colunas	do	sistema	de	grid	do	Bootstrap	são	usadas	para	organizar	
e	estruturar	o	layout	de	uma	página	web.	As	linhas	definem	o	contêiner	que	agrupa	as	
colunas,	enquanto	as	colunas	são	os	blocos	de	construção	do	layout,	permitindo	que	o	
conteúdo seja dividido em várias áreas com larguras diferentes, dependendo da quan-
tidade de colunas que são atribuídas a cada uma delas. Dessa forma, é possível criar 
layouts	flexíveis	e	responsivos	que	se	adaptam	a	diferentes	tamanhos	de	tela.
Ambas as formas são aceitas no Bootstrap 5 para definir uma coluna 
com largura de 6 colunas em dispositivos com largura média. A ordem 
das classes não importa, pois o sistema de grid do Bootstrap usa o 
conceito de ordem flexível (flexbox), permitindo que as colunas sejam 
organizadas de forma dinâmica. Portanto, ambas as formas "col-6-md" 
e "col-md-6" funcionam corretamente.
CURIOSIDADE
96
Agora	vamos	conhecer	a	classe	d-grid,	uma	das	classes	de	display	que	per-
mite	a	criação	de	layouts	com	base	em	uma	grade	virtual,	similar	à	grade	utilizada	no	
sistema	de	grid	do	framework.	A	principal	diferença	é	que,	ao	contrário	do	sistema	de	
grid	convencional,	o	d-grid	permite	a	criação	de	layouts	bidimensionais,	com	elementos	
dispostos	tanto	em	linhas	quanto	em	colunas.
O	d-grid	é	particularmente	útil	para	a	criação	de	layouts	mais	complexos,	que	
exigem	uma	disposição	mais	livre	dos	elementos	na	página.	Com	essa	classe	de	display,	
é	possível	definir	não	apenas	a	posição	dos	elementos	na	página,	mas	também	o	tama-
nho	e	a	proporção	de	cada	um	deles,	criando	layouts	mais	dinâmicos	e	personalizados.
O	d-grid	utiliza	uma	sintaxe	própria	para	definir	a	disposição	dos	elementos	na	
página,	e	é	composto	por	diversas	classes	auxiliares,	que	permitem	a	criação	de	layouts	
responsivos	e	adaptáveis	a	diferentes	tamanhos	de	tela
Enquanto o sistema de grid padrão do Bootstrap funciona com base em uma 
grade	fixa,	onde	as	colunas	têm	largura	fixa	e	predefinida,	o	D-grid	permite	criar	grids	
dinâmicos	com	colunas	que	podem	ter	largura	e	altura	variáveis,	tornando	possível	criar	
layouts	mais	criativos	e	personalizados.
Outra diferença é que, enquanto o sistema de grid padrão é baseado em classes 
que	indicam	o	número	de	colunas	que	um	elemento	deve	ocupar	(por	exemplo,	"col-
6"	para	uma	coluna	que	ocupa	metade	da	largura	disponível),	o	D-grid	é	baseado	em	
classes	que	especificam	as	dimensões	de	uma	célula	da	grade	(por	exemplo,	"col-md-6	
row-md-2"	para	uma	célula	que	ocupa	metade	da	largura	do	grid	e	duas	linhas	de	altura	
em	dispositivos	médios).
O d-grid é uma evolução do sistema de grid do Bootstrap que permite 
maior flexibilidade e personalização na criação de layouts de página. 
No entanto, é importante lembrar que essa funcionalidade ainda está 
em desenvolvimento e pode sofrer alterações futuras.
IMPORTANTE
Por	fim,	abordaremos	a	classe	d-flex	que	é	uma	das	mais	utilizadas	no	Boots-
trap	5	para	a	criação	de	layouts	flexíveis	e	responsivos	em	páginas	web.	Ela	define	um	
elemento	como	flexível,permitindo	que	seus	filhos	sejam	organizados	em	linhas	ou	co-
lunas e distribuídos de maneira uniforme.
Com	a	classe	d-flex,	é	possível	criar	estruturas	de	 layout	que	se	adaptam	de	
acordo	com	o	tamanho	da	tela	do	usuário,	permitindo	uma	melhor	experiência	de	nave-
gação	em	diferentes	dispositivos,	como	desktops,	tablets	e	smartphones.
97
Além	disso,	a	classe	d-flex	também	oferece	outras	propriedades	que	podem	
ser	utilizadas	para	personalizar	ainda	mais	o	layout,	como	align-items,	justify-content,	
flex-wrap,	entre	outras.
É	importante	ressaltar	que	a	classe	d-flex	deve	ser	utilizada	em	conjunto	com	
outras classes do Bootstrap 5, como as classes de grid e as classes de estilo, para que o 
layout	seja	totalmente	responsivo	e	adaptável	em	diferentes	dispositivos.
É	 importante	 que	 além	de	 conhecermos	 a	 teoria	 do	 framework	Bootstrap	 5,	
também	possamos	compreender	sua	utilização	por	meio	de	exemplos	práticos.	Por	isso,	
vamos	colocar	a	mão	na	massa	e	estilizar	os	formulários	de	login	e	cadastro.
2.3 CASO DE USO BOOTSTRAP 5: CRIAR TELA DE 
CADASTRO DE USUÁRIO
Vamos iniciar a implementação da tela de cadastro de usuário com o objetivo 
de	alcançar	um	layout	semelhante	ao	apresentado	na	Figura	13.	Para	isso,	utilizaremos	
campos de formulário e classes do sistema de grid do Bootstrap 5.
Com	essa	abordagem	prática,	poderemos	experimentar	as	classes	e	recursos	
do	Bootstrap	5	em	tempo	real	e	ter	uma	melhor	compreensão	de	como	utilizá-los	para	
criar	layouts	responsivos	e	elegantes.	Vamos	lá!
Figura 13 - Layout tela de cadastro
Fonte: a autora.
Para	utilizar	o	framework	Bootstrap	5	em	nossos	projetos,	é	necessário	indicar	a	
folha	de	estilos	correspondente.	Uma	das	formas	mais	comuns	de	fazer	isso	é	através	da	
rede	de	distribuição	de	conteúdo	(ou	CDN		que	significa	“Content	Delivery	Network”,	em	
inglês),	que	possibilita	o	carregamento	remoto	do	framework	e	seus	componentes.	Essa	
98
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE	html>
<html	lang="pt-br">
<head>
<meta	charset=utf-8	/>
<meta	name="viewport"	content="width=device-width,	initial-scale=1">
<title>Formulário	de	Cadastro</title>
<link	href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css"	
rel="stylesheet">
</head>
<body>
<form>
<div	class="container-sm”>
<div	class="row”>
<div	class="col-sm-10">
<h1>Cadastro</h1>	
</div>
abordagem apresenta diversas vantagens, como a facilidade de implementação, a garantia 
de	que	sempre	será	utilizada	a	versão	mais	atualizada	do	Bootstrap	e	a	possibilidade	de	
aproveitar os benefícios de escalabilidade e disponibilidade proporcionados por uma CDN.
Usar o Bootstrap CDN em vez de uma instalação local significa que o fra-
mework e seus componentes são carregados remotamente, sem a ne-
cessidade de baixar nenhum arquivo para o seu computador. Para usar 
o CDN, basta fornecer o link para o servidor no atributo href da tag <link>, 
juntamente com type="stylesheet". Também é recomendado sempre usar 
a versão ".min.css" do arquivo CSS, pois é uma versão mais compacta.
No entanto, é importante notar que ao implantar seu site, 
você deve mudar para o uso do arquivo local em seu pro-
jeto para evitar problemas com tempos de carregamento 
lentos ou erros em sua aplicação.
Para obter mais informações sobre o framework Bootstrap 5, confira 
o seguinte link: https://getbootstrap.com/docs/5.0/getting-started/
introduction/.
IMPORTANTE
No	quadro	16,	apresenta-se	um	exemplo	de	código	HTML	de	um	formulário	de	
cadastro	que	utiliza	o	Bootstrap	5.	Os	elementos	com	as	classes	do	Bootstrap	estão	
destacados	em	cinza	no	código.	O	código	utiliza	a	estrutura	de	grid	do	Bootstrap	para	
organizar	os	elementos	em	linhas	e	colunas,	garantindo	que	o	layout	do	formulário	se	
adapte	a	diferentes	tamanhos	de	tela.
Quadro 16 - Formulário de Cadastro em HTML
99
Fonte: a autora.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
</div
<div	class="row”>
<div	class="col-sm-10">
<label>Nome:</label>	
<input	id="nome_pessoa"	type="text"	/>	
</div>
</div>
<div	class="row”>
<div	class="col-sm-10">	
<label>E-mail:</label>	
<input	id="nome_login"	type="email"/>	
</div>
</div>
<div	class="row">
															<div	class="col-sm-5">
<div	class="d-flex">
<div	class="row">
													<div	class="col-sm-5">	
<label>Senha:</label>	
<input	id="senha_login"	type="password"	/>	
</div>
<div	class="col-sm-5">	
<label>Confirme	a	Senha:</label>	
<input	id="conf_senha_login"	
type="password"	/>
</div>
							</div>
															</div>
</div>
</div>
<div	class=”row”>
											<div	class="d-grid">	
<div	class="row">
<div	class="col-sm-6">		
											<button>	Cadastrar	</button>
</div>
											</div>
												</div>
</div>
</div>
								</form>
</body>
</html>
100
Ao	utilizar	o	código	presente	no	Quadro	16	para	criar	um	arquivo	HTML,	teremos	
uma	tela	de	cadastro	com	um	layout	similar	ao	apresentado	na	Figura	14.	Esse	formu-
lário	permitirá	a	inserção	de	informações	como	nome,	e-mail,	senha	e	confirmação	de	
senha,	sendo	estilizado	com	as	classes	do	Bootstrap	5	para	torná-lo	mais	atraente	e	
responsivo.	Vale	ressaltar	que	a	utilização	da	estrutura	de	grid	do	Bootstrap	possibilita	a	
adaptação	do	layout	do	formulário	a	diferentes	tamanhos	de	tela,	proporcionando	uma	
melhor	experiência	ao	usuário.	Ademais,	é	importante	destacar	que	o	botão	"Cadastrar"	
poderá	ser	personalizado	com	as	classes	do	Bootstrap,	visando	melhorar	tanto	a	apa-
rência quanto a funcionalidade do formulário.
Figura 14 - Tela de cadastro com sistema de grids
Fonte: a autora.
Agora	que	já	conhecemos	as	principais	classes	do	sistema	de	grid	para	organi-
zar	a	estrutura	dos	conteúdos,	vamos	nos	aprofundar	nas	classes	destinadas	à	entrada	
de	dados	em	formulários,	que	permitem	estilizar	e	customizar	os	elementos	de	formu-
lários	para	garantir	uma	melhor	experiência	do	usuário.
3 BOOTSTRAP 5: CRIANDO FORMULÁRIOS
Neste	 tópico,	vamos	 explorar	 como	estilizar	 os	 formulários	 com	Bootstrap	5,	
aprenderemos	como	utilizar	as	classes	para	personalizar	a	aparência	dos	formulários	e	
como integrar validação de entrada de dados para tornar seus formulários mais robus-
tos	e	seguros.	Com	este	conhecimento,	você	poderá	criar	formulários	profissionais	e	de	
alta qualidade para suas aplicações web.
3.1 CLASSES DE ENTRADA DE DADOS DO BOOTSTRAP 5
As classes de entrada de dados do Bootstrap 5 são uma ferramenta essencial 
para o desenvolvimento de formulários web, oferecendo uma ampla variedade de op-
ções	de	personalização,	validação	de	dados	para	melhorar	 a	 experiência	 do	usuário.	
Essas	classes	de	entrada	de	dados	 incluem	diversos	tipos	de	campos,	 como	textos,	
senhas,	e-mails,	datas,	números,	entre	outros.	Além	disso,	também	é	possível	definir	
validações e formatos de apresentação para cada campo.
101
As	classes	de	entrada	de	dados	são	altamente	customizáveis,	permitindo	que	
os	desenvolvedores	personalizem	a	aparência	e	o	comportamento	dos	campos	de	for-
mulário de acordo com as necessidades do projeto. Com isso, é possível criar interfaces 
de usuário amigáveis e intuitivas, que facilitam a interação do usuário com o sistema.
As classes de entrada de dados do Bootstrap 5 incluem uma ampla variedade 
de	opções	para	criação	de	campos	de	formulário	personalizados.	Algumas	das	princi-
pais classes de entrada de dados disponíveis no Bootstrap 5 são:
• form-control: essa	classe	é	utilizada	para	definir	campos	de	texto,	como	inputs	e	
textareas.	Ela	é	aplicada	a	elementos	como	<input>,	<textarea>	e	<select>;
• form-select: essa	classe	é	utilizada	para	criar	campos	de	seleção,	como	dropdowns.	
Ela	é	aplicada	a	elementos	como	<select>;
• form-range:	essa	classe	é	utilizada	para	criar	campos	de	seleção	de	intervalo,	como	
sliders.	Ela	é	aplicada	a	elementos	como	<input	type="range">;
• form-check: essa	classe	é	utilizada	para	criarcampos	de	seleção,	como	checkboxes	
e	radio	buttons.	Ela	é	aplicada	a	elementos	como	<input	type="checkbox">	e	<input	
type="radio">;
•	 form-file:	essa	classe	é	utilizada	para	criar	campos	de	seleção	de	arquivos.	Ela	é	
aplicada	a	elementos	como	<input	type="file">;
•	 form-floating:	essa	classe	é	utilizada	para	criar	campos	de	formulário	com	labels	
flutuantes.	Ela	é	aplicada	a	elementos	como	<input>	e	<textarea>.
Essas são apenas algumas das principais classes de entrada de dados disponí-
veis	no	Bootstrap	5.	Cada	uma	delas	possui	diversos	atributos	e	opções	de	customiza-
ção,	permitindo	a	criação	de	campos	de	formulário	altamente	personalizados	e	adapta-
dos às necessidades do projeto.
A	classe	form-control	é	uma	das	classes	mais	utilizadas	no	Bootstrap	5	para	
criar	 campos	de	 texto	 personalizados	 em	 formulários	web.	Ao	 aplicá-la	 a	 elementos	
HTML, é possível criar campos de formulário visualmente atraentes e intuitivos para o 
usuário,	além	de	permitir	a	customização	de	diversos	aspectos	do	campo,	como	cor,	ta-
manho	e	tipo	de	fonte.	Para	utilizá-la,	basta	aplicá-la	a	elementos	HTML	como	<input>,	
<textarea>	e	<select>.	O	atributo	id	é	utilizado	para	associar	o	rótulo	do	campo	ao	seu	
respectivo input, permitindo que o usuário clique no rótulo para selecionar o campo.
Além	do	atributo	id,	é	comum	utilizar	o	atributo	name	para	identificar	os	campos	
de formulário e permitir que as informações sejam enviadas ao servidor. Para campos 
de	texto	que	precisam	ser	preenchidos	em	formatos	específicos,	como	datas	ou	núme-
ros,	o	Bootstrap	5	oferece	outras	classes	específicas,	como	form-control-date,	form-
-control-number, entre outras.
No	quadro	17,	você	encontra	um	exemplo	de	código	HTML	que	apresenta	um	
formulário	de	cadastro.	Foram	incluídas	classes	"form-control"	nos	elementos	<input>	
para	estilizá-los.	Os	elementos	com	as	classes	do	Bootstrap	estão	destacados	em	cinza	
102
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<!DOCTYPE	html>
<html	lang="pt-br">
<head>
<meta	charset=utf-8	/>
<meta	name="viewport"	content="width=device-width,	initial-scale=1">
<title>Formulário	de	Cadastro</title>
<link	href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css"	
rel="stylesheet">
</head>
<body>
<form>
<div	class="container-sm”>
<div	class="row”>
<div	class="col-sm-10">
<h1	class="text-center">Cadastro</h1>	
</div>
</div
<div	class="row”>
<div	class="col-sm-10">
<label>Nome:</label>	
<input	class="form-control"	id="nome_pessoa"	name="nome_pessoa"	
type="text"	placeholder="Digite	seu	nome"/>	
</div>
</div>
<div	class="row”>
						<div	class="col-sm-10">	
<label>E-mail:</label>	
<input	class="form-control"	id="nome_login"	name="nome_login"	
type="email"	placeholder="Digite	seu	e-mail"/>	
</div>
</div>
<div	class="row">
<div	class="col-sm-5">
<div	class="d-flex">
<div	class="row">
<div	class="col-sm-5">	
<label>Senha:</label>	
no	código.	Embora	o	botão	"Cadastrar"	ainda	não	esteja	estilizado,	o	layout	do	formulá-
rio	já	é	adaptável	a	diferentes	tamanhos	de	tela	graças	à	estrutura	de	grid	do	Bootstrap.	
Além	disso,	cada	campo	de	entrada	possui	um	placeholder	 indicando	o	que	deve	ser	
preenchido	no	campo.
Quadro 17 - Formulário de Cadastro em HTML
103
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<input	class="form-control"	id="senha_login"	
name="senha_login"	type="password"	placeholder="Digite	a	senha"/>	
</div>
<div	class="col-sm-5">	
<label>Confirme	a	Senha:</label>	
<input	class="form-control"	id="conf_senha_
login"	name="conf_senha_login"	type="password"	placeholder="Digite	novamente	a	senha"/>
</div>
	</div>
					</div>
			</div>
</div>
<div	class=”row”>
														<div	class="d-grid">	
											<div	class="row">
<div	class="col-sm-6">		
<button>	Cadastrar	</button>
</div>
						</div>
					</div>
						</div>
	</div>
</form>
</body>
</html>
Fonte: a autora.
Na	Figura	 15,	é	possível	notar	claramente	as	alterações	 realizadas	no	formu-
lário através das classes do Bootstrap. Os campos de entrada agora possuem bordas 
arredondadas	 e	 dicas	 dentro	 dos	 inputs	 que	 auxiliam	na	 indicação	 do	 que	 deve	 ser	
preenchido.	Além	disso,	os	 labels	dos	campos	foram	posicionados	acima	dos	 inputs,	
melhorando	a	legibilidade	do	formulário	como	um	todo.
Figura 15 - Tela de cadastro com aplicação da classe form-control
Fonte: a autora.
104
3.2 CASO DE USO BOOTSTRAP 5: CRIAÇÃO TELA DE LOGIN
Uma das tarefas mais comuns no desenvolvimento de aplicativos web é a cria-
ção de telas de login. Uma tela de login bem projetada é essencial para a segurança de 
seu aplicativo, pois permite que os usuários se autentiquem de forma segura. 
Neste	tópico,	vamos	explorar	como	usar	o	Bootstrap	5	para	criar	uma	tela	de	
login	eficaz	e	atraente	para	seu	aplicativo	web.	Vamos	ver	como	criar	um	formulário	de	
login	com	campos	de	entrada	de	texto,	botões	e	opções	de	esquecimento	de	senha	e	
registro. 
Aprenderemos	como	personalizar	a	aparência	da	tela	de	login	usando	as	clas-
ses	do	Bootstrap	5	e	poderemos	criar	telas	profissionais	e	de	alta	qualidade	para	seus	
aplicativos	web,	aumentando	a	experiência	do	usuário.	O	resultado	do	layout	da	tela	de	
login pode ser visto na Figura 16. 
Figura 16 – Novo layout tela de login
Fonte: a autora.
Antes de prosseguirmos com a aplicação das novas classes, é importante dar 
uma	olhada	na	aparência	atual	da	tela	do	formulário	de	login	na	Figura	176	e	no	código	
HTML	correspondente	no	Quadro	18.	É	possível	observar	que	as	classes	do	Bootstrap	
já	foram	aplicadas	ao	formulário	de	cadastro	e	estão	destacadas	em	cinza	no	código.
Figura 17 – Tela de login com form-control
Fonte: a autora.
105
Ao	analisar	a	aparência	atual	do	formulário	de	login,	podemos	identificar	quais	
aspectos	precisam	ser	melhorados	e	quais	classes	do	Bootstrap	serão	úteis	para	alcan-
çar o resultado desejado. A análise prévia da aparência e do código permite que possa-
mos	identificar	com	clareza	quais	mudanças	precisam	ser	feitas	e	quais	classes	serão	
necessárias para atingir o resultado desejado.
Quadro 18 – Código da tela do formulário de login com form-control
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<!DOCTYPE	html>
<html>
		<head>
				<meta	charset=utf-8	/>
				<meta	name="viewport"	content="width=device-width,	initial-scale=1">
				<title>Formulário	de	Login</title>
				<link	href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css"	
rel="stylesheet">
		</head>
		<body>
				<form	method="GET"	action="./home.html"	>
											<div	class="d-flex">
													<div	class="row">
															<div	class="col-sm-10">
																	<h1	class="text-center">Login</h1>
															</div>
													</div>
											</div>
											<div	class="d-flex">
													<div	class="row">	
															<div	class="col-sm-12">
																		<label>Usuário:	</label>
																		<input	class="form-control"	id="nome_login"	type="text"	required/>
																</div>
													</div>
													<div	class="row">	
																<div	class="col-sm-12">
																		<label>Senha:	</label>
																		<input	class="form-control"	id="senha_login"	type="password"	required/>
															</div>
													</div>
										</div>		
										<div	class="d-flex">
												<div	class="row">		
																	<div	class="col-sm-12">
																				<input	role="switch"	type="checkbox"	name="manterlogado"	value=""	/>
106
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
																				<label>	Manter	logado	</label>	
																</div>
													</div>
										</div>
										<div	class="d-flex">	
													<div	class="row"><div	class="col-sm-12">
																				<button	type="submit"	>Login</button>	
																	</div>
													</div>		
										</div>
										<div	class="d-flex">
													<div	class="row">		
															<div	class="col-sm-12">
																	<a	href="./view/cadastro.html">Ainda	não	tem	conta?</a>
																	<a	href="./view/reset.html">Esqueceu	a	senha?</a>
															</div>
													</div>
										</div>
					</form>
		</body>
</html>
Fonte: a autora.
Para	melhorar	a	aparência	e	a	funcionalidade	do	formulário	de	login,	o	Boots-
trap	oferece	diversas	classes	de	estilização.	Entre	elas,	destacam-se	a	form-check, 
que	permite	criar	caixas	de	seleção	e	botões	de	opção	estilizados,	e	a	form-switch, 
que	possibilita	criar	botões	de	alternância.	Já	as	classes	form-check-input e form-
-check-label	são	utilizadas	para	definir	a	aparência	e	o	comportamento	das	caixas	de	
seleção e dos botões de opção. E, as classes input-group e a input-group-text, que 
permitem	criar	campos	de	entrada	com	textos	ou	 ícones	complementares,	como	por	
exemplo	campos	de	busca	com	ícone	de	lupa	ao	lado.	
Com	essas	classes,	é	possível	personalizar	e	melhorar	a	funcionalidade	dos	for-
mulários	de	maneira	prática	e	eficiente.	Conhecer	o	funcionamento	de	cada	classe	é	
fundamental	para	utilizá-las	corretamente	e	obter	o	resultado	esperado.	Com	esse	co-
nhecimento,	podemos	aplicar	as	classes	de	estilização	do	Bootstrap	de	forma	adequada	
e obter um formulário de login com visual mais atrativo e funcional.
A classe “input-group” é usada para agrupar elementos de entrada dentro de 
uma	única	linha,	como	um	campo	de	texto	e	um	botão	de	ação,		formando	uma	unidade	
coesa	de	entrada	de	dados.	Os	elementos	em	um	"input-group"	são	combinados	usan-
do	classes	CSS	e	podem	ser	estilizados	para	criar	diferentes	tipos	de	entrada	de	dados.	
107
Por	exemplo,	pode-se	criar	um	"input	group"	com	um	campo	de	pesquisa	e	um	botão	
de	busca	ao	lado,	ou	um	"input-group"	com	um	botão	dropdown	e	um	campo	de	en-
trada	de	dados	para	escolher	opções.	Além	disso,	os	"input	groups"	também	podem	ser	
estilizados	para	diferentes	tamanhos	de	tela	e	apresentar	diferentes	tipos	de	feedback	
visual, como sucesso, aviso ou erro.
A classe "input-group-text"	é	utilizada	para	adicionar	um	texto	fixo	ou	um	
elemento	personalizado	no	 início	ou	no	final	de	um	elemento	de	entrada,	como	uma	
caixa	de	texto	ou	um	botão.	Por	exemplo,	é	possível	adicionar	o	símbolo	de	uma	moeda	
ou um ícone de calendário antes ou depois de um campo de entrada de data. 
Adicionar	classes	input-group	a	um	campo	de	entrada	pode	trazer	benefícios	
significativos	em	termos	de	usabilidade	e	experiência	do	usuário.	Essa	classe	permite	
adicionar	 elementos	 adicionais	 ao	 campo	de	entrada,	 como	 ícones,	 botões	 e	 textos,	
que	podem	tornar	o	formulário	mais	intuitivo	e	fácil	de	usar.	Além	disso,	a	classe	"inpu-
t-group-text"	pode	ser	usada	para	estilizar	elementos	de	entrada	de	forma	consistente	
com	outros	elementos	do	formulário.	Por	exemplo,	você	pode	adicionar	um	plano	de	
fundo ou bordas arredondadas a todos os campos de entrada usando essa classe.
Para aplicar essas classes em nossa tela de login, vamos adicioná-las aos ele-
mentos	<div	class="col-sm-*">	e	<label>,	essas	alterações	podem	ser	vistas	no	Quadro	
19. Isso permitirá que possamos ver as mudanças na aparência da tela de login e avaliar 
o impacto que as novas classes terão na usabilidade do formulário que podem ser ob-
servadas na Figura 18.
Quadro 19 – Código da tela do formulário de login com input-group e input-group-text
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE	html>
<html>
		<head>
				<meta	charset=utf-8	/>
				<meta	name="viewport"	content="width=device-width,	initial-scale=1">
				<title>Formulário	de	Login</title>
				<link	href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css"	
rel="stylesheet">
		</head>
		<body>
				<div	class="d-flex	col-sm-12"	>
						<form	method="GET"	action="./home.html">
											<div	class="d-flex	col-sm-12"	>
													<div	class="row">
															<div	class="col-12-sm">
																	<h1	class="">Login</h1>
															</div>
													</div>					
108
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
											</div>
											<div	class="d-flex	col-sm-12">
													<div	class="row">	
															<div	class="col-sm-12	input-group">
																		<label	class="input-group-text"	for="nome_login">Usuário:	</label>
																		<input	class="form-control"	id="nome_login"	type="text"	required/>
																</div>
													</div>
													<div	class="row">	
																<div	class="col-sm-12	input-group">
																		<label	class="input-group-text"	for="senha_login"	>Senha:	</label>
																		<input	class="form-control"	id="senha_login"	type="password"	required/>
															</div>
													</div>
										</div>		
										<div	class="d-flex	col-sm-6">
													<div	class="row">		
																	<div	class="col-sm-12">
																				<input	role="switch"	type="checkbox"	name="manterlogado"	value=""	/>								
																				<label>	Manter	logado	</label>	
																</div>
													</div>
										</div>
										<div	class="d-flex	col-sm-12">	
													<div	class="row	">		
																	<div	class="col-sm-12">
																				<button	type="submit"	>Login</button>	
																	</div>
													</div>		
										</div>
										<div	class="d-flex	col-sm-12">
													<div	class="row">		
															<div	class="col-sm-12">
																	<a	href="./view/cadastro.html">Ainda	não	tem	conta?</a>
																	<a	href="./view/reset.html">Esqueceu	a	senha?</a>
															</div>
													</div>
										</div>
							</form>
				</div>
		</body>
</html>
Fonte: a autora.
109
Figura 18 – Tela de login com "input-group e "input-group-tex
Fonte: a autora.
Outra	 classe	 do	Bootstrap	 5	 que	 pode	 ser	 útil	 para	melhorar	 a	 aparência	 da	
nossa tela de login é a "justify-content-center".	Essa	classe	é	usada	para	centralizar	
elementos	horizontalmente	dentro	de	um	contêiner.	Essa	classe	pode	ser	aplicada	a	
qualquer elemento de nível de bloco que esteja dentro de um contêiner com a classe 
d-flex	(display	flex).	
Falando	em	centralização,	é	importante	destacar	que	o	alinhamento	correto	dos	
elementos é fundamental para a aparência e usabilidade de qualquer interface web. 
Por isso, a classe "justify-content-center" pode ser usada para garantir que os ele-
mentos	dentro	do	contêiner	de	login	estejam	alinhados	corretamente	e	ofereçam	uma	
aparência mais agradável e equilibrada.
Uma	forma	de	melhorar	o	visual	da	tela	de	login	é	aplicando	a	classe "contai-
ner"	junto	com	a	classe	"col-sm-8"	no	lugar	da	d-flex	da	linha	11	do	quadro	15,	definindo	
assim	uma	largura	fixa	para	o	conteúdo	e	centralizando	horizontalmente	na	página.	A	
class	"col-sm-8"	é	outra	classe	do	Bootstrap	que	define	a	largura	da	coluna,	neste	caso,	
ocupando 8 colunas de um total de 12 em telas pequenas (dispositivos com largura me-
nor	ou	igual	a	576	pixels),	permitindo	que	o	restante	da	tela	fique	em	branco.
Quando a classe “container” e "col-sm-8"	 são	utilizadas	em	conjunto	ga-
rantem	que	todos	os	elementos	filhos	do	contêiner	que	estejam	definidas	com	a	classe	
"d-flex"	e	a	classe	 “justify-content-center”	fiquem	centralizados	dentro	do	container.	
Deixando	um	espaço	 igual	à	esquerda	e	à	direita	de	cada	elemento.	 Isso	é	especial-
mente	útil	para	criar	layouts	equilibrados	e	centrados,	especialmente	em	telas	menores,	
onde	o	espaço	horizontal	pode	ser	limitado.
Ao	utilizar	a	classe	"container"	em	nosso	formulário	de	login,	podemos	ter	cer-
teza	de	que	todos	os	elementos	serão	exibidos	de	formaclara	e	organizada,	indepen-
dentemente	do	tamanho	da	tela	ou	do	dispositivo	utilizado	pelo	usuário.	Essa	classe	
ajuda	a	garantir	uma	aparência	consistente	e	profissional	em	todo	o	site,	melhorando	a	
experiência	do	usuário	e	aumentando	a	usabilidade	do	formulário	de	login.
110
Para	adicionar	um	toque	de	elegância,	podemos	utilizar	a	classe	"bg-primary".	
Essa	classe	define	a	cor	de	fundo	do	container	como	a	cor	primária	definida	no	tema	do	
Bootstrap. Ao aplicar essa classe em nosso formulário de login, podemos garantir que 
o fundo da tela esteja de acordo com o restante do site, criando uma aparência coesa 
e	harmoniosa.	A	classe	"bg-primary"	é	especialmente	útil	para	adicionar	um	toque	de	
personalidade ao formulário de login e torná-lo mais atraente visualmente, sem com-
prometer	a	legibilidade	do	texto	ou	a	funcionalidade	do	formulário.
Agora	é	hora	de	estilizar	o	checkbox	do	nosso	formulário	de	 login.	Para	 isso,	
podemos	utilizar	as	classes	"form-check" e "form-switch" do Bootstrap 5. A classe 
"form-check"	é	usada	para	estilizar	elementos	de	seleção	de	opção,	como	checkboxes	
e	radios,	aplicando	estilos	específicos,	como	rótulos	e	bordas	arredondadas.	Já	a	clas-
se	"form-switch"	é	usada	para	estilizar	elementos	de	seleção	de	opção	que	permitem	
alternar	entre	duas	opções,	como	switches.	Essa	classe	cria	o	estilo	de	um	botão	de	
alternância	no	formulário.	Ao	usar	essa	classe,	um	botão	deslizante	é	adicionado	para	
permitir	que	o	usuário	ative	ou	desative	uma	opção	específica.	É	uma	alternativa	mais	
moderna	ao	tradicional	elemento	de	entrada	do	tipo	checkbox.
Ao aplicar essas classes aos nossos aplicativos, podemos garantir que eles se-
jam	exibidos	de	forma	clara	e	organizada,	facilitando	a	seleção	das	opções	desejadas	
pelo	usuário.	Além	disso,	a	utilização	dessas	classes	ajuda	a	manter	a	consistência	vi-
sual do formulário e do site como um todo, aumentando a usabilidade e a qualidade da 
experiência	do	usuário.
A classe "form-check-input"	é	uma	classe	do	Bootstrap	que	define	um	estilo	
para	um	elemento	HTML	do	tipo	"input"	que	é	usado	em	formulários.	Quando	usada	em	
conjunto	com	a	classe	"form-check",	ela	adiciona	um	estilo	de	opção	de	seleção	ao	ele-
mento,	como	um	checkbox	ou	um	switch.	Essa	classe	é	útil	para	criar	opções	de	escolha	
em um formulário de maneira visualmente agradável e consistente. Além disso, a classe 
"form-check-input"	também	pode	ser	usada	para	estilizar	inputs	de	rádio	e	seleções	de	
múltipla	escolha.
A classe "form-check-label" é	 utilizada	 em	 conjunto	 com	 a	 classe	 "form-
-check-input"	para	criar	rótulos	(labels)	personalizados	para	inputs	de	tipo	checkbox	
ou radio button em um formulário HTML. Essa classe é aplicada a um elemento HTML 
(normalmente	um	<label>)	que	está	associado	ao	input	através	do	atributo	"for".	Quando	
o usuário clica no label, o input correspondente é selecionado ou deselecionado, como 
se o usuário tivesse clicado diretamente no input. 
No	quadro	20	é	possível	visualizar	o	código	HTML	da	tela	de	login	com	as	alte-
rações	marcadas	em	cinza.	Após	a	aplicação	das	classes	podemos	observar	a	mudança	
visual em nossa tela de login, que pode ser vista na Figura 19.
111
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<!DOCTYPE	html>
<html>
		<head>
				<meta	charset=utf-8	/>
				<meta	name="viewport"	content="width=device-width,	initial-scale=1">
				<title>Formulário	de	Login</title>
				<link	href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css"	
rel="stylesheet">
		</head>
		<body>
				<div	class="container	col-sm-8	bg-primary">
						<div	class="row">
								<form	method="GET"	action="./home.html">
											<div	class="d-flex	col-sm-12		justify-content-center"	>
													<div	class="row">
															<div	class="col-12-sm	">
																	<h1	class="">Login</h1>
															</div>
													</div>
											</div>
											<div	class="d-flex	col-sm-12	justify-content-center">
													<div	class="row">	
															<div	class="col-sm-12	input-group">
																		<label	class="input-group-text"	for="nome_login">Usuário:	</label>
																		<input	class="form-control"	id="nome_login"	type="text"/>
																</div>
													</div>
													<div	class="row">	
																<div	class="col-sm-12	input-group">
																		<label	class="input-group-text"	for="senha_login"	>Senha:	</label>
																		<input	class="form-control"	id="senha_login"	type="password"/>
															</div>
													</div>
										</div>		
										<div	class="d-flex	justify-content-center	col-sm-4">
													<div	class="row">		
																	<div	class="col-sm-12	form-check	form-switch">
																				<input	class="form-check-input"	role="switch"	type="checkbox"	name="manterlogado"	
value=""	/>								
																				<label	class="form-check-label">	Manter	logado	</label>	
																</div>
													</div>
Quadro 20 – Código da tela do formulário de login com input-group e input-group-text
112
Fonte: a autora.
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
</div>
										<div	class="d-flex	col-sm-12		justify-content-center">	
													<div	class="row	">		
																	<div	class="col-sm-12">
																				<button	type="submit"	>Login</button>	
																	</div>
													</div>		
										</div>
										<div	class="d-flex	col-sm-12	justify-content-center">
													<div	class="row">		
															<div	class="col-sm-12">
																	<a	href="./view/cadastro.html">Ainda	não	tem	conta?</a>
																	<a	href="./view/reset.html">Esqueceu	a	senha?</a>
															</div>
													</div>
										</div>
							</form>
					</div>
				</div>
		</body>
</html>
As alterações no código e na aparência do formulário de login ajudam a torná-lo 
mais	atraente	e	fácil	de	usar,	aumentando	a	usabilidade	e	a	qualidade	da	experiência	do	
usuário.	É	importante	notar	como	a	utilização	das	classes	do	Bootstrap	5	pode	simplifi-
car	o	processo	de	estilização	de	formulários	e	outros	elementos	de	interface	do	usuário,	
facilitando a criação de designs modernos e responsivos em sites e aplicativos web.
Figura 19 - Tela de login com estilização dos campos de entrada
Fonte: a autora.
Com a aplicação das classes do Bootstrap 5 em nosso formulário de login, con-
seguimos	melhorar	significativamente	a	aparência	e	usabilidade	do	mesmo.	As	classes	
"input-group",	"bg-primary",	"form-check"	e	"form-switch"	nos	permitiram	criar	uma	in-
113
3.3 CRIANDO BOTÕES NO BOOTSTRAP 5
Seja para enviar um formulário, iniciar uma ação ou redirecionar para outra pági-
na, os botões são uma parte essencial da maioria das interfaces de usuário. E para criar 
botões modernos e responsivos em nossos projetos web, o Bootstrap 5 nos oferece 
uma série de classes e recursos úteis. Neste tópico, vamos iniciar aprendendo como 
criar	e	personalizar	botões	básicos	no	Bootstrap	5,	com	isso	já	será	possível	criar	botões	
atraentes	e	funcionais	para	nossos	projetos	web,	garantindo	uma	experiência	de	usuá-
rio	de	alta	qualidade	e	uma	interface	profissional.
O	Bootstrap	5	oferece	uma	variedade	de	classes	para	criar	botões	estilizados	e	
personalizados.	Algumas	das	principais	classes	incluem:
• btn: a classe base para criar um botão.
• btn-primary, btn-secondary, btn-success, btn-danger, btn-warning, btn-in-
fo e btn-light:	classes	para	criar	botões	com	cores	predefinidas.
• btn-outline-primary, btn-outline-secondary, btn-outline-success, btn-
-outline-danger, btn-outline-warning, btn-outline-info e btn-outline-light: 
classes	para	criar	botões	com	bordas	coloridas	e	texto	preenchido.
• btn-lg, btn-sm e btn-block:	classes	para	controlar	o	tamanho	do	botão.
• disabled: classe para desativar o botão.
Além	disso,	há	classespara	botões	de	ação,	botões	de	alternância	e	botões	com	
ícones	e	texto	personalizados.	Com	essas	classes,	é	possível	criar	uma	variedade	de	
botões	estilizados	e	personalizados	para	diferentes	necessidades	e	contextos.
terface mais clara e consistente, facilitando a navegação do usuário e aumentando a 
qualidade	da	experiência	de	uso.
Além	disso,	a	utilização	da	classe	"container"	em	conjunto	com	a	classe	"col-
-sm-8"	ajudou	a	criar	um	layout	equilibrado	e	centrado,	garantindo	que	nosso	formulário	
de	login	ficasse	visualmente	agradável	em	telas	de	diferentes	tamanhos	e	resoluções.
Ao	finalizar	este	tópico	de	estilização	de	formulários	com	Bootstrap	5,	fica	evi-
dente	o	poder	e	a	versatilidade	desse	framework,	que	permite	a	criação	de	interfaces	de	
usuário	modernas	e	responsivas	com	facilidade	e	eficiência.	Com	a	prática	e	o	aprimo-
ramento	contínuo	de	nossas	habilidades	em	Bootstrap	5,	podemos	criar	designs	cada	
vez	mais	atraentes	e	funcionais	para	nossos	projetos	web.
Agora	vamos	mergulhar	no	mundo	dos	botões	do	Bootstrap.	Os	botões	são	um	
elemento importante em qualquer interface de usuário, permitindo que os usuários in-
terajam com os elementos de forma intuitiva e fácil. Com as classes do Bootstrap, po-
demos	estilizar	nossos	botões	de	maneira	consistente	e	profissional,	garantindo	uma	
experiência	de	usuário	de	alta	qualidade.	Vamos	começar!
114
A	classe	"btn"	define	um	botão	básico	com	uma	cor	de	fundo	e	borda,	enquan-
to	a	classe	 "btn-success"	acrescenta	o	fundo	verde	específico	de	sucesso	ao	botão.	
Existem	outras	classes	de	cores	para	botões	no	Bootstrap,	como	"btn-primary"	(azul),	
"btn-danger"	(vermelho)	e	"btn-warning"	(amarelo).
Ao	aplicar	a	classe	"btn"	em	um	elemento	<a>,	por	exemplo,	estamos	transforman-
do-o	em	um	botão	estilizado	que	pode	ser	clicado	pelo	usuário.	É	possível	ainda	utilizar	
outras	classes	do	Bootstrap,	como	"btn-primary",	"btn-secondary",	"btn-danger"	e	muitas	
outras	para	modificar	a	aparência	do	botão	de	acordo	com	a	necessidade	do	projeto.
O	código	HTML	<a	class="btn"	href="#URL">Esqueceu	a	senha?</a>	é	um	link	de	
texto	"Esqueceu	a	senha?"	com	a	classe	"btn"	aplicada.	A	classe	"btn"	é	uma	classe	do	
Bootstrap	que	estiliza	o	elemento	como	um	botão,	adicionando	cores	de	fundo,	bordas,	
sombras e outros estilos visuais para torná-lo mais atraente e fácil de clicar. O atributo 
"href"	especifica	o	URL	para	onde	o	usuário	será	direcionado	quando	clicar	no	link.	Neste	
caso,	o	valor	"#URL"	é	apenas	um	exemplo	e	deve	ser	substituído	pelo	URL	correto	para	
a	página	de	redefinição	de	senha.
O	quadro	21	apresenta	as	alterações	realizadas	no	código	HTML	da	tela	de	login	
com a aplicação das classes de botões do Bootstrap. Já na Figura 20, é possível visua-
lizar	o	resultado	final	da	estilização	dos	botões	na	interface	da	tela	de	login.
Quadro 21 – Código da tela do formulário de login sem utilizar o framework Bootstrap 5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!DOCTYPE	html>
<html>
		<head>
				<meta	charset=utf-8	/>
				<meta	name="viewport"	content="width=device-width,	initial-scale=1">
				<title>Formulário	de	Login</title>
				<link	href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css"	
rel="stylesheet">
		</head>
		<body>
				<div	class="container	col-sm-8	bg-primary">
						<div	class="row">
								<form	method="GET"	action="./home.html">
											<div	class="d-flex	justify-content-center"	>
													<div	class="row">
															<div	class="col-12-sm">
																	<h1	class="">Login</h1>
															</div>
													</div>
											</div>
											<div	class="d-flex	justify-content-center">
115
Fonte: a autora.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
													<div	class="row">	
															<div	class="col-sm-12	input-group">
																		<label	class="input-group-text"	for="nome_login">Usuário:	</label>
																		<input	class="form-control"	id="nome_login"	type="text"/>
																</div>
													</div>
													<div	class="row">	
																<div	class="col-sm-12	input-group">
																		<label	class="input-group-text"for="senha_login"	>Senha:	</label>
																		<input	class="form-control"	id="senha_login"	type="password"/>
															</div>
													</div>
										</div>		
										<div	class="d-flex	justify-content-center	col-sm-4">
													<div	class="row">		
																	<div	class="col-sm-12	form-check	form-switch">
																				<input	class="form-check-input"	role="switch"	type="checkbox"	name="manterlogado"	
value=""	/>								
																				<label	class="form-check-label">	Manter	logado	</label>	
																</div>
													</div>
										</div>
										<div	class="d-flex	justify-content-center">	
													<div	class="row	">		
																	<div	class="col-sm-12">
																				<button	class="btn	btn-success"	type="submit"	>Login</button>	
																	</div>
													</div>		
										</div>
										<div	class="d-flex	justify-content-center">
													<div	class="row">		
															<div	class="col-sm-12">
																	<a	class="btn	btn-primary"	href="./view/cadastro.html">Ainda	não	tem	conta?</a>
																	<a	class="btn	btn-primary"	href="./view/reset.html">Esqueceu	a	senha?</a>
															</div>
													</div>
										</div>
							</form>
				</div>
		</body>
</html>
116
Podemos	perceber	como	a	estilização	dos	botões	deixou	a	nossa	tela	de	 login	
mais	elegante	e	moderna.	Além	da	estilização	dos	botões,	as	alterações	aplicadas	nos	
campos	de	entrada	também	contribuíram	para	deixar	a	tela	de	login	mais	elegante	e	mo-
derna. Juntos, esses elementos criam uma interface atraente e intuitiva para os usuários.
Figura 20 - Tela de login com aplicação das class btn
Fonte: a autora.
Embora	 tenhamos	 estruturado	 e	 estilizado	 nossos	 formulários,	 ainda	 há	 um	
problema:	se	o	usuário	pressionar	o	botão	de	Login	sem	preencher	os	campos,	o	códi-
go não irá validar a ação e provavelmente gerará um erro na página. Para evitar isso, é 
importante	incluir	uma	validação	nos	campos	do	formulário	para	verificar	se	eles	estão	
em branco. 
Felizmente,	o	Bootstrap	5	possui	classes	prontas	para	nos	auxiliar	nessa	tarefa.	
Vamos	explorar	como	adicionar	a	validação	aos	nossos	formulários	para	evitar	possíveis	
problemas com ações indesejadas. Vamos aprender como aplicá-las ao nosso formulá-
rio para torná-lo ainda mais robusto e seguro.
4 VALIDANDO DE FORMULÁRIOS COM BOOTSTRAP
A validação de formulários é uma etapa importante no desenvolvimento de apli-
cações	web,	pois	ajuda	a	evitar	problemas	com	ações	indesejadas	e	melhora	a	experi-
ência	do	usuário.	Felizmente,	o	Bootstrap	5	possui	classes	prontas	para	auxiliar	nessa	
tarefa,	tornando	o	processo	de	validação	mais	simples	e	eficiente.	Nesta	seção,	vamos	
explorar	como	adicionar	a	validação	aos	nossos	formulários	usando	o	Bootstrap	5.
117
4.1 MECANISMO DE VALIDAÇÃO DO BOOTSTRAP 5
Entre suas diversas funcionalidades, o Bootstrap 5 possui um mecanismo de 
validação de formulários que permite ao desenvolvedor garantir que as informações 
inseridas	pelos	usuários	estejam	corretas	e	de	acordo	com	o	esperado.	Neste	contexto,	
é importante compreender como funciona o mecanismo de validação do Bootstrap 5 e 
como	utilizá-lo	em	seus	projetos.	Agora	iremos	explorar	em	detalhes	o	mecanismo	de	
validação do Bootstrap 5 e suas principais funcionalidades.
Para	realizar	a	validação	de	formulários	utilizando	o	Bootstrap	5,	as	classes	utili-
zadas	são	a	“has-validation”,	"needs-validation"	e	"invalid-feedback".	Quando	aplicamos	
essas	classes	ao	formulário	web,	será	habilitada	a	validação	automática	dos	campos	
utilizando	as	classes	de	validação	padrão	do	Bootstrap	no	 lugar	da	validaçãopadrão	
do	navegador.	É	possível	incluir	validação	nos	elementos	identificados	com	as	classes:	
".form-control",	".form-select"	e	".form-check".
A	 classe	 "has-validation"	 deve	 ser	 adicionado	 o	 elemento	 <div	 class=‘input-
-group”>	do	campo	que	necessita	de	validação,	 indicando	que	o	mecanismo	de	vali-
dação do formulário está ativo. Quando essa classe é adicionada, o Bootstrap adiciona 
automaticamente	as	classes	CSS	"is-valid"	ou	"is-invalid"	a	cada	campo	do	formulário,	
dependendo	 se	o	valor	 inserido	é	válido	ou	não.	 Isso	permite	que	o	Bootstrap	exiba	
mensagens	de	feedback	para	o	usuário	indicando	se	o	campo	foi	preenchido	correta-
mente	ou	não,	com	base	nas	regras	de	validação	definidas	no	HTML	ou	no	JavaScript	
do	formulário.	A	classe	"has-validation"	é	importante	para	garantir	que	o	mecanismo	de	
validação do Bootstrap esteja funcionando corretamente e que o usuário receba fee-
dback	imediato	sobre	seus	dados	de	entrada.
A	classe	“.needs-validation”	é	utilizada	para	indicar	que	um	formulário	precisa	
de validação. Quando essa classe é adicionada ao formulário, o Bootstrap 5 assume que 
os campos dentro dele precisam ser validados antes de serem enviados. Essa classe é 
usada	em	conjunto	com	outras	classes	de	validação,	como	.valid-feedback	e	.invalid-
-feedback,	para	fornecer	feedback	visual	ao	usuário	sobre	o	preenchimento	correto	ou	
incorreto dos campos. Em resumo, a classe .needs-validation é responsável por acionar 
o	mecanismo	de	validação	do	Bootstrap	5	para	o	formulário.	Ao	adicionar	a	classe	"ne-
eds-validation"	em	um	elemento	de	formulário	no	Bootstrap,	o	desenvolvedor	informa	
que	deseja	que	a	validação	seja	realizada	e	que	o	Bootstrap	deve	assumir	o	controle	
do	processo	de	validação.	Combinado	com	o	atributo	"novalidate",	 isso	permite	que	o	
desenvolvedor	personalize	a	validação	do	formulário	sem	depender	da	validação	padrão	
do navegador.
118
O	"novalidate"	é	um	atributo	HTML	que	pode	ser	adicionado	a	um	elemento	de	
formulário	<form>	para	desabilitar	a	validação	padrão	do	navegador.	Isso	significa	que	
o formulário não será validado automaticamente pelo navegador, permitindo que a va-
lidação seja controlada pelo desenvolvedor por meio de scripts ou bibliotecas, como o 
Bootstrap 5.
A	classe	“invalid-feedback”	é	uma	classe	de	estilo	do	Bootstrap	5	que	é	usada	
para	exibir	uma	mensagem	de	feedback	para	o	usuário	quando	o	valor	inserido	em	um	
formulário	é	inválido.	Por	exemplo,	se	o	usuário	não	preencher	um	campo	obrigatório,	a	
classe	.invalid-feedback	pode	ser	usada	para	exibir	uma	mensagem	de	erro	abaixo	do	
campo.	É	comumente	usado	em	conjunto	com	a	classe	“is-invalid”,	que	é	adicionada	
dinamicamente a um elemento do formulário quando ocorre um erro de validação.
A	classe	"valid-feedback"	é	utilizada	no	Bootstrap	para	fornecer	um	feedback	
visual	para	os	usuários	após	a	validação	de	um	formulário.	Quando	um	usuário	preenche	
corretamente	um	campo	que	antes	estava	inválido,	a	classe	"valid-feedback"	é	aplicada	
a	um	elemento	HTML	próximo	ao	campo,	geralmente	uma	tag	<span>	ou	<div>,	e	o	fee-
dback	visual	é	exibido,	indicando	que	o	campo	foi	preenchido	corretamente.
O	feedback	visual	pode	ser	uma	mensagem	simples	de	sucesso	ou	um	ícone,	
dependendo	da	 configuração	 definida	 pelo	 desenvolvedor.	 É	 importante	 notar	 que	 a	
classe	"valid-feedback"	só	é	aplicada	quando	a	validação	do	formulário	é	feita	correta-
mente.	Caso	contrário,	a	classe	"invalid-feedback"	é	aplicada	para	indicar	que	o	campo	
ainda está inválido e precisa ser corrigido.
Algumas boas práticas na validação de formulários incluem:
1. Usar mensagens claras e objetivas para descrever os erros de validação.
2. Validar no servidor e no cliente para garantir que os dados sejam corretos antes de 
serem processados e armazenados no banco de dados.
3. Usar expressões regulares para validar campos como e-mail, telefone e CEP.
4. Evitar a validação excessiva e limitar as validações somente ao que é necessário.
5. Garantir que as mensagens de erro sejam exibidas de forma clara e destacada no for-
mulário.
6. Testar a validação em diferentes navegadores e dispositivos para 
garantir que ela funcione corretamente em todos eles.
7. Considerar a acessibilidade ao desenvolver as mensagens de 
erro e torná-las legíveis por leitores de tela e outras tecnologias 
assistivas.
8. Realizar testes de segurança para garantir que os usuários 
não possam explorar falhas na validação para acessar dados 
ou executar ações não autorizadas.
BOAS PRÁTICAS
119
4.2 CASO DE USO: VALIDAÇÃO TELA DE LOGIN
A validação de formulários é uma etapa crucial no desenvolvimento de aplicações 
web, garantindo que os dados inseridos pelos usuários estejam corretos e coerentes 
com	as	 regras	de	negócio.	Neste	contexto,	o	Bootstrap	5	oferece	diversas	classes	e	
recursos	para	 simplificar	 a	validação	de	formulários,	 como	é	o	caso	da	tela	de	 login.	
Neste	caso	de	uso,	veremos	como	utilizar	esses	recursos	para	validar	um	formulário	de	
login	e	exibir	mensagens	de	erro	personalizadas.
Então, vamos aprimorar a validação dos dados inseridos antes de submeter o 
formulário	para	o	destino.	No	Quadro	22,	é	possível	visualizar	o	código	utilizado	para	a	
validação	da	tela	de	login,	as	inclusões	no	código	estão	destacadas	em	cinza.	A	adição	
da	validação	é	uma	forma	de	fornecer	um	feedback	ao	usuário	e,	utilizando	o	framework	
Bootstrap	5,	isso	é	bastante	simples.	Primeiramente,	adicionamos	o	atributo	"novalidate"	
e	 a	 classe	 ".needs-validation"	 no	 elemento	 <form>,	 o	 que	 desativa	 a	 ferramenta	 de	
feedback	do	navegador	e	sinaliza	que	é	necessária	a	validação	dos	campos	do	formulário.	
Segundo,	adicionar	a	classe	“is-invalid"	no	campo	que	deve	ser	validado	e	que	também	
devem	estar	com	o	atributo	“	required”.	Assim,	para	apresentar	o	feedback	de	validação	
ao	usuário,	devemos	criar	um	container	<div	class="invalid-feedback">	logo	abaixo	dos	
elementos	<input		class="form-control">	que	devem	ser	validados.	Os	elementos	<label>,	
<input	 	 type="text">	 e	 a	 mensagem	 de	 feedback	 do	 <div	 class="invalid-feedback">	
devem	estar	aninhados	dentro	do	container		<div	class="input-group	has-validation">.
Por	fim,	é	necessário	incluir	o	script	para	habilitar	a	validação	do	Bootstrap	no	
formulário,	vamos	incluir	o	exemplo	básico	fornecido	pela	documentação	do	Bootstrap,	
que	 habilita	 a	validação	 dos	 campos	 do	 formulário	 e	 exibe	mensagens	 de	validação	
para	o	usuário.	É	importante	incluí-lo	para	garantir	que	o	formulário	de	login	funcione	
corretamente.	 Faremos	 essa	 inclusão	 antes	 do	 fechamento	 do	 elemento	 <body>	
incluindo	a	tag	<script>,	faremos	neste	momento	dentro	do	arquivo	HTML.
A validação de formulários é uma prática essencial para garantir a integridade e 
a	precisão	dos	dados	que	são	inseridos	pelos	usuários.	Para	isso,	é	importante	realizar	a	
validação	tanto	no	lado	do	cliente,	utilizando	ferramentas	como	o	Bootstrap,	quanto	no	
lado do servidor. Isso é especialmente relevante porque a validação do lado do cliente 
pode ser facilmente manipulada ou desativada pelos usuários. 
Nesse	contexto,	é	fundamental	que	a	validação	seja	feita	também	no	lado	do	
servidor, para garantir que as informações inseridas sejam corretas e seguras. A seguir, 
vamos	explorar	um	caso	de	uso	de	validação	de	formulário	na	tela	de	login.
120
Quadro 22 – Código de validação da tela de login
1
2
3
4
5
6
7
8
9
10 
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<!DOCTYPE	html>
<html>
		<head>
				<meta	charset=utf-8	/>
				<meta	name="viewport"	content="width=device-width,	initial-scale=1">
				<title>Formulário	de	Login</title>
				<link	href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css"	
rel="stylesheet">
		</head>
		<body>
				<div	class="container	col-sm-8	bg-primary">
						<div	class="row">
								<form	class="needs-validation"	method="GET"	action="./view/home.html"	novalidate><div	class="d-flex	justify-content-center"	>
													<div	class="row">
															<div	class="col-12-sm">
																	<h1	class="">Login</h1>
															</div>
													</div>
											</div>
											<div	class="d-flex	justify-content-center">
													<div	class="row">	
															<div	class="col-sm-12	input-group	has-validation">
																		<label	class="input-group-text"	for="nome_login">Usuário:	</label>
																		<input	class="form-control	is-invalid"	id="nome_login"	type="text"	required/>
																		<div	class="invalid-feedback">Informe	o	usuário.</div>
																</div>
													</div>
													<div	class="row">	
																<div	class="col-sm-12	input-group">
																		<label	class="input-group-text"for="senha_login"	>Senha:	</label>
																		<input	class="form-control	is-invalid"	id="senha_login"	type="password"	required/>
																		<div	class="invalid-feedback">Informe	a	senha.</div>
															</div>
													</div>
										</div>		
										<div	class="d-flex	justify-content-center	col-sm-4">
													<div	class="row">		
																	<div	class="col-sm-12	form-check	form-switch">
																				<input	class="form-check-input"	role="switch"	type="checkbox"	name="manterlogado"	
value=""	/>								
																				<label	class="form-check-label">	Manter	logado	</label>	
121
41
42
43
44
45
46
47
48
49
50 
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
																				</div>
															</div>
										</div>
										<div	class="d-flex	justify-content-center">	
													<div	class="row	">		
																	<div	class="col-sm-12">
																				<button	class="btn	btn-success"	type="submit"	>Login</button>	
																	</div>
													</div>		
										</div>																
										<div	class="d-flex	justify-content-center">
													<div	class="row">		
															<div	class="col-sm-12">
																	<a	class="btn	btn-primary"	href="./view/cadastro.html">Ainda	não	tem	conta?</a>
																	<a	class="btn	btn-primary"	href="./view/reset.html">Esqueceu	a	senha?</a>
															</div>
													</div>
										</div>
							</form>
				</div>
				<script>
(()	=>	{
 'use strict'
		//	Fetch	all	the	forms	we	want	to	apply	custom	Bootstrap	validation	styles	to
		const	forms	=	document.querySelectorAll('.needs-validation')
		//	Loop	over	them	and	prevent	submission
		Array.from(forms).forEach(form	=>	{
				form.addEventListener('submit',	event	=>	{
						if	(!form.checkValidity())	{
								event.preventDefault()
								event.stopPropagation()
						}
						form.classList.add('was-validated')
				},	false)
		})
})()
</script>
		</body>
</html>
Fonte: a autora.
122
A validação da tela de login é uma etapa crucial para garantir que o usuário 
insira	 informações	válidas	 e	 evitar	 problemas	no	armazenamento	ou	processamento	
desses	dados.	Ao	utilizar	recursos	do	framework	Bootstrap	5,	não	apenas	a	validação	
é	aprimorada,	mas	também	o	feedback	fornecido	ao	usuário	se	torna	mais	intuitivo	e	
amigável.	Com	isso	em	mente,	vamos	agora	visualizar	como	a	validação	é	apresentada	
na tela de login na Figura 21.
Figura 21 - Tela de login utilizando validação do bootstrap 5
Fonte: a autora.
Descubra como a validação de formulários pode ser mais simples e eficiente 
com o Bootstrap! Acesse agora o link: <https://getbootstrap.com/docs/5.3/
forms/validation/#custom-styles> e aprenda sobre os estilos personalizados 
de validação oferecidos pelo framework.
DICA
Além	disso,	é	importante	ressaltar	a	necessidade	de	realizar	tes-
tes	abrangentes	para	verificar	a	efetividade	da	validação	implementada	
na	tela	de	login	e	em	outros	formulários	do	sistema,	a	fim	de	garantir	a	
qualidade	e	a	segurança	da	aplicação.	É	recomendado	também	man-
ter-se	atualizado	sobre	as	melhores	práticas	e	tecnologias	disponíveis	
para	validação	de	formulários,	para	oferecer	uma	experiência	satisfa-
tória	e	segura	aos	usuários.	Por	fim,	iremos	publicar	nosso	projeto	de	
login	no	GitHub,	para	que	ele	possa	ser	disponibilizado	e	utilizado.
4.3 PUBLICAÇÃO DO PROJETO DE LOGIN NO GITHUB 
A	publicação	de	projetos	em	plataformas	de	hospedagem	de	código,	como	o	Gi-
tHub,	é	uma	prática	essencial	para	o	compartilhamento	e	a	colaboração	em	projetos	de	
software.	Além	disso,	a	disponibilização	do	código-fonte	de	um	projeto	permite	que	outros	
desenvolvedores	possam	estudá-lo,	melhorá-lo	e	utilizá-lo	em	seus	próprios	projetos.	
123
Nesse sentido, a publicação do projeto de login que desenvolvemos é uma etapa 
importante	para	que	outros	possam	ter	acesso	ao	código,	contribuir	com	melhorias	e	uti-
lizar	como	base	para	seus	próprios	projetos.	Nesta	seção,	veremos	o	passo	a	passo	para	
publicar	o	projeto	no	GitHub	e	torná-lo	disponível	para	a	comunidade	de	desenvolvedores.
Criar	uma	página	no	GitHub	Pages	é	uma	maneira	simples	e	rápida	de	dispo-
nibilizar	seus	formulários	online	através	de	uma	URL.	Para	isso,	é	necessário	criar	um	
repositório	no	GitHub	para	hospedar	os	arquivos	HTML	dos	formulários	de	login	e	ca-
dastro.	Para	auxiliar	nesse	processo,	a	tabela	3	apresenta	um	roteiro	com	os	passos	
necessários	para	realizar	a	publicação	dos	formulários.
É	 importante	destacar	que,	após	a	publicação,	é	recomendado	realizar	testes	
rigorosos	para	verificar	a	funcionalidade	dos	formulários	e	garantir	que	tudo	esteja	fun-
cionando	corretamente.	Além	disso,	é	fundamental	manter	os	arquivos	atualizados	e	
utilizar	as	melhores	práticas	para	garantir	a	qualidade	e	segurança	da	aplicação.
Com essas considerações em mente, vamos seguir os passos descritos na tabela 
3	para	publicar	nosso	projeto	de	login	no	GitHub	Pages	e	colocá-lo	em	funcionamento.
Tabela 3 – Roteiro para publicação dos formulários
Fonte: a autora.
Atividade Passo a passo
Acessar o 
github
Acesse	o	link:	https://github.com/.	Caso	não	tenha	conta,	será	necessário	criar.
Acesse o 
repositório
Na lateral superior direita da tela, acessar o ícone da conta e selecionar a 
opção	“Your	Repositories”
Criar no 
repositório
Clica	no	botão	“New”,	escolha	o	nome	do	repositório	e	clique	no	botão	“Create	
repository”.
Como	boa	prática,	escolha	um	padrão	para	nomes	de	repositório>.	Por	exemplo,	
«nomeRepositorio»_github_pages,	então 	um	repositório	com	o	nome	“login”,	
ficaria	“login_github_pages”.
Publicar os 
arquivos
Selecione	o	link	“uploading	an	existing	file”.
Selecionar os 
arquivos
Arraste	os	arquivos	ou	escolha	pelo	link	“choose	your	files”.	Realize	o	upload	dos	
arquivos:	index.html,	view/cadastro.html,	view/reset.html	e	view/home.html
Criar	GitHub	
Pages
Selecione	a	opção	“Settings”,	no	menu	lateral	esquerdo	selecione	“Pages”,	
busque	o	campo	“Build	and	deployment”,	clique	no	combobox	escrito	“None”	
abaixo	do	bloco	Brach	e	selecione	“main”	e	clique	no	botão	“Save”.
Aguarde 
liberação site
Aguarde		aproximadamente	1	minuto	para	criação	da	sua	página,	acessando	a	
opção	“Pages”	do	menu	lateral	para	verificar	se	já	foi	criada	a	página.
Acessando 
o site
Na	opção	“Pages”	do	Menu	“Setting”	aparecerá	um	campo	informando	“Your	
site	is	live	at”	e	o	link	para	seu	site.	Clique	sobre	o	link	e	será	direcionado	para	a	
página de login.
Teste o site
Agora	é	só	realizar	os	testes,	caso	necessário	realize	os	ajustes	que	achar	
necessário.
https://github.com/
124
"Para baixar o projeto já pronto e utilizar como exemplo em seus 
estudos ou projetos pessoais, basta acessar o repositório no 
GitHub pelo link: <https://github.com/profanapaulacostacurta/
loginexemplo_github_pages>. Lá, você encontrará todos os ar-
quivos necessários para implementar o formulário de login em 
sua própria aplicação, além de poder acessar a página publicada 
no GitHub Pages para ver como ficou o resultado final.
DICA
Encerramos	o	terceiro	tópico	doterceiro	tema	de	aprendizagem.	Ao	longo	desse	
conteúdo, aprendemos sobre os elementos e estrutura básica de um formulário, com-
preendemos	a	árvore	DOM	e	conhecemos	os	campos	de	entrada	de	formulários,	além	
dos	atributos	globais	mais	utilizados.	Em	seguida,	abordamos	a	estilização	de	páginas	
com	CSS	e	aprendemos	sobre	o	framework	Bootstrap	5,	utilizando	suas	classes	pré-
-configuradas	em	formulários.	Colocamos	em	prática	tudo	o	que	aprendemos,	criando	
grupos	de	inputs,	realizando	validação	de	campos	e	usando	o	método	de	envio	de	da-
dos. Finalmente, concluímos publicando nosso projeto de formulário de login em um 
repositório	do	GitHub	e	disponibilizando-o	no	GitHub	Pages.	Esperamos	que	esse	con-
teúdo	tenha	sido	útil	para	o	seu	aprendizado.
125
LEITURA
COMPLEMENTAR
Criar um site do GitHub Pages 
Documentação	do	GitHub	
GitHub	Pages	está	disponível	em	repositórios	públicos	com	GitHub	Free	e	Gi-
tHub	Free	para	organizações,	e	em	repositórios	públicos	e	privados	com	GitHub	Pro,	
GitHub	Team,	GitHub	Enterprise	Cloud	e	GitHub	Enterprise	Server.	Os	proprietários	da	
organização	podem	restringir	a	publicação	de	sites	do	GitHub	Pages	em	repositórios	
pertencentes	à	organização.	
Se	você	quiser	criar	um	site	do	GitHub	Pages	para	um	repositório	em	que	nem	
todos	os	arquivos	do	repositório	estejam	relacionados	ao	site,	você	poderá	configurar	
uma	fonte	de	publicação	para	seu	site.	Por	exemplo,	você	pode	ter	um	branch	e	uma	
pasta	dedicados	a	armazenar	os	arquivos	de	origem	do	site	ou	usar	um	fluxo	de	trabalho	
personalizado	do	GitHub	Actions	para	criar	e	implantar	os	arquivos	de	origem	do	site.	
Se	a	conta	que	é	o	proprietário	do	repositório	usar	o	GitHub	Free	ou	o	GitHub	Free	para	
organizações,	o	repositório	precisará	ser	público.	
Caso	deseje	criar	um	site	em	um	repositório	existente,	vá	para	a	seção	"Como	
criar	seu	site".
1. No canto superior direito de qualquer página, use o menu suspenso + e selecione 
New repository
2. Use o menu suspenso Owner e selecione a conta que você deseja que seja proprie-
tária do repositório.
126
3. Digite um nome para o repositório e uma descrição opcional. Se você estiver criando 
um	site	de	usuário	ou	de	organização,	seu	repositório	precisará	ser	chamado	̀ .github.
io`	ou	̀ .github.io`.	Se	o	nome	do	usuário	ou	da	organização	contiver	letras	maiúsculas,	
você precisará colocá-las em minúsculas. 
4.	Escolha	uma	visibilidade	do	repositório.
5.	 Selecione	Inicializar	este	repositório	com	um	README.	
6. Clique em Create repository
127
Antes	de	criar	seu	site,	você	deve	ter	um	repositório	para	seu	site	no	GitHub	En-
terprise	Cloud.	Se	você	não	estiver	criando	seu	site	em	um	repositório	existente,	confira	
"Criar	um	repositório	para	seu	site".
Crie	o	arquivo	de	entrada	para	seu	site.	GitHub	Pages	procurará	um	arquivo	in-
dex.html,	index.md	ou	README.md	como	o	arquivo	de	entrada	do	seu	site.
Se	a	sua	fonte	de	publicação	for	um	branch	e	uma	pasta,	o	arquivo	de	entrada	
precisará	estar	no	nível	superior	da	pasta	de	origem	no	branch	de	origem.	Por	exemplo,	
se	sua	fonte	de	publicação	for	a	pasta	/docs	no	branch	main,	seu	arquivo	de	entrada	
precisará	estar	localizado	na	pasta	/docs	em	um	branch	chamado	main.
Se	a	fonte	de	publicação	for	um	fluxo	de	trabalho	do	GitHub	Actions,	o	artefato	
que você implantar precisará incluir o arquivo de entrada na parte superior do artefato. 
Em	vez	de	adicionar	o	arquivo	de	entrada	ao	seu	repositório,	você	pode	optar	por	fazer	
com	que	o	fluxo	de	trabalho	de	GitHub	Actions	gere	o	arquivo	de	entrada	quando	o	
fluxo	de	trabalho	é	executado.	1.	Configure	a	sua	fonte	de	publicação.	Para	obter	mais	
informações,	confira	"Como	configurar	uma	fonte	de	publicação	para	seu	site	do	GitHub	
Pages".	1.	Abaixo	do	nome	do	repositório,	clique	em		Configurações.
Na	seção	"Code	and	automation"	da	barra	lateral,	clique	em	Pages.
Opcionalmente, para publicar um site de projeto de um repositório privado ou 
interno,	escolha	a	visibilidade	do	seu	site.	Em	"GitHub	Pages",	selecione	o	menu	suspen-
so	Visibilidade	do	GitHub	Pages	e	clique	em	uma	visibilidade.
Fonte: https://docs.github.com/pt/enterprise-cloud@latest/pages/getting-started-with-github-pages /
creating-a-github-pages-site. Acesso em: 15 dez. 2022. 
128
Neste tópico, você aprendeu:
•	 Conhecemos	o	framework	Bootstrap	5,	os	elementos	CSS	predefinidos	para	padro-
nizar	o	visual	das	telas	e	criando	páginas	responsivas,	realizamos	a	delimitação	do	
conteúdo	do	layout	e	a	utilização	dos	pontos	de	interrupção	(breakpoints)	para	definir	
o	comportamento	do	layout	em	tamanhos	de	telas	diferentes.	
•	 Para	usar	o	Bootstrap	5,	é	necessário	indicar	a	folha	de	estilos	correspondente.	Uma	
forma	comum	de	fazer	isso	é	através	da	CDN	do	Bootstrap,	que	possibilita	o	carrega-
mento	remoto	do	framework	e	seus	componentes.
•	 Compreendemos	as	principais	classes	do	framework	Bootstrap	5,	aplicando	no	for-
mulário	de	cadastro,	criamos	grupos	de	campos	de	entradas	e	realizamos	a	união	
de elementos independentes para formatar dois campos de entrada lado a lado na 
mesma	linha.	Conhecemos	a	validação	de	campos	de	entrada	utilizando	o	framework	
Bootstrap	5,	a	forma	de	sinalizar	para	a	página	quais	campos	devem	ser	validados	
utilizando	a	palavra	required na	classe	dos	elementos	<input>.	
•	 Bootstrap	5	possui	classes	prontas	para	auxiliar	na	validação	de	formulários	em	apli-
cações	web.	As	classes	utilizadas	para	validação	são:	"has-validation",	"needs-valida-
tion",	"invalid-feedback"	e	"valid-feedback".
•	 Encerrando,	aprendemos	a	publicar	um	formulário	no	repositório	Github	e	conhece-
mos	o	passo	a	passo	para	publicar	as	páginas	em	uma	página	no	Github	Pages.
RESUMO DO TÓPICO 3
129
AUTOATIVIDADE
1	 “Os	contêineres	são	um	bloco	de	construção	fundamental	do	Bootstrap	que	contém,	
preenche	e	alinha	seu	conteúdo	em	um	determinado	dispositivo	ou	área	de	visuali-
zação	do	usuário	(viewport).”	Os	contêineres	são	o	elemento	de	layout	mais	básico	no	
Bootstrap	e	são	necessários	ao	usar	nosso	sistema	de	grade	padrão.”	Sobre	definição	
de	containers	do	framework	Bootstrap	5,	assinale	a	alternativa	CORRETA:
Fonte:	BOOTSTRAP.	Containers.	Disponível	em:	https://ge-
tbootstrap.com/docs/5.3/layout/containers.	Acesso	em:	30	
jan. 2023.
a)	 (			)	 Existem	três	classes	principais:	largura	fixa	(.container)	e		fluida	(.container-fluid)	
Na	 versão	 fixa	 temos	 tamanhos	 que	 utilizam	 o	 breakpoints	 (.container-«bre-
akpoint»),	que	varia	de	“Extra	small”	com	dimensão	<	576px	até	“Extra	extra	lar-
ge”	com	dimensão	>=	1400px.
b)	 (			)	 São	três	os	principais	elementos	do	grid:	colunas,	linhas	e	tabelas.	A	classe	“.con-
tainer”	é	a	tabela	padrão,	que	possui	uma	largura	fixa,	utilizado	para	tornar	o	site	
responsivo	e	se	adaptar	ao	tamanho	da	tela.
c)	 (			)	 A	classe	col-«breakpoint»-«tamanho»	é	utilizado	para	preenchimento	(p	-	pad-
ding)		que	é	o	espaçamento	dentro	dos	limites	do	conteúdo.	Os	valores	que	po-
dem	ser	utilizados	de	breakpoint	são:	1	a	6	e	os	valores	possíveis	para	o	tamanho	
são: auto e numéricos de 0 a 5.
d)	 (			)	 Para	o	botão	de	controle	de	alternância	(Switch),	utilizamos	a	classe	.form-check	
para	agrupar	os	campos	<div>		e	<button>.	A	classe	utilizada	no	<div>	é	.form-
-check-input	e	para	o	<button>	é	.form-check-label.
2	 Com	framework	Bootstrap	podemos	estender	controles	de	formulários	e	adicionar	
texto,	botões	ou	grupos	de	botões	em	ambos	os	 lados	de	campos	de	entradas	de	
texto.	Existe	flexibilidade	também,	onde	podemos	aplicar	utilitários	de	exibição	para	
criar	um	container	e	itens	flexíveis	com	a	classe	d-flex.	Com	base	na	utilização	das	
classes do Bootstrap 5 para grupo e união de campos, analise as sentenças a seguir:
Fonte:	MDN.	Input	group.	Disponível	em:	https://getbootstrap.
com/docs/5.3/forms/input-group/.	Acesso	em:	30	jan.	2023.
I-	 Utilizando	as	classes	do	framework	Bootstrap,	é	possível	validar	os	campos	dos	for-
mulários	para	apresentar	feedback	ao	usuário,	para	incluir	a	validação	em	um	for-
mulário	usamos	o	atributo	“novalidate”	no	elemento<form>. 
II-	 A	classe	 .needs-validation	no	elemento	<form>,	 realiza	uma	marcação	do	campo	
indicando	que	deve	ser	realizada	a	validação	de	obrigatoriedade	do	campo.	Os	ele-
mentos	que	vão	ser	validados	devem	utilizar	as	classes	.form-control,	.form-select	
e	.form-check.
130
III-	 Um	container	utilizando	a	classe	.invalid-feedback	logo	abaixo	de	um	o	elemento	
<input>	é	utilizado	para	 indicar	que	caso	o	valor	do	campo	seja	 igual	ao	valor	do	
container	feedback	deixará	o	campo	em	vermelho.
Assinale a alternativa CORRETA:
a)	 (			)	 As	sentenças	I	e	II	estão	corretas.
b)	 (			)	 Somente	a	sentença	II	está	correta.
c)	 (			)	 As	sentenças	I	e	III	estão	corretas.
d)	 (			)	 Somente	a	sentença	III	está	correta.
3	 “Formulários	para	pagamentos	são	um	pouco	similares	a	pistas	de	obstáculos.	Cada	
impasse a se superar ou parede a se escalar desacelera o usuário, aumentando a 
probabilidade de desistência. Alguns obstáculos são evitáveis, como regras de for-
matação	arbitrárias	ou	exigências	na	criação	de	senhas.	Alguns	destes	–	como	erros	
de digitação – não são tão facilmente evitáveis assim.” Considerando os conceitos de 
validação	de	um	formulário	HTML	utilizando	framework	bootstrap	5,	classifique	V	para	
as sentenças verdadeiras e F para as falsas:
Fonte: JOTFORM.COM. Como criar um formulário de 
pagamento que seus clientes realmente preencheram 
por completo. Disponível em: https://www.jotform.com/pt/
blog/criar-formas-de-pagamento-inteligentes/. Acesso em 
27	abr.	2023.
(   )	A	classe	 "novalidate"	é	utilizada	para	desativar	a	validação	padrão	do	navegador,	
permitindo que a validação seja controlada pelo desenvolvedor por meio de scripts 
ou bibliotecas, como o Bootstrap 5.
(   )	A	classe	"is-valid"	é	utilizada	para	exibir	uma	mensagem	de	feedback	para	o	usuário	
quando o valor inserido em um formulário é inválido.
(   )	Algumas	boas	práticas	incluem	usar	mensagens	claras	e	objetivas,	validar	no	servi-
dor	e	no	cliente,	usar	expressões	regulares,	evitar	validação	excessiva	
Assinale a alternativa que apresenta a sequência CORRETA:
a)	 (			)	 V	–	F	–	F.
b)	 (			)	 V	–	F	–	V.
c)	 (			)	 F	–	V	–	F.
d)	 (			)	 F	–	F	–	V.
4	 “O	GitHub	Pages	 é	 um	 serviço	 de	 hospedagem	de	 site	 estático	 que	usa	 arquivos	
HTML,	CSS	e	JavaScript	diretamente	de	um	repositório	no	GitHub	e,	como	opção,	
executa	os	arquivos	por	meio	de	um	processo	e	publica	um	site”	Disserte	sobre	os	
três	principais	passos	que	devem	ser	executados	antes	de	acessar	o	site	pelo	 link	
fornecido	pelo	Github.
Fonte: GITHUB DOCS. Disponível em: https://docs.github.com/pt/
pages/getting-started-with- github-pages/about-github-pages. 
Acesso em: 30 jan. 2023.
https://www.jotform.com/pt/blog/criar-formas-de-pagamento-inteligentes/
https://www.jotform.com/pt/blog/criar-formas-de-pagamento-inteligentes/
131
5	 “O	Bootstrap	5	oferece	algumas	classes	para	estilizar	seus	formulários,	onde	os	ele-
mentos	dos	formulários	devem	ser	agrupados	pela	<div	class=”form-group”>	…	</div>	
que	criam	um	espaço	elegante	entres	os	 inputs.	Os	 inputs	por	sua	vez	recebem	o	
estilo da classe form-control que cria um elegante campo de digitação com um ta-
manho	de	 largura	de	 100%.”	Considerando	os	conceitos	de	grupos	de	campos	de	
entrada,	disserte	sobre	os	campos	necessários	para	agrupar	os	elementos	<input>,	
<label>	e	mensagem	de	erro	quando	o	campo	de	entrada	está	vazio.
Fonte: OLIVEIRA, A. Formulários com HTML 5 e BootStrap. 
Disponível em: https://www.blogson.com.br/formularios-com-html-
-5-e-bootstrap/. Acesso em: 30 jan. 2023.
132
133
REFERÊNCIAS
APACHE. Documentação do host virtual Apache.	Disponível	em:	https://httpd.
apache.org/docs/2.4/vhosts/index.html.		Acesso	em:	10	dez.	2022.
CERN	(a).	The birth of the Web.	Disponível	em:	https://home.web.cern.ch/science/
computing/	birth-web.	Acesso	em:	7	dez.	2022.
CERN	(b).	What is HyperText.		Disponível	em:	http://info.cern.ch/hypertext/WWW/
WhatIs.html.	Acesso	em:	7	dez.	2022.
FERREIRA, E.; EIS, D. HTML5:	Curso	W3C	Escritório	Brasil.		2010.	Disponível	em:	https://
www.w3c.br/pub/Cursos/CursoHTML5/html5-web.pdf.	Acesso	em:	22	nov.	2022.
MOZILLA.ORG.	What is a URL?	2022a.Disponível	em:	https://developer.mozilla.org/en-
US/docs/Learn/Common_questions/What_is_a_URL.	Acesso	em:	10	dez.	2022.
MOZILLA.ORG.	Como a Web funciona.	2022b.	Disponível	em:	https://developer.mozilla.
org/pt-BR/docs/Learn/Getting_started_with_the_web/How_the_Web_works.	
Acesso	em:	10	dez.	2022.
MOZILLA.ORG.	What is a Domain Name?	2022c.	Disponível	em:	https://developer.
mozilla.org/en-US/docs/Learn/Common_questions/What_is_a_domain_name.	
Acesso	em:	10	dez.	2022.
MOZILLA.ORG.	Lidando com arquivos.	2022d.	Disponível	em:	https://developer.
mozilla.org/pt-BR/docs/Learn/Getting_started_with_the_web/Dealing_with_files.	
Acesso	em:	10	dez.	2022.
MOZILLA.	ORG.	O que são hyperlinks? 2022e.	Disponível	em:	https://developer.
mozilla.org/pt-BR/docs/Learn/Common_questions/What_are_hyperlinks.	Acesso	
em:	10	dez.	2022.
MOZILLA.	ORG.	O que é um servidor web (web server)? 2022f. Disponível em: 
https://developer.mozilla.org/pt-BR/docs/Learn/Common_questions/What_is_a_
web_server.	Acesso	em:	11	dez.	2022.
MOZILLA.	ORG.	HTML básico.	2023g.	Disponível	em:	https://developer.mozilla.org/pt-
BR/docs/Learn/	Getting_started_with_the_web/HTML_basics.	Acesso	em:	11	dez.	
2022.
134
MOZILLA.	ORG.	HTML:	Linguagem	de	Marcação	de	Hipertexto. 2023h. Disponível em: 
https://developer.mozilla.org/pt-BR/docs/Web/HTML.	Acesso	em:	15	dez.	2022.
NETCRAFT. November 2022 Web Server Survey.	Disponível	em:		https://news.
netcraft.com/	archives/2022/11/10/november-2022-	web-server-survey.html.	Acesso	
em:	7	dez.	2022.	
MDN. Introduction to the DOM. Disponível	em:	https://developer.mozilla.org/en-US/
docs/	Web/API/Document_Object_Model/Introduction.	Acesso	em:	15	jan.	2023.
BOOTSTRAP. Documentos Bootstrap 5.3.0-alpha1.	Disponível	em:	https://
getbootstrap.com//docs/5.3/.	Acesso	em:	15	jan.	2023.
STATCOUNTER. Browser Market Share Worldwide.	Disponível	em:	https://
gs.statcounter.com/	browser-market-share#monthly-202211-202212-bar.	Acesso	em:	
6	dez.	2022.
TANENBAUM, A.; WETHERALL, D. Computer Networks.	5.	ed.	[S.l.]:	Prentice	Hall,	2011.
W3C.ORG.	HTML 5.3: W3C Working Group Note.	Disponível	em:	https://www.w3.org/
TR/2021/	NOTE-html53-20210128/.	Acesso	em:	10	dez.	2022.
135
JAVASCRIPT MODERNO
UNIDADE 2 — 
OBJETIVOS DE APRENDIZAGEM
PLANO DE ESTUDOS
 A partir do estudo desta unidade, você deverá ser capaz de:
• descrever o funcionamento de funções e métodos em JavaScript;
• compreender os principais conceitos e utilização de objetos em JavaScript;
•	 exemplificar	a	utilização	de	formulários	com	estilização	com	framework	Bootstrap	5;
•	 apresentar	ferramentas	de	desenvolvimento	web	e	editor	de	texto	VS	Code.
	 A	cada	tópico	desta	unidade	você	encontrará	autoatividades	com	o	objetivo	de	
reforçar	o	conteúdo	apresentado.
TÓPICO	1	–	PROGRAMANDO	EM	JAVASCRIPT	
TÓPICO	2	–	CRIANDO	FORMULÁRIO	WEB
TÓPICO	3	–	OBJETOS	EM	JAVASCRIPT
Preparado para ampliar seus conhecimentos? Respire e vamos em frente! Procure 
um ambiente que facilite a concentração, assim absorverá melhor as informações.
CHAMADA
136
CONFIRA 
A TRILHA DA 
UNIDADE 2!
Acesse o 
QR Code abaixo:
137
TÓPICO 1 — 
PROGRAMANDO EM JAVASCRIPT
UNIDADE 2
1 INTRODUÇÃO 
Acadêmico,	neste	Tema	de	Aprendizagem	1,	abordaremos	três	macroassuntos:	
Funções;	Modelo	de	Objeto	de	Documentos	(DOM);	e	Introdução	ao	mudo	dos	formulá-
rios	em	JavaScript.
No	subtema	2,	será	apresentado	a	sintaxe	de	definição	de	uma	função	de	de-
claração	e	aprenderemos	como	definir	e	chamar	as	funções.	Entenderemos	como	fun-
ciona	o	escopo	das	variáveis	e	como	visualizarmos	através	de	exemplos	como	acontece	
o	sombreamento	(shadowing)	dentro	de	uma	função.	Aprenderemos	como	realizar	re-
torno de valores em uma função, pois o escopo da função só existe durante sua execu-
ção.	Apresentaremos	o	básico	sobre	funções	anônimas	e	flecha	(arrow).
No	subtema	3,	aprenderemos	sobre	o	DOM	que	representaa	estrutura	do	HTML	
em	formato	de	árvore	de	nós.	Entenderemos	como	selecionar	e	manipular	os	elementos	
de	um	objeto	DOM,	por	último	apresentaremos	como	realizar	o	gerenciamento	de	atri-
butos	de	objetos	DOM.	
No	último	subtema,	falaremos	sobre	Estrutura	de	formulários	web,	conhecere-
mos	os	elementos	e	atributos	para	criação	de	um	formulário.	Entenderemos	o	funcio-
namento	dos	campos	de	entrada	e	atributos	globais	e	controle	de	texto.	Criaremos	um	
formulário	de	login	utilizando	campos	de	entrada,	campos	de	seleção,	botão	e	links.
2 FUNÇÕES 
Quando temos a necessidade de executar o mesmo código mais de uma vez, po-
demos	nos	beneficiar	com	a	utilização	da	criação	de	um	bloco	de	código	que	pode	ser	cha-
mado	de	forma	simplificada	todas	as	vezes	que	forem	necessárias,	chamado	de	funções.
Para	definir	uma	função	usamos	a	palavras	reservada	function e um par de parênte-
ses	“()”	após	o	nome	da	função.	O	código	que	será	executado	quando	a	função	for	chamada	
fica	dentro	do	bloco	de	par	de	chaves	“{}”.	Para	invocar	uma	função	já	declarada	é	necessário	
apenas	digitar	o	nome	da	função	seguindo	por	um	par	de	parênteses	“()”	(MDN,	2023a).
Na	figura	1,	podemos	conhecer	a	sintaxe	da	função	de	declaração	(function de-
claration).	Existem	algumas	variações	da	sintaxe,	que	são	muito	similares	à	da	função	
de	declaração,	por	isso	normalmente	não	é	feita	distinção	entre	os	tipos.	Essas	varia-
ções,	muitas	vezes,	são	chamadas	de:	funções	anônimas	(anonymous function),	fun-
ção	construtora	(constructor function)	e	função	flecha	(arrow function)	(MDN,	2023a).	
138
As funções anônimas e a função flecha veremos na sequência ainda 
nesse tema de aprendizagem. As funções construtoras estudaremos 
juntos com as classes no próximo tema de aprendizagem.
ESTUDOS FUTUROS
Figura 1 - Sintaxe de definição de uma função de declaração
Fonte: a autora
No	Quadro	1,	temos	o	código	da	definição	e	invocação	de	uma	função.	A	função	
abaixo,	apenas	exibe	um	alerta	na	tela	com	a	mensagem	“Olá”.
Quadro 1 - Definição e invocação da função
Fonte: a autora.
1
2
3
4
function	minhaFuncao()	{	// Definição da função
		alert('Olá');
}
minhaFuncao();	// Chamada ou Invocação da função
Algumas	funções	podem	exigir	parâmetros,	que	são	valores	que	são	incluídos	
dentro	 do	 par	 de	 parênteses	 após	 o	 nome	da	 função	 na	 declaração.	 Os	 parâmetros	
podem	ser	opcionais	e	quando	não	informados	pode	ser	definido	para	receber	um	valor	
padrão	(MDN,	2023a).	
No	quadro	2,	podemos	ver	um	exemplo	de	definição	e	chamada	das	funções	
com a passagem de parâmetros e sem informar parâmetros sendo opcionais pois foi 
definido	um	valor	padrão.
139
Aprofunde o conhecimento sobre parâmetros predefinidos no link: 
https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/
Functions/Default_parameters.
DICA
Quadro 2 - Definição e invocação da função myFunction()
Fonte: a autora.
1
2
3
4
5
6
7
function	ola(nome	=	'Ana')	{ // Declaração da Função ola com valor Ana default
		console.log(‘Olá	‘	+	nome	+	‘!’);
}
// Chamada da função ola com passagem de parâmetros
ola('Maria'); // Saída no console -> Olá Maria!
// Chamada da função ola, sem passagem de parâmetro e uso do parâmetro padrão
ola();	 // Saída no console -> Hello Ana!
Uma boa prática para produzir código limpo, é utilizar prática de escre-
ver práticas compostas utilizando convenção de nomenclatura camel-
Case para variáveis e funções, que consistem em escrever a primeira 
palavra em minusculo e as demais palavras com a primeira em maiús-
culo e sem espaço entre as palavras. Variáveis globais e constantes a 
convenção é utilizar escrita toda em maiúscula.
IMPORTANTE
2.1 ESCOPO E SHADOWING 
As	variáveis	e	outros	itens	definidos	dentro	da	função	tem	seu	próprio	escopo,	
sendo	esses	inacessíveis	para	o	código	fora	da	função.	
O	escopo	pode	ser	definido	como:
É	o	contexto	atual	de	execução,	em	que	valores	e	expressões	são	
"visíveis"	ou	podem	ser	referenciadas.	Se	uma	variável	ou	outra	ex-
pressão	não	estiver	"no	escopo	atual",	então	não	está	disponível	para	
uso.	Os	escopos	também	podem	ser	em	camadas	em	uma	hierarquia,	
de	modo	que	os	escopos	dos	filhos	tenham	acesso	aos	escopos	dos	
pais,	mas	não	vice-versa	(MDN,	2023a,	s.p.).
140
O	escopo	global	é	o	mais	alto	nível,	quando	definidos	são	acessados	em	qual-
quer	lugar	do	código.	Quando	temos	as	mesmas	variáveis	no	escopo	global	e	no	escopo	
da	função	a	variável	que	está	dentro	da	função	sombreia	(shadowing)	a	variável	global	
(MDN,	2023a).
No	quadro	3,	temos	um	exemplo	de	código	JavaScript	para	entendermos	me-
lhor	o	escopo	global	e	shadowing.
Quadro 3 - Código JavaScript sobre escopo
Fonte: a autora.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
const	x	=	1;	// todas as funções têm acesso
// Chamadas das funções
primeiraFuncao();
segundaFuncao();
imprimir("Imprimir	X:"+x);	// vai imprimir valor 1 e não o valor x da primeiraFuncao
function	primeiraFuncao()	{		// Declaração da primeira função
						const	y	=	2,	x	=4;
						imprimir("Imprimir	Y:"+y);
						imprimir("Imprimir	X:"+x); // vai imprimir valor 4 e não valor 1 da constante global
						imprimir(z); // ERRO: a primeiraFuncao não tem acesso a constantes z
}
function	segundaFuncao()	{	 // Declaração da segunda Função
						const	z	=	3;
						imprimir("Imprimir	Z:"+z);
						imprimir("Imprimir	X:"+x);	// vai imprimir o valor 1 da constante global
						imprimir(y);	// ERRO: a segundaFuncao não tem acesso a y
}
// Valores são passados como parâmetro para função imprimir, pois não tem acesso
function	imprimir(valor)	{ // a função imprimir não tem acesso as constantes y e z
 	console.log	("Valor:"+	valor);
}
2.2 RETORNO DE FUNÇÕES 
As	funções	executam	um	bloco	de	código	e	tudo	que	for	realizado	dentro	da	
função	não	 será	 acessível	 pelo	 resto	do	código,	 ou	 seja,	ficará	dentro	do	escopo	da	
função.	Algumas	funções	não	retornam	valor	e	outras	retornam	valores	ao	final	da	exe-
cução,	para	nas	funções	que	retornam	valor	utiliza-se	a	palavra	return para indicar o 
retorno	dos	valores	da	função	(MDN,	2023a).
141
Quadro 4 - Código da função que calcula fatorial
Fonte: a autora.
1
2
3
4
5
6
7
8
function	factorial(numero)	{ // Declaração da função fatorial
		var	x	=	numero;
		while	(x	>	1)	{
				numero	*=	x-1;
 x--;
		}
 return numero; // Retorno da Função
}
Lembrando	que	para	executar	uma	função	JavaScript	em	uma	página	HTML,	
implementamos	o	código	dentro	das	tags	“<script>”	e	“</script>”,	conforme	segue.
Fonte: a autora.
<html>
<script>
function	factorial(numero)	{ // Declaração da função fatorial
		var	x	=	numero;
		while	(x	>	1)	{
				numero	*=	x-1;
 x--;
		}
 return numero; // Retorno da Função
}
factorial(10);
</script>
<body>
</body
</html>
No	quadro	4,	temos	um	exemplo	de	código	de	uma	função	que	calcula	o	fatorial,	
para	entendermos	melhor	o	retorno	da	função.	
142
2.3 FUNÇÃO ANÔNIMA E FUNÇÃO FLECHA
O	que	é	chamado	de	função	anônima	é	uma	função	sem	nome	e	a	função	fle-
cha	possui	uma	sintaxe	mais	curta	que	a	função	de	declaração	(MDN,	2023a).	Na	figura	
2,	apresentamos	a	sintaxe	da	função	anônima,	a	recomendação	de	utilização	desse	tipo	
de	função	é	para	eventos	conforme	exemplo	do	quadro	5.
Figura 2 - Sintaxe da função anônima
Fonte: a autora.
Na	figura	3,	apresentamos	a	sintaxe	básica	da	função	flecha,	que	é	uma	simpli-
ficação	da	sintaxe	da	função	de	declaração.	
Quadro 5 - Código de exemplo da função anônima
Fonte: a autora.
1
2
3
meuBotao.onclick	=	function(a,	b)	{
			alert	(a	+	b);
}
Para conhecer a sintaxe avançada da função flecha, acessando o site no 
link: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/
Functions/Arrow_functions#sintaxe 
DICA
143
Figura 3 - Sintaxe da função flecha
Fonte: a autora.
No	quadro	6,	podemos	ver	um	código	de	exemplo	da	função	flecha	e	a	compa-
ração	com	as	duas	outras	formas	de	declaração:	tradicional	e	anônima.
Quadro 6 - Exemplo de função flexa
Fonte:a autora.
1
2
3
4
5
6
7
8
9
10
11
function	comprimentar(nome)	{	// declaração da função
		return	'Olá,	'	+	nome	+'!';
}
var	comprimentar2	=	function	(nome)	{	// declaração de função anônima
		return	'Olá,	'	+	nome	+'!';
}
var	comprimentar3	=	(nome)	=>	'Olá,	'	+	nome	+'!';	//declaração da função flecha
// chamada das funções
console.log(comprimentar('Ana'));
console.log(comprimentar2('Joao'));
console.log(comprimentar3('Maria'));
3 MODELO DE OBJETOS DE DOCUMENTOS
O	modelo	de	objetos	de	documentos	(Document	Object	Model	-	DOM)	repre-
senta	um	documento	HTML	como	uma	hierarquia	ou	árvore	de	nós.	O	DOM	é	uma	re-
presentação	da	página	web	com	paradigma	orientação	a	objetos	que	pode	sofrer	modi-
ficação	com	a	linguagem	JavaScript	(MDN,	2023c).
144
Não confundir DOM com o modelo de objetos do navegador 
(Browser Object Model - BOM). O Bom é utilizado para intera-
gir com o navegador, podemos citar alguns métodos que são 
utilizados: console.log(), alert(“”) e prompt() .
DICA
3.1 HIERARQUIA DE NÓS
DOM	é	uma	interface	de	programação	de	aplicativo	(API)	independente	de	lin-
guagem	de	programação	para	HTML	e	XML.	Considere	o	trecho	de	um	documento	HTML	
apresentado	no	Quadro	7.
Quadro 7 - Documento HTML
Fonte: a autora.
1
2
3
4
5
6
7
8
9
<html	lang="pt">
		<head>
				<title>Meu	Documento</title>
		</head>
		<body>
				<h1>Meu	Cabeçalho</h1>
				<a	href=”URL”>Meu	Link</a>
		</body>
</html>
O	documento	HTML,	do	quadro	7,	possui	uma	árvore	DOM	(Figura	4),	na	qual	
temos	os	dados	e	objetos	fundamentais	do	DOM	(MDN,	2023c):
•	 Documento	(Document)	que	é	o	objeto	raiz	representação	do	documento	HTML.
•	 Nós	(Node)	são	todos	os	objetos	do	documento	HMTL.
•	 Elemento	(Element)	é	o	tipo	de	nó	que	representa	as	tag	do	documentos	HTML.
•	 Atributos	(Attribute)	é	o	tipo	de	nó	que	representa	os	atributos	das	tag do documentos 
HTML.
•	 Texto	(Text)	é	o	tipo	de	nó	que	representa	o	texto	que	fica	entre	a	tag	de	abertura	e	
tag	de	fechamento.
145
Figura 4 - Árvore DOM
Fonte: a autora.
3.2 SELECIONANDO E MANIPULANDO ELEMENTOS DO 
OBJETO DOM
Os	dados	da	árvore	DOM	podem	ser	 incluídos,	excluídos	ou	modificados	pelo	
JavaScript.	Vamos	conhecer	os	métodos	básicos	de	seleção	dos	elementos	e	manipu-
lação	de	elementos	na	Tabela	1,	os	métodos	apresentados	retornam	um	objeto	Element 
e	estão	disponíveis	apenas	no	objeto	document (MDN,	2023c).
Tabela 1 - Métodos de seleção e manipulação de elementos do documento
Fonte: adaptado de MDN (2023b).
Tipo Sintaxe Descrição
Seleção
document.getElementById(id) Seleção por Id
document.getElementsByName(nome)	 Seleção pelo nome
document.getElementsByTagName(nomeTag) Seleção pelo nome da tag
document.getElementsByClassName(nomeClass) Seleção pelo nome da classe
Manipulação document.createElement(htmltag) Criar	elementos
146
Vejas outros métodos que são utilizados com objeto document, no link: 
https://developer.mozilla.org/en-US/docs/Web/API/Document#instance_
methods
DICA
3.3 GERENCIANDO ATRIBUTOS 
No	carregamento	da	página	HTML,	o	navegador	gera	os	objetos	DOM	do	docu-
mento,	converte	os	atributos	dos	elementos	HTML	em	propriedades	de	objetos	DOM.	Os	
métodos	que	acessam	os	atributos	podem	ser	vistos	na	Tabela	2.
Tabela 2 - Métodos de acesso aos atributos de objetos DOM
Fonte: adaptado de MDN (2023b).
Objeto Sintaxe Descrição
Element
element.getAttribute(name) Seleção por Id
element.setAttribute(name,	value) Seleção pelo nome
element.hasAttribute(name) Seleção pelo nome da tag
element.removeAttribute(name) Seleção pelo nome da classe
element.attributes
Coleção	ativa	de	atributos	de	um	elemento	
(NamedNodeMap)
Document document.querySelector('#id') Seleciona o atributo pelo id
Vejas como manipular um NamedNodeMap, no link: 
https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap
DICA
Colocaremos em prática a manipulação dos objetos Element e Document 
mais adiante.
ESTUDOS FUTUROS
https://developer.mozilla.org/en-US/docs/Web/API/Document#instance_methods
https://developer.mozilla.org/en-US/docs/Web/API/Document#instance_methods
https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap
147
4 VISÃO GERAL DE FORMULÁRIOS WEB
Os	formulários	são	poderosos	para	realizar	a	interação	com	os	usuários,	inicia-
remos	nos	estudos	com	os	 requisitos	básicos,	 estrutura,	 estilo,	 controles	e	entradas	
para	construir	formulários	simples	em	HTML.	Finalizando,	estudaremos	como	realizar	a	
validação	e	envio	dos	formulários	(MDN,	2023b).
4.1 ESTRUTURA
Os	formulários	são	compostos	por	um	ou	mais	elementos	de	interação,	conhe-
cidos	por		widgets,	podendo	ser:	campos	de	texto	de	linha	única	ou	múltiplas	linhas,	cai-
xas	de	seleção,	botões,	menus,	ícones,	barra	de	rolagem,	checkboxes,	radio	buttons	e	
outros.	A	principal	diferença	de	um	documento	HTML	tradicional	para	um	formulário	em	
HTML	é	que	os	formulários	enviam	os	dados	coletados	para	um	destino	(MDN,	2023b).	
No	quadro	8,	visualizamos	o	esqueleto	básico	de	um	formulário	HTML.
Quadro 8 - Código HTML do formulário de login
Fonte: a autora.
1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE	html>
<html>
		<head>
				<meta	charset=utf-8	/>
				<meta	name="viewport"	content="width=device-width,	initial-scale=1.0">
				<title>Formulário</title>
		</head>
		<body>
				<form	method=””	action=””>
						…	//	Aqui	que	serão	incluídos	os	widgets.
					</form>
		</body>
</html>
O	elemento	<form>	define	o	formulário,	um	formulário	sempre	deve	iniciar	com	
esse	elemento.	Os	principais	atributos	do	formulário	são:	method e action.	O	atributo	
method	define	a	forma	do	protocolo	HTTP	enviar	os	dados	e	o	atributo	action	informa	o	
endereço	URL	de	destino	do	dos	dados.
148
4.2 CAMPOS DE ENTRADA
Existem	vários	elementos	HTML,	vamos	entender	apenas	os	elementos	que	se-
rão	usados		no	formulário	de	login	apresentado	na	Figura	5.
Usaremos	os	seguintes	elementos:	<label>,	<input>,	<a>	e	<button>,	na	tabela	3	
possui	a	descrição	sobre	cada	elemento.
Figura 5 - Layout tela de login
Fonte: a autora.
Tabela 3 - Elementos do formulário de login
Fonte: adaptado de MDN (2023b).
Elemento Descrição
<label>
Rótulo	dos	campos	de	um	formulário.	O	atributo	for	é	utilizado	para	realizar	a	vin-
culação	com	um	campo	do	formulário,	o	valor	do	atributo	deve	ser	o	id	do	campo.	
<input>
Campos	de	um	formulário.	O	atributo	type	define	o	comportamento	do	campo.	Para	
criar	os	campos	utilizamos:		“text”	para	campo	texto,	“password”	para	campo	senha,	
“checkbox”	para	caixa	de	seleção	e	button	para	campo	botão.
<a>
Elemento	ancora,	utilizado	para	criação	de	um		link	ou	hiperlink.	O	atributo	href	é	
o	local	que	informamos	o	destino	que	o	link	irá	levar,	sendo	que	pode	ser	seção	da	
página,	URL,	telefone	e	email.
<button>
Elemento	botão	para	incluir	o	evento	de	envio	do	formulário.	Existem	três	tipos	de	
botão:	submit,	reset,	button.	O	atributo	type	do	botão	por	padrão	é	submit,	logo	caso	
não	seja	informado	o	atributo	terá	o	comportamento	submit.	Quando	informado	o	
atributo	type	igual	a	button,	podemos	criar	botões	personalizados,	sendo	necessário	
a	criação	do	comportamento	no	código	JavaScript.
149
Nos valores de atributos como ID e name, é recomendado que não 
se utilize o padrão camelCase, e sim utilizar o padrão separado por “_” 
entre as palavras todas escritas em minúsculo, por exemplo “nome_log” 
para diferenciar das classes que utilizam “-”.
DICA IMPORTANTE
Saiba mais sobre os assuntos abaixo: 
• Elemento input: https://developer.mozilla.org/pt-BR/docs/
Web/HTML/Element/Input
• Hiperlink: https://developer.mozilla.org/pt-BR/docs/Web/
HTML/Element/a
• Diferença entre <button> e <input>: https://developer.mozilla.
org/pt-BR/docs/Web/HTML/ Element/Input/button
• Input do tipo checkbox: https://developer.mozilla.org/pt-BR/
docs/Web/HTML/Element/Input/checkbox
DICA
Veremos os métodos GET e POST mais adiante.
ESTUDOS FUTUROS
No	Quadro	9,	visualizamos	um	formulário	HTML	com	implementação	do	layout	
apresentado	na	Figura	5.
150
Quadro 9 - CódigoHTML do formulário de login
Fonte: a autora.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<!DOCTYPE	html>
<html>
		<head>
				<meta	charset=utf-8	/>
				<meta	name="viewport"	content="width=device-width,	initial-scale=1.0">
				<title>Formulário	de	Login</title>
		</head>
		<body>
				<form	method="post"	action="">
						<h1>Login</h1>	
						<p>	
								<label	for="nome_login">Usuário:	</label>
								<input	id="nome_login"	name="nome_login"	type="text"/>
						</p>
						<p>	
								<label	for="senha_login">Senha:	</label>
								<input	id="senha_login"	name="senha_login"	type="password"/>
						</p>
						<p>		
								<label>	
												<input	type="checkbox"	name="manterlogado"	value="sim"	/>	Manter	logado							
								</label>
						</p>
						<p>	<button	type="submit"	>Login</button>	</p>
						<p>	<a	href="#URL">Ainda	não	tem	conta?</a></p>
							<p>	<a	href="#URL">Esqueceu	a	senha?</a></p>
				</form>
		</body>
</html>
Existem algumas formas de utilizar o <input>, duas formas foram utilizadas no quadro 9.
• A primeira forma é com o <label> na linha 12 e <input> na linha 13, vinculamos os dois 
elementos através do atributo for do elemento <label> que deve ter o mesmo identifi-
cador do id do <input>. 
• A segunda forma é com o <input> aninhado dentro do <label>, como 
está apresentado na linha 20 à 21. Desta maneira é opcional o atri-
buto for do <label> e o id do <input>.
Saiba mais sobre checkbox no link: https://developer.mozilla.org/
pt-BR/docs/Web/HTML/ Element/Input/checkbox#valor
DICA
151
4.3 ATRIBUTOS GLOBAIS E CONTROLE DE TEXTO
Cada	elemento	de	um	formulário	possui	seus	próprios	atributos,	mas	existem	
alguns	atributos	que	são	comuns	a	todos	os	elementos	de	formulário.	Na	Tabela	4,	apre-
sentamos	alguns	dos	atributos	comuns	e	suas	respectivas	descrições.
Tabela 4 - Atributos comuns para elementos do formulário
Fonte: adaptado de MDN (2023b).
Atributo Descrição
autofocus
Elemento	que	estará	em	foco,	valor	padrão	é	falso.	Somente	um	elemento	do	for-
mulário	por	estar	com	esse	atributo	ativo.
disable
Desabilita	a	interação	com	o	elemento,	se	o	elemento	não	possui	o	atributo	es-
pecificado,	adota	o	valor	padrão	que	é	falso	indicando	que	o	elemento	está	ativo.
name Indica	o	nome	do	elemento,	sendo	enviado	juntamente	com	os	dados	do	formulário.
value Valor	inicial	do	elemento.
Os	campos	textos	são	os	elementos	básicos	de	interação	de	um	formulário	e	
são	controles	simples	de	entrada	de	um	dado	não	formatado,	a	forma	de	definir	é	uti-
lizado	<input>.	É	possível	definir	vários	tipos	de	campos	textos,	mas	é	possível	definir	o	
comportamento	que	o	campo	assumirá	do	campo	através	do	atributo	type.	Assim	como	
os	formulários,	os	controles	de	texto	também	têm	comportamentos	comuns,	na	Tabela	
5	citamos	alguns.
Tabela 5 - Atributos comuns para os controles de texto
Fonte: adaptado de MDN (2023b).
Atributo Descrição
readonly
Não	pode	ser	modificado,	porém	o	valor	de	entrada	ainda	é	enviado	juntamente	
com	os	dados	do	formulário.	
disabled Mesmo	comportamento	do	readonly,	porém	os	dados	não	serão	enviados.
placeholder
Texto	que	descreve	de	forma	breve	o	campo	de	entrada,	apresentado	dentro	do	
campo.
size Definição	do	tamanho	físico	do	campo
maxlength Definição	de	máximo	de	caracteres	que	podem	ser	inseridos.
spellcheck Verificação	ortográfica,	caso	o	navegador	suporte.
hidden
Usado	para	criar	um	controle	do	formulário	com	dados	que	devem	ser	enviados	
para	o	servidor	mas	não	deve	ser	visto	pelo	usuário.
152
Veremos os métodos GET e POST mais adiante.
ESTUDOS FUTUROS
Saiba mais sobre:
• Atributos globais: 
https://developer.mozilla.org/pt-BR/docs/ Web/HTML/Global_attributes
• Controle de caixa de seleção e botões de opção: 
https://developer.mozilla.org/en-US/docs/Learn/Forms/Basic_native_
form_controls#checkable_items_checkboxes_and_radio_buttons
DICA
	Neste	tema	de	aprendizagem,	pudemos	compreender	melhor	conceitos	e	suas	
aplicações,	como	por	exemplo	funções,	DOM,	gerenciamento	de	atributos	e	seus	dife-
rentes	tipos,	e	um	breve	visualização	de	formulários	simples	e	seus	detalhes	como	cam-
po	de	entrada.	Nos	aprofundamos	um	pouco	mais	à	pontos	específicos	como	sintaxe	e	
definição	de	uma	função,	a	invocação	destas,	sua	atuação	e	importância	detalhada	nos	
códigos.	
https://developer.mozilla
153
Neste tópico, você aprendeu:
•	 Funções	facilitam	a	criação	de	trechos	de	códigos	executados	diversas	vezes.	Utili-
zamos o termo function()	para	definir	uma	função.	Conhecemos	a	sintaxe	básica	para	
definir	uma	função	de	declaração.	Entendemos	como	funciona	o	escopo	global	e	es-
copo de funções, visualizamos como ocorre o sombreamento (shawing)	das	variáveis	
dentro	do	bloco	das	funções.	
•	 Tudo	que	for	executado	e	variáveis	criadas	dentro	da	função	não	podem	ser	acessa-
das	pelo	resto	do	código,	por	isso	é	necessário	criar	retorno	da	função	caso	seja	ne-
cessário.	Visualizamos	os	conceitos	básicos	de	funções	anônimas	e	funções	flecha	
(arrow).
•	 O	DOM	é	a	representação	do	documento	HTML	em	forma	de	árvore,	representando	
a	página	web	no	paradigma	de	orientação	a	objeto.	Entendemos	como	selecionar	e	
manipular	os	elementos	do	objeto	DOM,	conhecemos	como	é	realizado	o	gerencia-
mento	dos	atributos	dos	elementos	HTML.	
•	 Formulários	 são	utilizados	 para	 realizar	 a	 interação	 com	os	 usuários,	 entendemos	
que	a	diferente	do	formulário	web	para	um	HTML	tradicional	é	que	o	primeiro	envia	os	
dados	coletados	para	um	destino.	Conhecemos	a	forma	que	é	realizada	a	entrada	de	
dados	e	criamos	um	formulário	de	login.
RESUMO DO TÓPICO 1
154
AUTOATIVIDADE
1	 “A	definição	de	uma	função	não	a	executa.	Definir	a	função	é	simplesmente	nomear	
a	função	e	especificar	o	que	fazer	quando	a	função	é	chamada.	Chamar	a	função	
executa	realmente	as	ações	especificadas	com	os	parâmetros	indicados.”	
Fonte:	MDN.	Funções.	Disponível	em:	https://developer.
mozilla.org/pt-BR/docs/Web/JavaScript/Guide/	Functions.	
Acesso	em:	30	jan.	2023.
Sobre	definição	e	chamada	de	função,	assinale	a	alternativa	CORRETA:
a)	 (			)	 Existindo	a	necessidade	de	executar	o	código	repetidas	vezes	e	em	várias	partes	
do	código,	pode-se	criar	funções.	As	chamadas	de	função	é	uma	forma	simpli-
ficada	de	executar	o	mesmo	código	várias	vezes	tantas	quanto	forem	necessá-
rias.
b)	 (			)	 Para	definir	uma	função	usamos	a	palavras	reservada	“fun”	e	um	par	de	colche-
tes	“{}”	após	o	nome	da	função.	O	código	que	será	executado	quando	a	função	
for	chamada	fica	dentro	do	bloco	de	parênteses	“()”.
c)	 (			)	 O	escopo	global	é	o	mais	baixo	nível,	quando	definidos	são	acessados	apenas	no	
lugar	do	código	que	foi	declarado.	Quando	temos	as	mesmas	variáveis	no	escopo	
global	e	no	escopo	da	função,	a	variável	global	sombreia	(shadowing)	a	variável	
da	função.
d)	 (			)	 Tudo	que	é	executado	dentro	da	função	pode	ser	acesso	pelo	resto	do	código,	ou	
seja,	ficará	no	escopo	global.	O	retorno	de	função	ao	final	da	execução	da	função	
é	opcional,	visto	que	o	resto	do	código	tem	acesso	ao	resultado	dos	valores	de	
operações realizadas dentro da função, o retorno da função é utilizado apenas 
para	facilitar	a	leitura	do	código.
2	 “O	DOM	(Document	Object	Model)	é	a	representação	de	dados	dos	objetos	que	com-
põem	a	estrutura	e	o	conteúdo	de	um	documento	na	Web.	Neste	guia,	apresentamos	
brevemente	o	DOM.”	
Fonte:	MDN.	Introdução ao DOM.	Disponível	em:	https://
developer.mozilla.org/pt-BR/docs/Web/	API/Document_
Object_Model/Introduction.	Acesso	em:	30	jan.	2023.
Com	base	nos	elementos	dos	modelos	de	objetos	de	documentos	 (DOM),	 analise	as	
sentenças a seguir:
155
I-	 O	DOM	é	uma	representação	da	página	web	com	paradigma	orientação	a	objetos	
que	pode	ser	alterado	com	JavaScript.		 
II-	 O	DOM	também	é	utilizado	para	interagir	com	o	navegador,	utilizando	os:	console.
log(),	alert(“”)	e	prompt().
III-	 O	DOM	é	gerado	no	carregamento	da	página	HTML,	onde	atributos	dos	elementos	
HTML	são	convertidosem	propriedades	dos	objetos	DOM.	Para	realizar	alterações	
nos	atributos	é	necessário	utilizar	os	métodos	disponíveis.
Assinale	a	alternativa	CORRETA:
a)	 (			)	As	sentenças	I	e	II	estão	corretas.
b)	 (			)	Somente	a	sentença	II	está	correta.
c)	 (			)	As	sentenças	I	e	III	estão	corretas.
d)	 (			)	Somente	a	sentença	III	está	correta.
3	 “Formulários	HTML	são	um	dos	principais	pontos	de	 interação	entre	um	usuário	e	
um	web	site	ou	aplicativo.	Eles	permitem	que	os	usuários	enviem	dados	para	o	web	
site.	Na	maior	parte	do	tempo,	os	dados	são	enviados	para	o	servidor	da	web,	mas	a	
página	da	web	também	pode	interceptar	para	usá-los	por	conta	própria.”	
Fonte:	MDN.	Meu primeiro formulário HTML.	Disponível	
em:	https://developer.mozilla.org/	pt-BR/docs/Learn/Forms/
Your_first_form.	Acesso	em:	30	jan.	2023.
De	acordo	os	conceitos	de	desenvolvimento	de	formulários	em	HTML,	classifique	V	para	
as	sentenças	verdadeiras	e	F	para	as	falsas:
(   )	Os	formulários	são	compostos	por	dois	ou	mais	elementos	de	interação,	conhecido	
por		widgets.	
(   )	A	principal	diferença	de	um	documento	HTML	tradicional	para	um	formulário	em	
HTML	é	que	os	formulários	enviam	os	dados	coletados	para	um	destino.
(   )	O	elemento	<form>	define	o	formulário,	mas	não	é	necessário	utilizar	este	elemento,	
podendo	utilizar	o	elemento	<div	type=”form”>.
Assinale	a	alternativa	que	apresenta	a	sequência	CORRETA:
a)	 (			)	 V	–	F	–	F.
b)	 (			)	 V	–	F	–	V.
c)	 (			)	 F	–	V	–	F.
d)	 (			)	 F	–	F	–	V.
4	 Os	campos	textos	são	os	elementos	básicos	de	 interação	de	um	formulário	e	são	
controles	simples	de	entrada	de	um	dado	não	formatado,	a	forma	de	definir	é	utili-
zado	<input>.	É	possível	definir	vários	tipos	de	campos	texto,	mas	é	possível	definir	
o	comportamento	que	o	campo	assumirá	do	campo	através	do	atributo	type.	Assim	
como	os	formulários,	os	controles	de	texto	também	têm	comportamentos	comuns.	
Disserte	sobre	o	funcionamento	de	três	atributos	globais	para	o	controle	de	textos.
156
5	 Com	base	na	imagem	abaixo,	disserte	sobre	os	elementos	que	devem	ser	utilizados	
e	como	é	o	funcionamento	desses	elementos.
157
CRIANDO UM FORMULÁRIO WEB
UNIDADE 2 TÓPICO 2 — 
1 INTRODUÇÃO 
Acadêmico,	neste	Tema	de	Aprendizagem	2,	abordaremos	três	macroassuntos:	
Conhecendo	o	framework	Bootstrap	5;	Estilizando	um	formulário	com	framework;	e	En-
viando	dados	do	formulário	web.
No	 subtema	2,	 conheceremos	 o	 básico	 sobre	 o	 framework	Bootstrap	 5	 para	
criar	páginas	responsivas.	Entenderemos	como	é	o	funcionamento	da	Grid	e	container,	
criando	um	formulário	estilizado	de	cadastro.	Conheceremos	os	pontos	de	interrupções	
que	são	as	dimensões	dos	dispositivos	ou	tamanho	de	telas.	Apresentaremos	as	princi-
pais	classes	necessárias	para	estilização	de	formulários	de	exemplo.
No	subtema	3,	aprofundaremos	na	estilização	com	framework	Bootstrap	5	en-
tendendo como funciona os grupos de campos de entradas e a união de objetos inde-
pendentes.	Conheceremos	as	classes	do	framework,	que	são	utilizadas	para	possibilitar	
feedback	de	validação	de	campos	obrigatórios.
No	último	subtema,	entenderemos	como	será	realizada	a	validação	utilizando	
uma	função	JavaScript.	Conheceremos	os	métodos	de	envio	dos	dados	e	realizaremos	
a	publicação	dos	formulários	criados	no	Github	Pages.
2 INTRODUÇÃO BOOTSTRAP 5
O	framework	Bootstrap	5	possui	classes	pré	definidas	para	criação	de	páginas	
responsivas,		chamado	de	Grid,	ou	seja,	o	framework	possui	elementos	CSS	predefini-
dos.	A	estrutura	é	composta	por	container,	 linhas	e	colunas,	a	hierarquia	de	maneira	
resumida	é	container	>	Linha	>	Colunas.	
2.1 CONTAINER
A	delimitação	do	conteúdo	do	layout	e	o	elemento	fica	invisível,	utilizamos	a	tag	
<div>	para	criar.	Existem	três	classes	principais:	largura	fixa	(.container)	e		fluida	(.contai-
ner-fluid)	Na	classe	fluida	o	container	irá	ocupar	toda	a	extensão	da	Janela	(viewport).	
Na	versão	fixa	temos	tamanhos	que	utilizam	os	breakpoints	(.container-«breakpoint»),	
onde	o	valor	padrão	é	a	classe	.container	com	dimensão	<576px>.
158
Saiba mais sobre o Container no link: https://getbootstrap.com/
docs/5.0/layout/containers/
DICA
Para	colocar	em	prática	o	que	estudamos,	vamos	conhecer	a	 implementação	
de	uma	tela	de	cadastro	de	usuário,	para	abri-la	deverá	acessar	o	link	“Ainda	não	tenho	
conta?”	definido	no	quadro	9	-	linha	25.	Iniciaremos	com	o	código	do	formulário	HTML	
da	tela	de	Cadastro,	com	o	layout	da	tela	apresentado	na	Figura	6.	
Figura 6 - Layout tela de cadastro
Fonte: a autora.
Para	 usar	 o	 framework	 precisamos	 indicar	 a	 folha	 de	 estilos,	 utilizaremos	 o	
Bootstrap	CDN	(Content	Delivery	Network),	que	realiza	o	carregamento	do	framework	e	
seus	componentes	de	forma	remota.	
Utilizando o Bootstrap CDN, ao invés do Bootstrap local, não é rea-
lizado o download do arquivo na máquina, por utilizar um servidor 
remoto basta informar o link do servidor CND no atributo href da tag 
<link> e no type=”stylesheet’. Também devemos utilizar sempre os 
CSS “.min.css” pois é uma versão mais compacta.
Saiba mais sobre o framework Bootstrap no link: https://getbootstrap.
com/docs/5.0/getting-started/introduction/.
IMPORTANTE
159
É	importante	entender	o	conceito	de	grid	antes	de	aplicar	o	estilo	no	formulário	
com	Layout	apresentado	na	figura.	Na	visão	geral	o	grid	possui	três	elementos	princi-
pais:	colunas	dentro	de	linhas	e	 linhas	dentro	de	containers.	A	classe	“.container”	é	o	
container	padrão,	que	possui	uma	largura	fixa,	utilizado	para	tornar	o	site	responsivo	e	
se	adaptar	ao	tamanho	da	tela.
O Elemento <span> é muito similar ao elemento <div>, a diferen-
ça entre ele é que o <div> é um elemento de nível de bloco e o 
<span> é um elemento em linha.
DICA
2.2 BREAKPOINTS 
Outro	conceito	importante,	é	os	pontos	de	interrupção	(breakpoints),	que	de-
terminam	como	o	layout	deve	se	comportar	em	diferentes	dispositivos	ou	tamanhos	de	
tela.	Na	Tabela	6,	estão	os	seis	pontos	de	interrupção	do	Bootstrap	5,	também	chamado	
de	níveis	de	grade	(BOOTSTRAP,	2023).
Tabela 6 - Níveis de grade 
Fonte: BOOTSTRAP (2023, s.p.).
Ponto de interrupção (Breakpoint) Infixo de classe Dimensões
Muito	pequeno	(Extra	small) - <576px
Pequena	(Small) sm ≥576px
Médio	(Medium) md ≥768px
Grande	(Large) lg ≥992	px
Extra	grande	(Extra	large) xl ≥1200px
Extra	extra	grande	(Extra	extra	large) xxl ≥1400px
Saiba mais sobre o breakpoint no link: 
https://getbootstrap.com/docs/5.0/layout/breakpoints/
DICA
https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/div
https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/div
160
2.3 CLASSES
Na	Tabela	7,	temos	a	explicação	das	classes	do	framework	Bootstrap,	que	utili-
zaremos	no	formulário	de	cadastro.	
Tabela 7 - Estilo da Tela de Cadastro
Atributo Descrição
col-«breakpoint»-«tamanho»
Colunas	do	grid	do	Bootstrap	para	montar	o	layout,	o	grid	contém	
12	colunas	por	linha,	ou	seja,	o	valor	deve	ser	entre		1	a	12.	Por	
exemplo,	para	a	coluna	ocupar	100%	utilizamos	o	valor	12,	se	
ocupar	50%	será	o	valor	6.	O	tamanho	das	colunas	irá	utilizar	a	
largura	da	janela	(viewpoint)	e	o	tamanho	que	é	a	quantidade	
de	colunas.	A	 largura	de	tabela	utiliza	os	valores	da	tabela	6,	
sendo assim as colunas são responsivas e alteram conforme a 
dimensão	da	janela.
p«lados»-«tamanho»
m«lados»y-«tamanho»
Preenchimento	 (p	 -	padding)	 	 é	 o	 espaçamento	dentro	dos	
limites	do	conteúdo	e	margem	(m	-	margin)	é	o	espaçamento	
fora	do	conteúdo.	Os	valores	que	podem	ser	utilizados	nos	la-
dos	podem	ser	vistos	na	tabela	X	e	os	valores	possíveis	para	o	
tamanho	são:	0	ao	5	e	auto.	Utilize	o	mx-center	para	centralizar	
o	elemento	na	coluna.
bg-«cor»
Cor	de	fundo	(bg	-	backgroud).	A	cor	utilizada	na	tela	de	cadastro	
foi	a	azul	(primary).	A	lista	de	valores	das	cores	são:		cinza	(se-
condary,	gray),	verde	(success),	azul	(primary	e	info),	alaranjado	
(warning),	vermelho	(danger),	claro	(light,	body	e	white),	preto	
(dark)	e	transparente	(transparent).
bg-opacity-50
Classe	para	dar	uma	opacidade	no	fundo,	os	valorespossíveis	
são:	10,	25,	50	e		75.
rounded
Formatação	das	bordas,	a	classe	rounded	é	usada	para	arre-
dondamento	das	bordas.	Além	desta	classe	temos	outras	para	
formatar:	a	espessura	da	linha,	cor	da	borda	e	arredondamento	
individual	dos	cantos.	
text-«formatacao»
text-white
Formatação	de	texto.	Pode	alterar	alinhamento,	cor,	tamanho,	
estilo	(negrito,	itálico,	tachado	etc.),	tipo	da	fonte	e	transformar	
em	maiúsculas/minúsculas.	
form-control
Controle	 textual	 de	 formulário	 para	 os	 elementos	 <input>	 e	
<textarea>.
form-check
form-check-input
form-check-label
Formatação	do	campo	de	checagem,	que	atribui	o	valor	ativo	ou	
inativo.	Duas	questões	são	importantes	de	mencionar:
1)	São	três	tipos	de	campos	dessa	classe:	
• Checkbox:	botão	de	caixa	de	seleção,	são	caixas	quadradas	
que	são	marcadas	e	podemos	selecionar	mais	de	uma.	
• Radio:	botão	de	opção,	são	bolinhas	para	selecionar	uma	
única	opção.	
• Switch:	Botão	de	entrada	de	controle	de	alternância	horizon-
tal	que	pode	ser	manipulado	entre	estados	ativo	e	desativo,	
que	são	representados	por	um	boolean	valor.
2)	Utiliza	a	classe	.form-check	para	agrupar	os	campos	<input>		
e	<label>.	A	classe	utilizada	no	<input>	é	 .form-check-input e 
para	o	<label>	é .form-check-label.
161
d-grid
O	prefixo	D-	indica	que	é	uma	classe	utilitária	de	exibição	do	
Bootstrap	5	que	 irá	afetar	diretamente	o	Display.	Usamos	na	
linha	37	do	quadro	9	para	centralizar	o	botão	Cadastrar.
d-flex
O	prefixo	D-	indica	que	é	uma	classe	utilitária	de	exibição	do	
Bootstrap	5	que	irá	afetar	diretamente	o	Display.	
https://getbootstrap.com/docs/5.3/utilities/flex/
input-group Classe	para	agrupar	campos	de	entrada	em	uma	só	linha.
input-group-text
Formatação	do	campo	texto	com	elemento	<label>,	com	essa	
classe	o	campo	fica	ao	lado	com	elemento	<input>.
btn
btn-«tipo»
Classe	para	alterar	cor	do	botão,	a	recomendação	é	utilizar	a	
classe	com	o	elemento	<button>.	A	classe	pode	ser	utilizada	em	
três	elementos:	<a>,	<button>	e	<input>.
Fonte: Adaptado de BOOTSTRAP (2023, s.p.).
Leia o guia das classes para aprofundamento:
• Display: https://getbootstrap.com/docs/5.0/layout/grid/
• Colunas: https://getbootstrap.com/docs/5.0/layout/columns/
• Espaços: https://getbootstrap.com/docs/5.0/utilities/spacing/
• Fundo: https://getbootstrap.com/docs/5.3/utilities/background/
• Borda: https://getbootstrap.com/docs/5.0/utilities/borders/
• Texto: https://getbootstrap.com/docs/5.3/utilities/text/
• Entrada: https://getbootstrap.com/docs/5.3/forms/form-control/#example
• Checkbox: https://getbootstrap.com/docs/5.3/forms/checks-radios/#without-labels
• Grupo Entradas: https://getbootstrap.com/docs/5.3/forms/input-group/#basic-example
• Botão: https://getbootstrap.com/docs/5.3/components/buttons/#button-tags
Veja alguns exemplos de utilização das classes do Bootstrap 5:
• Container: https://youtu.be/MmlilYsIKHg
• Display: https://jsbin.com/dunusik/edit?html,output
• Colunas: https://jsbin.com/mepuwam/edit?html,output
• Espaços: https://jsbin.com/huripip/edit?html,output
• Fundo: https://jsbin.com/vuyefom/edit?html,output
• Border:https://jsbin.com/rofosoz/edit?html,output
• Text: https://jsbin.com/xawatey/edit?html,output
• Botão: https://jsbin.com/fohicub/edit?html,output
• Checkbox: https://jsbin.com/yakudul/edit?html,output
DICA
3 ESTILIZADO FORMULÁRIOS COM BOOTSTRAP 5
Agora	que	já	conhecemos	algumas	classes	do	Bootstrap	5,	vamos	pôr	a	mão	na	
massa	e	estilizar	os	formulários	de	login	e	cadastro.
https://getbootstrap.com/docs/5.0/layout/grid/
https://getbootstrap.com/docs/5.0/layout/columns/
https://getbootstrap.com/docs/5.0/utilities/spacing/
https://getbootstrap.com/docs/5.3/utilities/background/
https://getbootstrap.com/docs/5.3/utilities/text/
https://getbootstrap.com/docs/5.3/forms/form-control/#example
https://youtu.be/MmlilYsIKHg
https://jsbin.com/mepuwam/edit?html,output
https://jsbin.com/huripip/edit?html,output
https://jsbin.com/vuyefom/edit?html,output
https://jsbin.com/rofosoz/edit?html,output
https://jsbin.com/xawatey/edit?html,output
https://jsbin.com/fohicub/edit?html,output
162
3.1 GRUPO DE INPUTS
No	quadro	10,	veja	na	linha	10,	o	container	principal	criado	para	aninhar	todos	os	
demais	elementos	do	formulário.	No	atributo	class deste primeiro container, temos uma 
lista	de	valores,	neste	atributos	podemos	utilizar	um	ou	mais	seletores.	Também	foram	
criados container, com tag	<div>,		para	agrupar	os	campos	label e input	(linhas	14	e	19),	
um container	para	agrupar	os	campos	senha	e	confirmação	de	senha	(linha	24)	e	outro	
container	para	o	botão	“Cadastrar”	(linha	32).	
Quadro 10 - Formulário de Cadastro HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<!DOCTYPE	html>
<html	lang="pt-br">
	<head>
		<meta	charset=utf-8	/>
		<meta	name="viewport"	content="width=device-width,	initial-scale=1">
		<title>Formulário	de	Cadastro</title>
		<link	href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css"	
rel="stylesheet">
	</head>
	<body	>
	<div	class="container-sm	col-sm-7	py-5	my-5	bg-primary	text-white	rounded">
			<form>
				<h1	class="text-center">Cadastro</h1>	
				<div	class="col-sm-10	mx-auto	p-1">
						<label>Nome:</label>	
						<input	class="form-control	"	id="nome_pessoa"	name="nome_pessoa"	type="text"	
placeholder="Digite	seu	nome"/>	
				</div>
					<div	class="col-sm-10	mx-auto	p-1">	
						<label>E-mail:</label>	
							<input	class="form-control"	id="nome_login"	name="nome_login"	type="email"	
placeholder="Digite	seu	e-mail"/>	
					</div>
						<div	class="d-flex	col-sm-10	mx-auto	justify-content-center	gap-1">
						<div	class="col-sm-6	p-1">	
							<label>Senha:</label>	
							<input	class="form-control"	id="senha_login"	name="senha_login"	type="password"	
placeholder="Digite	a	senha"/>	
						</div>
						<div	class="col-sm-6	p-1">	
							<label>Confirme	a	Senha:</label>	
							<input	class="form-control"	id="conf_senha_login"	name="conf_senha_login"	
type="password"	placeholder="Digite	novamente	a	senha"/>							
163
29
30
31
32
33
34
35
36
37
					</div>
					</div>
					<div	class="d-grid	col-6	mx-auto	p-5">		
							<button	class="btn	btn-success">	Cadastrar	</button>
					</div>
				</form>
			</div>
	</body>
</html>
Fonte: a autora.
Código do quadro 10: https://jsbin.com/nojajoq/edit?html,output
DICA
3.2 UNIÃO DE OBJETOS INDEPENDENTES
Usaremos	algumas	classes	do	framework	diferentes	da	tela	de	cadastro,	para	
estilizar	o	formulário	de	login,	na	Figura	7	visualizamos	o	novo	Layout	da	tela	de	login	e,	
no	Quadro	11,	o	novo	código	HTML	do	formulário	de	login.		
Figura 7 - Novo layout tela de login
Fonte: a autora. 
164
Quadro 11 - Formulário de Cadastro HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<!DOCTYPE	html>
<html>
		<head>
				<meta	charset=utf-8	/>
				<meta	name="viewport"	content="width=device-width,	initial-scale=1">
				<title>Formulário	de	Login</title>
				<link	href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css"	
rel="stylesheet">
		</head>
		<body>
				<div	class="container-sm	col-sm-6	py-1	my-5	bg-primary	text-white		bg-opacity-50	
rounded">
					<form	method="post"	action="">
						<h1	class="text-center	mb-4">Login</h1>
						<div	class="d-flex	justify-content-center	gap-1">
						<div	class="input-group	mb-3">	
								<label	class="input-group-text"	for="nome_login">Usuário*:	</label>
								<input	class="form-control"	id="nome_login"	name="nome_login"	type="text"/>
						</div>
						<div	class="input-group	mb-3">	
								<label	class="input-group-text"	for="senha_login">Senha*:	</label>
								<input	class="form-control"	id="senha_login"	name="senha_login"	
type="password"/>
						</div>
						</div>
						<div	class="form-check	form-switch	mb-3">		
								<input	class="form-check-input"	role="switch"type="checkbox"	
name="manterlogado"	value="sim"	/>								
								<label	class="form-check-label">	Manter	logado	</label>	
						</div>
						<div	class="d-flex	justify-content-center">	
								<button	class="btn	btn-success	mb-3"	type="submit"	>Login</button>	
							</div>
						<div	class="d-flex	justify-content-center">
								<a	class="btn"	href="#URL">Ainda	não	tem	conta?</a>
								<a	class="btn"	href="#URL">Esqueceu	a	senha?</a>
						</div>
				</form>
				</div>
		</body>
</html>
Fonte: a autora.
165
Código do Quadro 11: <https://jsbin.com/hutasit/edit?html,output>
Assista o vídeo para entender melhor o uso de múltiplas classes no link: 
https://youtu.be/PZYwZxDcs78.
DICA
3.3 VALIDAÇÃO DO FORMULÁRIO WEB 
Para	finalizar	o	nosso	formulário,	vamos	validar	os	dados	de	entrada	antes	de	
enviar	o	formulário,	também	é	necessário	implementar	a	chamada	da	tela	de	cadastro	
quando	é	acionado	o	link	“Ainda	não	tem	cadastro?”
A	validação	é	uma	forma	de	dar	feedback	ao	usuário,	para	incluir	a	validação	em	
um	formulário	utilizando	Bootstrap	adicionamos	os	atributo	“novalidate” no elemento 
<form>,	veja	na	linha	13	do	quadro	11,	que	realiza	a	desativação	da	ferramenta	de	fee-
dback	do	navegador.	Ainda	na	 linha	13,	 inclui	a	classe	 .needs-validation no elemento 
<form>,	 essa	 classe	 é	 apenas	 uma	marcação	 para	validação	 dos	 campos.	 Os	 estilos	
de	validação	estão	disponíveis	nos	elementos	com	class	 .form-control,	 .form-select e 
.form-check.
Nos	campos	do	quadro	11,	é	necessário	incluir	o	atributo	required	no	<input>	(li-
nhas	18	e	24),	um	container	com	a	classe	.invalid-feedback	para	cada	<input>	(linhas	19	
e	25),	classe	.has-validation no container group	que	aninha	o	grupo	de	campos	<input>,	
<layout>	e	container	de		feedback	(linha	16).		Para	entender	melhor,	veja	no	Quadro	11	
todas	as	validações	no	formulário	de	login.
Quadro 12 - Código de validação da tela de login
1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE	html>
<html>
	<head>
		<meta	charset=utf-8	/>
		<meta	name="viewport"	content="width=device-width,	initial-scale=1">
		<title>Formulário	de	Login</title>
		<link	href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css"	
rel="stylesheet">
	</head>
	<body>
		<div	class="container-sm	col-sm-6	py-1	my-5	bg-primary	text-white		bg-opacity-50	
rounded">
				<form	method="post"	class="needs-validation"	action="#"	novalidate>
						<h1	class="text-center	mb-4">Login</h1>
166
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
			<div	class="d-flex	justify-content-center	gap-1">
					<div	class="input-group	mb-3	has-validation">	
						<label	class="input-group-text"	for="nome_login">Usuário*:	</label>
						<input	class="form-control"	id="nome_login"	name="nome_login"	type="text"	
required/>
						<div	class="invalid-feedback">Informe	o	usuário.</div>
					</div>
					<div	class="input-group	mb-3	has-validation">	
						<label	class="input-group-text"	for="senha_login">Senha*:	</label>
						<input	class="form-control"	id="senha_login"	name="senha_login"	type="password"	
required/>
						<div	class="invalid-feedback">Informe	a	senha.</div>
					</div>
				</div>
				<div	class="form-check	form-switch	mb-3">		
					<input	class="form-check-input"	role="switch"	type="checkbox"	name="manterlogado"	
value=""/>								
					<label	class="form-check-label">	Manter	logado	</label>	
				</div>
				<div	class="d-flex	justify-content-center">	
					<button	class="btn	btn-success	mb-3"	type="submit"	>Login</button>	
				</div>
				<div	class="d-flex	justify-content-center">
					<a	class="btn"	href="#URL">Ainda	não	tem	conta?</a>
					<a	class="btn"	href="#URL">Esqueceu	a	senha?</a>
				</div>
			</form>
		</div>
		</body>
</html>
Fonte: a autora.
4 ENVIANDO DADOS DO FORMULÁRIO WEB
Agora	que	já	aprendemos	a	criar	um	formulário	e	definimos	quais	campos	serão	
validados,	chegou	o	momento	de	entender	como	os	dados	do	formulário	são	enviados	
para	o	destino.
Código do Quadro 12: <https://jsbin.com/fatecup/edit?html,output>
Saiba mais sobre validação de formulários no link: 
https://getbootstrap.com/docs/5.3/forms/validation/#custom-styles
DICA
https://jsbin.com/fatecup/edit?html,output
167
4.1 FUNÇÃO PARA VALIDAÇÃO DOS CAMPOS 
Ao	acionar	o	botão	“Login”,	irá	acionar	a	validação	dos	campos	definidos,	para	
isso	é	necessário	implementar	uma	função	que	será	executada	no	momento	do	clique.	
Definimos	com	<script>	no	fim	do	<body>,	a	função	JavaScript	para	validação	pode	ser	
vista	no	Quadro	13.
Quadro 13 - Função JavaScript de validação dos campos
Fonte: BOOTSTRAP (2023b, s.p.).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
(()	=>	{
	'use	strict'
 //	Buscar	todos	os	form	deverá	aplicar	estilos	personalizados	de	validação	de	Bootstrap
	const	forms	=	document.querySelectorAll('.needs-validation')
 //retorna	uma	NodeList	estática	representando	os	elementos	classe	.needs-validation
 Array.from(forms).forEach(form	=>	{	//	Passe	por	cima	deles	e	impeça	a	submissão
		form.addEventListener('submit',	event	=>	{	
 //	adicionar	um	EventListener	chamado	sempre	que	o	evento	submit	for	acionado
			if	(!form.checkValidity())	{	//ao	enviar	o	formulário,	form.checkValidity()	será	chamado
				event.preventDefault()	//impedirá	que	o	evento	padrão	seja	considerado	normalmente
				event.stopPropagation()	//	impede	a	propagação	adicional	do	evento	atual.
			}
			form.classList.add('was-validated')	//	inclui	no	formulário	que	foi	realizada	a	validação
		},	false)
	})
})()
4.2 MÉTODO DE ENVIO DOS DADOS
Para	envio	dos	dados,	é	necessário	incluir	a	ação	no	<form>	com	o	atributo	ac-
tion="./home.html",	que	quando	acionado	o	botão	submit	é	direcionado	para	a	página	
home,	veja	no	Quadro	13	o	código	HTML	da	página	home.html.	
Para indicar como os dados são enviados, utiliza-se o atributo method, pois o 
protocolo	HTTP	possibilita	algumas	formas	para	transmissão	dos	dados,	sendo	normal-
mente	utilizados	os	métodos	“GET”	e	“POST”.
Conheça mais sobre o modo restrito no link: 
https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/
Strict_mode
DICA
https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Strict_mode
https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Strict_mode
168
Conheça mais sobre o protocolo HTTP no link: 
https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP
DICA
Quadro 14 - Código da página home
Fonte: a autora.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE	html>
<html>
	<head>
		<meta	charset=utf-8	/>
		<meta	name="viewport"	content="width=device-width,	initial-scale=1">
		<title>Tela	Principal</title>
	<link	href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css"	
rel="stylesheet">
	</head>
	<body>
		<div	class="container-sm	col-sm-6	py-1	my-5	bg-primary	text-white		bg-opacity-25	
rounded">
			<h1	class="text-center	mb-4">Login	realizado	com	sucesso!</h1>
		</div>
	</body>
</html>
Código do Quadro 14: <https://jsbin.com/fatecup/edit?html,output>
DICA
	No	Quadro	14,	é	utilizado	o	valor	"post"	do	atributo	method	para	enviar	o	formu-
lário	HTML	da	tela	de	login.	As	alterações	de	direcionamento	para	a	página	home.html	
no	click	do	botão	login	está	na	linha	13,	e	para	a	página	de	cadastro	para	quando	clicar	
no	link	“Ainda	não	tem	conta?”,	está	na	linha	37.
De	forma	resumida,	a	principal	diferença	entre	os	dois	métodos	é	a	visibilidade,	
em	que	o	método	GET	concatena	os	dados	na	forma	de	chave/valor	com	a	URL	e	o	mé-
todo	POST	encapsula	os	dados	no	corpo	da	requisição.	
https://jsbin.com/fatecup/edit?html,output
169
Quadro 15 - Código HTML do formulário de login
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<!DOCTYPE	html>
<html>
	<head>
		<meta	charset=utf-8	/>
		<meta	name="viewport"	content="width=device-width,initial-scale=1">
		<title>Formulário	de	Login</title>
		<link	href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css"	
rel="stylesheet">
	</head>
	<body>
	<div	class="container-sm	col-sm-6	py-1	my-5	bg-primary	text-white		bg-opacity-50	
rounded">
		<form	method="post"	class="needs-validation"	action="./home.html"	novalidate>
			<h1	class="text-center	mb-4">Login</h1>
			<div	class="d-flex	justify-content-center	gap-1">
				<div	class="input-group	mb-3	has-validation">	
					<label	class="input-group-text"	for="nome_login">Usuário*:	</label>
					<input	class="form-control"	id="nome_login"	name="nome_login"	type="text"	required/>
					<div	class="invalid-feedback">Informe	o	usuário.</div>
				</div>
				<div	class="input-group	mb-3	has-validation">	
					<label	class="input-group-text"	for="senha_login">Senha*:	</label>
					<input	class="form-control"	id="senha_login"	name="senha_login"	type="password"	
required/>
					<div	class="invalid-feedback">Informe	a	senha.</div>
				</div>
			</div>
			<div	class="form-check	form-switch	mb-3">		
				<input	class="form-check-input"	role="switch"	type="checkbox"	name="manterlogado"	
value=""/>								
				<label	class="form-check-label">	Manter	logado	</label>	
			</div>			
			<div	class="d-flex	justify-content-center">	
				<button	class="btn	btn-success	mb-3"	type="submit"	>Login</button>	
			</div>
			<div	class="d-flex	justify-content-center">
				<a	class="btn"	href="cadastro.html">Ainda	não	tem	conta?</a>
				<a	class="btn"	href="#URL">Esqueceu	a	senha?</a>
			</div>
		</form>
	</div>
	<script	src="./scripts/validar.js"></script>
</body>
</html>
Fonte: a autora.
170
O local onde deve ser colocado a tag <script> deve ser analisado com 
cuidado, pois o navegador interpreta o JavaScript no momento que 
ele encontrar a tag, deixando o carregamento da página mais lenta. 
Porém caso você precise do JS para montar a tela então seu script 
deve ficar no <head> caso contrário pode ficar no final do <body> 
antes da tag de fechamento.
Código do Quadro 15: <https://jsbin.com/fatecup/edit?html,output>
DICA
Veremos mais adiante como obter dados de um servidor, como 
passar dados de uma página para outra e armazenamento de 
dados do lado do cliente.
ESTUDOS FUTUROS
4.3 PUBLICAÇÃO DOS FORMULÁRIOS NO GITHUB
Vamos	criar	uma	GitHub	Pages	para	disponibilizar	os	formulários	via	URL.	Para	
isso	devemos	criar	um	repositório	com	os	arquivos	html	do	formulário	de	login	e	cadas-
tro.	Na	Tabela	8,	temos	os	passos	necessários	para	publicação	das	páginas	HTML.
Tabela 8 - Passo a passo para publicação dos formulários
Atividade Passo a passo
Acessar	o	github
Acesse	o	link:	https://github.com/.	Caso	não	tenha	conta,	será	neces-
sário	criar.
Acesse o repositório
Na	lateral	superior	direita	da	tela,	acessar	o	ícone	da	conta										e	se-
lecionar	a	opção	“Your	Repositories”
Criar	no	repositório
Clica	no	botão	“New”,	escolha	o	nome	do	repositório	e	clique	no	botão	
“Create	repository”.
Como	boa	prática,	escolha	um	padrão	para	nomes	de	repositório>.	
Por	exemplo,	«nomeRepositorio»_github_pages,	então		um	repositório	
com	o	nome	“login”,	ficaria		“login_github_pages”.
Publicar	os	arquivos Selecione	o	link	“uploading	an	existing	file”.
Selecionar	os	arquivos
Arraste	os	arquivos	ou	escolha	pelo	link	“choose	your	files”.	Realize	o	
upload	dos	arquivos:	login.html,	cadastro.html	e	home.html
Criar	pasta	para	scripts
Selecione	o	botão	 “Add	file”	e	clique	em	 “Create	new	file”.	Digite	no	
campo	“Nome	your	file”	scripts/	e	automaticamente	já	vira	uma	pasta.	
Agora	digite	o	nome	do	arquivo	“validar.js”
https://jsbin.com/fatecup/edit?html,output
https://github.com/
171
Criar	o	arquivo	js
Copie	o	conteúdo	do	quadro	12	o	campo	“Edit	new	file”,	e	clique	no	
botão	“Commit	new	file”
Editar	home.html
Clicar	sobre	o	arquivo	“home.html”,	selecione	o	lápis	para	edição.	Altere	
o	nome	do	script	para	“inicio.hml”.	Altere	o	texto	do	<h1>	para	“Seja	Bem	
vindo!”	e	clique	em	“Commit	changes”.
Editar	arquivos	html
Clique	sobre	o	arquivo	“index.html”,	selecione	o	lápis	para	edição,	altere	
o	caminho	do	<script>	no	final	do	arquivo	para	src="scripts/validar.js".	
Altere	também	os	atributos	action	do	<form>	para	action="home.html"	
e	methodo=”get”.	Finalizando	e	clique	em	“Commit	changes”.	
Após	as	alterações	podem	demorar	um	minuto	para	atualizar	o	site.
Criar	GitHub	Pages
Selecione	a	 opção	 “Settings”,	 no	menu	 lateral	 esquerdo	 selecione	
“Pages”,	busque	o	campo	“Build	and	deployment”,	clique	no	combobox	
escrito	“None”	abaixo	do	bloco	Brach	e	selecione	“main”	e	clique		no	
botão	“Save”.
Aguarde liberação site
Aguarde	1	minuto	para	criação	da	sua	página,	acessando	a	opção	“Pa-
ges”	do	menu	lateral	para	verificar	se	já	foi	criada	a	página.
Acessando o site
Na	opção	“Pages”	do	Menu	“Setting”	aparecerá	um	campo	informan-
do	“Your	site	is	live	at”	e	o	link	para	seu	site.	Clique	sobre	o	link	e	será	
direcionado	para	a	página	de	login.
Teste o site
Agora	é	só	realizar	os	testes,	caso	necessário	realize	os	ajustes	que	
achar	necessário.	
Fonte: a autora.
Na	Figura	8,	podemos	ver	a	tela	do	repositório	do	projeto	do	formulário	 login	
exemplo.
Figura 8 - Tela GitHub do projeto Formulário Login Exemplo
Fonte: a autora.
172
Podemos	neste	tema	de	aprendizagem	compreender	de	forma	prática	a	criação	
de	formulário	à	sua	estilização	e	envio	destes.	Estudamos	conceitos	como	Bootstrap,	
da	estrutura	geral	à	conceitos	de	containers,	linhas,	colunas,	hierarquia,	vimos	de	forma	
detalhada	os	atributos	e	suas	descrições.	
Se quiser realizar o download do projeto, acesse o link: 
https://github.com/profanapaulacostacurta/loginexemplo_github_pages.git
DICA
173
Neste tópico, você aprendeu:
•	 Conhecemos	o	framework	Bootstrap	5,	que	possui	elementos	CSS	predefinidos	para	
padronizar	o	visual	das	telas	e	criar	páginas	responsivas.	Entendemos	como	é	rea-
lizada a delimitação do conteúdo do layout e a utilização dos pontos de interrupção 
(breakpoints)	para	definir	o	comportamento	do	layout.
•	 Apresentamos	sobre	as	principais	classes	do	framework	Bootstrap	5	e	utilizamos	em	
um	formulário	de	cadastro.	Conhecemos	como	criar	grupos	de	campos	de	entradas	e	
realizar união de elementos independentes, por exemplo dois campos de entrada na 
mesma	linha.
•	 Entendemos	 como	 realizar	 a	 validação	 de	 campos	 de	 entrada	 com	 o	 framework	
Bootstrap	5,	indicando	quais	campos	devem	ser	validado	com	a	palavra	required no 
<input>.	
•	 Aplicamos	os	métodos	de	envio	de	dados	de	formulários	em	uma	página	de	login	e	
criamos	a	função	em	JavaScript	que	realiza	a	validação	para	apresentação	da	men-
sagem	de	erro	na	tela.	
•	 Aprendemos	a	publicar	um	formulário	no	repositório	Github	e	conhecemos	o	passo	a	
passo	para	publicar	o	site	em	uma	Github	Pages.
RESUMO DO TÓPICO 2
174
AUTOATIVIDADE
1	 “Os	contêineres	são	um	bloco	de	construção	fundamental	do	Bootstrap	que	contém,	
preenche	e	alinha	seu	conteúdo	em	um	determinado	dispositivo	ou	área	de	visuali-
zação	do	usuário	(viewport).”	Os	contêineres	são	o	elemento	de	layout	mais	básico	no	
Bootstrap	e	são	necessários	ao	usar	nosso	sistema	de	grade	padrão.”	
Fonte:	BOOTSTRAP.	Containers.	Disponível	em:	https://
getbootstrap.com/docs/5.3/layout/containers.	Acesso	em:	
30	jan.	2023.
Sobre	definição	de	containers	do	framework	Bootstrap	5,	assinale	a	alternativa	CORRETA:
a)	 (			)	 Existem	três	classes	principais:	largura	fixa	(.container)	e		fluida	(.container-fluid).	
Na	 versão	 fixa	 temos	 tamanhos	 que	 utilizam	 o	 breakpoints	 (.container-«bre-
akpoint»),	que	varia	de	“Extra	small”	com	dimensão	<	576px	até	“Extra	extra	lar-
ge”	com	dimensão	>=	1400px.
b)	 (			)	 São	três	os	principais	elementos	do	grid:	colunas,	linhas	e	tabelas.	A	classe	“.con-
tainer”	é	a	tabela	padrão,	que	possui	uma	largura	fixa,	utilizado	para	tornar	o	site	
responsivo	e	se	adaptar	ao	tamanho	da	tela.
c)	 (			)	 A	classe	col-«breakpoint»-«tamanho»	é	utilizado	para	preenchimento	(p	-	pad-
ding)		queé	o	espaçamento	dentro	dos	limites	do	conteúdo.	Os	valores	que	po-
dem	ser	utilizados	de	breakpoint	são:	1	a	6	e	os	valores	possíveis	para	o	tamanho	
são:	auto	e	numéricos	de	0	a	5.
d)	 (			)	 Para	o	botão	de	controle	de	alternância	(Switch),	utilizamos	a	classe	.form-check	
para	agrupar	os	campos	<div>		e	<button>.	A	classe	utilizada	no	<div>	é	.form-
-check-input	e	para	o	<button>	é	.form-check-label.
2	 Com	framework	Bootstrap	podemos	estender	controles	de	formulários	e	adicionar	
texto, botões ou grupos de botões em ambos os lados de campos de entradas de 
texto.	Existe	flexibilidade	também,	onde	podemos	aplicar	utilitários	de	exibição	para	
criar	um	container	e	itens	flexíveis	com	a	classe	d-flex.	
Fonte:	MDN.	Input group.	Disponível	em:	https://
getbootstrap.com/docs/5.3/forms/input-group/.	Acesso	em:	
30	jan.	2023.
Com	base	na	utilização	das	classes	do	Bootstrap	5	para	grupo	e	união	de	campos,	ana-
lise as sentenças a seguir:
I-	 Utilizando	as	classes	do	framework	Bootstrap,	é	possível	validar	os	campos	dos	for-
mulários	para	apresentar	feedback	ao	usuário,	para	incluir	a	validação	em	um	for-
mulário	usamos	o	atributo	“novalidate”	no	elemento	<form>.
175
II-	 A	classe	 .needs-validation	no	elemento	<form>,	 realiza	uma	marcação	do	campo	
indicando	que	deve	ser	realizada	a	validação	de	obrigatoriedade	do	campo.	Os	ele-
mentos	que	vão	ser	validados	devem	utilizar	as	classes	.form-control,	.form-select	
e	.form-check.
III-	 Um	container	utilizando	a	classe	.invalid-feedback	logo	abaixo	do	elemento	<input>	
é	utilizado	para	indicar	que	caso	o	valor	do	campo	seja	igual	ao	valor	do	container	
feedback	deixará	o	campo	em	vermelho.
Assinale	a	alternativa	CORRETA:
a)	 (			)	 As	sentenças	I	e	II	estão	corretas.
b)	 (			)	 Somente	a	sentença	II	está	correta.
c)	 (			)	 As	sentenças	I	e	III	estão	corretas.
d)	 (			)	 Somente	a	sentença	III	está	correta.
3	 A	definição	do	destino	e	como	serão	enviados	os	dados	do	elemento	<form>	encon-
tra-se	nos	atributos	action	e	method	 respectivamente.	 	Mas	para	enviar	os	dados	
não	basta	saber	o	destino	e	o	método,	precisamos	conhecer	os	nomes	dos	campos	
que	irão	fornecer	os	dados.	Os	nomes	dos	campos	informam	ao	navegador	que	nome	
deve	utilizar	para	cada	parte	de	dados,	e	no	lado	do	servidor,	possibilita	que	o	servidor	
saiba	lidar	com	cada	pedaço	de	dados	pelo	nome.”	
Fonte:	MDN.	Meu primeiro formulário HTML:	Enviar	
os	dados	para	seu	servidor	web.	Disponível	em:	https://
developer.mozilla.org/pt-BR/docs/Learn/Forms/Your_first_
form#	enviar_os_dados_para_seu_servidor_web.	Acesso	
em:	30	jan.	2023.
Considerando	os	conceitos	de	envio	dos	dados	de	um	formulário	HTML,	classifique	V	
para	as	sentenças	verdadeiras	e	F	para	as	falsas:
(   )	Os	métodos	“GET”	e	“POST”	são	os	mais	comumente	utilizados	como	valor	do	atri-
buto	method	do	elemento	<form>,	para	indicar	qual	método	serão	enviados	os	da-
dos. 
(   )	A	principal	diferença	entre	os	métodos	“GET”	e	“POST”	é	a	visibilidade.	O	primeiro	
método	concatena	os	dados	na	forma	de	chave/valor	com	a	URL	e	o	segundo	mé-
todo	encapsula	os	dados	no	corpo	da	requisição.
(   )	Ao	acionar	o	botão	que	 irá	 realizar	o	 submit	do	formulário,	pode	ser	 incluído	um	
script	 para	 executar	 a	 validação.	 A	 recomendação	 é	 sempre	 deixar	 o	 elemento	
<script>	dentro	do	elemento	<head>.	
Assinale	a	alternativa	que	apresenta	a	sequência	CORRETA:
a)	 (			)	 V	–	F	–	F.
b)	 (			)	 V	–	F	–	V.
c)	 (			)	 F	–	V	–	F.
d)	 (			)	 V	–	V	–	F.
176
4	 “O	GitHub	Pages	 é	 um	 serviço	 de	 hospedagem	de	 site	 estático	 que	usa	 arquivos	
HTML,	CSS	e	JavaScript	diretamente	de	um	repositório	no	GitHub	e,	como	opção,	
executa	os	arquivos	por	meio	de	um	processo	e	publica	um	site”.
Fonte: GITHUB DOCS. Disponível em: https://docs.github.com/pt/
pages/getting-started-with- github-pages/about-github-pages. 
Acesso em: 30 jan. 2023.
Disserte	sobre	os	três	principais	passos	que	devem	ser	executados	antes	de	acessar	o	
site	pelo	link	fornecido	pelo	Github.
5	 “O	Bootstrap	5	oferece	algumas	classes	para	estilizar	seus	formulários,	onde	os	ele-
mentos	dos	formulários	devem	ser	agrupados	pela	<div	class=”form-group”>	…	</div>	
que	criam	um	espaço	elegante	entres	os	 inputs.	Os	 inputs	por	sua	vez	recebem	o	
estilo	da	classe	form-control	que	cria	um	elegante	campo	de	digitação	com	um	ta-
manho	de	largura	de	100%.”.
Fonte:	OLIVEIRA,	A.	Formulários com HTML 5 e BootStrap.	
Disponível	em:	https://www.blogson.com.br/formularios-
com-html-5-e-bootstrap/.	Acesso	em:	30	jan.	2023.
Considerando	os	conceitos	de	grupos	de	campos	de	entrada,	disserte	sobre	os	campos	
necessários	para	agrupar	os	elementos	<input>,	<label>	e	mensagem	de	erro	quando	o	
campo	de	entrada	está	vazio.
177
TÓPICO 3 — 
OBJETOS EM JAVASCRIPT
UNIDADE 2
1 INTRODUÇÃO 
Acadêmico,	neste	Tema	de	Aprendizagem	3,	abordaremos	sobre	três	macro	as-
suntos:	Coleções	de	dados,	trabalhar	com	objetos	e	conhecer	o	editor	de	texto	VS	Code.
No	subtema	2,	aprenderemos	sobre	as	formas	de	armazenar	e	organizar	os	da-
dos	utilizando	estruturas	de	dados	como	Array,	Map	e	Set.	Conheceremos	os	principais	
atributos	e	métodos	de	cada	objeto,	realizando	o	acesso	e	interação	dos	objetos.
No	subtema	3,	aprenderemos	como	realizar	a	criação	de	objetos	e	propriedade	
de	objetos.	Através	de	exemplos	entenderemos	como	definir	um	método	e	como	inicia-
lizar	os	objetos	utilizando	vários	tipos	de	dados.
No	subtema	4,	conheceremos	o	editor	de	texto	VS	Code	para	montar	um	am-
biente de estudos e facilitar a visualização das alterações conforme é realizada a codi-
ficação.	Aprenderemos	como	instalar	as	extensões	para	facilitar	o	desenvolvimento	em	
HTML,	CSS	e	JavaScript.
2 COLEÇÕES DE DADOS EM JAVASCRIPT
Coleções	são	formas	de	armazenar	e	organizar	dados	para	que	seja	usado	de	
maneira	mais	eficiente.	Até	o	ES6,	tínhamos	dois	tipos	para	lidar	com	as	coleções:	obje-
tos	e	arrays,	com	o	lançamento	do	ES6,	duas	novas	estruturas	de	dados	foram	dispo-
nibilizadas:	mapa	(Map)	e	conjuntos	(set).	Também	veremos	a	maneira	como	realizar	a	
interação	sobre	as	coleções.	
Para os três objetos temos algumas maneiras de realizar interação, sendo a 
mais simples e comum aos três objeto é iterator for…of.	Veremos	exemplo	de	utilização	
do	iterator	para	cada	um	dos	objetos.
2.1 ARRAY 
Array	é	uma	coleção	de	valores	ordenados	que	tem	um	índice	e	um	nome.	A	
diferença	do	array	para	os	objetos	em	JavaScript	é	que	o	segundo	armazena	elementos	
com	propriedades	variadas	e	os	nomes	dos	elementos	são	strings.
No	Quadro	15,	podemos	ver	exemplos	de	operações	básicas	com	objeto	array	
em	JavaScript.	
178
Quadro 16 - Operações básicas em objeto Array
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
//	Criação	de	array	com	elementos
var	nome	=	new	Array("Ana",	"João",	"Maria");
console.log("Tamanho	Nome",	nome.length);	//	retorna	3
var	sobrenome	=	Array("Silva","Santos","Prado");
console.log("Tamanho	Sobrenome",sobrenome.length);	//	retorna	3
var	idade	=	["10","42","92"];	//	Array	literal
console.log("Tamanho	Idade",nome.length);	//	retorna	3
//	Criação	de	array	sem	elementos
var	pessoa	=	new	Array(6);	//	cria	um	array	para	3	elementos
console.log("Tamanho	pessoa",pessoa.length);	//	retorna	6
var	estudante	=	Array(9);	//quando	é	apenas	um	número	cria	um	array	para	3	elementos
console.log("Tamanho	estudante",estudante.length);	//	retorna	9
var	funcionario	=	[15];	//cria	um	array	com	um	elemento	número	15
console.log("Tamanho	funcionario",funcionario.length);	//	retorna	1
//	produzem	exatamente	o	mesmo	efeito	dos	demais
var	chefe	=	[];	//cria	um	array	sem	elementos
chefe.length	=	5;	//	define	o	tamanho	do	array
console.log("Tamanho	chefe",chefe.length);	//	retorna	5
//	Cria	um	array	com	um	elemento
chefe	=	[20];	//cria	um	array	com	o	elemento	20
console.log("Tamanho	chefe",chefe.length);	//	retorna	1
//	Povoando	um	array	carro
var	carro	=	[];	
carro[0]	=	"March";
carro[1]	=	"Kicks";carro[2]	=	"Tiida";
carro[3]	=	"Logan";
console.log("Tamanho	carro",carro.length);	//	retorna	4
carro=	0;
console.log("Tamanho	carro",carro.length);	//	retorna	undefined
//	Interação	no	array	nome
for	(let	n	of	nome)	{		//	loop	igual	ao	for	(var	i	=	0;	i	<	nome.length;	i++)	{
		console.log("Valor	Nome:",	n);
}
sobrenome.forEach(function(fun)	{	//	loop	forEach
		console.log("Valor	Sobrenome:",fun);
});
idade.forEach(fun	=>	console.log("Valor	Idade:",fun));	//	função	arrow
//Métodos
//	concat()
nomesobrenome	=nome.concat(sobrenome);
nomesobrenome.forEach(p	=>	console.log("Valor	Pessoas:",p));	
Fonte: a autora.
179
Utilize o site onecompiler.com para executar seu JavaScript. Acesso ao código 
do Quadro 16 pelo link: <https://onecompiler.com/javascript/3yw6fjhy5>.
DICA
Os índices de arrays JavaScript iniciam no zero e não no 1, ou seja, 
o comprimento da propriedade length será um a mais que o maior 
índice armazenado no array.
IMPORTANTE
Na	Tabela	8,	vemos	a	explicação	das	operações	básicas	de	um	array	em	JavaScript.	
Tabela 8 - Operações básicas em objeto Array
Fonte: a autora.
Método Descrição
length retorna	a	quantidade	de	elementos	do	array
push() inclui	um	elemento	no	final	do	array
pop() exclui	um	elemento	no	final	do	array
shift() exclui	um	elemento	no	início	do	array
unshift() Inclui	um	elemento	no	início	do	array
slice	(início,	fim)
seleciona o fragmento do elemento somente com os elementos da posição 
dos	parâmetros	do	início	até	o	fim
concat() união dois arrays, retornando um novo array
sort() ordenar os elementos de um array
forEach() executa	uma	função	que	retorna	o	elemento	em	cada	item	do	array.
Saiba mais sobre Array no link: 
https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Guide/
Indexed_collections
DICA
180
2.2 MAP 
O	objeto	Map	em	JavaScript	é	um	mapa	de	duplas	chave/valor	e	as	chaves	po-
dem	ser	de	qualquer	tipo	não	somente	String	como	no	Objetos.	O	Map	mantém	a	ordem	
de entrada dos elementos e pode ser recuperado na ordem de inserção com um loop 
for…of.
No	Quadro	16,	mostramos	exemplos	de	operações	básicas	de	um	objeto	Map.
Quadro 17 - Operações básicas em objeto Array
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//	Criar	um	Map
const	video	=	new	Map();
console.log('[1]	O	tamanho	do	map	é	video	=',	video.size);	//	retorna	0
const	texto	=	new	Map([
		['nome',	'Guia	Bootstrap	5'],
		['tipo',	'livro'],
		['autor',	'João	da	Silva'],
]);
console.log('[2]	O	tamanho	do	map	é	texto	=',	texto.size);	//	retorna	3
//Adicionar	valores	a	um	Map
video.set('nome',	'Efeito	Borboleta');
video.set('tipo',	'Filme');
video.set('autor',	'João	Silva');
console.log('[3]	O	tamanho	do	map	é	video	=',	video.size);	//	retorna	3
//Obter	valores	de	um	Map	Vídeo
console.log('[4]	Nome	video',	video.get('nome'));	//	retorna	Efeito	Borboleta
//Obter	valores	de	um	Map	Texto
console.log('[5]	Nome	texto',	texto.get('nome'));	//	retorna	Guia	Bootstrap	5
//Excluir	elementos	
texto.set('type',	'film');	//	inclui	o	elemento	com	chave	"type".
//	Propriedade	de	um	Map
console.log('[6]	O	tamanho	do	map	é',	texto.size);	//	O	tamanho	do	map	é	4
console.log('[7]	Existe	a	chave	tipo',video.has('tipo'));	//retorna	Existe	a	chave	tipo	true
texto.delete('type');	//	remove	o	elemento	com	chave	"type".
console.log('[8]	Existe	a	chave	type',video.has('type'));	//Existe	a	chave	type	false
//MapInterator
console.log('[9]	Texto',texto.keys());	//	[Map	Iterator]	{'nome',	'tipo',	'autor'}
console.log('[10]	Texto',texto.values());	//[Map	Iterator]	{'Guia	Bootstrap	5',	'livro',	'João	da	
Silva'}
console.log('[11]	Texto',texto.entries());	//[Map	Entries]	{['nome',	'Guia	Bootstrap	5'],['tipo',	
'livro'],['autor','João	da	Silva']
//Excluir	elementos 
texto.delete('tipo');	//	remove	o	elemento	com	chave	"tipo".
video.clear();	//	limpa	o	map,	removendo	todos	os	elementos
181
33
34
35
36
37
38
39
40
41
42
43
44
45
//MapInterator
console.log('[12]	Texto',texto.keys());	//	[Map	Iterator]	{'nome',	'autor'}
console.log('[13]	Texto',texto.values());	//	[Map	Iterator]	{'Guia	Bootstrap	5',	'João	da	Silva'	}
console.log('[14]	Texto',texto.entries());	//[Map	Entries]	{	[	'nome',	'Guia	Bootstrap	5'	],		[	
'autor',	'João	da	Silva'	]	}
//ForEach
texto.forEach(function(value,	key)	{
		console.log(key	+	'	=	'	+	value)	
})
//	retorna	lista	de	valores	(um	em	cada	linha):	nome	=	Guia	Bootstrap	5,	autor	=	João	da	
Silva
//	Interação	no	array	nome
for	(let	t	of	texto	)	{		//	loop	igual	ao	for	(var	i	=	0;	i	<	texto.size;	i++)	{
		console.log("Elementos:",	t);
}
Fonte: a autora.
Utilize o site onecompiler.com para executar seu JavaScript. Acesso o código 
do quadro 17 pelo link: https://onecompiler.com/javascript/3yw6en9k6
DICA
Na	Tabela	9,	vemos	a	explicação	das	operações	básicas	de	um	objeto	Map	em	
JavaScript.	
Tabela 9 - Operações básicas em objeto Map
Fonte: a autora.
Método Descrição
size retorna	quantidade	de	pares	chave/valor	do	objeto
clear() remove todos os elementos do objeto
delete(chave) exclui	o	objeto	associado	a	chave	informada	como	parâmetro.
has(chave) retorna true se o elemento existir ou falso se não existir no objeto
get(chave) retorna	valor	associado	a	chave	informada	como	parâmetro.
set(chave,	valor) Atribui	o	valor	para	chave	informada	no	objeto
keys() retorna	um	MapInterator	com	as	chaves	de	cada	elemento	do	objeto
values() retorna	um	MapInterator	com	os	valores	de	cada	elemento	do	objeto
entries() retorna	um	MapEntrie	com	um	Array	[Chave,	valor]	dos	elementos	do	objeto
forEach() Para	o	par	chave-valor	chamada	da	função	na	ordem	que	foram	inseridos.
182
Saiba mais sobre Map no link: 
https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Guide/
Keyed_collections#mapas
DICA
2.3 SET
O	objeto	Set	em	JavaScript	é	um	conjunto	de	valores,	onde	um	valor	só	pode	
ocorrer	uma	vez	e	permite	a	exclusão	pelo	seu	valor.	Da	mesma	forma	que	o	objeto	map,	
o	Set	também	mantém		a	ordem	de	inserção.	
No	Quadro	18,	mostramos	exemplos	de	operações	básicas	de	um	objeto	Set	em	
JavaScript.
Quadro 18 - Operações básicas com objeto Set
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//	Criação	do	Set
var	meuConjunto	=	new	Set();
console.log("[1]	Meu	Conjunto	Vazio:",	meuConjunto.size);	//	retorna	0
//	Povoando	o	Set
meuConjunto.add(1);
meuConjunto.add("2");
meuConjunto.add("texto");
meuConjunto.add(1);
console.log("[2]	Tamanho	Meu	Conjunto:",	meuConjunto.size);	//	retorna	3
console.log("[3]	Meu	Conjunto:",	meuConjunto);	//retorna	Set(3)	{	1,	'2',	'texto'	}
//incluindo	um	objeto	no	set
var	numero	=	{a:	1,	b:	2};
meuConjunto.add(numero);
meuConjunto.add({a:	1,	b:	2});	//		o	está	referenciando	outro	objeto
console.log("[4]	Meu	Conjunto:",	meuConjunto);	//	retorna	Set(5)	{	1,	'2',	'texto',	{	a:	1,	b:	2	},	{	a:	1,	b:	2	}	}
//Verificar	a	existência	de	um	valor
console.log("[5]	Tem	o	numero	1:",	meuConjunto.has(1));	//	retorna	true
console.log("[6]	Tem	o	numero	2:",	meuConjunto.has("2"));	//	retorna	true
console.log("[7]	Tem	o	numero	objeto:",	meuConjunto.has({a:	1,	b:	2}));		//	retorna	false
console.log("[8]	Tem	o	objeto	numero:",	meuConjunto.has(numero));		//	retorna	true
//Excluir	elementos	do	Set
meuConjunto.delete("2");	//	remove	string	2	do	set
console.log("[9]	Tem	o	string	2:",	meuConjunto.has("2"));				//	retorna	false,	2	já	foi	removido
console.log("[10]	Tamanho	do	meuConjunto:",meuConjunto.size);	//	retorna	4,	nós	simplesmente	
removemos um valor
183
25
26
27
28
29
30
31
32	
33
34
35
36
37
38
39
40
41
42
43
console.log("[11]	Meu	Conjunto:",	meuConjunto);	//	retorna	Set(4)	{	1,	'texto',	{	a:	1,	b:	2	},	{	a:	1,	b:	2	}	}
for	(let	item	of	meuConjunto)	console.log("[12]	Item	do	Meu	Conjunto:",item);
//	retorna	os	valores	em	ordem	(um	em	cada	linha)	:1,	texto,	{	a:	1,	b:	2	},	{	a:	1,	b:	2	}
for	(let	item	of	meuConjunto.keys())	console.log("[13]	Keys	do	Meu	Conjunto:",item);//	retorna	os	valores	em	ordem	(um	em	cada	linha)	:	1,	texto,	{	a:	1,	b:	2	},	{	a:	1,	b:	2	}
for	(let	item	of	meuConjunto.values())	console.log("[14]	Values	do	Meu	Conjunto:",item);
//	retorna	os	valores	em	ordem	(um	em	cada	linha)	:	1,		texto,	{	a:	1,	b:	2	},	{	a:	1,	b:	2	}
for	(let	[key,	value]	of	meuConjunto.entries())	console.log("[15]	Entries	do	Meu	Conjunto:",key);
//	retorna	os	valores	em	ordem	(um	em	cada	linha)	:	1,	texto,	{	a:	1,	b:	2	},	{	a:	1,	b:	2	}
const	meunumero	=	[2,3,4,4,2,3,3,4,4,5,5,6,6,7,5,32,3,4,5]	//	cria	um	array
console.log("[16]	Tamanho	meunumero",	meunumero.length);	//	retorna	19
var	novoArray	=	[...new	Set(meunumero)];	//	Converte	o	Set	para	Array
console.log("[17]	Novo	Array",	novoArray);	//	retorna	[2,	3,		4,	5,	6,	7,	32]
console.log("[18]	Tamanho	Novo	Array",	novoArray.length);	//	retorna	7
//	Iterar	entradas	set	com	forEach
meunumero.forEach(function(value)	{	
		console.log("[19-forEach]	Itens	Meunumero",value);	
});
//	retorna	os	valores	em	ordem	(um	em	cada	linha):	2,3,4,4,2,3,3,4,4,5,5,6,6,7,5,32,3,4,5
Fonte: a autora.
Use o objeto Set pode ser utilizado para remover elementos du-
plicados de um Array. O comando [v for (v of mySet)] foi removido, 
para converter um Set em Array utilizando [...mySet2].
Utilize o site onecompiler.com para executar seu JavaScript. Aces-
so ao código do Quadro 17 pelo link: <https://onecompiler.com/
javascript/3yw6hh7ng>.
DICA
Na	Tabela	10,	vemos	a	explicação	das	operações	básicas	de	um	objeto	Set	em	
JavaScript.	
184
Tabela 10 - Operações básicas com um objeto Set
Fonte: a autora.
Item Descrição
size propriedade	que	indica	a	quantidade	de	elementos	do	objeto
add(valor) adiciona o valor como um novo elemento no objeto
has(valor) retorna true se existir o elementos no objeto com o valor informado
delete(valor) exclui o elemento do objeto com o valor informado
[...meuConjunto] Converte	o	objeto	set	em	um	objeto	Array
new	Set(Array) Converte	o	objeto	Array	em	um	objeto	Set,	retirando	os	valores	repetidos.
forEach() Executa	um	loop,	uma	vez	para	cada	elemento	na	ordem	de	inserção.
keys() Não	existe	chave	como	no	objeto	Map,	é	apenas	um	alias	para	values()
values() retorna	os	valores	para	cada	elemento	no	objeto.
entries()
retorna	um	objeto	array	com	[valor,	valor],	como	no	Set	não	existe	chave	como	
em	Map,	para	manter	a	API	semelhante	e	retorna	o	valor	no	lugar	da	chave.
Saiba mais sobre Set no link: 
https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Guide/
Keyed_collections#conjuntos
DICA
3 TRABALHANDO COM OBJETOS
Um	objeto	é	uma	coleção	de	propriedades	que	são	associadas	a	um	valor	por	
um	nome	que	chamamos	de	chave	(key).	JavaScript	é	baseada	no	paradigma	orien-
tação	a	objeto.	Vamos	descrever	como	criar	os	objetos,	suas	propriedades	e	métodos.	
3.1 CRIAÇÃO DE OBJETOS 
Um	objeto	pode	ser	comparado	com	algo	da	vida	real,	por	exemplo	um	carro	
tem	suas	características	como	cor,	marca,	potência	etc.	As	propriedades	de	um	objeto	
em	JavaScript	descrevem	essas	características.	Para	criar	um	objeto,	podemos	utilizar	
um objeto inicializador ou criar a função construtora e depois instanciar o objeto com o 
operador	new.	
185
Quadro 19 - Inicializador de objetos
Fonte: a autora.
1
2
3
4
5
6
7
8
9
10
11
12
13
14 
15
16
var	objeto	=	{	propriedade_1:	"valor1",			//	pode	ser	um	identificador.
															2:												"valor2",																					//	ou	um	número
 		//	...,
														"propriedade	n":	"valor3"											//	ou	uma	string
	};	
var	carro	=	{	cor:	"branco",		
																				modelo:	"March",			
																				ano	:	"2016"
};
var	aluno	=	{	1:			"Ana",		
																					2:	"Maria",			
																					3	:	"João"
};
console.log("Objeto:	",	objeto);
console.log("Carro:	",carro);
console.log("Aluno:	",aluno);
Utilize o site onecompiler.com para executar seu JavaScript. Acesso 
ao código do Quadro 18 pelo link: 
<https://onecompiler.com/javascript/3ywbwmqu5>.
DICA
Outra	opção	é	criar	o	objeto	definido	através	de	uma	função	construtora	e	ins-
tanciar o objeto com operador new.	No	Quadro	20,	podemos	visualizar	um	exemplo	de	
função	construtora	e	a	criação	de	uma	instância.	
No	Quadro	19,	podemos	ver	a	utilização	de	um	inicializado.
https://onecompiler.com/javascript/3ywbwmqu5
186
Quadro 20 - Inicializador de objetos
Fonte: a autora.
1
2
3
4
5
6
7
8
9
10
11
12
13
14 
15
16
//Função	construtora	de	carro
function	carro	(	cor,	modelo,	ano,	dono){
				this.cor	=	cor;
				this.modelo	=	modelo;
				this.ano	=	ano;
				this.dono	=	dono;
}
//Função	construtora	de	Pessoa
function	pessoa	(nome,	cpf){
				this.nome	=	nome;
				this.cpf	=	cpf;
}
var	ana	=	new	pessoa("Ana	",	"123456789	");	//	Objeto	pessoa
//	uma	propriedade	pode	ser	um	objeto,	dono	recebe	o	objeto	pessoa.	
var	veiculo	=	new	carro("branco	",	"Nissan	March	",	"2019	",	"ana");	
Existe também o método de criação de objeto com Object.create, para 
entender melhor acesse o o link: https://developer.mozilla.org/pt-BR/
docs/Web/JavaScript/Guide/Working_with_Objects#criando_novos_
objetos
DICA
3.2 PROPRIEDADES
Uma	propriedade	de	um	objeto	em	JavaScript	é	implementada	por	um	variável	
vinculada	a	um	objeto.	O	acesso	às	propriedades	dos	objetos	podem	ser	feitos	de	duas	
formas:	pelo	nome	ou	pelo	índice	numérico.	
Porém,	o	índice	numérico	só	pode	ser	utilizado	quando	o	objeto	não	foi	definido	
pelo	nome	da	propriedade	ou	pela	função	construtora.	Por	exemplo,	se	iniciou	o	objeto	
usando	Carro[5]	=	“branco”	pode	ser	usado	carro[5]	para	acessar	a	propriedade,	mas	se	
iniciou	carro.cor	=	“branco”	só	pode	ser	acessado	pelo	nome	da	propriedade.	Formulá-
rios	também	podem	ser	acessados	pelo	índice	numérico,	porque	é	criado	uma	matriz	
em ordem de apresentação dos campos e pode ser acessado o atributo nome de um 
formulário	chamado	“cadastro”	por	“document.cadastro”,	“documento.form[“cadastro”]”	
ou	“document.forms[1]”.	
 
https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Guide/Working_with_Objects#criando_novos_objetos
https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Guide/Working_with_Objects#criando_novos_objetos
https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Guide/Working_with_Objects#criando_novos_objetos
187
Vejamos	no	Quadro	20,	a	seguir,	com	exemplos	criação	e	acesso	às	proprieda-
des	de	um	objeto.	Ressaltando	que	as	funções	para	criação	dos	objetos	pessoa	e	carro	
estão	no	Quatro	20.
Quadro 21 - Inicializador de objetos
Fonte: a autora.
1
2
3
4
5
6
7
8
9
var	ana	=	new	pessoa(“Ana”,	“123456789”);	//	Objeto	pessoa	(função	criada	no	quadro	
anterior)
//	uma	propriedade	pode	ser	um	objeto,	dono	recebe	o	objeto	pessoa.	
var	veiculo	=	new	carro(“branco”,	“Nissan	March”,	“2019”,	ana);	(função	criada	no	quadro	
anterior)
//Descobrir	o	dono	do	veículo
console.log(“Proprietario:”,	veiculo.dono);
//	Para	alterar	uma	propriedade	já	definida
console.log(“Cor:”,	veiculo.cor);
veiculo.cor	=	“preto”;
console.log(“Cor:”,	veiculo.cor);
Depois de definido um objeto é possível adicionar uma propriedade 
nova, através da propriedade prototype. Veremos esse assunto mais 
adiante.
ESTUDOS FUTUROS
Utilize o site onecompiler.com para executar seu JavaScript. Acesso 
o código dos quadros 20 e 21 pelo link: https://onecompiler.com/
javascript/3ywd8z6et
DICA
3.3 DEFINIÇÃO DE MÉTODOS
Método	é	quando	uma	função	é	associada	a	um	objeto,	em	que	uma	proprie-
dade	do	objeto		é	uma	função.	Da	mesma	forma	que	definimos	uma	função,	utilizamos	
para	definir	um	método	e,	para	a	definição	de	uma	função	que	será	um	método,	preci-
samos	atribui-la	à	propriedade	de	um	objeto.	No	Quadro	21,	podemos	ver	a	definição	de	
um	método.
188
Quadro 22 - Definição de método
Fonte: a autora.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//Definição	da	função	que	será	um	método	após	atribuição
function	dadosCarro(){
var	car	=	"Dados	do	veículo	->	Modelo:	"+	this.modelo+";	Cor:	"+		this.cor	+	";	Ano:	"	
+this.ano;
console.log(car);
}
function	dadosProprietario(){
		var	p	=	"Proprietário	do	veículo	"+	this.modelo+	"	é	";
		console.log	(p,	this.dono.dadosPessoais());
}
//	Definindo	atribuindo	a	função	a	propriedade	do	objeto	para	criar	o	método.
function	carro	(	cor,	modelo,	ano,	dono){
				this.cor	=	cor;
				this.modelo	=	modelo;
				this.ano	=	ano;
				this.dono	=	dono;
				this.dadosCarro	=	dadosCarro;
				this.dadosProprietario	=	dadosProprietario;
}
//	Definindo	o	método	diretamente	na	criação	do	objeto
var	pessoa	=	{	nome:"Ana",	
															cpf:	"12345678",
															dadosPessoais:	function()	{return	"Dados	Pessoais:	"+this.nome+"	-	CPF:	"+	
this.cpf;}
};
//Chamada	dos	métodos	dos	objetos
var	veiculo	=	new	carro("branco",	"Nissan	March",	"2019",	pessoa);
console.log("Proprietário:	:",	veiculo.dono);
veiculo.dadosCarro();
veiculo.dadosProprietario();
Utilize o site onecompiler.com para executar seu JavaScript. Acesso o código 
do quadro 22 pelo link: https://onecompiler.com/javascript/3ywdaccgq
DICA
189
4 VSCODE PARA JAVASCRIPT
Para	avançar	nos	estudos	precisamos	de	uma	ferramenta	que	nos	auxilie	nos	
testes	e	depuração	de	código.	O	VS	Code	é	um	editor	de	texto	leve	com	suporte	para	
JavaScript.
4.1 INSTALAÇÃO DO VSCODE 
Para	realizar	a	 instalação	no	Windows,	primeiro	realize	o	download	do	pacote	
zip	do	link:	<https://code.visualstudio.com/Download>	e	descompacte	o	pacote.	Abra	a	
pasta	compactada	e	acesso	o	arquivo	“Code.exe”,	será	aberta	a	tela	da	Figura	9.
Figura 9 - Tela inicial do VS Code
Fonte: a autora.
4.2 CONFIGURANDO VSCODE 
Vamos	instalar	o	pacote	de	idioma	em	português,	para	isso	precisamos	instalar	
extensões,	acesse	o	menu	Exibir	(View)	e	selecione	Extensões	(Extensions).
Para	instalar	o	pacote	de	idiomas	portugues,	digite	no	campo	“Search	Exten-
sions	in	Marketplace”	o	texto	“Portuguese	(Brazil)	Language	Pack”	(figura	10).
Clique	em	Instalar	(Install)	sobre	pacote	“Português	do	Brasil”	e	aguarde	a	fina-
lização,	então	será	apresentada	uma	tela	com	a	pergunta	se	deseja	alterar	o	idioma	e	
reiniciar	o	aplicativo	(Figura	10).	Clique	em	“Change	Language	and	Restart”	e	aguarde	
iniciar	o	VS	Code	novamente.
https://code.visualstudio.com/Download
190
Para	executar	nosso	projeto	HTML,	vamos	instalar	uma	extensão	“HTML	Play”	
para	visualizar	os	layout	durante	a	codificação.	Busque	a	extensão	da	mesma	forma	que	
foi	realizado	para	o	pacote	de	idioma.
Figura 10 - Tela de instalação de extensões
Fonte: a autora.
Figura 11 - Tela de pergunta sobre alteração do idioma
Fonte: a autora.
4.3 MONTANDO UM AMBIENTE DE ESTUDO 
Vamos	montar	um	ambiente	para	execução	do	nosso	formulário	de	login.	Para	
isso	crie	uma	pasta	chamada	“LoginExemplo”	em	seus	documentos.	Dentro	da	pasta	do	
projeto	crie	a	pasta	chamada	“client”	e	inclua	os	arquivos	do	projeto	do	formulário	de	
login	e	cadastro.	
Para baixar o projeto acesso o link:
https://github.com/profanapaulacostacurta/loginexemplo_github_pages
DICA
191
Para	executar	nosso	formulário	precisamos	abrir	a	pasta	do	projeto	no	VS	Code.	
Acesse	o	menu	“Arquivo”	e	selecione	“Abrir	Pasta	…”.	Selecione	a	pasta	“LoginExemplo”	
e	clique	no	botão	“Selecionar	Pasta”,	seu	projeto	aparecerá	no	Explorador	do	VS	Code.
Abra	o	arquivo	 “index.html”,	bastando	clicar	sobre	o	arquivo,	pressione	“CTR-
L+ALT+H”	que	 irá	aparecer	a	aba	“OUTPUT”	ao	 lado	da	 janela	do	código.	Assim,	con-
forme	forem	 realizadas	alterações	nos	arquivos	será	apresentado	o	Layout	das	telas	
conforme	Figura	12.
Figura 12 - Projeto LoginExemplo no VS Code
Fonte: a autora.
192
LEITURA
COMPLEMENTAR
USANDO FETCH API 
MDN	web	docs	
A	Fetch	API	fornece	uma	interface	JavaScript	para	acessar	e	manipular	partes	
do	protocolo,	 como	solicitações	e	 respostas.	Ele	 também	fornece	um	método	global	
fetch()	que	fornece	uma	maneira	fácil	e	lógica	de	buscar	recursos	de	forma	assíncrona	
na	rede.
Esse	tipo	de	funcionalidade	foi	obtido	anteriormente	usando	XMLHttpRequest.	
Fetch	fornece	uma	alternativa	melhor	que	pode	ser	facilmente	usada	por	outras	tecno-
logias,	como	Service	Workers.	Fetch	também	fornece	um	único	local	lógico	para	definir	
outros	conceitos	relacionados	a	HTTP,	como	CORS	e	extensões	para	HTTP.
A	especificação	fetch	difere	das	seguintes	maneiras	significativas:
•	 O	Promise	retornado	fetch()	não	rejeitará	o	status	de	erro	HTTP	mesmo	se	a	resposta	
for	um	HTTP	404	ou	500.	Em	vez	disso,	assim	que	o	servidor	responder	com	cabeça-
lhos,	o	Promise	será	resolvido	normalmente	(com	a	propriedade	“ok”	da	resposta	de-
finida	como	false	se	a	resposta	não	está	no	intervalo	de	200	a	299)	e	só	será	rejeitada	
em	caso	de	falha	na	rede	ou	se	algo	impedir	a	conclusão	da	solicitação.
•	 A	menos	que	fetch()	seja	chamado	com	a	credentials	opção	definida	como	include,	
fetch():
◦	 não	enviará	cookies	em	solicitações	de	origem	cruzada;
◦	 não	definirá	nenhum	cookie	enviado	de	volta	em	respostas	de	origem	cruzada;
◦	 a	partir	de	agosto	de	2018,	a	política	de	credenciais	padrão	foi	alterada	para	a	mes-
ma	origem.	O	Firefox	também	foi	modificado	na	versão	61.0b13).
Uma	solicitação	de	busca	básica	é	 realmente	simples	de	configurar.	Dê	uma	
olhada	no	seguinte	código:
1
2
3
fetch('http://example.com/movies.json')
			.then((response)	=>	response.json())
			.then((data)	=>	console.log(data));
http://example.com/movies.json
193
Na	linha	1,	estamos	buscando	um	arquivo	JSON	na	rede	e	imprimindo-o	no	con-
sole.	O	uso	mais	simples	de	fetch()	leva	um	argumento	—	o	caminho	para	o	recurso	que	
você	deseja	buscar	—	e	não	retorna	diretamente	o	corpo	da	resposta	JSON,	mas,	em	vez	
disso,	retorna	uma	promessa	que	resolve	com	um	Response	objeto.
O	Response	objeto,	por	sua	vez,	não	contém	diretamente	o	corpo	real	da	res-
posta	JSON,	mas	é	uma	 representação	de	toda	a	 resposta	HTTP.	Então,	para	extrair	
o	conteúdo	do	corpo	JSON	do	Response	objeto,	usamos	o	json()método,	que	retorna	
uma	segunda	promessa	que	resolve	com	o	resultado	da	análise	do	texto	do	corpo	da	
resposta	como	JSON.
Fonte: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API. Acesso em: 12 jan. 2023.
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API
194
Neste tópico, você aprendeu:
•	 Conhecemos	o	objeto	Array	e	como	é	sua	estrutura,	realiza	o	armazenamento	com	
uma	chave	e	valor.	Os	nomes	dos	elementos	do	array	é	uma	String	e	o	valor	pode	ter	
elementos	com	propriedades	variadas.	
•	 Entendemos	como	o	objeto	Map	armazena	os	dados	na	ordem	de	entrada	dos	ele-
mentos,	é	um	mapa	que	utiliza	chave/valor	para	armazenamento	onde	a	chave	pode	
ser	de	qualquer	tipo	não	somente	string.
•	 O	objeto	Set	é	um	objeto	que	armazena	elementos	únicos,	ou	seja,	não	aceita	ele-
mentos	 iguais.	Mantém	o	 armazenamento	 na	 ordem	de	 entrada	 dos	 elementos	 e	
disponibiliza	método	para	a	conversão	para	um	Array.	Também	é	possível	utilizar	a	
conversão	de	um	Array	para	Set	para	eliminar	elementos	duplicados.	
• Aprendemos como criar objetos, criar um inicializador de objetos e uma classe cons-
trutora.	Entendemos	como	definir	as	propriedades	dos	objetos	e	como	atribuir	valo-
res.	Conhecemos	como	definir	métodos	e	visualizamos	exemplos	de	utilização.
•	 Para	facilitar	a	codificação	conhecemos	o	editor	de	texto	VS	Code,	aprendemos	a	rea-
lizar	a	instalação	do	aplicativo	e	configuração	das	extensões	necessárias	para	execu-
tar	um	projeto	Front-End		desenvolvido		HTML,	CSS	e	JavaScript.	Conhecemos	como	
visualizar	o	Layout	da	tela	conforme	codificamos	com	a	Extensão	HTML	Play.
RESUMO DO TÓPICO 3
195
AUTOATIVIDADE
1	 “Em	JavaScript,	a	maioria	das	coisas	são	objetos,	desde	os	principais	recursos	do	Ja-
vaScript,	como	arrays,	até	o	navegador	APIs	construído	sobre	o	JavaScript.	Também	
é	possível	criar	os	próprios	objetos	para	encapsular	funções	e	variáveis			relacionadas	
em	pacotes	eficientes	e	atuar	como	contêineres	de	dados	úteis.”	
Fonte:	MDN.	Introdução a objetos em Javascript.	
Disponível	em:	https://developer.mozilla.org/pt-BR/docs/Learn/JavaScript/Objects.	Acesso	em:	30	jan.	2023.
Com	base	no	uso	de	objetos	em	JavaScript,	analise	as	sentenças	a	seguir:
I-	 Antes	de	surgir	o	JavaScript	ES6,	existiam	dois	tipos	de	dados	para	lidar	com	as	co-
leções:	objetos	e	arrays.	Após	o	lançamento	do	ES6,	foram	adicionadas	duas	novas	
estruturas	de	dados:	mapa	(Map)	e	conjuntos	(Set).
II-	 Pode-se	utilizar	os	loops	for…of	e	for..	Each	para	as	três	coleções:	Array,	Map	e	Set	e	
os	três	objetos	retornam	um	Array	[chave,	valor].
III-	 É	possível	utilizar	o	atributo	length,	para	os	três	objetos:	Array,	Map	e	Set.	E	a	sintaxe	
é	Objeto.length()	que	retorna	a	quantidade	de	elementos	do	objeto.
Assinale	a	alternativa	CORRETA:
a)	 (			)	 As	sentenças	I	e	II	estão	corretas.
b)	 (			)	 Somente	a	sentença	I	está	correta.
c)	 (			)	 As	sentenças	I	e	III	estão	corretas.
d)	 (			)	 Somente	a	sentença	III	está	correta.
2	 “Arrays	são	geralmente	descritas	como	"lista	de	objetos";	elas	são	basicamente	obje-
tos	que	contêm	múltiplos	valores	armazenados	em	uma	lista.	Um	objeto	array	pode	
ser	armazenado	em	variáveis	e	ser	tratado	de	forma	muito	similar	a	qualquer	outro	
tipo	de	valor,	a	diferença	está	em	podermos	acessar	cada	valor	dentro	da	lista	indivi-
dualmente,	e	fazer	super	úteis	e	eficientes	coisas	com	a	lista,	como	laço	através	da	
lista	e	fazer	a	mesma	coisa	para	cada	valor.”
Fonte:	MDN.	Arrays.	Disponível	em:	https://developer.mozilla.
org/pt-BR/docs/Learn/JavaScript/First_steps/Arrays.	
Acesso	em:	30	jan.	2023.
196
Com	base	na	utilização	das	classes	do	Bootstrap	5	para	grupo	e	união	de	campos,	ana-
lise as sentenças a seguir:
I-	 Para	criar	um	Array	temos	apenas	uma	opção	que	é	a	utilização	do	operador	new	
Array(numero),	criando	um	Array	com	a	quantidade	de	elementos	igual	ao	número	
indicado.  
II-	 Utilizando	o	comando	var	carro	=	[],	cria	um	Array	vazio	e	deve	ser	utilizado	o	co-
mando	 carro.length	 =	 numero	 para	 indicar	 a	 quantidade	 de	 elementos	 antes	 de	
povoar	o	Array.
III-	 A	quantidade	de	elementos	ou	tamanho	de	um	Array	é	o	último	índice	+	1,	ou	seja,	
se	último	elemento	Carro[2]	onde	o	índice	é	2	esse	Array	tem	3	elementos	pois	o	
índice	começa	em	zero.
Assinale	a	alternativa	CORRETA:
a)	 (			)	 As	sentenças	I	e	II	estão	corretas.
b)	 (			)	 Somente	a	sentença	II	está	correta.
c)	 (			)	 As	sentenças	I	e	III	estão	corretas.
d)	 (			)	 Somente	a	sentença	III	está	correta.
3	 “Um	objeto	é	uma	coleção	de	dados	e/ou	funcionalidades	relacionadas	(que	geral-
mente	consistem	em	diversas	variáveis	e	funções	—	que	são	chamadas	de	proprie-
dades	e	métodos	quando	estão	dentro	de	objetos).	Vamos	trabalhar	com	um	exemplo	
para	entender	como	eles	são.”	
Fonte:	MDN.	O básico sobre objetos JavaScript.	
Disponível	em:	https://developer.mozilla.org/pt-BR/docs/
Learn/JavaScript/Objects/Basics.	Acesso	em:	30	jan.	2023.
(   )	Para	criar	um	objeto	em	JavaScript	só	é	possível	após	a	definição	da	função	cons-
trutora.
(   )	As	propriedades	de	um	objeto	em	JavaScript	é	implementada	por	uma	variável	de-
clarada	dentro	de	um	objeto.
(   )	Método	é	quando	uma	função	é	associada	a	um	objeto,	onde	uma	propriedade	do	
objeto	que	é	uma	função.
Assinale	a	alternativa	que	apresenta	a	sequência	CORRETA:
a)	 (			)	 V	–	F	–	F.
b)	 (			)	 V	–	V	–	V.
c)	 (			)	 F	–	V	–	F.
d)	 (			)	 F	–	F	–	V.
197
4	 “Em	JavaScript,	quase	tudo	é	um	objeto.	Todos	os	tipos	primitivos	-	com	exceção	
de	null	e	undefined	-	são	tratados	como	objetos.	Eles	podem	receber	propriedades	
(propriedades	atribuídas	de	alguns	tipos	não	são	persistentes),	e	possuem	todas	as	
características	de	objetos.”
Fonte: MDN. Trabalhando com objetos - Objetos: tudo. 
Disponível em: https://developer.mozilla.org/pt-BR/docs/Web/
JavaScript/Guide/Working_with_Objects. Acesso em: 30 jan. 2023.
Disserte	sobre	a	diferença	entre	função	construtora	e	métodos.
5	 Considere	o	trecho	de	código	escrito	em	JavaScript	do	quadro	abaixo:
Considerando	esse	contexto,	faça	o	que	se	pede	abaixo:
a)	Crie	a	função	construtora	do	objeto	aluno.
b)	Crie	a	função	construtora	do	objeto	disciplina,	sabendo	que	o	atributo	matriculado	é	
um	Array.
c)	Crie	o	Método	realizarMatricula(rgm)	do	objeto	disciplina.	Deve	ser	realizada	a	vali-
dação	para	verificar	se	todas	as	vagas	foram	preenchidas,	caso	tenha	vaga	inclui	o	
rgm	no	atributo	“matriculados”	e	apresenta	a	mensagem	"Matrícula	Realizada	com	
Sucesso!",	caso	não	tenha	vaga	apresente	a	mensagem	"Matrícula	não	realizada,	já	
foram	preenchidas	todas	as	vagas!"
d)	Qual	será	a	saída	no	console	do	comando	da	linha	11.
1
2
3
4
5
6
7
8
9
10
11
var	disciplina	=	new	disciplina	(1,	"Algoritimo",	3);
var	aluno1	=	new	aluno("Ana",	"Costa",	"a@gmail.com",	12345);
var	aluno2	=	new	aluno("Maria",	"Silva",	"m@gmail.com",	12346);
var	aluno3	=	new	aluno("João",	"Silva",	"j@gmail.com",	12347);
var	aluno4	=	new	aluno("Pedro",	"Santos",	"p@gmail.com",	12348);
//	Matrícula	dos	Alunos
console.log(disciplina.realizarMatricula(aluno1.rgm));	//	Matrícula	do	Aluno1
console.log(disciplina.realizarMatricula(aluno2.rgm));	//	Matrícula	do	Aluno2
console.log(disciplina.realizarMatricula(aluno3.rgm));	//	Matrícula	do	Aluno3
console.log(disciplina.realizarMatricula(aluno4.rgm));	//	Matrícula	do	Aluno4
console.log("Matriculados	na	",	disciplina.nome,	"são:	",disciplina.matriculados);
198
REFERÊNCIAS
MDN.	Funções - blocos de código reutilizáveis.	Disponível	em:	https://developer.
mozilla.org	/pt-BR/docs/Learn/JavaScript/Building_blocks/Functions.	Acesso	em:	10	
jan.	2023a.
MDN.	Formulários da Web - Trabalhando com dados do usuário. Disponível	em:	
https://developer.mozilla.org/pt-BR/docs/Learn/Forms.	Acesso:	15	jan.	2023b.
MDN.	Introduction to the DOM. Disponível	em:	https://developer.mozilla.org/en-US/
docs/	Web/API/Document_Object_Model/Introduction.	Acesso	em:	15	jan.	2023c.
BOOTSTRAP.	Documentos Bootstrap 5.3.0-alpha1.	Disponível	em:	https://
getbootstrap.com/.	Acesso	em:	15	jan.	2023a.
BOOTSTRAP.	Documentos:	Forms	-	Validation. Disponível	em:	https://getbootstrap.
com/docs/5.3/forms/validation/.	Acesso	em:	26	jan.	2023b.
199
INTRODUÇÃO AO REACT 
JAVASCRIPT
UNIDADE 3 — 
OBJETIVOS DE APRENDIZAGEM
PLANO DE ESTUDOS
 A partir do estudo desta unidade, você deverá ser capaz de:
• compreender os conceitos fundamentais do React e sua importância no 
desenvolvimento de aplicações web modernas;
• utilizar a JSX (JavaScript Syntax Extension) para renderizar componentes de forma 
declarativa e intuitiva;
•	 organizar	a	estrutura	de	um	projeto	utilizando	React	de	maneira	eficiente,	
facilitando o desenvolvimento e a manutenção do código;
• incorporar expressões e valores dinâmicos em atributos dos elementos JSX para 
personalizar a renderização dos componentes; 
• manipular eventos e gerenciar o estado de um componente de React;
• navegar entre diferentes páginas e fazer requisições HTTP em aplicações de React;
•	 utilizar	ativos,	como	imagens	e	estilos,	em	projetos	envolvendo	React;
• desenvolver o primeiro projeto utilizando React.
 A cada tópico desta unidade você encontrará autoatividades com o objetivo de 
reforçar o conteúdo apresentado.
TÓPICO 1 – COMEÇANDO COM REACT JAVASCRIPT
TÓPICO 2 – DADOS E STATUS
TÓPICO 3 – NAVEGAÇÃO E ATIVOS REACT
Preparado para ampliar seus conhecimentos? Respire e vamos em frente! Procure 
um ambiente que facilite a concentração, assim absorverá melhor as informações.
CHAMADA
200
CONFIRA 
A TRILHA DA 
UNIDADE 3!
Acesse o 
QR Code abaixo:
201
TÓPICO 1 — 
COMEÇANDO COM REACT JAVASCRIPT
UNIDADE 3
1 INTRODUÇÃO
Bem-vindo	a	este	tema	de	aprendizagem,	no	qual	você	será	apresentado	ao	
React e aprenderá os conceitos fundamentais para começar a desenvolver aplicações 
com esta biblioteca. Vamos começar com uma visão geral do React,	entendendo	sua	
importância e benefícios para o desenvolvimento web moderno.
Em	seguida,	exploraremos	o	conceito	de	componentes	e	props,	que	são	a	base	
da arquitetura do React.	Você	aprenderá	como	criar	e	usar	componentes	reutilizáveis,	
bem como passar dados para esses componentespor meio de props.
Posteriormente,	discutiremos	a	estrutura	de	um	projeto	utilizando	React,	dis-
cutindo as melhores práticas para organizar o código e facilitar a manutenção. Veremos 
como dividir o código em componentes menores e como estruturar as pastas do projeto 
de	forma	eficiente.
Por	fim,	apresentaremos	a	JSX,	uma	extensão	de	sintaxe	JavaScript usada para 
renderizar componentes declarativamente. Veremos como usar a JSX para criar ele-
mentos	e	incorporar	lógica	dinâmica,	permitindo	a	construção	de	interfaces	de	usuário	
interativas e customizadas.
2 VISÃO GERAL
O React é uma estrutura JavaScript desenvolvida pela Meta (antigo Facebook) 
para criar interfaces de usuário (UI) em aplicativos da web. Esta estrutura é apreciada 
por	sua	simplicidade,	flexibilidade	e	escalabilidade,	sendo	utilizada	por	grandes	empre-
sas	de	tecnologia	como	o	próprio	Facebook,	Instagram	e	Airbnb.
As	estruturas	e	bibliotecas	de	front-end,	como	o	React,	são	partes	essenciais	
do desenvolvimento web moderno. O React,	especificamente,	ganhou	popularidade	na	
comunidade JavaScript	por	sua	eficiência	no	desenvolvimento	de	aplicações	web.
Uma das grandes vantagens do React é oferecer uma abordagem modular e 
reutilizável	na	criação	de	aplicativos	da	web.	Isso	é	possível	por	meio	de	componentes,	
que são partes independentes de código que podem ser reunidas para formar uma in-
terface de usuário completa. Cada componente é responsável por um segmento espe-
cífico	da	interface	do	usuário	e	pode	ser	reutilizado	em	diferentes	seções	do	aplicativo.
202
Outro recurso relevante do React é o Virtual DOM (Document Object Model),	
o qual é uma representação em memória da estrutura da árvore DOM,	que	permite	ao	
React	alterar	somente	os	elementos	que	precisam	ser	atualizados,	tornando	a	interface	
de	usuário	mais	eficiente.
Além	disso,	o	React	suporta	a	renderização	do	lado	do	servidor,	o	que	torna	o	
carregamento	do	conteúdo	do	aplicativo	mais	rápido,	além	de	melhorar	a	otimização	
para	mecanismos	de	busca.	Por	fim,	com	o	React Native,	 é	possível	criar	aplicativos	
móveis para iOS e Android utilizando a mesma base de código do React.
Para trabalhar com React,	os	desenvolvedores	precisam	ter	conhecimento	em	
JavaScript,	HTML e CSS. Também é importante conhecer ferramentas como Node.js e 
npm (Node Package Manager). O Node.js permite escrever e executar código JavaS-
cript	em	um	servidor,	enquanto	o	npm	ajuda	a	instalar,	compartilhar	e	gerenciar	pacotes	
de código JavaScript.
3 COMPONENTES E PROPS
Agora que já entendemos um pouco de React,	vamos	entender	melhor	os	con-
ceitos de componentes e propriedades. Componentes são o alicerce do desenvolvi-
mento com React,	pois	eles	nos	permitem	construir	interfaces	de	usuário	modulares	e	
reutilizáveis.
No React,	um	componente	pode	ser	uma	função	ou	classe	que	retorna	uma	re-
presentação	visual	de	um	pedaço	específico	da	interface	de	usuário.	Você	pode	pensar	
em um componente como um bloco de construção que encapsula a lógica e a aparên-
cia de um trecho da página. Esse estilo modular facilita a manutenção e a organiza-
ção do código e promove a reutilização em várias partes do projeto. Existem dois tipos 
principais de componentes no React: os componentes de função e os componentes 
de classe.
Um componente de função é uma função JavaScript que retorna um elemen-
to JSX,	ou	seja,	a	representação	visual	do	componente.	Esses	componentes	são	mais	
simples de criar e geralmente são utilizados quando não há necessidade de armazenar 
um estado interno ou usar os métodos de ciclo de vida do React.
Já um componente de classe é uma classe JavaScript que estende a classe 
base Componente do React.	Esses	componentes	são	mais	poderosos	e	flexíveis,	pois	
podem armazenar um estado interno e têm acesso aos métodos de ciclo de vida do 
React.	Ao	criar	um	componente	de	classe,	você	precisará	implementar	um	método	ren-
der() que retorne a representação visual do seu componente.
Um dos recursos mais valiosos do React é a capacidade de passar dados para 
componentes	por	meio	de	propriedades,	também	conhecidas	como	props. As props são 
203
parâmetros	que	podem	ser	definidos	quando	você	usa	o	componente	no	código,	per-
mitindo	que	eles	recebam	informações	externas	e	se	configurem	de	maneira	dinâmica.
Quando um componente recebe props,	ele	pode	utilizar	esses	dados	para	per-
sonalizar sua apresentação e comportamento. Você pode utilizar alguns tipos de dados 
como props: strings,	objetos,	números,	booleanos	e	até	mesmo	funções.
Nos	componentes	de	função,	as	props podem ser acessadas como argumentos 
da	função.	Já	nos	componentes	de	classe,	você	pode	acessá-las	como	propriedades	
do objeto "this.props".
Utilizando os conceitos que acabamos de aprender sobre o React,	vamos	criar	
um exemplo para ajudar a entender melhor os componentes e propriedades (props).
Vamos considerar que você esteja criando uma aplicação de lista de tarefas. 
Cada tarefa pode ser representada por um componente. Para um componente de fun-
ção,	poderíamos	fazer	algo	assim	(Quadro	1):
Quadro 1 – Componente de função
function Tarefa(props) {
 return <li>{props.texto}</li>;
}
Fonte: a autora.
Nesse	 exemplo,	 Tarefa	 é	 um	 componente	 de	 função	 que	 recebe	 um	 objeto	
props	 como	argumento.	Este	objeto	contém	uma	propriedade	chamada	texto,	que	é	
usada para personalizar a apresentação do componente.
Agora,	suponha	que	queremos	criar	uma	 lista	de	tarefas.	Podemos	fazer	 isso	
usando o componente Tarefa que acabamos de criar (Quadro 2):
Quadro 2 – Lista de tarefas
Fonte: a autora.
function ListaDeTarefas() {
		const	tarefas	=	['Estudar	React','Fazer	exercícios','Ler	um	livro'];
 return (
 <ul>
						{tarefas.map((tarefa,	index)	=>	<Tarefa	key={index}	texto={tarefa}	/>)}
 </ul>
 );
}
204
Neste	 exemplo,	 ListaDeTarefas	 é	 outro	 componente	de	 função	que	 cria	 uma	
lista não ordenada (<ul>) de tarefas. Para cada tarefa em nosso array	tarefas,	criamos	
um	novo	componente	Tarefa,	passando	a	tarefa	atual	como	uma	prop chamada texto.
Feito	 isso,	 podemos	observar	 que	os	 componentes	 e	propriedades	do	React 
possibilitam a criação de interfaces de usuário modulares e reutilizáveis. O uso de com-
ponentes facilita a organização do código e permite a reutilização em várias partes do 
projeto.	As	propriedades,	por	sua	vez,	fornecem	uma	maneira	poderosa	de	personalizar	
a	apresentação	e	o	comportamento	dos	componentes.	Assim,	ao	entender	e	dominar	
esses	conceitos,	você	dará	um	grande	passo	para	se	tornar	um	desenvolvedor	eficiente	
em React.
4 ESTRUTURA
Agora que entendemos os conceitos de componentes e props,	 vamos	
abordar a estrutura básica de um projeto utilizando React. É importante compreender 
como organizar e estruturar os arquivos em um projeto com React para facilitar o 
desenvolvimento e a manutenção do código.
Para começarmos a desenvolver com React,	é	importante	entender	a	estrutura	
básica de um projeto típico. Um projeto com React geralmente possui uma pasta 
src (source)	 que	 contém	 todos	 os	 arquivos-fonte	 da	 aplicação.	 Dentro	 dessa	 pasta,	
encontramos o arquivo index.js,	que	é	o	ponto	de	entrada	principal	da	aplicação	com	
React.
Além	 disso,	 a	 estrutura	 de	 um	 projeto	 com	 React envolve a hierarquia de 
componentes.	Os	componentes	podem	ser	organizados	em	uma	estrutura	hierárquica,	
onde	um	componente	pai	pode	conter	um	ou	mais	componentes	filhos.	Essa	organização	
facilita	a	reutilização	e	a	manutenção	do	código,	uma	vez	que	os	componentes	podem	
ser isolados.
Em um típico projeto com React,	é	comum	encontrar	a	seguinte	estrutura	de	
diretórios (Quadro 3):
205
Quadro 3 – Estrutura de diretórios
Fonte: a autora.
meu-projeto/
 src/
 index.js
 App.js
 components/
 Componente1.js
 Componente2.js
 pages/
 Pagina1.js
 Pagina2.js
 assets/
 imagem.jpg
 estilo.css
 public/
 index.html
Imagine que você está construindo uma casa e precisa organizar todas as pe-
ças	 e	materiais	 necessários.O	 diretório	 do	 seu	projeto	 é	 como	uma	planta	 da	 casa,	
onde você pode encontrar todas as partes do seu aplicativo e os recursos que serão 
utilizados.
1. Diretório principal ("meu-projeto"):
	 O	diretório	principal,	chamado	"meu-projeto",	representa	a	base	do	projeto.	É	como	a	
casa	em	si,	que	abrigará	todas	as	outras	partes	do	aplicativo.	Neste	diretório,	estão	
contidos os principais diretórios: "src" e "public".
2. Diretório "src":
 O diretório "src"	 é	 a	 parte	 interna	 da	 casa,	 onde	 são	 colocadas	 todas	 as	 coisas	
necessárias para construir e executar o aplicativo. Ele contém arquivos e subdiretórios 
essenciais para o funcionamento do projeto. É neste diretório que a maior parte do 
trabalho de desenvolvimento ocorre.
3. Arquivo "index.js":
 O arquivo "index.js" pode ser comparado à planta elétrica da casa. Ele é o ponto de 
partida	 do	 aplicativo,	 responsável	 por	 definir	 as	 configurações	 iniciais	 e	 importar	
outros arquivos necessários. É neste arquivo que geralmente se inicia o processo de 
renderização do aplicativo utilizando React.
206
4. Arquivo "App.js":
 O arquivo "App.js"	representa	a	sala	principal	da	casa,	onde	ocorre	a	maior	parte	da	
interação do aplicativo. É neste arquivo que os componentes são criados e combinados 
para construir a interface do usuário. O "App.js" é responsável por estruturar a lógica 
e a aparência do aplicativo.
5. Pasta "components":
 A pasta "components" pode ser comparada a uma caixa de ferramentas dentro da 
casa. Ela armazena todos os componentes reutilizáveis do aplicativo. Dentro desta 
pasta,	é	comum	encontrar	arquivos	como	"Component1.js" e "Componente2.js",	que	
representam	 as	 ferramentas	 específicas	 que	 podem	 ser	 utilizadas	 em	 diferentes	
partes do aplicativo.
6. Pasta "pages":
 A pasta "pages"	 pode	 ser	 comparada	 aos	 quartos	 da	 casa,	 onde	 cada	 página	 do	
aplicativo	possui	seu	próprio	arquivo.	Os	arquivos,	como	"Página1.js" e "Pagina2.js",	
representam	esses	quartos,	onde	o	conteúdo	e	a	 lógica	específica	de	cada	página	
são colocados. Cada arquivo na pasta "pages" geralmente representa uma página 
distinta do aplicativo.
7. Pasta "assets":
 A pasta "assets"	 pode	 ser	 comparada	 à	 despensa	 da	 casa,	 onde	 são	 guardados	
todos os recursos e materiais necessários para o aplicativo. Esta pasta é utilizada 
para	armazenar	arquivos	estáticos,	como	imagens,	arquivos	de	estilo	CSS	e	outros	
recursos	que	o	aplicativo	possa	precisar.	Por	exemplo,	um	arquivo	como	"imagem.
jpg"	pode	representar	uma	imagem	a	ser	exibida	no	aplicativo,	enquanto	"estilo.css" 
contém instruções para estilizar a aparência do aplicativo.
8. Pasta "public":
 A pasta "public"	representa	a	entrada	da	casa,	onde	são	colocadas	coisas	que	são	
acessíveis diretamente pelo público. O arquivo "index.html" é como o tapete de boas-
vindas	na	porta	de	entrada,	sendo	o	arquivo	HTML principal do aplicativo. Esse arquivo 
geralmente contém um elemento <div>	com	um	ID	específico,	onde	o	aplicativo	com	
React será renderizado.
Em	resumo,	cada	elemento	da	estrutura	do	projeto	com	React possui um papel 
específico	e	contribui	para	a	organização	e	funcionamento	do	aplicativo.	Essa	estrutura	
permite uma maneira sistemática de armazenar os arquivos e componentes necessá-
rios para a construção e execução do aplicativo.
Ao iniciar um projeto com React,	é	comum	utilizar	ferramentas	como	o	Create 
React App (CRA),	que	já	estrutura	a	aplicação	inicial	automaticamente	e	configura	um	
ambiente de desenvolvimento pronto para uso.
207
Lembre-se de que a estrutura de um projeto com React pode variar dependen-
do	das	preferências	e	necessidades	específicas	de	cada	projeto.	É	importante	manter	
uma	organização	consistente	e	escalável,	garantindo	que	o	código	seja	de	fácil	com-
preensão e manutenção.
Na	próxima	seção,	vamos	explorar	a	sintaxe	JSX,	que	é	uma	extensão	do	Ja-
vaScript utilizada no React para renderizar componentes de forma declarativa e intuitiva.
5 INTRODUÇÃO JSX (JAVASCRIPT SYNTAX EXTENSION)
Caro	acadêmico,	prepare-se	para	continuar	com	o	aprendizado	do	React Ja-
vaScript enquanto nos aprofundamos em JSX ou JavaScript	Syntax	Extension.	Com	
um	pouco	de	paciência	e	prática,	você	 logo	descobrirá	que	a	JSX é uma ferramenta 
essencial em seu kit de ferramentas de programação React. 
5.1 O QUE É JSX?
JSX é uma extensão de sintaxe para JavaScript. Pode parecer muito com HTML,	
mas não se engane! É totalmente incorporada ao JavaScript e fornece uma maneira 
mais intuitiva e versátil de estruturar seus componentes React.
Embora não seja absolutamente necessário usar JSX	 ao	codificar	 com	React,	
isso	torna	a	tarefa	significativamente	mais	direta	e	agradável.	Ela	nos	permite	escrever	
nossos componentes de forma que se assemelhe à estrutura que eles terão no (Docu-
ment Object Model) DOM,	que	é	mais	fácil	para	a	maioria	das	pessoas	entender	e	trabalhar.
5.2 POR QUE JSX?
Aqui está a importância da JSX: ela nos permite escrever sintaxe semelhante à 
HTML diretamente em nosso código JavaScript.	Isso	significa	que	podemos	aproveitar	o	
poder do JavaScript para renderizar HTML dinamicamente em nossas páginas da web. 
A extensão reúne o melhor dos dois mundos: a expressividade do JavaScript com a 
sintaxe familiar do HTML.
Além	disso,	como	a	JSX está mais próxima do JavaScript do que do HTML,	po-
demos usar o poder do JavaScript	para	lógica,	loops,	condições	e	muito	mais	dentro	de	
nossa	marcação.	Isso	torna	nossos	componentes	mais	flexíveis	e	robustos.
5.3 SINTAXE JSX BÁSICA
Vamos dar uma olhada em um exemplo muito simples de sintaxe JSX (Quadro 4):
208
Quadro 4 – Sintaxe JSX
Fonte: a autora.
elemento	const	=	<h1>Olá,	mundo!</h1>;
No	 exemplo	 do	 Quadro	 4,	 o	 texto	 dentro	 dos	 colchetes	 angulares	 (`<h1>Olá, 
mundo!</h1>`)	pode	parecer	HTML,	mas	na	verdade	é	JSX.
O resultado dessa expressão JSX é um objeto JavaScript – um elemento React,	
para ser preciso – que representa um elemento HTML. React usará este objeto para 
construir um elemento HTML real no DOM.
Na JSX,	você	 também	pode	usar	 expressões	JavaScript colocando-as entre 
chaves	`{}`.	Por	exemplo	(Quadro	5):
Quadro 4 – Sintaxe JSX
Fonte: a autora.
const nome = 'Joao';
elemento	const	=	<h1>Olá,	{nome}</h1>;
No	Quadro	5,	 `{name}` é uma expressão JavaScript dentro da sintaxe JSX. O 
React avaliará essa expressão e incluirá o resultado no HTML	gerado,	portanto	o	HTML 
resultante	no	DOM	seria	`<h1>Olá, Joao</h1>`.
5.4 UMA PALAVRA DE CAUTELA
A JSX	também	tem	suas	peculiaridades,	que	exploraremos	ao	longo	deste	livro.	
Por	exemplo,	por	ser	mais	próxima	do	JavaScript do que do HTML,	a	JSX usa a con-
venção de nomenclatura do JavaScript	para	atributos	e	propriedades.	Isso	significa	que	
class se torna className,	tabindex se torna tabIndex e assim por diante.
À	medida	que	avançamos	em	nosso	aprendizado,	exploraremos	exemplos	mais	
complexos e descobriremos como a JSX forma a base da criação de componentes no 
React.	Lembre-se,	a	prática	é	fundamental,	portanto,	certifique-se	de	codificar	enquan-
to trabalha neste livro.
209
5.5 APROFUNDANDO-SE NA JSX
Após nossa introdução inicial à JSX,	vamos	nos	aprofundar	mais	nessa	parte	
integrante do React JavaScript.	Neste	subtema,	examinaremos	alguns	conceitos	mais	
avançados,	entenderemos	as	regras	da	JSX e até aprenderemos a lidar melhor com a 
JSX. Este subtema irá ampliar sua compreensão e equipá-lo com as ferramentas para 
usar a JSX	de	forma	mais	eficaz	em	seus	aplicativos	com	React.
5.5.1 JSX também é uma expressão
Em JavaScript,	as	expressões	são	trechos	de	código	que	produzem	um	valor.	
Por	exemplo,	`2	+	2`	é	uma	expressão	porque	é	avaliada	como	`4`.	O	que	também	acon-
tece	com	`user.firstName`	porque	é	avaliado	como	o	primeiro	nome	do	objeto	 `user`.	
Adivinha? Elementos JSX também são expressões!
Como a JSX compila em JavaScript,	você	pode	usar	elementos	JSX em qual-
quer lugar em que usaria expressões JavaScript.	Por	exemplo,	você	pode	atribuir	ele-
mentos JSX	a	variáveis,	passá-los	como	argumentos

Mais conteúdos dessa disciplina