Temp - Desenvolvimento Front End Com HTML5 CSS3 e JavaScript PDF
Temp - Desenvolvimento Front End Com HTML5 CSS3 e JavaScript PDF
COD.: 1892_0
Desenvolvimento Front End
com HTML5, CSS3 e JavaScript
Créditos
Todos os direitos autorais reservados. Este manual não pode ser copiado, fotocopiado, reproduzido,
traduzido ou convertido em qualquer forma eletrônica, ou legível por qualquer meio, em parte ou
no todo, sem a aprovação prévia, por escrito, da Monte Everest Participações e Empreendimentos
Ltda., estando o contrafator sujeito a responder por crime de Violação de Direito Autoral, conforme
o art.184 do Código Penal Brasileiro, além de responder por Perdas e Danos. Todos os logotipos
e marcas utilizados neste material pertencem às suas respectivas empresas.
"As marcas registradas e os nomes comerciais citados nesta obra, mesmo que não sejam assim identificados, pertencem
aos seus respectivos proprietários nos termos das leis, convenções e diretrizes nacionais e internacionais.”
Autoria
Emilio Celso de Souza
Revisão Ortográfica e
Gramatical
Fernanda Monteiro Laneri
Diagramação
Bruno de Oliveira Santos
Edição nº 1 | 1892_0
Junho/ 2020
Este material constitui uma nova obra e é uma derivação da seguinte obra original, produzida por Monte Everest
Participações e Empreendimentos Ltda., em Fev/2017: Desenvolvendo Aplicações Web com HTML5, CSS3, JavaScript
e PhoneGap
Autoria: Emilio Celso de Souza
4
Sumário
Conteúdo de referência
Introdução....................................................................................................................................................... 07
Conteúdo programático............................................................................................................................ 09
Atividades
5
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
Mãos à obra!
6
Introdução
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
8
Conteúdo
programático
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
10
Conteúdo programático
11
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
12
Conteúdo programático
13
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
14
1 Visão geral do
HTML5
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
16
Visão geral do HTML5 1
17
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
18
Visão geral do HTML5 1
19
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
20
Visão geral do HTML5 1
21
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
22
Visão geral do HTML5 1
23
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
24
Visão geral do HTML5 1
25
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
26
Visão geral do HTML5 1
27
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
28
Visão geral do HTML5 1
29
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
30
2 Estilos com
CSS3
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
32
Estilos com CSS3 2
33
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
34
Estilos com CSS3 2
35
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
36
Estilos com CSS3 2
37
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
38
Estilos com CSS3 2
39
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
40
Estilos com CSS3 2
41
Responsividade
3 com media
queries
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
44
Responsividade com media queries 3
45
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
46
Responsividade com media queries 3
47
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
48
Responsividade com media queries 3
49
Conceitos do
4 JavaScript e do
Node.js
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
52
Conceitos do JavaScript e do Node.js 4
53
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
54
Conceitos do JavaScript e do Node.js 4
55
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
56
Conceitos do JavaScript e do Node.js 4
57
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
58
Conceitos do JavaScript e do Node.js 4
59
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
60
Conceitos do JavaScript e do Node.js 4
61
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
62
Conceitos do JavaScript e do Node.js 4
63
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
64
Conceitos do JavaScript e do Node.js 4
65
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
66
Conceitos do JavaScript e do Node.js 4
67
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
68
JavaScript -
Chamadas
5 assíncronas e
promises
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
70
JavaScript - Chamadas assíncronas e promises 5
71
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
72
JavaScript - Chamadas assíncronas e promises 5
73
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
74
JavaScript - Chamadas assíncronas e promises 5
75
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
76
JavaScript - Chamadas assíncronas e promises 5
77
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
78
JavaScript - Chamadas assíncronas e promises 5
79
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
80
JavaScript - Chamadas assíncronas e promises 5
81
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
82
Conceitos do
6 jQuery
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
84
Conceitos do jQuery 6
85
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
86
Conceitos do jQuery 6
87
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
88
Conceitos do jQuery 6
89
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
90
Conceitos do jQuery 6
91
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
92
Conceitos do jQuery 6
93
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
94
Conceitos do jQuery 6
95
Otimizações
7 de layout com
Bootstrap
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
98
Otimizações de layout com Bootstrap 7
99
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
100
Otimizações de layout com Bootstrap 7
101
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
102
Otimizações de layout com Bootstrap 7
103
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
104
Otimizações de layout com Bootstrap 7
105
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
106
Otimizações de layout com Bootstrap 7
107
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
108
Animações em
8 telas de fundo
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
110
Animações em telas de fundo 8
111
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
112
Animações em telas de fundo 8
113
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
114
Animações em telas de fundo 8
115
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
116
9 Elementos de
áudio e vídeo
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
118
Elementos de áudio e vídeo 9
119
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
120
Comunicação
10 com serviços
REST
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
122
Comunicação com serviços REST 10
123
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
124
Comunicação com serviços REST 10
125
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
126
Comunicação com serviços REST 10
127
Criando objetos
11 com JavaScript -
Prototype
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
130
Criando objetos com JavaScript - Prototype 11
131
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
132
Criando objetos com JavaScript - Prototype 11
133
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
134
Criando objetos com JavaScript - Prototype 11
135
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
136
Criando páginas
12 interativas e
suporte off-line
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
138
Criando páginas interativas e suporte off-line 12
139
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
140
Criando páginas interativas e suporte off-line 12
141
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
142
Criando páginas interativas e suporte off-line 12
143
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
144
Criando páginas interativas e suporte off-line 12
145
Complemento:
Aplicações
13 híbridas com
PhoneGap
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
148
Complemento: Aplicações híbridas com PhoneGap 13
149
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
150
Complemento: Aplicações híbridas com PhoneGap 13
151
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
152
Complemento: Aplicações híbridas com PhoneGap 13
153
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
154
Complemento: Aplicações híbridas com PhoneGap 13
155
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
156
Complemento: Aplicações híbridas com PhoneGap 13
157
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
158
Complemento: Aplicações híbridas com PhoneGap 13
159
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
160
Complemento: Aplicações híbridas com PhoneGap 13
161
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
162
Atividades
(projeto)
Apresentando
o projeto
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
166
1 Preparando
o ambiente
Atividade
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
Laboratório 1
A – Definindo a estrutura inicial para o projeto
168
Criação de
2 páginas com
HTML5
Atividade
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
Laboratório 1
A – Definindo o modelo referente à página inicial da aplicação
1. Abra o Visual Studio Code (se não estiver aberto) apontando para a pasta
ProjetoEmpresaRH. O resultado, no VSCode, deverá ser semelhante a este:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Site Institucional - ABC Tecnologia</title>
</head>
<body>
</body>
</html>
170
Criação de páginas com HTML5 2
3. No elemento <body>, insira estes elementos:
<body>
<header>
<nav>
</nav>
</header>
<section>
<article>
<header>
</header>
</article>
</section>
<aside>
</aside>
<footer>
<p>Copyright 2020 - Todos os direitos reservados</p>
</footer>
</body>
<nav>
<ul>
<li><a href="#">A Empresa</a></li>
<li><a href="#">Produtos</a></li>
<li><a href="#">Localização</a></li>
<li><a href="#">Trabalhe Conosco</a></li>
</ul>
</nav>
171
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
<section>
<article>
<header>
<h2>Conheça-nos um pouco</h2>
<p>
Desde sua fundação a ABC Tecnologia é uma
empresa com foco na elaboração de soluções
visando agilizar os processos relativos às
tarefas de seus clientes. <br/>
A agilidade, redução de custos e satisfação
dos nossos clientes é nossa maior meta.
</p>
</header>
<p>
Conheça nossos <a href="#">produtos e serviços</a>
e descubra o que podemos fazer por você
</p>
</article>
</section>
<aside>
<h2>Depoimentos dos nossos clientes</h2>
<p>Excelente qualidade, ótimos profissionais</p>
<p>
Estava buscando uma solução para minha clínica
e a ABC nos desenvolveu um sistema sob medida,
cujos resultados superaram nossas expectativas.
</p>
</aside>
172
3 Inclusão de
formulários
Atividade
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
Laboratório 1
A – Definindo o formulário para o usuário se inscrever para uma vaga
Nesta etapa, incluiremos um formulário para o usuário se inscrever para uma vaga
de emprego ou estágio. Utilizaremos campos adequados para cada informação e
realizaremos as devidas validações para esses campos.
174
Inclusão de formulários 3
3. No elemento <body> do arquivo registro.html, insira um elemento <div>,
um título e um elemento <form>:
<body>
<div>
<h1>Registro de Candidatos</h1>
<form>
</form>
</div>
</body>
•• Nome;
•• Data de nascimento;
•• Sexo (masculino ou feminino);
•• Telefone;
•• E-mail;
•• Vaga a se candidatar.
175
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
<form>
<!-- Nome do candidato -->
<div>
<label for="nome">Nome:</label>
<div>
<input type="text" id="nome" name="nome"
required="required" autofocus="autofocus" />
</div>
</div>
<!-- Data de Nascimento -->
<div>
<label for="data">Data Nascimento:</label>
<div>
<input type="date" id="data" name="data"
required="required" />
</div>
</div>
<!-- Sexo -->
<div>
<label for="sexo">Sexo:</label>
<div>
<fieldset>
<legend>Sexo:</legend>
<input type="radio" id="masculino" name="sexo"
value="masculino" >Masculino<br/>
<input type="radio" id="feminino" name="sexo"
value="feminino" >Feminino<br/>
</fieldset>
</div>
</div>
<!-- Telefone -->
<div>
<label for="telefone">Telefone:</label>
<div>
<input type="tel" id="telefone" name="telefone"
required="required" />
</div>
</div>
176
Inclusão de formulários 3
<!-- Email -->
<div>
<label for="email">Email:</label>
<div>
<input type="email" id="email" name="email"
required="required" />
</div>
</div>
<!-- Lista de Vagas -->
<div>
<label for="vaga">Vaga desejada:</label>
<div>
<select name="vaga" id="vaga">
<option value="1">Administrador Banco de Dados</option>
<option value="2">Analista de Sistemas</option>
<option value="3">web Designer</option>
<option value="4">Programador Java</option>
</select>
</div>
</div>
<!-- Botão de comandos -->
<div>
<input type="button" value="Incluir">
</div>
</form>
177
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
<nav>
<ul>
<li><a href="#">A Empresa</a></li>
<li><a href="#">Produtos</a></li>
<li><a href="#">Localização</a></li>
<li><a href="paginas/registro.html">Trabalhe Conosco</a></li>
</ul>
</nav>
7. Teste a navegabilidade.
178
Aplicação de
4 estilos com
CSS3
Atividade
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
Laboratório 1
A – Definindo estilos comuns para as páginas do projeto
* {
font-family: ‘Segoe UI’, Tahoma, Geneva, Verdana, sans-serif;
}
body{
background-color: rgb(235, 235, 216);
}
.container {
margin: 80px 50px 50px 50px;
}
•• index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Site Institucional - ABC Tecnologia</title>
<link rel="stylesheet" href="css/estilos.css">
</head>
180
Aplicação de estilos com CSS3 4
•• registro.html, na pasta paginas
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Registro de Candidatos</title>
<link rel="stylesheet" href="../css/estilos.css">
</head>
<div class="container">
<section>
<article>
<header>
<h2>Conheça-nos um pouco</h2>
<p>
Desde sua fundação a ABC Tecnologia é uma
empresa com foco na elaboração de soluções
visando agilizar os processos relativos às
tarefas de seus clientes. <br />
A agilidade, redução de custos e satisfação
dos nossos clientes é nossa maior meta.
</p>
</header>
<p>
Conheça nossos <a href="#">produtos e serviços</a>
e descubra o que podemos fazer por você
</p>
</article>
</section>
<aside>
<h2>Depoimentos dos nossos clientes</h2>
<p>Excelente qualidade, ótimos profissionais</p>
<p>
Estava buscando uma solução para minha clínica
e a ABC nos desenvolveu um sistema sob medida,
cujos resultados superaram nossas expectativas.
</p>
</aside>
</div>
181
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
1. Agora, vamos incluir um CSS para o menu. Inclua uma folha de estilos na
pasta css com o nome menu.css. Defina o seguinte conteúdo:
nav {
position: fixed;
top: 0;
left: 0;
right: 0;
}
.menu {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
background-color: #003264;
}
.menu li {
float: left;
}
.menu li a {
display: block;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration: none;
}
.menu li a:hover {
background-color: #DFDFDF;
color: #003264;
}
182
Aplicação de estilos com CSS3 4
2. Inclua este arquivo no início de index.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Site Institucional - ABC Tecnologia</title>
<link rel="stylesheet" href="css/estilos.css">
<link rel="stylesheet" href="css/menu.css">
</head>
<header>
<nav>
<ul class="menu">
<li><a href="#">A Empresa</a></li>
<li><a href="#">Produtos</a></li>
<li><a href="#">Localização</a></li>
<li><a href="paginas/registro.html">Trabalhe Conosco</a></li>
</ul>
</nav>
</header>
183
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
1. Vamos, agora, criar o estilo para o rodapé. Este pode ser definido no
próprio arquivo estilos.css, pois a codificação é relativamente simples. Inclua
o seguinte elemento no arquivo:
5. Escolha duas imagens do seu gosto. Essas imagens devem ser relativamente
grandes, ocupando o comprimento do seu vídeo. Elas servirão como imagem
de apresentação e imagem de rodapé;
184
Aplicação de estilos com CSS3 4
6. Inclua essas imagens na pasta imagens que você criou e nomeie-as como
inicio.JPG e rodapé.JPG;
.intro {
background: url(../imagens/inicio.JPG) center center fixed;
background-size: cover;
padding: 220px 0;
margin-top: 40px;
left:0;
right:0;
}
.footer {
background: url(../imagens/rodape.jpg) center center fixed;
background-size: cover ;
color: white;
padding: 30px;
text-align:center;
}
<header>
<nav>
<ul class="menu">
<li><a href="#">A Empresa</a></li>
<li><a href="#">Produtos</a></li>
<li><a href="#">Localização</a></li>
<li><a href="paginas/registro.html">Trabalhe Conosco</a></li>
</ul>
</nav>
</header>
<section class="intro"></section>
<div class="container">
185
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
<footer class="footer">
<p>
Avenida Paulista, 1009 - Bela Vista <br />
São Paulo - CEP 01311-100
</p>
<p>Copyright 2020 - Todos os direitos reservados</p>
</footer>
Vamos, agora, incluir alguns estilos para os formulários. Os estilos mais importantes
utilizarão as classes do Bootstrap, em tópicos futuros.
.borda {
box-shadow: 5px 5px 10px #000;
padding: 30px;
margin-right: 30px;
background-color: white;
}
<form>
<div>
<!—Nome do candidato -->
...
<!—Botão de comandos -->
<div>
<input type="button" value="Incluir">
</div>
</div>
</form>
186
Aplicação de estilos com CSS3 4
3. Configure esse novo estilo no elemento div adicionado ao formulário
do arquivo registro.html. Verifique os pontos onde os estilos estão sendo
aplicados:
<form>
<div class="container borda">
...
</div>
</form>
187
Desenvolvimento
5
de responsividade
com media
queries
Atividade
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
Laboratório 1
A – Definindo a responsividade para o menu
@media screen and (max-width: 760px) {
.menu li{
float: none;
}
.menu li a {
text-align: center;
}
}
Para telas com o tamanho máximo de 760 pixels, colocamos o menu na posição
vertical. A aparência da aplicação fica como a imagem a seguir:
190
Desenvolvimento de responsividade com media queries 5
2. Agora, vamos adicionar um pouco mais de interatividade na nossa página.
Inclua, na pasta css, uma folha de estilos chamada destaque.css. Esse arquivo
definirá estilos para incluir um ícone circular na página inicial, que também
direcionará o usuário para a página registro.html. Nessa folha de estilos,
inclua o seguinte conteúdo:
.registro:hover {
color: #fff;
191
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
.registro .free {
font-size: 80%;
}
@media screen and (max-width: 760px) {
.registro {
display:none;
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Site Institucional - ABC Tecnologia</title>
<link rel="stylesheet" href="css/estilos.css" />
<link rel="stylesheet" href="css/menu.css" />
<link rel="stylesheet" href="css/destaque.css">
</head>
192
Desenvolvimento de responsividade com media queries 5
4. Na página index.html, inclua o elemento <div> indicado, dentro do elemento
<header> existente:
<header>
<div>
<a class="registro" href="paginas/registro.html">
Candidate-se<br/>
<span class="free">· Hoje ·</span>
</a>
</div>
<h2>Conheça-nos um pouco</h2>
<p>
Desde sua fundação a ABC Tecnologia é uma
empresa com foco na elaboração de soluções
visando agilizar os processos relativos às
tarefas de seus clientes. <br />
A agilidade, redução de custos e satisfação
dos nossos clientes é nossa maior meta.
</p>
</header>
193
Inclusão de
funcionalidades
6 JavaScript e
jQuery
Atividade
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
Laboratório 1
A – Definindo mensagens personalizadas de validação para os formulários
Com JavaScript, podemos incluir mais interatividade com o usuário. Nesta parte do
projeto, incluiremos um evento baseado em JavaScript para interceptar o evento
click do botão Incluir, de modo a personalizar as mensagens de validação.
<div>
<input type="submit" value="Incluir" id="incluirButton">
</div>
let botao = document.getElementById('incluirButton');
botao.addEventListener('click', function (e) {
let nome = document.getElementById('nome');
let data = document.getElementById('data');
let telefone = document.getElementById('telefone');
let email = document.getElementById('email');
nome.setCustomValidity(nome.value == '' ?
'Informe corretamente o nome do candidato' : '');
data.setCustomValidity(data.value == '' ?
'Informe corretamente a data de nascimento do candidato' : '');
telefone.setCustomValidity(telefone.value == '' ?
'Informe corretamente o telefone do candidato' : '');
email.setCustomValidity(email.value == '' ?
'Informe corretamente o email do candidato' : '');
});
</form>
</div>
<script src="../scripts/validacao_registro.js"></script>
</body>
196
Inclusão de funcionalidades JavaScript e jQuery 6
4. Execute a página registro.html. Clique no botão Incluir, sem fornecer
informações nos campos nome, data, telefone ou email. O que você consegue
visualizar?
@media screen and (max-width: 760px) {
/* .menu li{
float: none;
}
.menu li a {
text-align: center;
} */
.menu li:not(:first-child) {
display: none;
}
.menu li.icon {
float: right;
display: block;
}
.menu.responsive {
position: relative;
}
.menu.responsive li.icon {
position: absolute;
right: 0;
top: 0;
}
197
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
.menu.responsive li {
float: none;
display: inline;
}
.menu.responsive li a {
display: block;
text-align: left;
}
}
<nav>
<ul class="menu" id="menuTopo">
<li><a href="#">A Empresa</a></li>
<li><a href="#">Produtos</a></li>
<li><a href="#">Localização</a></li>
<li><a href="paginas/registro.html">Trabalhe Conosco</a></li>
<li class="icon">
<a href="javascript:void(0);" onclick="mostrarMenu()">
☰</a>
</li>
</ul>
</nav>
<script type="text/javascript">
function mostrarMenu(){
let elemento = document.getElementById("menuTopo");
if(elemento.className === "menu"){
elemento.className += " responsive";
} else {
elemento.className = "menu";
}
}
</script>
</body>
4. Ainda no arquivo menu.css, inclua este estilo antes do item @media screen:
.menu li.icon {
display: none;
}
@media screen and (max-width: 760px) {
198
7 Consumo de
serviços REST
Atividade
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
Laboratório 1
A – Mostrando a lista de vagas dinamicamente
200
Consumo de serviços REST 7
3. Na pasta dados, crie um arquivo chamado dados.json com o seguinte
conteúdo:
{
"vagas": [
{
"id": 1,
"titulo": "Programador Java Pleno",
"tipo": "1"
},
{
"id": 2,
"titulo": "Analista Comercial",
"tipo": "2"
},
{
"id": 3,
"titulo": "Instrutor Excel Avançado",
"tipo": "1"
},
{
"id": 4,
"titulo": "Gerente de Projetos para .NET",
"tipo": "2"
},
{
"id": 5,
"titulo": "Consultor de Desenvolvimento Agil",
"tipo": "2"
},
{
"id": 6,
"titulo": "Programador VB.Net",
"tipo": "1"
}
]
}
201
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
json-server dados.json
Observação:
202
Consumo de serviços REST 7
7. Observe que o json-server nos apresentou uma URL chamada http://
localhost:3000/vagas. Acesse essa URL e veja o resultado:
203
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
lista.appendChild(option);
}
}
</form>
</div>
<script src="../scripts/validacao_registro.js"></script>
<script src="../scripts/listaVagas.js"></script>
</body>
</html>
204
Consumo de serviços REST 7
11. Execute a página e verifique se a lista de vagas aparece de acordo com o
código implementado no arquivo:
12. Agora, vamos incluir uma opção para o usuário selecionar as vagas por
tipo. Na página registro.html, inclua o grupo de elementos imediatamente
antes da lista de vagas:
<div>
<label for="vaga">Vaga desejada:</label>
<div>
<select name="vaga" id="vaga">
</select>
</div>
</div>
205
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
let desenv = document.getElementById("desenv");
let negocio = document.getElementById("negocio");
limparLista();
for (let i = 0; i < vagas.length; i++) {
let tipo = vagas[i].tipo;
var qualTipo = (desenv.checked && tipo == '1') ||
(negocio.checked && tipo == '2');
if(qualTipo){
let option = document.createElement("option");
option.textContent = vagas[i].titulo;
option.setAttribute("value", vagas[i].id);
lista.appendChild(option);
}
}
}
15. No final, adicione as instruções para o evento click dos elementos checkbox:
desenv.addEventListener("click", exibirVagas, false);
negocio.addEventListener("click", exibirVagas, false);
206
Otimizações
8 de layout com
Bootstrap
Atividade
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
Laboratório 1
Nosso formulário de registros utilizou algumas classes CSS, mas não aplicamos
nenhuma classe ao formulário propriamente dito, ou seja, aos campos do
formulário. Vamos tomar como base a documentação do Bootstrap no link
<https://getbootstrap.com/docs/4.4/components/forms/>.
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, initial-scale=1.0">
<title>Registro de Candidatos</title>
<link rel="stylesheet" href=
"https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" />
<link rel="stylesheet" href="../css/estilos.css">
</head>
208
Otimizações de layout com Bootstrap 8
3. Vamos adicionar classes Bootstrap nos elementos <div> que envolvem cada
grupo de campos de entrada, nos elementos <label>, nos elementos <div>
específicos dos campos de entrada e nos próprios campos de entrada. As
alterações estão destacadas a seguir:
<form>
<div class="container borda">
<!-- Nome do candidato -->
<div class="form-group row">
<label for="nome"
class="col-sm-2 col-form-label">Nome:</label>
<div class="col-sm-10">
<input type="text" id="nome" name="nome"
required="required" autofocus="autofocus"
class="form-control" />
</div>
</div>
</fieldset>
</div>
</div>
209
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
<div class="form-group row">
<label for="vaga"
class="col-sm-2 col-form-label">Vaga desejada:</label>
<div class="col-sm-5">
<select name="vaga" id="vaga"
class="form-control">
</select>
</div>
</div>
210
Otimizações de layout com Bootstrap 8
4. O resultado da aplicação dessas classes produz o resultado adiante:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, initial-scale=1.0">
<title>Apresentação dos produtos</title>
</head>
<body>
</body>
</html>
211
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, initial-scale=1.0">
<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/
bootstrap.min.css" />
<title>Apresentação dos produtos</title>
</head>
<body>
<script src="http://code.jquery.com/jquery-3.4.1.slim.min.js">
</script>
<script src=
"https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js">
</script>
<script src=
"https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></
script>
</body>
</html>
212
Otimizações de layout com Bootstrap 8
<div class="collapse navbar-collapse" id="opcoes">
<ul class="navbar-nav mr-auto">
<li class="nav-item">
<a class="nav-link" href="#treinamentos">Treinamentos</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#consultoria">Consultoria</a>
</li>
</ul>
</div>
</nav>
213
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
</div>
.body-content {
clear:both;
padding: 15px;
margin-top: 50px;
}
.center-image {
text-align:center;
}
.margin-image{
margin: 10px;
}
.footer{
bottom: 0;
width: 100%;
text-align:center;
padding:20px;
background-color:#7F7F7F;
color: white;
}
8. Na div que você inseriu por último, inclua um elemento <section> com o
seguinte conteúdo:
214
Otimizações de layout com Bootstrap 8
<!-- #treinamentos -->
<section id="treinamentos">
<h1>Treinamentos</h1>
<p>
A Empresa oferece treinamentos em diversas
áreas, nas seguintes modalidades:
</p>
<ul>
<li>Presencial</li>
<li>Online</li>
<li><i>In-company</i></li>
</ul>
<div class="row center-image">
<div class="col-md-4">
<h3>Presencial</h3>
<img src="../imagens/curso-presencial.jpg"
class="img-circle margin-image" />
<p>
Nesta modalidade os cursos são oferecidos
em nossa unidade localizada na Av. Paulista.
Existem diversas opções de horários.<br />
Consultar a grade de horários para maiores
informações
</p>
</div>
<div class="col-md-4">
<h3>Online</h3>
<img src="../imagens/curso-online.jpg"
class="img-circle margin-image" />
<p>
Não tem tempo de ir até nossa unidade?
Necessita estudar, e possui horários diversificados?
Temos treinamentos também na modalidade
<i>online</i>.<br />
Assim, você estuda na hora e nas datas que
estiver disponível.
</p>
</div>
<div class="col-md-4">
<h3><i>In-company</i></h3>
<img src="../imagens/curso-incompany.jpg"
class="img-circle margin-image" />
<p>
Se sua empresa necessita de treinamentos personalizados,
atendendo a necessidades específicas, temos uma equipe
altamente capacitada para ir até sua empresa e levar
o conteúdo que você precisa.
</p>
</div>
</div>
</section>
215
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
10. Abaixo dessa section, fora da div incluída no item 6, acrescente outro
elemento, section consultoria. Aqui, será necessária outra imagem, como
mostrado no código a seguir:
</section>
</div>
216
Otimizações de layout com Bootstrap 8
<div class="col-md-8">
<p>
De modo geral, toda empresa deseja obter lucros,
a custos reduzidos.
No que diz respeito ao gerenciamento de
processos, temos consultores
especializados para ajudar nossos clientes
a atingirem esse objetivo.
Como? Aplicando da melhor forma possível
os recursos disponíveis,
como infraestrutura, pessoas, sistemas,
folhas de pagamento,
entre outros.<br />
Neste sentido a empresa colabora para
que o principal objetivo do
negócio seja consolidado, dispensando
seus clientes de ocupações irrelevantes.
</p>
</div>
</div>
</div>
</section>
217
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
<footer class="footer">
<p>
Desenvolvido para os cursos da Impacta
</p>
<p>
©2020 - Todos os direitos reservados
</p>
</footer>
<nav>
<ul class="menu" id="menuTopo">
<li><a href="#">A Empresa</a></li>
<li><a href="paginas/produtos.html">Produtos</a></li>
<li><a href="#">Localização</a></li>
<li><a href="paginas/registro.html">Trabalhe Conosco</a></li>
<li class="icon">
<a href="javascript:void(0);"
onclick="mostrarMenu()">☰</a>
</li>
</ul>
</nav>
218
Otimizações de layout com Bootstrap 8
C – Definindo a página de localização
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, initial-scale=1.0">
<title>Localização</title>
<link rel="stylesheet" href=
"https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.
css" />
<link rel="stylesheet" href="../css/estilos.css">
</head>
<body>
</body>
</html>
3. Insira uma <div> com a classe container e, dentro dela, outra <div> com a
classe borda. O conteúdo do arquivo deve ser semelhante a este:
<body>
<div class="container">
<h1>Mapa de localização da empresa</h1>
<div class="borda">
</div>
</div>
</body>
<body>
<div class="container">
<h1>Mapa de localização da empresa</h1>
<div class="borda">
<p>
Avenida Paulista, 1009 - 17º Andar. <br />
São Paulo. SP <br/>
CEP 01311-100
</p>
</div>
</div>
</body>
219
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
<body>
<div class="container">
<h1>Mapa de localização da empresa</h1>
<div class="borda">
<p>
Avenida Paulista, 1009 - 17º Andar. <br />
São Paulo. SP <br/>
CEP 01311-100
</p>
<div>
<iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d365
7.084187565715!2d-46.65452158543306!3d-23.565419684680933!2m3!1f0!2f0!3f0!3m2!
1i1024!2i768!4f13.1!3m3!1m2!1s0x94ce59c7947976cb%3A0xcfae32dae64ebfda!2sAv.%20
Paulista%2C%201009%20-%20Bela%20Vista%2C%20S%C3%A3o%20Paulo%20-%20SP%2C%20
01310-100!5e0!3m2!1spt-BR!2sbr!4v1587082422616!5m2!1spt-BR!2sbr"
width="600" height="450"
frameborder="0" style="border:0;"
allowfullscreen="" aria-hidden="false" tabindex="0"></iframe>
</div>
</div>
</div>
</body>
220
Otimizações de layout com Bootstrap 8
<nav>
<ul class="menu" id="menuTopo">
<li><a href="#">A Empresa</a></li>
<li><a href="paginas/produtos.html">Produtos</a></li>
<li><a href="paginas/localizacao.html">Localização</a></li>
<li><a href="paginas/registro.html">Trabalhe Conosco</a></li>
<li class="icon">
<a href="javascript:void(0);"
onclick="mostrarMenu()">☰</a>
</li>
</ul>
</nav>
221
Inclusão e
listagem de
9 registros com
Web services
Atividade
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
Laboratório 1
{
"vagas": [
{
"id": 1,
"titulo": "Programador Java Pleno",
"tipo": "1"
},
{
"id": 2,
"titulo": "Analista Comercial",
"tipo": "2"
},
{
"id": 3,
"titulo": "Instrutor Excel Avançado",
"tipo": "1"
},
{
"id": 4,
"titulo": "Gerente de Projetos para .NET",
"tipo": "2"
},
{
"id": 5,
"titulo": "Consultor de Desenvolvimento Agil",
"tipo": "2"
},
{
"id": 6,
"titulo": "Programador VB.Net",
"tipo": "1"
}
],
"candidatos": [ ]
}
224
Inclusão e listagem de registros com Web services 9
2. Para este projeto, usaremos o jQuery para acessar o serviço, como alternativa
à função fetch. Na pasta scripts, crie um arquivo chamado cadastro.js.
Adicione o seguinte conteúdo:
$(document).ready(function () {
$('#incluirButton').click(function(){
//determinação do sexo com base
//no item selecionado
let sexo = '';
if($('#masculino').prop('checked')){
sexo = 'masculino';
} else {
sexo = 'feminino';
}
$.ajax({
url: 'http://localhost:3000/candidatos',
method: 'POST',
data: {
nome: $('#nome').val(),
data: $('#data').val(),
sexo: sexo,
telefone: $('#telefone').val(),
email: $('#email').val(),
vaga: vaga
},
success: function(resposta){
window.alert('Dados incluídos');
},
error: function(erro){
window.alert('Erro: ' + erro.responseText);
}
});
});
});
225
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
<script src="http://code.jquery.com/jquery-3.4.1.min.js"></script>
<script src="../scripts/validacao_registro.js"></script>
<script src="../scripts/listaVagas.js"></script>
<script src="../scripts/cadastro.js"></script>
</body>
</html>
226
Inclusão e listagem de registros com Web services 9
6. Ao clicar no botão Incluir, receberemos a mensagem de sucesso (claro, se
o código estiver correto!):
{
"vagas": [
{
"id": 1,
"titulo": "Programador Java Pleno",
"tipo": "1"
},
{
"id": 2,
"titulo": "Analista Comercial",
"tipo": "2"
},
{
"id": 3,
"titulo": "Instrutor Excel Avançado",
"tipo": "1"
},
{
"id": 4,
"titulo": "Gerente de Projetos para .NET",
"tipo": "2"
},
227
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
{
"id": 5,
"titulo": "Consultor de Desenvolvimento Agil",
"tipo": "2"
},
{
"id": 6,
"titulo": "Programador VB.Net",
"tipo": "1"
}
],
"candidatos": [
{
"nome": "Gervasio Cesar",
"data": "1990-03-22",
"sexo": "masculino",
"telefone": "3254-2200",
"email": "[email protected]",
"vaga": "Instrutor Excel Avançado",
"id": 1
}
]
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, initial-scale=1.0">
<title>Lista de Candidatos</title>
<link rel="stylesheet" href=
"https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" />
<link rel="stylesheet" href="../css/estilos.css">
</head>
<body>
<script src="http://code.jquery.com/jquery-3.4.1.min.js"></script>
</body>
</html>
228
Inclusão e listagem de registros com Web services 9
2. Nessa nova página, apresentaremos a lista de candidatos cadastrados
quando o usuário clicar em um botão com o título Listar Candidatos. Vamos,
então, escrever a estrutura básica para essa página:
<body>
<div class="container borda">
<h1>Lista de Candidatos</h1>
<div>
<button type="button" id="listarButton"
class="btn btn-primary">Listar Candidatos</button>
<hr />
</div>
</div>
<script src="http://code.jquery.com/jquery-3.4.1.min.js"></script>
</body>
229
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
<body>
<div class="container borda">
<h1>Lista de Candidatos</h1>
<div>
<button type="button" id="listarButton"
class="btn btn-primary">Listar Candidatos</button>
<hr />
<table class="table table-striped" id="tabela">
<thead>
<tr>
<th>ID</th>
<th>NOME</th>
<th>TELEFONE</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
<script src="http://code.jquery.com/jquery-3.4.1.min.js"></script>
</body>
$(document).ready(function () {
$('#incluirButton').click(function(){
//continuação do código, omitido por conveniência
});
//listando os candidatos
$('#listarButton').click(function () {
$.ajax({
dataType: 'json',
url: 'http://localhost:3000/candidatos',
method: 'GET',
success: function (resposta) {
$('#tabela > tbody').html('');
$.each(resposta, function (index, item) {
let linha = $('<tr>');
230
Inclusão e listagem de registros com Web services 9
let colunas = '<td>' + item.id + '</td>';
colunas += '<td>' + item.nome + '</td>';
colunas += '<td>' + item.telefone + '</td>';
linha.append(colunas);
$('#tabela > tbody').append(linha);
});
},
error: function (erro) {
console.log(erro.responseText);
}
});
});
});
<script src="http://code.jquery.com/jquery-3.4.1.min.js"></script>
<script src="../scripts/cadastro.js"></script>
</body>
231
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
<ul class="menu" id="menuTopo">
<li><a href="#">A Empresa</a></li>
<li><a href="paginas/produtos.html">Produtos</a></li>
<li><a href="paginas/localizacao.html">Localização</a></li>
<li><a href="paginas/registro.html">Trabalhe Conosco</a></li>
<li><a href="paginas/listaCandidatos.html">Listar Candidatos</a></li>
<li class="icon">
<a href="javascript:void(0);" onclick="mostrarMenu()">☰</a>
</li>
</ul>
232
10 Aplicação de
Canvas API
Atividade
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
Laboratório 1
A – Definindo um relógio na página de registro de candidatos
O objetivo é ter a oportunidade de incluir um elemento usando esta API que, quando
bem explorada, oferece recursos bastante interessantes para nossa aplicação.
2. Nesse arquivo, inclua este código (se preferir, pode buscar no link indicado
anteriormente):
function init() {
clock();
setInterval(clock, 1000);
}
function clock() {
var now = new Date();
var ctx = document.getElementById('relogio').getContext('2d');
ctx.save();
ctx.clearRect(0, 0, 150, 150);
ctx.translate(75, 75);
ctx.scale(0.4, 0.4);
ctx.rotate(-Math.PI / 2);
ctx.strokeStyle = "black";
ctx.fillStyle = "white";
ctx.lineWidth = 8;
ctx.lineCap = "round";
234
Aplicação de Canvas API 10
// Minute marks
ctx.save();
ctx.lineWidth = 5;
for (i = 0; i < 60; i++) {
if (i % 5 != 0) {
ctx.beginPath();
ctx.moveTo(117, 0);
ctx.lineTo(120, 0);
ctx.stroke();
}
ctx.rotate(Math.PI / 30);
}
ctx.restore();
var sec = now.getSeconds();
var min = now.getMinutes();
var hr = now.getHours();
hr = hr >= 12 ? hr - 12 : hr;
ctx.fillStyle = "black";
235
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
ctx.beginPath();
ctx.lineWidth = 14;
ctx.strokeStyle = '#325FA2';
ctx.arc(0, 0, 142, 0, Math.PI * 2, true);
ctx.stroke();
ctx.restore();
}
init();
<div class="container borda">
<canvas id="relogio"></canvas>
<!-- Nome do candidato -->
<script src="http://code.jquery.com/jquery-3.4.1.min.js"></script>
<script src="../scripts/validacao_registro.js"></script>
<script src="../scripts/listaVagas.js"></script>
<script src="../scripts/cadastro.js"></script>
<script src="../scripts/relogio.js"></script>
</body>
236
11 Uso de áudio
e vídeo
Atividade
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
Laboratório 1
A – Incluindo um áudio e um vídeo na aplicação
2. No projeto, crie uma pasta chamada videos e inclua o vídeo que você
selecionou;
<h2>Assista ao nosso vídeo, e conheça melhor a empresa</h2>
<div id="video" style="text-align:center;">
<video controls="controls" width="400" height="300">
<source src="videos/video.mp4" type="video/mp4" />
<p>
Seu navegador não tem suporte ao elemento video
</p>
</video>
</div>
</article>
5. Crie uma pasta chamada audios e inclua seu áudio nessa pasta;
<canvas id="relogio"></canvas>
<div>
<audio src="../audios/welcome.mp3" controls autoplay loop></audio>
</div>
238
12 Armazenamento
local
Atividade
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
Laboratório 1
A – Criando um banco de dados IndexedDb e recursos para inserir e listar
registros
<div class="container borda">
<div class="row">
<div class="col-sm-6 text-center">
<canvas id="relogio"></canvas>
</div>
<div class="col-sm-6 text-center">
<div id="mensagemdb"></div>
</div>
</div>
240
Armazenamento local 12
3. Altere o conteúdo do arquivo estilos.css, acrescentando os elementos
listados a seguir (estes elementos serão usados pelo código jQuery):
/*
Classes para mensagem de erro ou sucesso
no cadastro de candidatos via indexedDb
*/
.erro_db{
color:red;
}
.sucesso_db {
color:blue;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, initial-scale=1.0">
<title>Registros do IndexedDb</title>
<link rel="stylesheet" href=
"https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" />
<link rel="stylesheet" href="../css/estilos.css">
</head>
<body>
<div class="container borda">
<h1>Listagem de Candidatos</h1>
<div>
<button type="button" id="listarDbButton"
class="btn btn-primary">
Ver os candidatos
</button>
<hr />
</div>
<div>
<ul id="listaCandidatos"></ul>
</div>
</div>
<script src="http://code.jquery.com/jquery-3.4.1.min.js"></script>
</body>
</html>
241
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
<script src="http://code.jquery.com/jquery-3.4.1.min.js"></script>
<script src="../scripts/database.js"></script>
</body>
let request, db;
request = window.indexedDB.open("DBCandidatos", 1);
request.onerror = function (event) {
$("#mensagemdb").addClass("erro_db");
$("#mensagemdb").html("Erro ao abrir o banco de dados");
$("#btnEnviar").prop("disabled", true);
}
request.onupgradeneeded = function (event) {
$("#mensagemdb").addClass("sucesso_db");
$("#mensagemdb").html("Banco de dados preparado para uso");
db = event.target.result;
let objectStore = db.createObjectStore("candidatos",
{ keyPath: "email" });
};
request.onsuccess = function (event) {
$("#mensagemdb").addClass("sucesso_db");
$("#mensagemdb").html("Banco de dados aberto com sucesso");
db = event.target.result;
}
let transaction = db.transaction(["candidatos"], "readwrite");
242
Armazenamento local 12
transaction.oncomplete = function (event) {
$(location).attr("href", "/paginas/registroOk.html");
};
transaction.onerror = function (event) {
alert("Ocorreu um erro ao incluir o registro");
};
var objStore = transaction.objectStore("candidatos");
objStore.add({
email: email, nome: nome, data: datanasc, sexo: sexo,
telefone: telefone, vaga: vaga
});
});
request.openCursor().onsuccess = function (event) {
let cursor = event.target.result;
if (cursor) {
$("#listaCandidatos").append("<li>" + cursor.value.nome
+ "</li>");
cursor.continue();
}
};
});
<script src="http://code.jquery.com/jquery-3.4.1.min.js"></script>
<script src="../scripts/validacao_registro.js"></script>
<script src="../scripts/listaVagas.js"></script>
<script src="../scripts/cadastro.js"></script>
<script src="../scripts/relogio.js"></script>
<script src="../scripts/database.js"></script>
</body>
243
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
<ul class="menu" id="menuTopo">
<li><a href="#">A Empresa</a></li>
<li><a href="paginas/produtos.html">Produtos</a></li>
<li><a href="paginas/localizacao.html">Localização</a></li>
<li><a href="paginas/registro.html">Trabalhe Conosco</a></li>
<li><a href="paginas/listaCandidatos.html">Listar Candidatos</a></li>
<li><a href="paginas/verRegistros.html">Ver Candidatos</a></li>
<li class="icon">
<a href="javascript:void(0);" onclick="mostrarMenu()">☰</a>
</li>
</ul>
244
13 Complemento:
PhoneGap
Atividade
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
Laboratório 1
A – Criando um aplicativo para cadastro de contato com PhoneGap
246
Complemento: PhoneGap 13
3. Abra o Visual Studio Code apontando para a pasta do novo projeto. A pasta
se chama app:
var request, db;
request = window.indexedDB.open("DBContatos", 1);
request.onerror = function (event) {
window.alert('Erro ao abrir banco de dados');
}
request.onupgradeneeded = function (event) {
db = event.target.result;
var objectStore = db.createObjectStore("contatos",
{ keyPath: "nome" });
};
request.onsuccess = function (event) {
db = event.target.result;
}
$(document).ready(function(){
247
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
let url = `http://viacep.com.br/ws/${cep}/json/`;
let resposta = {};
fetch(url)
.then(res => {
let x = res.json();
return x;
})
.then(valor => {
resposta = valor;
$('#rua').val(resposta.logradouro);
$('#cidade').val(resposta.localidade);
$('#numero').focus();
});
});
var transaction = db.transaction(["contatos"], "readwrite");
transaction.oncomplete = function (event) {
window.alert('Registro incluído com sucesso');
};
transaction.onerror = function (event) {
window.alert("Ocorreu um erro ao incluir o registro");
};
var objStore = transaction.objectStore("contatos");
objStore.add({
nome: nome, telefone: telefone, cep: cep, numero: numero
});
});
});
248
Complemento: PhoneGap 13
5. Abra o arquivo index.html na pasta www. Deixe o conteúdo como mostrado
no exemplo:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="initial-scale=1,
width=device-width» />
<title>Contatos</title>
<link rel="stylesheet" href=
"https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"/>
</head>
<body>
<div class="container">
<h2>Registro de Contatos</h2>
<h4>Dados Pessoais</h4>
<div>
<div class="form-group">
<label>Nome:</label>
<input type="text" class="form-control" id="nome" />
</div>
<div class="form-group">
<label>Telefone:</label>
<input type="text" class="form-control" id="telefone" />
</div>
</div>
<h4>Dados do Endereço</h4>
<div>
<div class="form-group">
<label>Informe o CEP:</label>
<input type="text" class="form-control" id="cep" />
</div>
<div class="form-group">
<label>Rua:</label>
<input type="text" class="form-control" id="rua"
readonly="readonly" />
</div>
249
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
<div class="form-group">
<label>Cidade:</label>
<input type="text" class="form-control" id="cidade"
readonly="readonly" />
</div>
<div class="form-group">
<label>Informe o Número:</label>
<input type="text" class="form-control" id="numero" />
</div>
<button type="button" class="btn btn-primary"
id="btnEnviar">Enviar</button>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script src="js/scripts.js"></script>
</body>
</html>
<?xml version='1.0' encoding='utf-8'?>
<widget id="projeto.complemento" version="1.0.0"
xmlns="http://www.w3.org/ns/widgets"
xmlns:gap="http://phonegap.com/ns/1.0">
<name>ProjetoPhonegap</name>
<description>
Cadastro de Contatos.
</description>
<author email="[email protected]"
href="http://wwww.impacta.com.br">
FrontEnd Impacta
</author>
7. Com essas alterações, compacte (zipe) a pasta app, gerando o arquivo app.
zip;
250
Mãos à obra!
1 Criando uma
página HTML
Mãos à obra!
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
Laboratório 1
A - Elaborando um currículo pessoal
1. Usando o Visual Studio Code, crie uma nova pasta chamada Laboratorios;
•• Html;
•• Head;
•• Body;
•• Header;
•• Article;
•• Div;
•• h1, h2;
•• P;
•• Section;
•• Footer;
•• Img.
•• Pretensão salarial;
•• Cargos pretendidos;
•• Foto recente.
254
2 Desenvolvendo
formulários
Mãos à obra!
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
Laboratório 1
A - Criando um formulário para inclusão de currículo
256
3 Aplicando estilos
Mãos à obra!
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
Laboratório 1
A - Aperfeiçoando o currículo com estilos
258
Aplicando estilos 3
B - Aperfeiçoando o formulário com estilos
259
4 Aplicando
responsividade
Mãos à obra!
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
Laboratório 1
A - Melhorando a aparência do currículo em dispositivos menores
262
5 JavaScript e jQuery
Mãos à obra!
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
Laboratório 1
A - Adicionando funcionalidade ao formulário
•• Definir o evento click para o botão, tomando como base o seu id;
•• Criar uma variável cujo conteúdo seja formado com todas as informações
dos campos de entrada, devidamente armazenados em variáveis,
conforme item anterior;
•• Executar a função alert() para que essa variável seja exibida para o
usuário.
264
JavaScript e jQuery 5
8. Em um local do seu formulário (acima dos campos de entrada, ao lado ou
abaixo dos botões, ou em outro lugar mais conveniente), inclua um elemento
<div>, devidamente configurado no arquivo estilos.css. Esse <div> deve se
apresentar com uma borda destacada, uma cor de fundo e fontes diferentes do
formulário, um botão contendo um x para que seja fechado pelo usuário por
meio do mouse, e uma largura menor que a largura do formulário. Atribua um
id para essa nova <div>;
265
6 Comunicação
com o servidor
Mãos à obra!
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
Laboratório 1
A - Criando uma nova página contendo uma lista de estados e cidades
268
Comunicação com o servidor 6
6. No arquivo cidades.js, elabore um código JavaScript que realize as seguintes
tarefas:
var estados = [
{ "id": "1", "estado": "SP" },
{ "id": "2", "estado": "RJ" },
{ "id": "3", "estado": "MG" },
{ "id": "4", "estado": "BA" },
];
var cidades = [
{ "id": "1", "idestado": "1", "cidade": "CAMPINAS" },
{ "id": "2", "idestado": "1", "cidade": "SOROCABA" },
{ "id": "3", "idestado": "2", "cidade": "NITEROI" },
{ "id": "4", "idestado": "2", "cidade": "CABO FRIO" },
{ "id": "5", "idestado": "2", "cidade": "ANGRA" },
{ "id": "6", "idestado": "3", "cidade": "BELO
HORIZONTE"},
{ "id": "7", "idestado": "3", "cidade": "BETIM" },
{ "id": "8", "idestado": "3", "cidade": "EXTREMA" },
{ "id": "9", "idestado": "4", "cidade": "SALVADOR" },
{ "id": "10", "idestado": "4", "cidade": "PORTO
SEGURO" },
];
•• Escrever uma função que, tomando o estado como base, monte uma
lista de cidades, juntamente com o respectivo elemento <option> a ser
inserido dinamicamente no <select> existente;
269
7 Suporte off-line
Mãos à obra!
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
Laboratório 1
A - Criando um formulário para inclusão de usuários
1. Defina um novo formulário na pasta forms, só que, desta vez, para login. A
página deve se chamar login.html. Os campos de entrada são essencialmente
os mesmos usados para o cadastro de usuários;
272
Suporte off-line 7
3. Altere a página formCurriculum.html para que, quando carregada, verifique
se existe algum dado armazenado em sessionStorage (o mesmo usado no
item anterior). Se existir, apresenta a página normalmente. Se não existir,
desabilita o botão que permite salvar um currículo.
•• Crie um usuário;
273
8 PhoneGap
Mãos à obra!
Desenvolvimento Front End com HTML5, CSS3 e JavaScript
Laboratório 1
A - Gerando um aplicativo baseado em Android com o PhoneGap
2. Defina a página inicial (index.html) com o mesmo conteúdo que você definiu
na página curriculum.html;
4. Compacte a pasta app, cujo conteúdo é o seu projeto. Guarde esse arquivo
compactado para uma etapa posterior;
5. Para este laboratório, vamos usar o PhoneGap Build para gerar nosso pacote.
Para tanto, crie uma conta no site da Adobe, proprietária do PhoneGap. Siga os
passos adiante:
•• Registre-se como novo usuário. Use a conta free (existem opções pagas);
•• Na página que surgir, clique na aba private (na aba open source você
será direcionado a usar uma aplicação no GitHub). Como usuário free, é
possível criar apenas uma conta private;
276