Академический Документы
Профессиональный Документы
Культура Документы
25 de novembro de 2013
As apostilas atualizadas esto disponveis em www.k19.com.br
i
Sumrio ii
Sobre a K19 1
Seguro Treinamento 2
Termo de Uso 3
Cursos 4
1 Introduo 1
1.1 Sites e Aplicaes Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Navegadores e Dispositivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Web Servers e HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 Domnios e endereos IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5 DNS (Domain Name System) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.6 Servios de Hospedagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.7 SEO (Search Engine Optimization) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.8 Arquitetura Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.9 Ativando o IIS e ASP Classic no Windows 7 . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.10 Instalao do Apache HTTP Server no Ubuntu 13.04 . . . . . . . . . . . . . . . . . . . . 16
1.11 Apache HTTP Server no Mac OS X Mountain Lion . . . . . . . . . . . . . . . . . . . . . . 16
1.12 Resumo do Captulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.13 Prova . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2 HTML 21
2.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2 Estrutura Bsica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3 Editores HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.4 Ferramentas de Desenvolvimento Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.5 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.6 Semntica HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.7 Ttulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.8 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.9 Pargrafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.10 Character Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.11 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.12 Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.13 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.14 Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
2.15 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
2.16 Iframes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
2.17 Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
2.18 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
2.19 ncoras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
2.20 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
2.21 Imagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
2.22 URLs absolutas e relativas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
2.23 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
2.24 Tabelas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
ii www.k19.com.br
iii S UMRIO
3 CSS 141
3.1 Box Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
3.2 Regras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
3.3 Aplicando CSS ao HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
3.4 Comentrios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
3.5 Chrome DevTools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
3.6 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
3.7 Cores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
3.8 Unidades de medida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
3.9 Backgrounds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
3.10 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
3.11 Textos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
3.12 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
3.13 Fontes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
3.14 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
3.15 Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
3.16 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
www.facebook.com/k19treinamentos iii
S UMRIO iv
4 JavaScript 305
4.1 Aplicando JavaScript ao HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
4.2 Carregamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
4.3 Chrome DevTools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
4.4 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
4.5 Variveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
4.6 Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
4.7 Controle de fluxo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
4.8 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
4.9 Objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
4.10 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
iv www.k19.com.br
v S UMRIO
5 jQuery 375
5.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
5.2 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
5.3 Eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
5.4 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
5.5 Seletores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
5.6 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
5.7 Efeitos e Animaes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
5.8 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
5.9 Manipulao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
5.10 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
5.11 Mais mtodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
5.12 AJAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
5.13 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
5.14 Exerccios Complementares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
5.15 Resumo do Captulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
5.16 Prova . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
A Projeto 421
A.1 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
B Quizzes 435
C Respostas 437
www.facebook.com/k19treinamentos v
S UMRIO vi
vi www.k19.com.br
1 S UMRIO
Sobre a K19
A K19 uma empresa especializada na capacitao de desenvolvedores de software. Sua equipe
composta por profissionais formados em Cincia da Computao pela Universidade de So Paulo
(USP) e que possuem vasta experincia em treinamento de profissionais para rea de TI.
Visando a mxima qualidade, a K19 mantm as suas apostilas em constante renovao e melho-
ria, oferece instalaes fsicas apropriadas para o ensino e seus instrutores esto sempre atualizados
didtica e tecnicamente.
www.facebook.com/k19treinamentos 1
S UMRIO 2
Seguro Treinamento
Na K19 o aluno faz o curso quantas vezes quiser!
Comprometida com o aprendizado e com a satisfao dos seus alunos, a K19 a nica que pos-
sui o Seguro Treinamento. Ao contratar um curso, o aluno poder refaz-lo quantas vezes desejar
mediante a disponibilidade de vagas e pagamento da franquia do Seguro Treinamento.
As vagas no preenchidas at um dia antes do incio de uma turma da K19 sero destinadas ao
alunos que desejam utilizar o Seguro Treinamento. O valor da franquia para utilizar o Seguro Treina-
mento 10% do valor total do curso.
2 www.k19.com.br
3 S UMRIO
Termo de Uso
Termo de Uso
Todo o contedo desta apostila propriedade da K19 Treinamentos. A apostila pode ser utilizada
livremente para estudo pessoal . Alm disso, este material didtico pode ser utilizado como material
de apoio em cursos de ensino superior desde que a instituio correspondente seja reconhecida pelo
MEC (Ministrio da Educao) e que a K19 seja citada explicitamente como proprietria do material.
proibida qualquer utilizao desse material que no se enquadre nas condies acima sem
o prvio consentimento formal, por escrito, da K19 Treinamentos. O uso indevido est sujeito s
medidas legais cabveis.
www.facebook.com/k19treinamentos 3
S UMRIO 4
TR
EIN
AM
EN
TR
TO
EIN
S
TREINAMENTOS
AM
EN
TO
S
Conhea os nossos cursos
www.k19.com.br/cursos
4 www.k19.com.br
CAPTULO
I NTRODUO
1
Normalmente, as pessoas utilizam o termo site quando se referem a blogs, sites de notcias, sites
institucionais, portais, lojas virtuais, entre outros. J a denominao aplicao web muito utilizada
para sistemas de gesto empresarial que so acessados atravs de navegadores (browsers).
No h uma definio exata que diferencie claramente sites e aplicaes web. Alguns defendem
que os sites so read-only (somente leitura) enquanto as aplicaes web so read-write (leitura e
escrita). Nessa definio, os sites apenas fornecem contedo enquanto as aplicaes web podem
fornecer e/ou receber contedo.
Seguindo essa linha de raciocnio, algumas pessoas gostam de utilizar o grau de interatividade
com os usurios para classificar como site ou aplicao web. Nessa viso, aplicaes web seriam
mais interativas e os sites menos interativos. Contudo, no h uma medida definida para calcular
esse grau de interatividade e com isso aplicar de forma objetiva essa classificao. Dessa forma, essa
diferenciao, na prtica, subjetiva.
Outras pessoas preferem utilizar o critrio do propsito para classificar como site ou aplicao
web. Por exemplo, se o propsito divulgar as informaes de uma empresa, os dados de um pro-
duto, as notcias de um determinado assunto, utiliza-se o termo site. Se o propsito criar uma
ferramenta para controlar as atividades administrativas de uma organizao, utiliza-se a denomina-
o aplicao web.
Utilizando o critrio do propsito para classificar como site ou aplicao web, podemos concluir
que, geralmente, os sites necessitam de uma interface mais atrativa pois normalmente esto ven-
dendo alguma coisa ou alguma ideia. Por outro lado, na maior parte dos casos, o mais importante
para as aplicaes web possuir uma interface fcil de utilizar.
www.facebook.com/k19treinamentos 1
I NTRODUO 2
2 www.k19.com.br
3 I NTRODUO
Navegadores e Dispositivos
As pessoas acessam sites e aplicaes web atravs de navegadores (browsers) como Chrome,
Firefox, Internet Explorer e Safari. Normalmente, esses navegadores possuem algumas diferenas
na forma de exibir as pginas web aos usurios. Antigamente, essas diferenas eram maiores. Com
o passar do tempo, os navegadores ficaram cada vez mais parecidos nesse aspecto. Contudo, os
desenvolvedores web ainda devem tomar cuidado com essas diferenas.
Figura 1.3: ndice de utilizao dos navegadores em Outubro de 2013 (fonte http://gs.statcounter.com/)
www.facebook.com/k19treinamentos 3
I NTRODUO 4
4 www.k19.com.br
5 I NTRODUO
Servers. Quando acessamos uma pgina web atravs de um navegador, ele realiza uma requisio
ao Web Server onde essa pgina est armazenada. Ao receber a resposta do Web Server com a pgina
web solicitada, o navegador a exibe para ns. As mensagens de requisio e resposta trocadas entre
o navegador e o web server so definidas pelo protocolo HTTP.
Requisio HTTP
HTTP/1.1 200 OK
Date: Mon, 23 May 2014 22:38:34 GMT
Resposta HTTP Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
Last-Modified: Wed, 08 Jan 2014 23:11:55 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 131
Connection: Keep-Alive
<html>
<head>
<title>K19 - Treinamentos</title>
</head>
<body>
K02 - Desenvolvimento Web com HTML, CSS e JavaScript
</body>
</html>
Considere um site ou uma aplicao web implantado em um Web Server que est conectado a
uma rede. A princpio, qualquer navegador executando em um dispositivo conectado a essa rede
pode realizar requisies a esse Web Server.
Alguns softwares especializados so utilizados para administrar os sites e as aplicaes web im-
plantadas nos Web Servers. Os principais so o Apache HTTP Server da Apache Software Founda-
tion e o Internet Information Services (IIS) da Microsoft.
Domnios e endereos IP
www.facebook.com/k19treinamentos 5
I NTRODUO 6
A princpio, para acessar uma pgina de um site ou de uma aplicao web, devemos conhecer o
endereo IP do Web Server que contm esse site ou essa aplicao web. Atualmente, o endereo IP do
Web Server onde o site da K19 est implantado 184.72.247.119. Podemos utilizar esse endereo IP
para acessar as pginas do site da K19. O endereo IP 200.144.183.244 est vinculado a um dos Web
Servers onde o site da USP est implantado. Tambm podemos acessar as pginas do site da USP
utilizando diretamente esse endereo IP. Analogamente, podemos acessar as pginas da Wikipdia
utilizando o endereo IP 208.80.152.130.
6 www.k19.com.br
7 I NTRODUO
Se voc tiver uma memria muito boa pode decorar os endereos IP dos sites que acessa com
maior frequncia. Mas, para maior parte das pessoas, seria impossvel decorar tantos nmeros. Para
resolver esse problema, os endereos IP so associados a domnios. Veja alguns exemplos de dom-
nios.
www.k19.com.br
www.usp.br
www.wikipedia.org
As pessoas conseguem decorar ou deduzir os domnios bem mais facilmente do que os endereos
IP.
www.facebook.com/k19treinamentos 7
I NTRODUO 8
H uma outra vantagem importante dos domnios sobre os endereos IP. Em alguns casos, o en-
dereo IP de um Web Server precisa ser alterado. Geralmente, essa modificao ocorre por motivos
tcnicos. Supondo que essa mudana ocorra, quem estiver acessando esse Web Server atravs do
endereo IP antigo no conseguir mais acess-lo dessa forma. Por outro lado, quem estiver aces-
sando esse Web Server atravs do domnio dele poder continuar acessando da mesma forma pois
esse domnio pode ser facilmente associado ao novo endereo IP.
8 www.k19.com.br
9 I NTRODUO
Como vimos, podemos acessar um Web Server diretamente atravs do seu endereo IP ou indi-
retamente atravs de um domnio. Para utilizar a segunda abordagem, necessrio consultar um
servidor DNS para traduzir o domnio desejado para o endereo IP correspondente. Basicamente,
a tarefa dos servidores DNS informar o endereo IP associado a um domnio.
www.facebook.com/k19treinamentos 9
I NTRODUO 10
H diversos servidores DNS que so pblicos. Eis uma lista com alguns deles.
Servios de Hospedagem
Uma organizao pode possuir computadores atuando como Web Servers em sua prpria infra-
estrutura ou na infraestrutura de empresas especializadas. Em determinadas situaes, a primeira
possibilidade mais conveniente.
Por exemplo, normalmente, as instituies bancrias preferem manter os seus sites e as suas
aplicaes web em Web Servers dentro da sua prpria infraestrutura. Essa abordagem permite um
controle maior da comunicao entre essas instituies e os seus clientes. Mas, ela exige grandes
investimentos. Para garantir que os seus Web Servers estejam sempre funcionando, essas instituies
bancrias mantm profissionais 24 horas por dia 7 dias por semana (24/7). Caso contrrio, os sites
ou as aplicaes web dessas instituies podem ficar fora do ar e gerar grandes prejuzos.
Por outro lado, muitas vezes, mais conveniente manter os Web Servers de uma organizao na
infraestrutura de uma empresa especializada. Dessa forma, a responsabilidade de mant-los fun-
cionando delegada essa empresa. Essa abordagem, geralmente, diminui os custos. Contudo, o
controle delegado a uma outra empresa. O servio oferecido por essas empresas denominado
servio de hospedagem. Eis uma lista de empresas que oferecem esse tipo de servio.
Amazon
10 www.k19.com.br
11 I NTRODUO
Localweb
UOL
Hoje em dia, a principal forma de encontrar um site utilizar alguma ferramenta de busca. A
mais importante delas, atualmente, o Google. Essas ferramentas encontram os sites que possuem
contedo relacionado s palavras chaves utilizadas nas buscas. Os sites mais relevantes so apresen-
tados antes e com maior destaque.
Normalmente, as tcnicas de SEO so mais importantes para os sites do que para as aplicaes
web.
Arquitetura Web
Vamos utilizar um diagrama para apresentar uma viso geral da arquitetura web.
www.facebook.com/k19treinamentos 11
I NTRODUO 12
Observe que o diagrama foi dividido em duas partes: client side e server side. Alguns profissi-
onais se especializam no client side e outros no server side. Outra denominao possvel para client
side front-end e para server side back-end.
Por exemplo, um web designer deve ter bons conhecimentos do client side. Por outro lado, um
programador web deve ter bons conhecimentos do server side.
Geralmente, os web designers no precisam ter conhecimento do server side mas t-lo pode ser
til. Por outro lado, os programadores web precisam conhecer razoavelmente bem o client side.
Nesse treinamento, estamos interessados especificamente no client side.
Se voc quiser utilizar o Windows 7 para fazer os exerccios dos prximos captulos, instale o IIS
e o ASP Classic de acordo com os passos a seguir.
12 www.k19.com.br
13 I NTRODUO
www.facebook.com/k19treinamentos 13
I NTRODUO 14
14 www.k19.com.br
15 I NTRODUO
www.facebook.com/k19treinamentos 15
I NTRODUO 16
Se voc quiser utilizar o Ubuntu 13.04 para fazer os exerccios dos prximos captulos, instale o
Apache HTTP Server de acordo com os passos a seguir.
Configurao do Userdir
Configure o userdir do Apache HTTP Server seguindo passos abaixo.
Se voc quiser utilizar o Mac OS X Mountain Lion para fazer os exerccios dos prximos captulos,
configure o Apache HTTP Server de acordo com os passos a seguir.
16 www.k19.com.br
17 I NTRODUO
mkdir ~/ Sites
sudo defaults write / System / Library / LaunchDaemons / org . apache . httpd Disabled - bool false
Resumo do Captulo
1 No h um critrio exato para diferenciar o que um site e o que uma aplicao web.
www.facebook.com/k19treinamentos 17
I NTRODUO 18
11 Organizaes de grande porte costuma implantar os seus sites e as suas aplicaes web em Web
Servers dentro da sua prpria infraestrutura. Por outro lado, organizaes menores, normalmente,
preferem contratam empresas especializadas no servio de hospedagem.
13 Podemos dividir a arquitetura web em duas partes: client side e server side.
Prova
a) Existe uma diviso clara e exata entre o conceito de site e aplicao web.
b) Geralmente, os sites possuem maior grau de interatividade com o usurio do que as aplicaes
web.
e) Os sites ou as aplicaes web so ditos responsivos se eles esto preparados para diferentes
tamanhos de tela.
18 www.k19.com.br
19 I NTRODUO
b) O contedo de um site determinado pelo domnio associado ao Web Server onde esse site
est implantado.
a) A funo principal de um servidor DNS (Domain Name System) informar o nome do propri-
etrio de um site.
b) O objetivo principal das empresas que fornecem servios de hospedagem vender domnios.
4 6
Minha Pontuao Pontuao Mnima: Pontuao Mxima:
www.facebook.com/k19treinamentos 19
I NTRODUO 20
20 www.k19.com.br
CAPTULO
HTML
2
Introduo
Quando acessamos uma pgina web, estamos interessados na informao contida nessa pgina.
Essa informao pode estar na forma de texto, imagem ou vdeo. O contedo de uma pgina web
definido com a linguagem HTML (HyperText Markup Language). HTML uma linguagem de mar-
cao originalmente proposta por Tim Berners-Lee no final da dcada de 1980. O objetivo do Tim
Barners-Lee era criar um mecanismo simples que pudesse ser utilizado por qualquer pessoa que
quisesse disseminar documentos cientficos.
Desde sua proposta at os dias de hoje, a linguagem HTML sofreu diversas alteraes. A cada
verso, novos recursos so adicionados e problemas corrigidos. A verso mais atual da especificao
da linguagem HTML a 5. Essa verso ainda no foi finalizada, a previso que ela seja lanada em
definitivo em Julho de 2014. Porm, os navegadores j implementam diversos recursos do HTML5.
A especificao est disponvel no endereo http://www.w3.org/TR/html5.
As especificaes da linguagem HTML so publicadas pelo World Wide Web Consortium mais
conhecido por sua sigla W3C. Alm do HTML, o W3C tambm responsvel por linguagens como o
XML, o SVG e pela interface DOM (Document Object Model), por exemplo.
Estrutura Bsica
www.facebook.com/k19treinamentos 21
HTML 22
<!DOCTYPE html>
<html lang=pt-br>
Nome de atributo
<head>
Valor de atributo
<title>K19 Treinamentos</title>
</head>
Contedo do elemento body
<body>
</body>
</html>
Mais Sobre
A especificao do HTML5 define duas sintaxes distintas para produzir documentos
HTML. A primeira denominada sintaxe HTML e a segunda denominada sintaxe
XHTML. A maior parte dos autores recomendam a utilizao da sintaxe HTML. Nos exemplos
e nos exerccios dessa apostila, a preferncia ser pela sintaxe HTML.
22 www.k19.com.br
23 HTML
Mais Sobre
De acordo com a especificao da linguagem HTML, alguns elementos so denomina-
dos Normal Elements. Esses elementos so abertos com uma tag e fechados com
outra tag. Por exemplo, o elemento p um Normal Element. Observe a utilizao da tag de
abertura e da tag de fechamento do elemento p.
1 <p > K02 - Desenvolvimento Web com HTML , CSS e JavaScript </ p >
Mais Sobre
H tambm elementos denominados Void Elements. Esses elementos no possuem
contedo. Na sintaxe HTML, esses elementos so abertos e fechados com apenas uma
tag com ou sem o caractere /. Um exemplo de Void Element o elemento br.
1 <p >
2 K01 - Lgica de Programao < br >
3 K02 - Desenvolvimento Web com HTML , CSS e JavaScript < br / >
4 K03 - SQL e Modelo Relacional
5 </ p >
Os Void Elements so: area, base, br, col, embed, hr, img, input, keygen, link, meta,
param, source, track, wbr.
Na sintaxe XHTML, os Void Elements podem ser abertos e fechados na mesma tag ou em tags
separadas. Contudo, o caractere / obrigatrio.
1 <p >
2 K01 - Lgica de Programao < br / >
3 K02 - Desenvolvimento Web com HTML , CSS e JavaScript < br > </ br >
4 K03 - SQL e Modelo Relacional
5 </ p >
<!DOCTYPE>
Para um navegador exibir corretamente uma pgina web, devemos informar explicitamente o
tipo do documento. O tipo do documento informado com a declarao <!DOCTYPE>. Quando
conveniente, discutiremos as principais diferenas entre os tipos de documentos mais importantes.
Veja a declarao <!DOCTYPE> para os principais tipos de documentos.
1 <! DOCTYPE HTML PUBLIC " -// W3C // DTD HTML 4.01// EN "
2 " http :// www . w3 . org / TR / html4 / strict . dtd " >
1 <! DOCTYPE HTML PUBLIC " -// W3C // DTD HTML 4.01 Transitional // EN "
2 " http :// www . w3 . org / TR / html4 / loose . dtd " >
www.facebook.com/k19treinamentos 23
HTML 24
1 <! DOCTYPE HTML PUBLIC " -// W3C // DTD HTML 4.01 Frameset // EN "
2 " http :// www . w3 . org / TR / html4 / frameset . dtd " >
1 <! DOCTYPE html PUBLIC " -// W3C // DTD XHTML 1.0 Transitional // EN "
2 " http :// www . w3 . org / TR / xhtml1 / DTD / xhtml1 - transitional . dtd " >
1 <! DOCTYPE html PUBLIC " -// W3C // DTD XHTML 1.0 Frameset // EN "
2 " http :// www . w3 . org / TR / xhtml1 / DTD / xhtml1 - frameset . dtd " >
1 <! DOCTYPE html PUBLIC " -// W3C // DTD XHTML 1.1// EN "
2 " http :// www . w3 . org / TR / xhtml11 / DTD / xhtml11 . dtd " >
<html>
Os elementos HTML, com exceo do DOCTYPE, devem ser inseridos no contedo do elemento
html. Esse elemento aberto com a tag <html>, fechado com a tag </html> e deve conter exata-
mente um elemento head seguido de exatamente um elemento body.
Diversos autores recomendam a utilizao do atributo lang. Esse atributo indica a lngua utili-
zada no documento HTML ou na maior parte dele. Algumas ferramentas de leitura ou de traduo
de texto podem utilizar esse atributo para descobrir facilmente em qual lngua os textos contidos no
documento HTML ou na maior parte dele foram escritos.
<head>
A principal funo do elemento head agrupar informaes sobre o documento HTML (metain-
formao). So exemplos de metainformaes: o encoding, a taxa de atualizao, o autor, a descrio
e as palavras chaves do documento HTML.
24 www.k19.com.br
25 HTML
O elemento head aberto e fechado pelas tags <head> e </head> respectivamente. Obrigatoria-
mente, salvo algumas poucas excees, o corpo do head deve conter exatamente uma ocorrncia do
elemento title. Esse elemento define o ttulo do documento HTML.
<body>
O contedo de uma pgina web deve ser definido no corpo do elemento body. Por exemplo,
podemos inserir no corpo do body cabealhos, textos, listas, tabelas, entre outros componentes.
Esse elemento aberto pela tag <body> e fechado pela tag </body>.
Comentrios
Podemos adicionar comentrios em um documento HTML dentro das tags <!-- e -->. Os comen-
trios so ignorados pelos navegadores.
Editores HTML
Documentos HTML podem ser criados em qualquer editor de texto bsico. Contudo, para ga-
nhar produtividade, podemos utilizar ferramentas com mais recursos. H diversas opes de edito-
res HTML, alguns gratuitos outros pagos. Nesse treinamento, utilizaremos o Netbeans como editor
HTML. Na verdade, o Netbeans oferece muito mais recursos alm do editor HTML. Contudo, agora,
no estamos interessados nesses outros recursos. Voc pode obter gratuitamente o Netbeans no en-
dereo https://netbeans.org/.
Hoje em dia, os principais navegadores possuem ferramentas para testar e depurar as pginas
web e a interao com os Web Servers. Nos exemplos dessa apostila, utilizaremos Chrome DevTools
do navegador Chrome. Outra ferramenta muito importante o Firebug do navegador Firefox.
www.facebook.com/k19treinamentos 25
HTML 26
Exerccios de Fixao
Importante
No Windows, utilizando o IIS (Internet Information Services) como Web Server, voc
deve salvar o projeto html em C:\inetpub\wwwroot. Lembre-se que necessrio
instalar o IIS conforme vimos anteriormente.
Importante
No Ubuntu, utilizando o Apache HTTP Server como Web Server, voc deve salvar o pro-
jeto html em /home/<USUARIO>/public_html. Lembre-se que necessrio insta-
lar e configurar o Apache HTTP Server como vimos anteriormente.
26 www.k19.com.br
27 HTML
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao1.zip
www.facebook.com/k19treinamentos 27
HTML 28
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao2.zip
http://localhost/html/public_html/index.html.
http://localhost/~<USUARIO>/html/public_html/index.html.
28 www.k19.com.br
29 HTML
www.facebook.com/k19treinamentos 29
HTML 30
30 www.k19.com.br
31 HTML
5 Utilize o Chrome DevTools ou o Firebug para analisar a requisio HTTP e a resposta HTTP.
www.facebook.com/k19treinamentos 31
HTML 32
Semntica HTML
As placas de sinalizao so fundamentais para manter a ordem no trnsito. Cada placa possui
um significado especfico. A utilizao equivocada das placas de trnsito pode causar problemas
como colises de veculos.
Considere um cruzamento no qual proibido virar a esquerda ou a direita (exemplo: Av. Re-
bouas com Av Brasil ou Av. Prof. Francisco Morato com Av. Vital Brasil). Nesse cruzamento, o
funcionrio encarregado de instalar as placas de trnsito decidiu utilizar a sinalizao abaixo.
Essa sinalizao est totalmente equivocada. Ela indica a existncia de obstculos na pista que
obrigam a passagem dos veculos pelo lado direito ou pelo lado esquerdo. O motorista que conhece
o significado correto dessa placa pode decidir virar direita ou esquerda e sofrer uma coliso. Para
no gerar confuso o funcionrio poderia utilizar a placa abaixo.
Para manter a organizao no trnsito, a semntica(significado) das sinalizaes deve ser respei-
tada. Analogamente, no desenvolvimento web, fundamental respeitar o significado dos elementos
32 www.k19.com.br
33 HTML
HTML.
De acordo com a especificao da linguagem HTML, a maior parte dos elementos possuem um
propsito bem definido. Para o funcionamento correto das pginas de uma aplicao web, fun-
damental respeitar o propsito de cada elemento e utiliz-lo nas condies corretas. Muitos autores
utilizam o termo semntica HTML ao se referirem ao uso correto dos elementos da linguagem HTML.
No exemplo abaixo, utilizamos o elemento p para definir um pargrafo. De acordo com a espe-
cificao da linguagem HTML, esse elemento deve ser utilizado justamente para definir pargrafos.
Portanto, ele foi aplicado corretamente.
Dessa vez, utilizamos o elemento address. De acordo com a especificao, esse elemento deve
ser utilizado para fornecer informaes de contato dos autores ou donos do documento. Normal-
mente, esse elemento aparece no incio ou no final das pginas.
Se observarmos o exemplo mais atentamente, trata-se de uma pgina do site do Jonas (repare no
ttulo da pgina). O autor da pgina o Jonas e no o Rafael ou o Marcelo. Portanto, o elemento ad-
dress foi aplicado incorretamente. Alm disso, devemos evitar o uso desse elemento para informar
endereos postais a menos que essas informaes sejam relacionadas ao autor ou dono do docu-
www.facebook.com/k19treinamentos 33
HTML 34
mento.
Ttulos
Assim como em um livro, uma pgina web pode conter uma hierarquia de ttulos para estabelecer
uma diviso do seu contedo. Para inserir ttulos em uma pgina web, devemos utilizar os elementos
h1, h2, h3, h4, h5 e h6. Os sufixos numricos de 1 a 6 indicam o nvel do ttulo dentro da hierarquia
de ttulos do documento. Veja o exemplo:
Observe que os ttulos no foram exibidos lado a lado e sim um embaixo do outro. Geralmente,
os navegadores exibem os ttulos como blocos. Por padro, esses blocos ocupam todo o espao ho-
rizontal do elemento onde os ttulos esto contidos. No exemplo, os ttulos esto contidos no corpo
da pgina. Portanto, ocupam todo o espao horizontal da pgina. Esse o comportamento padro
dos block-level elements. Utilizando as ferramentas de desenvolvimento do Chrome, podemos vi-
sualizar claramente esses blocos.
34 www.k19.com.br
35 HTML
Geralmente, os navegadores utilizam tamanhos diferentes de fonte para cada ttulo. No existe
um padro de tamanho e de fonte entre os navegadores. Em outras palavras, os ttulos de uma pgina
web podem ser exibidos de maneiras diferentes em navegadores distintos. Para padronizar a exibio
dos ttulos, podemos aplicar as regras CSS.
Devemos utilizar os ttulos com cautela, pois eles so usados como critrio de ranqueamento
por buscadores como Google, Yahoo e Bing. O uso correto dos elementos de ttulo fortemente re-
comendado pelos especialistas em SEO (Search Engine Optimization). Para utiliz-los corretamente,
devemos respeitar basicamente as seguintes regras.
Manter a ordem lgica dos ttulos. Um elemento h2 deve ser precedido de um elemento h1.
Um elemento h3 deve ser precedido de um elemento h2. E assim sucessivamente.
O ttulo de uma seo deve descrever bem o contedo dela.
Exerccios de Fixao
6 Crie um novo documento HTML chamado titulos.html com o contedo abaixo no projeto html
em Site Root.
www.facebook.com/k19treinamentos 35
HTML 36
5 < title > K02 - Desenvolvimento Web com HTML , CSS e Javascript </ title >
6 </ head >
7 < body >
8 < h1 > K02 - Desenvolvimento Web com HTML , CSS e Javascript </ h1 >
9
10 <p > Atualmente , praticamente todos os sistemas corporativos possuem
11 interfaces web . Para quem deseja atuar no mercado de desenvolvimento
12 de software , obrigatrio o conhecimento das linguagens : HTML , CSS
13 e JavaScript . </ p >
14
15 <p > Essas linguagens so utilizadas para o desenvolvimento da camada de
16 apresentao das aplicaes web . </ p >
17
18 < h2 >Pr - requisitos </ h2 >
19
20 < ul >
21 < li > Familiaridade com algum sistema operacional ( Windows / Linux / Mac OS X ) </ li >
22 < li > Lgica de programao </ li >
23 </ ul >
24
25 < h2 > Agenda </ h2 >
26
27 < h3 > Aos domingos </ h3 >
28
29 < ul >
30 < li > 10/11/2013 das 08:00 s 14:00 </ li >
31 < li > 23/02/2014 das 14:00 s 20:00 </ li >
32 </ ul >
33
34 < h3 > Aos sbados </ h3 >
35
36 < ul >
37 < li > 15/03/2014 das 08:00 s 14:00 </ li >
38 < li > 26/04/2014 das 14:00 s 20:00 </ li >
39 </ ul >
40 </ body >
41 </ html >
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao6.zip
http://localhost/html/public_html/titulos.html.
http://localhost/~<USUARIO>/html/public_html/titulos.html.
Utilize o Chrome DevTools ou o Firebug para analisar os elementos que formam o documento
HTML, a requisio HTTP e a resposta HTTP.
8 Imagine que voc possua um site de culinria no qual voc disponibiliza algumas receitas. Crie
uma pgina com uma receita fictcia utilizando ttulos para organizar contedo. Utilize quantos n-
veis de ttulo achar necessrio. Para isso, adicione um arquivo chamado receita.html no projeto
html em Site Root.
36 www.k19.com.br
37 HTML
4 < meta http - equiv = " Content - Type " content = " text / html ; charset = UTF -8 " >
5 < title > Como preparar um delicioso macarro instantneo em 6 min . </ title >
6 </ head >
7 < body >
8 < h1 > Como preparar um delicioso macarro instantneo em 6 min . </ h1 >
9
10 <p > Com esta receita voc se tornar um profissional na arte de
11 preparar um macarro instantneo . </ p >
12
13 < h2 > Ingredientes </ h2 >
14
15 < ul >
16 < li > Macarro instantneo da sua marca favorita </ li >
17 < li > 600 ml de gua </ li >
18 </ ul >
19
20 < h2 > Modo de preparo </ h2 >
21
22 < h3 > No micro - ondas </ h3 >
23
24 <p > Coloque o macarro instantneo em um recipiente com 600 ml de gua e
25 programe o micro ondas para 6 minutos . Aperte o boto iniciar ou
26 equivalente . </ p >
27
28 < h4 > Dicas </ h4 >
29
30 < ul >
31 < li >
32 Utilize um recipiente que permita o macarro ficar totalmente
33 submerso na gua .
34 </ li >
35 < li >
36 Quando ouvir o bip , no saia correndo . O micro ondas no explodir .
37 O bip significa que o macarro est pronto .
38 </ li >
39 </ ul >
40
41 < h3 > No fogo </ h3 >
42
43 <p >
44 Coloque o macarro instantneo em uma panela com 600 ml de gua e
45 leve ao fogo por 3 minutos .
46 </ p >
47
48 < h4 > Dicas </ h4 >
49
50 < ul >
51 < li >
52 Utilize uma panela que permita o macarro ficar totalmente
53 submerso na gua .
54 </ li >
55 < li >
56 No se distraia com a televiso ou qualquer outra coisa .
57 Voc poder queimar a sua refeio
58 </ li >
59 </ ul >
60 </ body >
61 </ html >
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao8.zip
http://localhost/html/public_html/receita.html.
www.facebook.com/k19treinamentos 37
HTML 38
http://localhost/~<USUARIO>/html/public_html/receita.html.
Utilize o Chrome DevTools ou o Firebug para analisar os elementos que formam o documento
HTML, a requisio HTTP e a resposta HTTP.
Pargrafos
Os pargrafos de uma pgina web so definidos atravs do elemento p. Assim como os ttulos,
normalmente, os navegadores definem os pargrafos como block-level elements. Dessa forma, por
padro, eles ocupam horizontalmente todo o espao do elemento pai.
Os navegadores ajustam os textos dos pargrafos largura do elemento pai. As quebras de linha
necessrias so inseridas automaticamente. Os espaos excedentes definidos em um documento
HTML entre as palavras de um pargrafo so desconsiderados pelos navegadores na exibio das
pginas web. Analogamente, as quebras de linha presentes no documento HTML tambm so des-
consideradas pelos navegadores.
Caso seja necessrio forar uma quebra de linha entre duas palavras contidas em um pargrafo,
podemos utilizar o elemento br. Quando um pargrafo contm palavras muito longas, os navegado-
res podem ter dificuldades para ajustar as quebras de linha. Podemos indicar explicitamente com o
elemento wbr, como as palavras podem ser quebradas. Veja o exemplo abaixo.
38 www.k19.com.br
39 HTML
Character Entities
www.facebook.com/k19treinamentos 39
HTML 40
Exerccios de Fixao
10 Crie um novo documento HTML chamado paragrafos.html no projeto html em Site Root.
40 www.k19.com.br
41 HTML
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao10.zip
http://localhost/html/public_html/paragrafos.html.
http://localhost/~<USUARIO>/html/public_html/paragrafos.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao12.zip
http://localhost/html/public_html/character-entities.html.
http://localhost/~<USUARIO>/html/public_html/character-entities.html.
Texto
Texto pr-formatado
www.facebook.com/k19treinamentos 41
HTML 42
Cdigo
Para adicionar cdigos em um documento HTML, devemos utilizar o elemento code. Normal-
mente, esse elemento utilizado para definir cdigos escritos em alguma linguagem de programa-
o. Normalmente, os navegadores utilizam fonte mono espaada para exibir o contedo desse ele-
mento.
Diferentemente dos ttulos, dos pargrafos e dos textos pr-formatados, normalmente, os na-
vegadores definem os cdigos como inline-level elements. Dessa forma, por padro, os cdigos
ocupam horizontalmente somente o espao necessrio.
42 www.k19.com.br
43 HTML
Elemento i
www.facebook.com/k19treinamentos 43
HTML 44
Elemento b
44 www.k19.com.br
45 HTML
www.facebook.com/k19treinamentos 45
HTML 46
Citaes
Podemos definir citaes longas ou curtas com os elementos blockquote e q respectivamente.
Por padro, o elemento blockquote exibido como elemento de bloco e o elemento q exibido
como elemento de linha. Esses dois elementos possuem o atributo cite que deve ser utilizado para
indicar a fonte da citao.
Tambm podemos citar, com o elemento cite, ttulos de trabalhos, livros, msicas, filmes, pro-
gramas de TV, peas de teatro, entre outros. Por padro, esse elemento exibido como elemento de
linha.
Normalmente, os navegadores definem o blockquote como block-level element. Por outro lado,
o q e o cite, normalmente, so definidos como inline-level elements.
46 www.k19.com.br
47 HTML
28 <p >
29 Nelson Rodrigues disse :
30 <q cite = " http :// pt . wikipedia . org / wiki / Nelson_Rodrigues " >
31 O adulto no existe . O homem um menino perene
32 </ q >.
33 </ p >
34
35 <p >
36 A pea < cite >A mulher sem pecado </ cite > de Nelson Rodrigues estreou
37 em 1941 no Rio de Janeiro .
38 </ p >
39 </ body >
40 </ html >
Abreviaes
Podemos definir abreviaes com o elemento abbr. Por padro, esse elemento exibido como
elemento de linha. O atributo title desse elemento utilizado para definir um tootip. Normalmente,
os navegadores definem esse elemento como inline-level element
www.facebook.com/k19treinamentos 47
HTML 48
Definies
Podemos inserir definies em um documento HTML com o elemento dfn. Por padro, esse
elemento exibido como elemento de linha. Normalmente, os navegadores definem o dfn como
inline-level element
48 www.k19.com.br
49 HTML
Alteraes
Em alguns casos, importante informar que o texto de um documento HTML sofreu alteraes.
Um texto que foi acrescentado em um documento HTML deve ser definido com o elemento ins.
Um texto que no faz mais parte do documento deve ser definido com o elemento del. Um texto
que deixou de ser correto, preciso ou relevante deve ser definido com o elemento s. Por padro,
esses elementos so exibidos como elementos de linha. Normalmente, os navegadores definem esses
elementos como inline-level elements.
Os elementos ins e del possuem os atributos cite e datetime. O atributo cite deve ser utilizado
para indicar a URL de um documento com as justificativas da alterao. O atributo datetime deve
ser utilizado para informar quando ocorreu a alterao.
www.facebook.com/k19treinamentos 49
HTML 50
12 1599. </ ins > < del cite = " del - explicacao . html " datetime = " 2013 -10 -10 T17 :43:07 Z " >A
13 rea total dessa cidade 167 ,263 km < sup >2 </ sup > </ del >. <s > De acordo com o
14 IBGE , a populao dessa cidade de 774.230 habitantes . </ s > De acordo com o
15 IBGE a populao dessa cidade de 803.739 habitantes .
16 </ p >
17 </ body >
18 </ html >
Data e hora
O elemento time permite que datas e horrios sejam definidos em um documento HTML. H
duas formas de utilizar esse elemento. A primeira definir a data e o horrio desejado no con-
tedo do elemento time. A segunda definir a data e o horrio desejado no valor do atributo date-
time. Nessas duas opes, as datas e os horrios devem ser escritos seguindo o formato definido na
especificao da linguagem HTML (http://www.w3.org/TR/html5/text-level-semantics.html#
the-time-element). Quando utilizamos o atributo datetime, o contedo do elemento time no pre-
cisa seguir um formato especfico. Normalmente, os navegadores definem o time como inline-level
element.
50 www.k19.com.br
51 HTML
Texto marcado
O elemento mark permite que determinados trechos de um texto sejam marcados. Normal-
mente, os navegadores definem o mark como inline-level element.
www.facebook.com/k19treinamentos 51
HTML 52
Exerccios de Fixao
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao14.zip
http://localhost/html/public_html/texto-pre-formatado.html.
http://localhost/~<USUARIO>/html/public_html/texto-pre-formatado.html.
16 Crie um novo documento HTML chamado codigo.html no projeto html em Site Root.
52 www.k19.com.br
53 HTML
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao16.zip
http://localhost/html/public_html/codigo.html.
http://localhost/~<USUARIO>/html/public_html/codigo.html.
18 Crie um novo documento HTML chamado i.html no projeto html em Site Root.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao18.zip
http://localhost/html/public_html/i.html.
http://localhost/~<USUARIO>/html/public_html/i.html.
20 Crie um novo documento HTML chamado b.html no projeto html em Site Root.
www.facebook.com/k19treinamentos 53
HTML 54
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao20.zip
http://localhost/html/public_html/b.html.
http://localhost/~<USUARIO>/html/public_html/b.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao22.zip
http://localhost/html/public_html/texto-subscrito-sobrescrito.html.
http://localhost/~<USUARIO>/html/public_html/texto-subscrito-sobrescrito.html.
54 www.k19.com.br
55 HTML
9 <p >
10 O < strong > Brasil </ strong > o nico
11 pas que ganhou < em > cinco vezes </ em >
12 a < strong > copa do mundo de futebol </ strong >.
13 </ p >
14 </ body >
15 </ html >
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao24.zip
http://localhost/html/public_html/texto-importante-enfatizado.html.
http://localhost/~<USUARIO>/html/public_html/texto-importante-enfatizado.html.
26 Crie um novo documento HTML chamado citacoes.html no projeto html em Site Root.
www.facebook.com/k19treinamentos 55
HTML 56
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao26.zip
http://localhost/html/public_html/citacoes.html.
http://localhost/~<USUARIO>/html/public_html/citacoes.html.
28 Crie um novo documento HTML chamado abreviacoes.html no projeto html em Site Root.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao28.zip
http://localhost/html/public_html/abreviacoes.html.
http://localhost/~<USUARIO>/html/public_html/abreviacoes.html.
30 Crie um novo documento HTML chamado definicoes.html no projeto html em Site Root.
56 www.k19.com.br
57 HTML
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao30.zip
http://localhost/html/public_html/definicoes.html.
http://localhost/~<USUARIO>/html/public_html/definicoes.html.
32 Crie um novo documento HTML chamado alteracoes.html no projeto html em Site Root.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao32.zip
http://localhost/html/public_html/alteracoes.html.
http://localhost/~<USUARIO>/html/public_html/alteracoes.html.
34 Crie um novo documento HTML chamado data-hora.html no projeto html em Site Root.
www.facebook.com/k19treinamentos 57
HTML 58
15 < li > < time datetime = " 2010 -08 " > Fundao da K19 </ time > </ li >
16 < li > < time datetime = " 1984 -10 -30 " > Aniversrio do Rafael </ time > </ li >
17 < li > < time datetime = " 12 -25 " > Natal </ time > </ li >
18 < li > < time datetime = " 09:00 " > Horrio de Entrada </ time > </ li >
19 < li > < time datetime = " 2013 -12 -31 23:59:59 " > Ano Novo 2014 </ time > </ li >
20 </ ul >
21 </ body >
22 </ html >
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao34.zip
http://localhost/html/public_html/data-hora.html.
http://localhost/~<USUARIO>/html/public_html/data-hora.html.
36 Crie um novo documento HTML chamado mark.html no projeto html em Site Root.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao36.zip
http://localhost/html/public_html/mark.html.
http://localhost/~<USUARIO>/html/public_html/mark.html.
Listas
Lista de descries
58 www.k19.com.br
59 HTML
Lista de descries
Para criar uma lista de descries, devemos utilizar o elemento dl. Essas listas so formadas
por termos ou nomes e as suas respectivas descries. Os termos ou nomes so definidos com o
elemento dt. As descries so definidas com o elemento dd. Normalmente, os navegadores definem
todos esses elementos como block-level elements.
www.facebook.com/k19treinamentos 59
HTML 60
60 www.k19.com.br
61 HTML
10
11 < ul >
12 < li > Conhecimento de algum sistema operacional ( Windows / Linux / MacOS X ) </ li >
13 < li > Lgica de programao </ li >
14 </ ul >
15 </ body >
16 </ html >
Listas aninhadas
Uma lista pode ser definida dentro de outra lista. Quando listas sem ordem so aninhadas, nor-
malmente, os navegadores alternam o marcadores dos itens.
www.facebook.com/k19treinamentos 61
HTML 62
32 < ol >
33 < li > Portugual </ li >
34 < li > Frana </ li >
35 < li > Alemanha </ li >
36 </ ol >
37 </ li >
38 < li >
39 sia
40 < ol >
41 < li > Japo </ li >
42 < li > China </ li >
43 < li > ndia </ li >
44 </ ol >
45 </ li >
46 </ ol >
47 </ body >
48 </ html >
Exerccios de Fixao
38 Crie um novo documento HTML chamado lista-descricoes.html no projeto html em Site Root.
62 www.k19.com.br
63 HTML
4 < meta http - equiv = " Content - Type " content = " text / html ; charset = UTF -8 " >
5 < title > Exemplo de lista de descries </ title >
6 </ head >
7 < body >
8 < h1 > Exemplo de lista de descries </ h1 >
9 < dl >
10 < dt > K01 - Lgica de Programao </ dt >
11 < dd >
12 Conhecimentos em Lgica de Programao o pr - requisito fundamental
13 para que uma pessoa consiga aprender qualquer Linguagem de Programao ...
14 </ dd >
15 < dt > K02 - Desenvolvimento Web com HTML , CSS e JavaScript </ dt >
16 < dd >
17 Atualmente , praticamente todos os sistemas corporativos possuem
18 interfaces web . Para quem deseja atuar no mercado de desenvolvimento ...
19 </ dd >
20 < dt > K03 - SQL e Modelo Relacional </ dt >
21 < dd >
22 Como as aplicaes corporativas necessitam armazenar dados fundamental
23 que os desenvolvedores possuam conhecimentos sobre persistncia de dados .
24 </ dd >
25 </ dl >
26 </ body >
27 </ html >
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao38.zip
http://localhost/html/public_html/lista-descricoes.html.
http://localhost/~<USUARIO>/html/public_html/lista-descricoes.html.
40 Crie um novo documento HTML chamado lista-com-ordem.html no projeto html em Site Root.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao40.zip
www.facebook.com/k19treinamentos 63
HTML 64
http://localhost/html/public_html/lista-com-ordem.html.
http://localhost/~<USUARIO>/html/public_html/lista-com-ordem.html.
42 Crie um novo documento HTML chamado lista-sem-ordem.html no projeto html em Site Root.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao42.zip
http://localhost/html/public_html/lista-sem-ordem.html.
http://localhost/~<USUARIO>/html/public_html/lista-sem-ordem.html.
44 Crie um novo documento HTML chamado listas-aninhadas.html no projeto html em Site Root.
64 www.k19.com.br
65 HTML
20 sia
21 < ul >
22 < li > Japo </ li >
23 < li > China </ li >
24 < li > ndia </ li >
25 </ ul >
26 </ li >
27 </ ul >
28 < h2 > Cronograma da minha viagem </ h2 >
29 < ol >
30 < li >
31 Europa
32 < ol >
33 < li > Portugual </ li >
34 < li > Frana </ li >
35 < li > Alemanha </ li >
36 </ ol >
37 </ li >
38 < li >
39 sia
40 < ol >
41 < li > Japo </ li >
42 < li > China </ li >
43 < li > ndia </ li >
44 </ ol >
45 </ li >
46 </ ol >
47 </ body >
48 </ html >
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao44.zip
http://localhost/html/public_html/listas-aninhadas.html.
http://localhost/~<USUARIO>/html/public_html/listas-aninhadas.html.
46 Crie um novo documento HTML chamado restaurante.html no projeto html em Site Root.
www.facebook.com/k19treinamentos 65
HTML 66
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao46.zip
http://localhost/html/public_html/restaurante.html.
http://localhost/~<USUARIO>/html/public_html/restaurante.html.
48 Crie um novo documento HTML chamado manual.html no projeto html em Site Root.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao48.zip
http://localhost/html/public_html/manual.html.
http://localhost/~<USUARIO>/html/public_html/manual.html.
50 Crie um novo documento HTML chamado cursos.html no projeto html em Site Root.
66 www.k19.com.br
67 HTML
4 < meta http - equiv = " Content - Type " content = " text / html ; charset = UTF -8 " >
5 < title > K00 - Formao Bsica - K19 Treinamentos </ title >
6 </ head >
7 < body >
8 < h1 > K00 - Formao Bsica </ h1 >
9
10 < ul >
11 < li > K01 - Lgica de Programao </ li >
12 < li > K02 - Desenvolvimento Web com HTML , CSS e JavaScript </ li >
13 < li > K03 - SQL e Modelo Relacional </ li >
14 </ ul >
15 </ body >
16 </ html >
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao50.zip
http://localhost/html/public_html/cursos.html.
http://localhost/~<USUARIO>/html/public_html/cursos.html.
52 Crie um novo documento HTML chamado formacoes.html no projeto html em Site Root.
www.facebook.com/k19treinamentos 67
HTML 68
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao52.zip
http://localhost/html/public_html/formacoes.html.
http://localhost/~<USUARIO>/html/public_html/formacoes.html.
Iframes
Um documento HTML pode conter outros documentos HTML. Para adicionar um documento
HTML dentro de outro, devemos utilizar o elemento iframe. Esse elemento possui o atributo src.
Esse atributo indica o caminho absoluto ou relativo de um documento HTML. O contedo do ele-
mento iframe utilizado pelos navegadores que no oferecem suporte a esse elemento. Normal-
mente, o iframe definido pelos navegadores como inline-level element.
68 www.k19.com.br
69 HTML
Importante
No incio do crescimento da Internet, um grande nmero de sites utilizavam iframes.
Hoje em dia, os especialistas em design web no recomendam mais utilizao desse
recurso. Ento, evite a utilizao de iframes.
Links
Normalmente, um site formado por um conjunto de pginas que esto interligadas de alguma
forma. Para permitir que um usurio navegue de uma pgina para outra, devemos utilizar os links.
Basicamente, um link faz a ligao de uma pgina para outra do mesmo site (link interno) ou para
uma pgina de outro site (link externo).
Para criarmos um link, devemos utilizar o elemento a. Esse elemento possui um atributo cha-
mado href. O valor desse atributo indica o caminho relativo ou absoluto de uma outra pgina. Nor-
malmente, o a definido pelos navegadores como inline-level element.
www.facebook.com/k19treinamentos 69
HTML 70
Alm do atributo href, podemos utilizar o atributo target para informar onde o destino de um
link deve ser aberto.
Um link com target _self possui o mesmo comportamento de um link com target _top se esses
links estiverem em um documento HTML que no esteja dentro de outro documento HTML.
Dentro de um documento HTML com diversos frames, podemos definir que o destino de um
determinado link deve ser aberto em um determinado frame. Para realizarmos tal tarefa, o valor do
atributo target deve ser o nome do frame onde o destino do link deve ser aberto.
Por padro, o destino de um link aberto na mesma pgina ou frame onde ele est contido. Em
outras palavras, se o atributo target no for definido explicitamente, o padro o comportamento
do _self.
Exerccios de Fixao
70 www.k19.com.br
71 HTML
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao54.zip
http://localhost/html/public_html/links-origem.html.
http://localhost/~<USUARIO>/html/public_html/links-origem.html.
ncoras
Alm de criar links para outras pginas, podemos criar um link para uma determinada seo
de um documento HTML. Esse recurso chamado de ancoragem. O primeiro passo para utilizar
esse recurso identificar a seo que ser o destino desse link. Essa identificao realizada com o
atributo id. O id um atributo global, ou seja, todos os elementos possuem esse atributo. O segundo
passo criar os links utilizando os identificadores das sees de acordo com a sintaxe do exemplo a
seguir. Observe a utilizao do caractere #.
www.facebook.com/k19treinamentos 71
HTML 72
12 </ li >
13 < li >
14 <a href = " # historia " > Histria </ a >
15 </ li >
16 < li >
17 <a href = " # geografia " > Geografia </ a >
18 </ li >
19 < li >
20 <a href = " # demografia " > Demografia </ a >
21 </ li >
22 < li >
23 <a href = " http :// pt . wikipedia . org / wiki / Brasil # Economia " > Economia </ a >
24 </ li >
25 </ ul >
26
27 < h2 id = " brasil " > Brasil </ h2 >
28 ...
29
30 < h3 id = " historia " > Histria </ h3 >
31 ...
32
33 < h3 id = " geografia " > Geografia </ h3 >
34 ...
35
36 < h3 id = " demografia " > Demografia </ h3 >
37 ...
38 </ body >
39 </ html >
72 www.k19.com.br
73 HTML
Exerccios de Fixao
56 Crie um documento HTML chamado ancoras1.html no projeto html em Site Root. Adicione
um link para uma seo dentro desse documento. Dica: insira contedo suficiente para que a barra
de rolagem vertical do navegador aparea.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao56.zip
http://localhost/html/public_html/ancoras1.html.
http://localhost/~<USUARIO>/html/public_html/ancoras1.html.
58 Crie um novo arquivo chamado ancoras2.html no projeto html em Site Root. Identifique uma
seo com o nome ok. Dica: insira contedo suficiente para que a barra de rolagem vertical do
www.facebook.com/k19treinamentos 73
HTML 74
navegador aparea.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao58.zip
59 Crie um novo link no arquivo ancora1.html que aponte para ncora ok do arquivo ancoras2.html.
74 www.k19.com.br
75 HTML
33 < h2 id = " sobre " > Sobre o texto dessa pgina </ h2 >
34 <p >
35 O texto dessa pgina foi gerado atravs do site :
36 <a href = " http :// www . lipsum . com / " > http :// www . lipsum . com / </ a >
37 </ p >
38 </ body >
39 </ html >
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao59.zip
http://localhost/html/public_html/ancoras1.html.
http://localhost/~<USUARIO>/html/public_html/ancoras1.html.
Imagens
Certamente, os sites seriam muito entediantes se no fosse possvel adicionar imagens ao con-
tedo das pginas. Podemos adicionar imagens em documento HTML com o elemento img. Esse
elemento possui um atributo chamado src. Esse atributo indica o caminho absoluto ou relativo da
imagem que queremos adicionar. Normalmente, o img definido pelos navegadores como inline-
level element.
O elemento img possui um atributo obrigatrio chamado alt. Esse atributo define um texto al-
ternativo que pode ser utilizado, por exemplo, se houver um problema ao carregar a imagem ou por
softwares de leitura de tela.
www.facebook.com/k19treinamentos 75
HTML 76
28 </ li >
29 < li >
30 < img src = " http :// www . k19 . com . br / css / img / k12 - logo - large . png " alt = " K12 " / >
31 K12 - Desenvolvimento Web com JSF2 e JPA2
32 </ li >
33 </ ul >
34 </ body >
35 </ html >
Tambm podemos definir um tooltip para uma imagem com o atributo title.
1 < img src = " http :// www . k19 . com . br / css / img / main - header - logo . png " alt = " K19 " title = " K19 " / >
Os links e as imagens podem ser adicionados em um documento HTML com URLs absolutas ou
relativas.
76 www.k19.com.br
77 HTML
A mesma imagem e o mesmo link podem ser adicionados com URL absoluta. Veja o exemplo a
seguir.
Podemos definir uma URL base para as imagens e os links adicionados em um documento HTML
com URLs relativas. A URL base definida no valor do atributo href do elemento base. Esse elemento
deve ser adicionado no contedo do elemento head.
www.facebook.com/k19treinamentos 77
HTML 78
Exerccios de Fixao
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao61.zip
http://localhost/html/public_html/imagens.html.
http://localhost/~<USUARIO>/html/public_html/imagens.html.
Tabelas
78 www.k19.com.br
79 HTML
Suponha que voc esteja desenvolvendo o site de uma empresa e precisa apresentar alguns re-
latrios em documentos HTML. Considere que os dados desses relatrios so obtidos a partir de
planilhas. Da surge a necessidade de exibir dados de forma tabular em pginas web.
Para resolver esse problema, podemos utilizar o elemento table. Esse elemento permite apre-
sentar dados de forma tabular. As linhas de uma tabela so definidas com o elemento tr, as clulas
de ttulos com o elemento th e as clulas de dados com o elemento td. Os elementos th e td pos-
suem um atributo chamado colspan e outro chamado rowspan. O colspan define quantas colunas
uma clula deve ocupar e o rowspan define quantas linhas uma clula deve ocupar. Normalmente,
o table definido pelos navegadores como block-level element.
www.facebook.com/k19treinamentos 79
HTML 80
Para melhorar a semntica das tabelas, podemos definir explicitamente o cabealho, o corpo e o
rodap de uma tabela atravs dos elementos thead, tbody e tfoot respectivamente.
80 www.k19.com.br
81 HTML
Repare que visualmente no mudou absolutamente nada. Alm disso, apareceram mais alguns
elementos: thead, tfoot e tbody.
O elemento thead, assim como o tfoot, servem para agrupar as linhas de cabealho e de ro-
dap, respectivamente.
O cdigo fica mais claro.
Facilita a aplicao de estilos CSS (atravs do seletor de elemento)
Os navegadores podem utilizar barras de rolagem para exibir o contedo de uma tabela longa.
Essa caracterstica no obrigatria.
Na impresso de uma tabela longa, a ferramenta utilizada pode replicar o cabealho e o rodap
em todas as pginas. Essa caracterstica no obrigatria.
Ttulos
Tambm podemos definir um ttulo para uma tabela atravs do elemento caption. Esse elemento
deve ser o primeiro filho do elemento table.
www.facebook.com/k19treinamentos 81
HTML 82
Agrupando colunas
Podemos dividir as colunas de uma tabela em grupos. Normalmente, o principal motivo para
estabelecer essa diviso poder depois definir formataes especficas para cada grupo de colunas.
Para dividir em grupos as colunas de uma tabela, devemos utilizar os elementos colgroup e col. O
atributo span do elemento col define a quantidade de colunas de um determinado grupo.
82 www.k19.com.br
83 HTML
Exerccios de Fixao
63 Crie uma pgina HTML em um arquivo chamado tabela.html no projeto html em Site Root que
contenha uma tabela de acordo com a imagem abaixo:
www.facebook.com/k19treinamentos 83
HTML 84
As linhas vermelhas foram colocadas na imagem apenas para facilitar a visualizao do pro-
blema.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao63.zip
http://localhost/html/public_html/tabela.html.
84 www.k19.com.br
85 HTML
http://localhost/~<USUARIO>/html/public_html/tabela.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao65.zip
http://localhost/html/public_html/tabela.html.
http://localhost/~<USUARIO>/html/public_html/tabela.html.
Formulrios
Alguns sites e praticamente todas as aplicaes web necessitam obter informaes enviadas pe-
los usurios. Por exemplo, considere uma empresa que deseja receber os pedidos dos seus clientes
atravs do seu site. O site dessa empresa precisa oferecer alguma forma de interao que possibilite
o recebimento de dados fornecidos pelos usurios.
Para tornar os sites e as aplicaes web mais interativos, podemos utilizar formulrios. Atravs
dos formulrios, os usurios podem enviar informaes aos Web Servers.
Para criar um formulrio, devemos utilizar o elemento form. Esse elemento possui um atributo
chamado action. O valor desse atributo indica para qual endereo os dados do formulrio sero
enviados.
www.facebook.com/k19treinamentos 85
HTML 86
Os formulrios so compostos por caixas de texto, checkboxes, radios, caixas de seleo, botes,
entre outros componentes. Provavelmente, voc reconhecer diversos desses componentes na ima-
gem abaixo.
Caixas de texto
Geralmente, os formulrios possuem uma ou mais caixas de texto. As caixas de texto so adici-
onadas nos documentos HTML atravs do elemento input. Esse elemento possui um atributo cha-
mado type. Para definir uma caixa de texto, o valor do atributo type deve ser text. Normalmente, o
input definido pelos navegadores como inline-level element.
1 < input type = " text " name = " endereco " >
2 < input type = " text " name = " cidade " >
Vamos analisar como os valores preenchidos nos formulrios so enviados aos Web Servers. Con-
sidere o seguinte exemplo.
86 www.k19.com.br
87 HTML
O formulrio acima possui duas caixas de texto. Nas duas, o atributo name foi definido. Quando
as caixas forem preenchidas e o formulrio enviado, os dados desse formulrio so adicionados na
requisio HTTP.
Observe na imagem abaixo que os valores preenchidos nas caixas de texto so enviados como
parmetros na URL da requisio HTTP. Os nomes dos parmetros so exatamente os nomes defini-
dos nas caixas de texto com o valor do atributo name. Note tambm que os valores dos parmetros
ficam expostos na barra de endereo do navegador.
www.facebook.com/k19treinamentos 87
HTML 88
Muitas vezes, no adequado exibir os valores dos atributos na barra de endereo dos navega-
dores. Podemos ocultar esses valores adicionando o atributo method com o valor post no elemento
form. Esse atributo aceita apenas dois valores: get e post. Ele define o tipo de requisio HTTP que
o navegador deve realizar para enviar o formulrio. Nas requisies do tipo GET, os parmetros so
adicionados na URL da requisio. Nas requisies do tipo POST, os parmetros so adicionados no
contedo da requisio.
88 www.k19.com.br
89 HTML
Rtulos
Nos formulrios, os rtulos so fundamentais para informar aos usurios quais dados devem ser
preenchidos. Para adicionar um rtulo, devemos utilizar o elemento label. Os textos dos rtulos so
definidos no contedo desse elemento.
www.facebook.com/k19treinamentos 89
HTML 90
Para melhorar a acessibilidade dos documentos HTML, os rtulos devem ser explicitamente as-
sociados aos campos dos formulrios. Para estabelecer esse vnculo, o primeiro passo identificar
os campos atravs do atributo id. O segundo passo definir o atributo for do elemento label com o
identificador do campo correspondente ao rtulo.
1 < label for = " nome_id " > Nome : </ label >
2 < input type = " text " name = " nome " id = " nome_id " >
Placeholders
Como vimos, os rtulos so utilizados para informar aos usurios quais dados devem ser preen-
chidos nos formulrios. Alm dos rtulos, podemos utilizar placeholders para dar dicas ou exemplos
do contedo que desejamos em cada caixa de entrada. Um placeholder criado atravs do atributo
placeholder do elemento input.
1 < label for = " nome_id " > Nome : </ label >
2 < input id = " nome_id " type = " text " name = " nome " placeholder = " Digite o seu nome aqui " >
1 < label for = " nome_id " > Nome : </ label >
2 < input id = " nome_id " type = " text " name = " nome " placeholder = " Rafael Cosentino " >
Botes de submit
Para adicionar um boto de submit em um formulrio, podemos utilizar o elemento input com
type igual a submit. Esse tipo de boto envia os dados do formulrio para o Web Server. Os textos
desses botes so definidos com o atributo value.
1 < input id = " botao_id " type = " submit " value = " enviar " >
90 www.k19.com.br
91 HTML
1 < button id = " botao_id " type = " submit " >
2 Enviar
3 < img src = " submit . png " alt = " Enviar " >
4 </ button >
Exerccios de Fixao
67 Se voc estiver utilizando o Ubuntu, crie um arquivo chamado parametros.php no projeto html
em Site Root.
Se voc estiver utilizando o Windows, crie um arquivo chamado parametros.asp no projeto html
em Site Root.
www.facebook.com/k19treinamentos 91
HTML 92
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao67.zip
68 Crie um arquivo chamado formulario-basico.html no projeto html em Site Root com o seguinte
contedo.
Importante
No Windows, altere o cdigo acima substituindo o trecho parametros.php pelo
trecho parametros.asp.
92 www.k19.com.br
93 HTML
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao68.zip
http://localhost/html/public_html/formulario-basico.html.
http://localhost/~<USUARIO>/html/public_html/formulario-basico.html.
Utilize o Chrome DevTools ou o Firebug para verificar os parmetros enviados atravs do for-
mulrio. Chame o instrutor caso tenha alguma dvida.
Caixas de busca
Assim como as caixas de texto, as caixas de busca so adicionadas nos formulrio com o elemento
input. A diferena que o valor do atributo type deve ser search ao invs de text.
1 < input id = " keywords_id " name = " keywords " type = " search " >
As caixas de busca devem ser utilizadas para coletar palavras chave que sero utilizadas em al-
gum tipo de pesquisa. A princpio no h nenhuma diferena prtica entre as caixas de texto e as
caixas de busca. Contudo, essa diferenciao adiciona valor semntico aos documentos HTML e
possibilita, por exemplo, que os navegadores diferenciem visualmente esses dois tipos de caixas.
Caixas de nmeros
Para coletar dados numricos, podemos utilizar caixas especficas para nmeros. No HTML5, h
dois tipos de caixas para esse propsito. Os dois so definidos com o elemento input. O valor do
atributo type number para o primeiro tipo e range para o segundo tipo.
1 < input id = " numero1_id " name = " numero1 " type = " number " >
2 < input id = " numero2_id " name = " numero2 " type = " range " >
Esses dois tipos de componentes devem ser utilizados para coletar valores de sequncias nu-
mricas pr-definidas. A principal diferena entre eles que o primeiro (type=number) deve ofe-
recer um mecanismo preciso para os usurios selecionarem o valor desejado enquanto o segundo
www.facebook.com/k19treinamentos 93
HTML 94
(type=range) no possui essa obrigao. A imagem a seguir mostra uma possvel forma dos navega-
dores exibirem essas caixas.
Para definir a sequncia dos nmeros que podem ser selecionados pelos usurios, podemos uti-
lizar os atributos min, max e step. Por exemplo, para coletar um nmero da sequncia {0; 0,2; 0,4;
0,6; 0,8; 1}, os valores dos atributos min, max e step devem ser 0, 1 e 0.2 respectivamente.
1 < input id = " numero1_id " type = " number " name = " numero1 " min = " 0 " max = " 1 " step = " 0.2 " >
2 < input id = " numero2_id " type = " range " name = " numero2 " min = " 0 " max = " 1 " step = " 0.2 " >
No HTML5 foram definidas caixas de entradas especficas para emails, telefones e urls. Essas
caixas so adicionadas com o elemento input. O valor do atributo type deve ser email, tel e url para
emails, telefones e urls respectivamente.
1 < input id = " email_id " name = " email " type = " email " >
2 < input id = " telefone_id " name = " telefone " type = " tel " >
3 < input id = " url_id " name = " url " type = " url " >
A usabilidade das pginas web melhora com a utilizao dessas caixas. Por exemplo, a configu-
rao do teclado dos celulares ou tablets pode ser alterada de acordo com o tipo de caixa de entrada.
Nas caixas de email, o caractere @ pode ser adicionado ao teclado. Nas caixas de telefone, o teclado
no precisa conter as letras do alfabeto. Nas caixas de url, teclas especiais como .com ou www
podem ser adicionadas ao teclado.
94 www.k19.com.br
95 HTML
date: Utilizado para coletar data (dia, ms e ano) sem fuso horrio.
datetime: Utilizado para coletar data (dia, ms e ano) e hora (hora, minuto, segundo e frao
de segundo) com fuso horrio em UTC.
datetime-local: Utilizado para coletar data (dia, ms e ano) e hora (hora, minuto, segundo e
frao de segundo) sem fuso horrio.
month: Utilizado para coletar data composta por ms e ano sem fuso horrio.
time: Utilizado para coletar hora (hora, minuto, segundo e frao de segundo) sem fuso hor-
rio.
week: Utilizado para coletar data composta por semana e ano sem fuso horrio.
A criao desses componentes permite que os navegadores melhorem a usabilidade das pginas
web. A forma de exibio das caixas de datas e horas pode facilitar o processo de preenchimento
dos formulrios. Inclusive, os navegadores podem exibir esses componentes de formas diferentes de
acordo com o dispositivo (computador, celular, tablet, entre outros).
1 < input id = " data_id " name = " data " type = " date " >
2 < input id = " data_hora_fuso_id " name = " data - hora - fuso " type = " datetime " >
3 < input id = " data_hora_id " name = " data - hora " type = " datetime - local " >
4 < input id = " mes_id " name = " mes " type = " month " >
5 < input id = " hora_id " name = " hora " type = " time " >
6 < input id = " semana_id " name = " semana " type = " week " >
www.facebook.com/k19treinamentos 95
HTML 96
Caixas de senha
As senhas devem ser coletadas com caixas especficas para esse tipo de informao. Para adicio-
nar uma caixa de senha em um formulrio, devemos utilizar o elemento input com o valor password
para o atributo type. Normalmente, os navegadores utilizam smbolos como o asterisco ou o crculo
para omitir o contedo das caixas de senha.
1 < input id = " senha_id " name = " senha " type = " password " >
96 www.k19.com.br
97 HTML
Esse elemento tambm possui o atributo name que funciona como no elemento input.
1 < textarea id = " mensagem_id " name = " mensagem " rows = " 5 " cols = " 50 " >
2
3 </ textarea >
Podemos definir o limite de caracteres que podem ser inseridos no contedo do elemento texta-
rea atravs do atributo maxlength.
1 < textarea id = " mensagem_id " name = " mensagem " maxlength = " 140 " >
2
3 </ textarea >
Exerccios de Fixao
www.facebook.com/k19treinamentos 97
HTML 98
98 www.k19.com.br
99 HTML
102
103 < br >
104
105 < label for = " senha_id " > Senha : </ label >
106 < input
107 id = " senha_id "
108 type = " password "
109 name = " senha "
110 placeholder = " Sua senha " >
111
112 < br >
113
114 < label for = " mensagem_id " > Mensagem : </ label >
115 < textarea
116 id = " mensagem_id "
117 name = " mensagem "
118 rows = " 5 "
119 cols = " 50 "
120 maxlength = " 150 " > </ textarea >
121
122 < br >
123
124 < input type = " submit " value = " Enviar " >
125 </ form >
126 </ body >
127 </ html >
Importante
No Windows, altere o cdigo acima substituindo o trecho parametros.php pelo
trecho parametros.asp.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao70.zip
http://localhost/html/public_html/formulario-caixas-especificas.html.
http://localhost/~<USUARIO>/html/public_html/formulario-caixas-especificas.html.
Utilize o Chrome DevTools ou o Firebug para verificar os parmetros enviados atravs do for-
mulrio. Chame o instrutor caso tenha alguma dvida.
Checkboxes e Radios
Para adicionar um checkbox em um formulrio, devemos utilizar o elemento input com type
igual a checkbox. Ao utilizar esse componente, importante definir um valor para o atributo value.
No envio do formulrio, esse valor transmitido ao Web Server se o checkbox correspondente estiver
marcado.
1 < input id = " sim_id " name = " newsletter " type = " checkbox " value = " sim " >
www.facebook.com/k19treinamentos 99
HTML 100
1 < input id = " java_id " type = " checkbox " value = " java " name = " linguagens " >
2 < input id = " csharp_id " type = " checkbox " value = " csharp " name = " linguagens " >
3 < input id = " php_id " type = " checkbox " value = " php " name = " linguagens " >
4 < input id = " ruby_id " type = " checkbox " value = " ruby " name = " linguagens " >
5 < input id = " perl_id " type = " checkbox " value = " perl " name = " linguagens " >
Para adicionar um radio em um formulrio, devemos utilizar o elemento input com type igual a
radio. Ao utilizar esse componente, importante definir um valor para o atributo value. No envio
do formulrio, esse valor transmitido ao Web Server se o radio correspondente estiver marcado.
1 < input id = " masculino_id " name = " sexo " type = " radio " value = " masculino " >
1 < input id = " sp_id " type = " radio " value = " sao - paulo " name = " time - preferido " >
2 < input id = " barcelona_id " type = " radio " value = " barcelona " name = " time - preferido " >
3 < input id = " milan_id " type = " radio " value = " milan " name = " time - preferido " >
4 < input id = " mu_id " type = " radio " value = " manchester - united " name = " time - preferido " >
5 < input id = " bdm_id " type = " radio " value = " bayern - de - munique " name = " time - preferido " >
Por padro, quando um formulrio exibido para os usurios, os checkboxes e os radios no es-
to marcados. Algumas vezes, desejamos que determinados checkboxes e radios estejam marcados
quando os formulrios so apresentados aos usurios. Para resolver esse problema, podemos utilizar
o atributo checked do elemento input. Esse atributo no precisa de valor.
1 < input id = " java_id " type = " checkbox " value = " java " name = " linguagens " checked >
1 < input id = " sp_id " type = " radio " name = " time - preferido " value = " sao - paulo " checked >
Seleo de cores
No HTML5, para coletar uma cor, podemos utilizar o elemento input com type igual a color.
100 www.k19.com.br
101 HTML
1 < input id = " cor_id " name = " cor " type = " color " >
Exerccios de Fixao
72 Crie um arquivo chamado checkboxes.html no projeto html em Site Root com o seguinte con-
tedo.
www.facebook.com/k19treinamentos 101
HTML 102
Importante
No Windows, altere o cdigo acima substituindo o trecho parametros.php pelo
trecho parametros.asp.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao72.zip
http://localhost/html/public_html/checkboxes.html.
http://localhost/~<USUARIO>/html/public_html/checkboxes.html.
Utilize o Chrome DevTools ou o Firebug para verificar os parmetros enviados atravs do for-
mulrio. Chame o instrutor caso tenha alguma dvida.
74 Crie um arquivo chamado radios.html no projeto html em Site Root com o seguinte contedo.
Importante
No Windows, altere o cdigo acima substituindo o trecho parametros.php pelo
trecho parametros.asp.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao74.zip
102 www.k19.com.br
103 HTML
http://localhost/html/public_html/radios.html.
http://localhost/~<USUARIO>/html/public_html/radios.html.
Utilize o Chrome DevTools ou o Firebug para verificar os parmetros enviados atravs do for-
mulrio. Chame o instrutor caso tenha alguma dvida.
76 Crie um arquivo chamado selecao-cores.html no projeto html em Site Root com o seguinte
contedo.
Importante
No Windows, altere o cdigo acima substituindo o trecho parametros.php pelo
trecho parametros.asp.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao76.zip
http://localhost/html/public_html/selecao-cores.html.
http://localhost/~<USUARIO>/html/public_html/selecao-cores.html.
Utilize o Chrome DevTools ou o Firebug para verificar os parmetros enviados atravs do for-
mulrio. Chame o instrutor caso tenha alguma dvida.
Botes
www.facebook.com/k19treinamentos 103
HTML 104
Botes genricos
Para adicionar um boto genrico em um formulrio, podemos utilizar o elemento input com
type igual a button. As aes desse tipo de componente so definidas com JavaScript. Os textos
desses botes so definidos com o atributo value.
1 < input id = " botao_id " type = " button " value = " boto " >
1 < button id = " botao_id " type = " button " >
2 Boto genrico
3 < img src = " botao . png " alt = " Boto " >
4 </ button >
Botes de reset
Para adicionar um boto de reset em um formulrio, podemos utilizar o elemento input com
type igual a reset. Esse tipo de boto reinicia os dados do formulrio. Os textos desses botes so
definidos com o atributo value.
1 < input id = " botao_id " type = " reset " value = " reiniciar " >
1 < button id = " botao_id " type = " reset " >
2 Boto de reset
3 < img src = " reset . png " alt = " Reiniciar " >
4 </ button >
104 www.k19.com.br
105 HTML
Botes de upload
Para adicionar um boto de upload em um formulrio, podemos utilizar o elemento input com
type igual a file. Esse tipo de boto permite selecionar um arquivo para um eventual upload. O
formulrio que contm esse boto deve possuir o atributo enctype com o valor multipart/form-
data.
1 < input id = " botao_id " name = " file " type = " file " >
1 < form action = " parametros . php " method = " post " enctype = " multipart / form - data " >
2 < input id = " botao_id " alt = " enviar " type = " image " src = " submit . png " >
3 </ form >
Exerccios de Fixao
78 Crie um arquivo chamado botoes.html no projeto html em Site Root com o seguinte contedo.
www.facebook.com/k19treinamentos 105
HTML 106
9 < input id = " file_id " type = " file " name = " file " >
10
11 < input id = " b1 " type = " button " value = " Boto genrico " >
12
13 < button id = " b2 " type = " button " >
14 Boto genrico
15 < img src = " http :// www . k19 . com . br / figs / botao - generico . png " alt = " Boto " >
16 </ button >
17
18 < input id = " b3 " type = " reset " value = " Reiniciar " >
19
20 < button id = " b4 " type = " reset " >
21 Boto de reset
22 < img src = " http :// www . k19 . com . br / figs / botao - reset . png " alt = " Reiniciar " >
23 </ button >
24
25 < input id = " b5 "
26 type = " image "
27 alt = " enviar "
28 src = " http :// www . k19 . com . br / figs / submit . png " >
29 </ form >
30 </ body >
31 </ html >
Importante
No Windows, altere o cdigo acima substituindo o trecho parametros.php pelo
trecho parametros.asp.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao78.zip
http://localhost/html/public_html/botoes.html.
http://localhost/~<USUARIO>/html/public_html/botoes.html.
Utilize o Chrome DevTools ou o Firebug para verificar os parmetros enviados atravs do for-
mulrio. Chame o instrutor caso tenha alguma dvida.
Drop-down list
Muitos formulrios permitem que os usurios selecionem um ou mais itens de uma lista de op-
es. Essa seleo pode ser realizada atravs de um drop-down list. Para adicionar esse tipo de com-
ponente, devemos utilizar o elemento select. Normalmente, o select definido pelos navegadores
como inline-level element.
1 < select id = " estados_id " name = " estado " >
2 ...
3 </ select >
106 www.k19.com.br
107 HTML
As opes devem ser definidas no contedo do elemento select e elas so adicionadas com o ele-
mento option. O contedo do elemento option exibido para os usurios. Esse elemento possui um
atributo chamado value. Quando o formulrio for enviado, o valor do atributo value transmitido
ao Web Server se a opo correspondente foi selecionada pelo usurio. Se esse atributo no estiver
definido, o contedo do elemento option transmitido ao Web Server se a opo correspondente foi
selecionada pelo usurio.
1 < select id = " estados_id " name = " estado " >
2 < option value = " SP " > So Paulo </ option >
3 < option value = " RJ " > Rio de Janeiro </ option >
4 < option value = " RS " > Rio Grande do Sul </ option >
5 < option value = " RN " > Rio Grande do Norte </ option >
6 </ select >
Por padro, apenas um item de um drop-down list pode ser selecionado pelos usurios. Mas,
utilizando o atributo multiple, um ou mais itens podem ser selecionados. Geralmente, mantendo a
tecla CTRL pressionada, os usurios podero escolher dois ou mais itens.
1 < select id = " estados_id " name = " estado " multiple = " multiple " >
2 < option value = " SP " > So Paulo </ option >
3 < option value = " RJ " > Rio de Janeiro </ option >
4 < option value = " RS " > Rio Grande do Sul </ option >
5 < option value = " PR " > Paran </ option >
6 < option value = " RN " > Rio Grande do Norte </ option >
7 < option value = " BA " > Bahia </ option >
8 </ select >
Nos drop-down lists com muitas opes, interessante agrupar as opes em categorias. Esse
agrupamento pode ser realizado com o elemento optgroup. Esse elemento possui um atributo cha-
mado label. O valor desse atributo exibido no drop-down list.
1 < select id = " estados_id " name = " estado " >
2 < optgroup label = " Regio Sudeste " >
www.facebook.com/k19treinamentos 107
HTML 108
3 < option value = " SP " > So Paulo </ option >
4 < option value = " RJ " > Rio de Janeiro </ option >
5 </ optgroup >
6 < optgroup label = " Regio Sul " >
7 < option value = " RS " > Rio Grande do Sul </ option >
8 < option value = " PR " > Paran </ option >
9 </ optgroup >
10 < optgroup label = " Regio Nordeste " >
11 < option value = " RN " > Rio Grande do Norte </ option >
12 < option value = " BA " > Bahia </ option >
13 </ optgroup >
14 </ select >
1 < select id = " estados_id " name = " estado " multiple = " multiple " >
2 < optgroup label = " Regio Sudeste " >
3 < option value = " SP " selected > So Paulo </ option >
4 < option value = " RJ " > Rio de Janeiro </ option >
5 </ optgroup >
6 < optgroup label = " Regio Sul " >
7 < option value = " RS " selected > Rio Grande do Sul </ option >
8 < option value = " PR " > Paran </ option >
9 </ optgroup >
10 < optgroup label = " Regio Nordeste " >
11 < option value = " RN " > Rio Grande do Norte </ option >
12 < option value = " BA " > Bahia </ option >
13 </ optgroup >
14 </ select >
Exerccios de Fixao
80 Crie um arquivo chamado drop-down-list.html no projeto html em Site Root com o seguinte
contedo.
108 www.k19.com.br
109 HTML
Importante
No Windows, altere o cdigo acima substituindo o trecho parametros.php pelo
trecho parametros.asp.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao80.zip
http://localhost/html/public_html/drop-down-list.html.
http://localhost/~<USUARIO>/html/public_html/drop-down-list.html.
Utilize o Chrome DevTools ou o Firebug para verificar os parmetros enviados atravs do for-
mulrio. Chame o instrutor caso tenha alguma dvida.
Fieldset
www.facebook.com/k19treinamentos 109
HTML 110
Os campos de um formulrio muito longo podem ser agrupados logicamente com o elemento
fieldset. No contedo desse elemento, podemos utilizar o elemento legend para definir a legenda do
fieldset. Normalmente, o fieldset definido pelos navegadores como block-level element.
Exerccios de Fixao
82 Crie um arquivo chamado fieldset.html no projeto html em Site Root com o seguinte contedo.
110 www.k19.com.br
111 HTML
Importante
No Windows, altere o cdigo acima substituindo o trecho parametros.php pelo
trecho parametros.asp.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao82.zip
http://localhost/html/public_html/fieldset.html.
http://localhost/~<USUARIO>/html/public_html/fieldset.html.
Utilize o Chrome DevTools ou o Firebug para verificar os parmetros enviados atravs do for-
mulrio. Chame o instrutor caso tenha alguma dvida.
Autocomplete
Para melhorar a usabilidade, podemos utilizar o recurso do autocomplete nas caixas de entrada.
Para utilizar esse recurso, devemos criar uma lista de sugestes com o elemento datalist. funda-
mental identificar as listas de sugestes com o atributo id.
As opes devem ser definidas no contedo do elemento datalist e elas so adicionadas com o
elemento option. O atributo value de um elemento option define uma sugesto.
Com a lista de sugestes criada, podemos associ-la a uma caixa de entrada atravs do atributo
list do elemento input.
1 < input id = " comida_id " name = " comida " type = " text " list = " comidas_id " >
2
www.facebook.com/k19treinamentos 111
HTML 112
Exerccios de Fixao
84 Crie um arquivo chamado autocomplete.html no projeto html em Site Root com o seguinte
contedo.
Importante
No Windows, altere o cdigo acima substituindo o trecho parametros.php pelo
trecho parametros.asp.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao84.zip
http://localhost/html/public_html/autocomplete.html.
112 www.k19.com.br
113 HTML
http://localhost/~<USUARIO>/html/public_html/autocomplete.html.
Utilize o Chrome DevTools ou o Firebug para verificar os parmetros enviados atravs do for-
mulrio. Chame o instrutor caso tenha alguma dvida.
1 < input id = " nome_id " name = " nome " type = " text " disabled >
www.facebook.com/k19treinamentos 113
HTML 114
Campos fixos
1 < input id = " nome_id " name = " nome " type = " text " value = " Marcelo Martins " readonly >
Exerccios de Fixao
86 Crie um arquivo chamado disabled-readonly.html no projeto html em Site Root com o seguinte
contedo.
114 www.k19.com.br
115 HTML
14
15 < input type = " submit " value = " Enviar " >
16 </ form >
17 </ body >
18 </ html >
Importante
No Windows, altere o cdigo acima substituindo o trecho parametros.php pelo
trecho parametros.asp.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao86.zip
http://localhost/html/public_html/disabled-readonly.html.
http://localhost/~<USUARIO>/html/public_html/disabled-readonly.html.
Utilize o Chrome DevTools ou o Firebug para verificar os parmetros enviados atravs do for-
mulrio. Chame o instrutor caso tenha alguma dvida.
Validao
Alguns recursos para realizar a validao dos campos de um formulrio foram adicionados no
HTML5. Essas validaes ocorrem antes do envio dos formulrios. Por padro, algumas validaes
so realizadas automaticamente de acordo com o tipo do campo. Por exemplo, os navegadores veri-
ficam se o contedo de uma caixa de email um email vlido.
1 < input id = " email_id " name = " email " type = " email " >
Os navegadores tambm verificam se o contedo de uma caixa de URL uma url vlida.
1 < input id = " url_id " name = " url " type = " url " >
www.facebook.com/k19treinamentos 115
HTML 116
Outras validaes devem ser definidas explicitamente. Por exemplo, se um determinado campo
obrigatrio, devemos utilizar o atributo required. Esse atributo no precisa de valor.
1 < input id = " nome_id " name = " nome " type = " text " required >
Se um determinado campo deve respeitar uma expresso regular, devemo utilizar o atributo pat-
tern.
1 < input
2 id = " placa_id "
3 name = " placa "
4 type = " text "
5 pattern = " [A - Z ]{3} [0 -9]{4} "
6 title = " As placas so formadas por 3 letras ou 4 nmeros " >
1 < input
2 id = " idade_id "
3 name = " idade "
4 type = " number "
5 min = " 18 "
6 max = " 60 "
7 title = " A idade minma 18 e a mxima 60 " >
116 www.k19.com.br
117 HTML
Exerccios de Fixao
88 Crie um arquivo chamado validacao.html no projeto html em Site Root com o seguinte con-
tedo.
Importante
No Windows, altere o cdigo acima substituindo o trecho parametros.php pelo
trecho parametros.asp.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao88.zip
www.facebook.com/k19treinamentos 117
HTML 118
http://localhost/html/public_html/validacao.html.
http://localhost/~<USUARIO>/html/public_html/validacao.html.
Utilize o Chrome DevTools ou o Firebug para verificar os parmetros enviados atravs do for-
mulrio. Chame o instrutor caso tenha alguma dvida.
Normalmente, um documento HTML pode ser dividido em pedaos. Por exemplo, comum
existir cabealhos, rodaps e menus de navegao na maior parte das pginas web. No HTML5,
diversos elementos foram adicionados para definir especificamente os principais pedaos que ge-
ralmente um documento HTML possui.
header
O elemento header utilizado para definir um cabealho de um documento HTML ou de uma
seo de um documento HTML. O objetivo desse elemento definir um contedo de introduo
ou de navegao. Normalmente, no header, encontramos os elementos h1, h2, h3, h4, h5 e h6.
No contedo do header, tambm comum encontrar sumrios, formulrios de busca, logos, entre
outros.
footer
O elemento footer utilizado para definir um rodap para o documento HTML ou para uma
seo do documento HTML. muito comum encontrarmos em seu contedo informaes sobre a
seo a qual ele pertence como quem a escreveu, links relacionados ao contedo da seo e infor-
maes legais, por exemplo.
118 www.k19.com.br
119 HTML
6 < footer > Postado por : Jonas Hirata </ footer >
7 </ article >
8
9 < footer >© ;2013 K19 Treinamentos . </ footer >
10 </ body >
nav
O elemento nav utilizado para definir um bloco com os principais links de um documento
HTML. comum, definir os principais links de um documento HTML nos rodaps. Dessa forma, o
elemento nav aparecer com frequncia no contedo do elemento footer.
article
O elemento article utilizado para definir uma composio independente em um documento
HTML. A princpio, um article pode ser distribudo independentemente ou facilmente reutilizado.
apropriado utilizar esse elemento para definir um post de um frum, um artigo de uma revista
ou jornal, um post de um blog, um comentrio enviado por um usurio, um widget interativo ou
qualquer item independente de contedo.
Considere um blog no qual os usurios podem enviar comentrios sobre os posts publicados. Os
posts desse blog podem ser definidos com o elemento article. Os comentrios podem ser definidos
com elementos article internos aos que definem os posts. Um elemento article dentro de outro
elemento article deve definir algo relacionado ao contedo do article que o contm.
www.facebook.com/k19treinamentos 119
HTML 120
aside
O elemento aside utilizado para definir algum contedo que esteja relacionado ao contedo
principal, mas no o foco do documento HTML. Normalmente, esse elemento exibido em uma
coluna lateral em relao ao contedo principal.
section
O elemento section utilizado para definir uma seo genrica de um documento. Uma seo
o agrupamento de um contedo dentro de um tema. Normalmente, as sees possuem cabealho e
rodap.
120 www.k19.com.br
121 HTML
figure
O elemento figure deve ser utilizado para definir um contedo que auto-suficiente e tipica-
mente referenciado como uma unidade singular do fluxo principal do documento. Opcionalmente
o contedo pode possuir uma legenda.
Por exemplo, esse elemento pode ser utilizado para definir ilustraes, diagramas, fotos, vdeos,
cdigos fonte em um documento HTML. Normalmente, esse itens so referenciados no contedo
principal mas podem ser removidos sem afetar o fluxo do documento.
figcaption
O elemento figcaption deve ser filho de um elemento figure. Ele utilizado para definir a legenda
do contedo do elemento pai. Alm disso, o elemento figcaption deve ser o primeiro ou ltimo filho
de um elemento figure.
www.facebook.com/k19treinamentos 121
HTML 122
header
nav
Home Destaque Arquivo
section
ltimos Posts
Neque porro quisquam est qui dolorem article
So Paulo, SP - 12/11/2013 - 03:45 PM
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec faucibus vulputate elit, sit amet venenatis
ante lacinia eget. Ut id urna vel quam dictum elementum. Mauris rutrum magna nec erat ullamcorper
scelerisque. Aenean non est libero. Mauris venenatis, velit quis mattis tempus, neque eros tristique purus,
non pretium nisi urna at nunc. Morbi nec commodo dui, quis vulputate ligula. Maecenas vitae libero a
turpis posuere fringilla. Pellentesque risus neque, pretium vitae elementum ac, ultrices et eros.
figure
K19 Treinamentos
Comentrios
Sed sit amet enim sapien. Nulla quis lectus non orci pellentesque tristique. Duis eget
ullamcorper turpis, facilisis commodo nisl. Aliquam rhoncus ut metus a vehicula. Suspendisse
pellentesque ligula arcu, in viverra massa rhoncus a.
Sed sit amet enim sapien. Nulla quis lectus non orci pellentesque tristique. Duis eget
ullamcorper turpis, facilisis commodo nisl. Aliquam rhoncus ut metus a vehicula. Suspendisse
pellentesque ligula arcu, in viverra massa rhoncus a.
Sed sit amet enim sapien. Nulla quis lectus non orci pellentesque tristique. Duis eget ullamcorper turpis,
facilisis commodo nisl. Aliquam rhoncus ut metus a vehicula. Suspendisse pellentesque ligula arcu, in
viverra massa rhoncus a. Nulla at quam arcu. Quisque sed erat ac ligula auctor porttitor. Interdum et
malesuada fames ac ante ipsum primis in faucibus. Vestibulum eleifend augue at ligula porta consectetur.
Mauris a luctus leo. Curabitur auctor aliquet aliquam.
footer
Donec varius a nibh Donec varius a nibh
Sed sit amet enim sapien Maecenas non enim vel est volutpat
Nulla quis lectus non orci pellentesque tristique Vivamus tristique tempor est, interdum Like us on
122 www.k19.com.br
123 HTML
Normalmente, os elementos header, footer, nav, header, article, aside, section, figure e figcap-
tion so definidos pelos navegadores como block-level elements.
Diviso de contedo
Muitas vezes, desejamos separar o contedo de um documento HTML. Geralmente, essas divi-
ses ocorrem quando h uma mudana de tpico no contedo. Essas divises podem ser realizadas
com o elemento hr. Normalmente, o hr definido pelos navegadores como block-level element.
Exerccios de Fixao
90 Crie um arquivo chamado hr.html no projeto html em Site Root com o seguinte contedo.
www.facebook.com/k19treinamentos 123
HTML 124
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-fixacao90.zip
http://localhost/html/public_html/hr.html.
http://localhost/~<USUARIO>/html/public_html/hr.html.
Agrupando elementos
Podemos agrupar elementos atravs dos elementos div ou span. Normalmente, os navegadores
definem o elemento div como um block-level element e o span como um inline-level element. O
principal objetivo em agrupar elementos com div ou span aplicar formataes especficas para
cada grupo. Por isso, a utilidade desses elementos ficar mais clara quando falarmos sobre CSS.
124 www.k19.com.br
125 HTML
Um erro comum, ao definir um documento HTML, criar listas com o elemento br.
Exerccios Complementares
1 Crie um arquivo chamado pagina-simples.html no projeto html em Site Root. Utilize a imagem
2 Crie um arquivo chamado geografia.html no projeto html em Site Root. Utilize a imagem abaixo
como base.
www.facebook.com/k19treinamentos 125
HTML 126
126 www.k19.com.br
127 HTML
6 Crie um arquivo chamado codigo-java.html no projeto html em Site Root. Utilize a imagem
abaixo como base.
www.facebook.com/k19treinamentos 127
HTML 128
7 Crie um arquivo chamado elementos-i-b.html no projeto html em Site Root. Utilize a imagem
abaixo como base.
8 Crie um arquivo chamado sao-paulo.html no projeto html em Site Root. Utilize a imagem
abaixo como base.
9 Crie um arquivo chamado spfc.html no projeto html em Site Root. Utilize a imagem abaixo
como base.
128 www.k19.com.br
129 HTML
10 Crie um arquivo chamado mais-citacoes.html no projeto html em Site Root. Utilize a imagem
abaixo como base.
11 Crie um arquivo chamado abbr.html no projeto html em Site Root. Utilize a imagem abaixo
como base.
12 Crie um arquivo chamado mais-definicoes.html no projeto html em Site Root. Utilize a imagem
abaixo como base.
www.facebook.com/k19treinamentos 129
HTML 130
13 Crie um arquivo chamado mais-alteracoes.html no projeto html em Site Root. Utilize a imagem
abaixo como base.
14 Crie um arquivo chamado mais-datas.html no projeto html em Site Root. Utilize a imagem
abaixo como base.
15 Crie um arquivo chamado texto-marcado.html no projeto html em Site Root. Utilize a imagem
abaixo como base.
130 www.k19.com.br
131 HTML
16 Crie um arquivo chamado pontos-turisticos.html no projeto html em Site Root. Utilize a ima-
gem abaixo como base.
17 Crie um arquivo chamado manual-k19.html no projeto html em Site Root. Utilize a imagem
abaixo como base.
www.facebook.com/k19treinamentos 131
HTML 132
18 Crie um arquivo chamado mais-links.html no projeto html em Site Root. Utilize a imagem
abaixo como base.
19 Crie um arquivo chamado mais-imagens.html no projeto html em Site Root. Utilize a imagem
abaixo como base.
20 Crie um arquivo chamado mais-tabelas.html no projeto html em Site Root. Utilize a imagem
abaixo como base.
132 www.k19.com.br
133 HTML
21 Crie um arquivo chamado mais-formularios.html no projeto html em Site Root. Utilize a ima-
gem abaixo como base.
Resumo do Captulo
www.facebook.com/k19treinamentos 133
HTML 134
1 A linguagem HTML utilizada na criao das pginas web e especificada pelo W3C.
6 Informaes sobre um documento HTML devem ser definidas no corpo do elemento head.
8 A semntica dos elementos HTML deve ser respeitada para a correta interpretao do contedo
por buscadores e softwares de leitura (acessibilidade), por exemplo.
9 Os elementos h1, h2, h3, h4, h5 e h6 so utilizados para definir ttulos em um documento
HTML.
11 Determinados caracteres devem ser inseridos em um documento HTML atravs do seu respec-
tivo cdigo.
12 Os elementos pre, code, i, b, sub, sup, strong, em, blockquote, q, cite, abbr, dfn, ins, del, s,
time e mark so utilizados para definir os textos de um documento HTML.
13 As listas sem ordem so definidas com o elemento ul. As listas com ordem so definidas com o
elemento ol. As listas de descries so definidas com o elemento dl.
14 Os itens das listas com ordem e sem ordem so definidos com o elemento li.
15 Os termos de uma lista de descries so definidos com o elemento dt. As descries desses
termos so definidas com o elemento dd.
134 www.k19.com.br
135 HTML
16 Podemos adicionar um documento HTML dentro de outro documento HTML com o elemento
iframe.
19 As tabelas so criadas com os elementos table, tr, th, td, thead, tbody, caption, colgroup e col.
22 As partes de um documento HTML podem ser definidas com os elementos header, footer,
article, aside, section, figure, figcaption, div e span.
Prova
a) Microsoft.
b) Anatel.
c) ABNT.
d) W3C.
e) NASA.
a) O tipo do navegador.
c) O tipo do documento.
www.facebook.com/k19treinamentos 135
HTML 136
d) O tipo do dispositivo.
c) // comentrio
d) /* comentrio */
e) # comentrio
a) Respeitar a semntica dos elementos HTML facilita o trabalho das ferramentas de busca.
b) Respeitar a semntica dos elementos HTML facilita o trabalho das ferramentas de leitura de
tela para deficientes visuais.
c) Respeitar a semntica dos elementos HTML diminui o tamanho das pginas web.
136 www.k19.com.br
137 HTML
c) As listas com ordem e sem ordem so definidas atravs dos elementos ul e ol respectivamente.
10 Para exibir um texto quando o mouse passa sobre uma imagem, devemos utilizar qual atributo
do elemento img?
a) alt.
www.facebook.com/k19treinamentos 137
HTML 138
b) title.
c) tooltip.
d) text.
e) description.
a) table, td e column.
d) th, tr e td.
e) tabular, tr e td.
138 www.k19.com.br
139 HTML
12 15
Minha Pontuao Pontuao Mnima: Pontuao Mxima:
www.facebook.com/k19treinamentos 139
HTML 140
140 www.k19.com.br
CAPTULO
CSS
3
Quando no definimos uma formatao especfica para os elementos HTML de uma pgina web,
eles so exibidos com o estilo determinado pelo navegador utilizado. H dois problemas principais
em deixar os navegadores decidirem qual formatao deve ser adotada. O primeiro que cada na-
vegador pode adotar uma formatao diferente. Consequentemente, uma mesma pgina web no
ser exibida exatamente da mesma forma em todos os navegadores. O segundo problema que as
formataes adotadas pelos principais navegadores no so bonitas.
Podemos padronizar a forma que as pginas web so exibidas nos diferentes navegadores e obter
um visual agradvel definindo a nossa prpria formatao. O estilo das pginas deve ser definido
com a linguagem CSS (Cascading Style Sheets).
Mais Sobre
Assim como a linguagem HTML, a linguagem CSS definida pelo W3C. Voc pode con-
sultar a especificao do CSS no endereo http://www.w3.org/Style/CSS/specs.
O W3C faz diversas recomendaes sobre como implementar as funcionalidades do CSS. Con-
tudo, nem sempre, os navegadores respeitam essas recomendaes e eventualmente cada nave-
gador adota uma abordagem prpria para uma determinada funcionalidade. Essas diferenas
podem gerar problemas nas pginas web.
Mais Sobre
Nas primeiras verses da linguagem HTML, a formatao era realizada atravs de atri-
butos especficos dos elementos. Por exemplo, a cor do fundo de uma pgina poderia
ser definida da seguinte forma:
Hoje em dia, essa abordagem totalmente no recomendada. Qualquer alterao visual dos
elementos HTML deve ser definida atravs da linguagem CSS.
Box Model
Todo elemento HTML, no corpo de uma pgina web, est contido em um box. Considere o do-
cumento HTML abaixo.
www.facebook.com/k19treinamentos 141
CSS 142
Agora, observe em destaque na imagem a seguir, os boxes correspondentes aos elementos HTML
do documento anterior.
Na imagem, os boxes dos block-level elements foram exibidos com linha contnua enquanto os
boxes dos inline-level elements foram exibidos com linha tracejada. Os boxes dos block-level ele-
ments ocupam todo o espao horizontal e provocam quebras de linha. Por outro lado, os boxes dos
inline-level elements ocupam horizontalmente somente o espao necessrio para o seu contedo e
no provocam quebras de linha.
O box de um elemento HTML composto por contedo (content), margem interna (padding),
142 www.k19.com.br
143 CSS
Borda (border)
Margem interna (padding)
contedo
Regras
www.facebook.com/k19treinamentos 143
CSS 144
Podemos aplicar regras de formatao para cada elemento HTML. Observe a estrutura de uma
regra CSS.
Seletor Corpo
p {
}
Figura 3.3: Estrutura de uma regra CSS
O seletor determina para quais elementos a regra de formatao deve ser aplicada. No corpo de
uma regra CSS, podemos definir diversas propriedades. Cada propriedade define uma caracterstica
visual. Por exemplo, a propriedade font-size utilizada para definir o tamanho da fonte utilizada
nos textos.
Inline style
Podemos aplicar propriedades CSS atravs do atributo style presente em diversos elementos
HTML. Essa abordagem no recomendada pois o acoplamento entre os elementos HTML e as pro-
priedades CSS muito alto dificultando a manuteno das pginas web.
144 www.k19.com.br
145 CSS
1 p {
2 color : red ;
3 }
Depois de definir as regras CSS em um arquivo separado, ele deve ser associado ao documento
HTML atravs do elemento link.
Comentrios
Chrome DevTools
Como vimos no captulo anterior, podemos utilizar ferramentas como o Chrome DevTools para
analisar e modificar os documentos HTML. Essas ferramentas, tambm podem ser utilizadas para
editar as propriedades CSS dos elementos de uma pgina web. Considere o cdigo HTML e o CSS
abaixo.
1 p {
2 border : 4 px solid red ;
www.facebook.com/k19treinamentos 145
CSS 146
3 font - size : 20 px ;
4 }
5
6 . class1 {
7 color : blue ;
8 border : 10 px solid green ;
9 }
Observe a figura abaixo. Atravs do painel Styles podemos visualizar as regras CSS que foram
aplicadas a um determinado elemento HTML. Esse painel tambm mostra a origem dessas regras e
as dimenses do box do elemento.
146 www.k19.com.br
147 CSS
Observe na imagem abaixo que o elemento HTML selecionado no painel Styles afetado por
duas regras CSS oriundas do arquivo chrome-devtools.css. Repare que a propriedade border defi-
nida nessas duas regras. O Chrome DevTools indica atravs de um trao horizontal qual ocorrncia
dessa propriedade est sendo desconsiderada. Mais adiante, discutiremos como determinar a prio-
ridade das regras CSS em situaes como essa.
www.facebook.com/k19treinamentos 147
CSS 148
No painel Computed podemos conferir todas as propriedades CSS que foram aplicadas em um
elemento.
148 www.k19.com.br
149 CSS
Se desejarmos visualizar as propriedades que foram herdadas dos elementos ancestrais, pode-
mos marcar a opo Show inherited.
www.facebook.com/k19treinamentos 149
CSS 150
Exerccios de Fixao
Importante
No Windows, utilizando o IIS (Internet Information Services) como Web Server, voc
deve salvar o projeto css em C:\inetpub\wwwroot. Lembre-se que necessrio ins-
talar o IIS conforme vimos anteriormente.
150 www.k19.com.br
151 CSS
Importante
No Ubuntu, utilizando o Apache HTTP Server como Web Server, voc deve salvar o pro-
jeto css em /home/<USUARIO>/public_html. Lembre-se que necessrio instalar
e configurar o Apache HTTP Server como vimos anteriormente.
www.facebook.com/k19treinamentos 151
CSS 152
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao1.zip
152 www.k19.com.br
153 CSS
2 No projeto css, crie um arquivo chamado css.html. Todos os pargrafos desse documento devem
ser exibidos em negrito, com cor azul e com fonte 20px. Defina uma regra CSS para formatar os
pargrafos.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao2.zip
http://localhost/css/public_html/css.html.
http://localhost/~<USUARIO>/css/public_html/css.html.
4 Para organizar melhor o contedo e a formatao da pgina criada anteriormente, crie um ar-
quivo CSS chamado style.css no projeto css.
1 p {
2 font - weight : bold ;
3 font - size : 20 px ;
4 color : #0000 FF ;
5 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao4.zip
5 Modifique o arquivo css.html para aplicar as regras de formatao criadas no exerccio anterior.
www.facebook.com/k19treinamentos 153
CSS 154
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao5.zip
Cores
Nome
A especificao da linguagem CSS nomeou 147 cores. Voc pode verificar a lista desses nomes
no endereo http://www.w3.org/TR/css3-color/#svg-color. As cores bsicas do CSS so: aqua,
black, blue, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white e yellow.
Hexadecimal
A quantidade de cores suportada pela linguagem CSS 16.777.216. Como vimos apenas 147 co-
res foram nomeadas. Para escolher uma cor que no possui um nome, podemos utilizar o cdigo
hexadecimal da cor desejada. Todas as cores possuem um cdigo hexadecimal. Veja o cdigo hexa-
decimal das cores bsicas.
cdigo hexadecimal nome da cor cor cdigo hexadecimal nome da cor cor
#00FFFF aqua #000080 navy
#000000 black #808000 olive
#0000FF blue #800080 purple
#FF00FF fuchsia #FF0000 red
#808080 gray #C0C0C0 silver
#008000 green #008080 teal
#00FF00 lime #FFFFFF white
#800000 marron #FFFF00 yellow
O cdigo hexadecimal de uma cor comea com o caractere #. Os dois primeiros dgitos definem
a quantidade de vermelho, os dois dgitos do meio definem a quantidade de verde e os dois ltimos
dgitos definem a quantidade de azul.
Funo rgb()
A funo rgb() devolve uma cor a partir de uma quantidade de vermelho, de verde e de azul.
Essas quantidades podem ser definidas em porcentagem ou em valores inteiros de 0 a 255. Veja
como podemos obter as cores bsicas a partir da funo rgb().
154 www.k19.com.br
155 CSS
Funo rgba()
A funo rgba() muito semelhante funo rgb(). A diferena que a funo rgba() possui um
quarto parmetro que define a opacidade da cor. O valor desse parmetro deve ser maior ou igual a
0 e menor ou igual a 1. Por exemplo, para definir a cor blue com 50% de opacidade, podemos utilizar
a funo rgba() com os seguintes parmetros.
Funo hsl()
Podemos usar a escala HSL (Hue, Saturation and Lightness ou Matiz, Saturao e Brilho) para
selecionar uma cor atravs da funo hsl(). Essa funo recebe 3 parmetros. O primeiro deve ser
um valor inteiro de 0 at 360. O segundo e o terceiro so porcetagens.
Funo hsla()
Assim como a funo hsl(), a funo hsla() tambm permite a seleo das cores atravs da escala
HSL. A diferena que a ltima permite que a opacidade da cor seja definida.
Unidades de medida
Para definir um tamanho ou uma distncia, devemos utilizar as unidades da linguagem CSS.
Podemos classificar essas unidades em absolutas e relativas.
Unidades absolutas
Unidade Descrio
cm centmetro
mm milmetro
in polegada
pt ponto (1 pt igual a 1/72 in)
pc pica (1 pc igual a 12 pt)
px pixel
www.facebook.com/k19treinamentos 155
CSS 156
Unidades relativas
Unidade Descrio
em 1 em igual ao tamanho da fonte do elemento onde essa unidade for utili-
zada.
ex Geralmente, 1 ex igual a altura da letra x da fonte atual.
ch Geralmente, 1 ch igual a largura do dgito 0 da fonte atual.
rem 1 rem igual ao tamanho da fonte do elemento raiz do documento HTML.
vw 1 vw igual a 1% da largura da rea de visualizao do navegador (viewport).
vh 1 vh igual a 1% da altura da rea de visualizao do navegador (viewport).
vmin 1 vmim igual ao valor mnimo entre vw e vh.
vmax 1 vmim igual ao valor mximo entre vw e vh.
Backgrounds
background-color
A propriedade background-color utilizada para definir a cor do background dos elementos
HTML.
Valor Descrio
color Uma cor CSS.
transparent Faz o background ser transparente (padro).
inherit Assume o valor da mesma propriedade no elemento HTML pai.
background-image
A propriedade background-image utilizada para definir a imagem que deve ser utilizada como
background de um elemento HTML.
Valor Descrio
url(url) URL da imagem de background.
none Sem imagem de background (padro).
inherit Assume o valor da mesma propriedade no elemento HTML pai.
156 www.k19.com.br
157 CSS
Mais Sobre
Podemos definir mltiplas imagens de background. As URLs dessas imagens devem
ser separadas por vrgula. As imagens so sobrepostas sendo que a primeira ficar no
primeiro plano, a segunda no segundo plano e assim por diante at a ltima que ficar no ltimo
plano.
1 background - image : url ( " imagem1 . png " ) , url ( " imagem2 . png " ) , url ( " imagem3 . png " ) ;
background-repeat
Por padro, se uma imagem utilizada como background for menor do que o box do elemento
HTML correspondente, ela ser replicada na horizontal e na vertical. A propriedade background-
repeat permite controlar como essa replicao deve ser realizada. Essa propriedade aceita os se-
guintes valores:
Valor Descrio
repeat A imagem de background replicada na horizontal e na vertical (padro).
repeat-x A imagem de background replicada apenas na horizontal.
repeat-y A imagem de background replicada apenas na vertical.
no-repeat A imagem no replicada.
inherit Assume o valor da mesma propriedade no elemento HTML pai.
www.facebook.com/k19treinamentos 157
CSS 158
background-attachment
A propriedade background-attachment permite definir qual comportamento dos backgrounds
em relao a rolagem do contedo.
Valor Descrio
scroll O background acompanha a rolagem do contedo (padro).
fixed O background no acompanha a rolagem do contedo.
background-attachment: fixed
background-attachment: scroll
background-position
Para derterminar a posio das imagens utilizadas como background dos elementos HTML, de-
vemos utilizar a propriedade background-position.
Valor Descrio
left top Canto superior esquerdo (padro).
center top Centralizado horizontalmente no topo.
right top Canto superior direito.
left center Do lado esquerdo centralizado verticalmente.
center center Centralizado horizontalmente e verticalmente.
158 www.k19.com.br
159 CSS
Valor Descrio
right center Do lado direito centralizado verticalmente.
left bottom Canto inferior esquerdo.
center bottom Centralizado horizontalmente na base.
right bottom Canto inferior direito.
left O mesmo que "left center".
center O mesmo que "center center".
right O mesmo que "right center".
top O mesmo que "center top".
bottom O mesmo que "center bottom".
x% y% O valor x corresponde posio horizontal e o y posio vertical. Eles so
relativos ao canto superior esquerdo.
x% O mesmo que "x% 50%".
medida1 medida2 A medida1 corresponde posio horizontal e a medida2 posio vertical.
Elas so relativas ao canto superior esquerdo.
inherit Assume o valor da mesma propriedade no elemento HTML pai.
www.facebook.com/k19treinamentos 159
CSS 160
background-clip
A propriedade background-clip determina qual rea do box de um elemento HTML deve ser
afetada pela propriedade background-color.
Valor Descrio
border-box rea delimitada pelas bordas (padro).
padding-box rea delimitada pelas margens internas.
content-box rea delimitada pelo contedo.
background-origin
A propriedade background-origin determina onde ficar o ponto de origem para o posiciona-
mento das imagens utilizadas como background.
160 www.k19.com.br
161 CSS
Valor Descrio
border-box Canto superior esquerdo da rea delimitada pelas bordas.
padding-box Canto superior esquerdo da rea delimitada pelas margens internas (padro).
content-box Canto superior esquerdo da rea delimitada pelo contedo.
background-size
Quando uma imagem utilizada como background de um elemento HTML, podemos definir o
tamanho dessa imagem com a propriedade background-size.
Valor Descrio
auto auto Tamanho original da imagem (padro).
auto O mesmo que "auto auto".
medida auto A medida corresponde largura. A altura calculada de forma proporcional
largura.
auto medida A medida corresponde altura. A largura calculada de forma proporcional
altura.
www.facebook.com/k19treinamentos 161
CSS 162
Valor Descrio
medida1 medida2 A medida1 corresponde largura e a medida2 altura.
x% y% O valor x corresponde largura e o y altura. Esses valores so porcetagens
relativas dimenso do elemento HTML.
x% auto O valor x corresponde largura. Esse valor uma porcentagem relativa
largura do elemento HTML. A altura calculada automaticamente de forma
proporcional a largura.
auto y% O valor y corresponde altura. Esse valor uma porcentagem relativa al-
tura do elemento HTML. A largura calculada automaticamente de forma
proporcional a altura.
cover A imagem de background redimensionada proporcionalmente de tal forma
a cobrir toda a rea do elemento HTML.
contain A imagem de background redimensionada proporcionalmente de tal forma
a ter o maior tamanho possvel sem extrapolar a rea do elemento HTML.
162 www.k19.com.br
163 CSS
background
Exerccios de Fixao
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao6.zip
1 div {
2 width : 200 px ;
3 height : 100 px ;
4 margin : 10 px ;
5 border : 5 px black dashed ;
6 }
7
8 # div1 {
9 background - color : yellow ;
10 }
11
12 # div2 {
13 background - color : # c1a4cd ;
14 background - clip : padding - box ;
15 }
16
17 # div3 {
18 background - image : url ( " http :// k19 . com . br / figs / seguro - treinamento . png " ) ;
19 background - repeat : no - repeat ;
20 }
21
22 # div4 {
23 background - image : url ( " http :// k19 . com . br / figs / seguro - treinamento . png " ) ;
24 background - repeat : no - repeat ;
25 background - origin : border - box ;
26 }
www.facebook.com/k19treinamentos 163
CSS 164
27
28 # div5 {
29 background - image : url ( " http :// k19 . com . br / figs / seguro - treinamento . png " ) ;
30 background - repeat : no - repeat ;
31 background - size : contain ;
32 }
33
34 body {
35 background - image : url ( " http :// k19 . com . br / figs / main - header - logo . png " ) ;
36 background - repeat : no - repeat ;
37 background - attachment : fixed ;
38 background - position : top center ;
39 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao7.zip
http://localhost/css/public_html/backgrounds.html.
http://localhost/~<USUARIO>/css/public_html/backgrounds.html.
Textos
Podemos controlar a formatao dos textos contidos nos documentos HTML com as seguintes
propriedades CSS.
color
Podemos definir a cor do texto contido em um elemento HTML atravs da propriedade color.
1 p {
2 color : blue ;
3 }
Valor Descrio
color Uma cor CSS.
inherit Assume o valor da mesma propriedade no elemento HTML pai.
text-align
O alinhamento do texto contido em um elemento HTML pode ser determinado com a proprie-
dade text-align.
Valor Descrio
left Alinhado esquerda (padro).
right Alinhado direita.
center Centralizado.
justify Justificado.
164 www.k19.com.br
165 CSS
Valor Descrio
inherit Assume o valor da mesma propriedade no elemento HTML pai.
Lorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor
sit amet, consectetur sit amet, consectetur sit amet, consectetur sit amet, consectetur
adipiscing elit. Cras adipiscing elit. Cras adipiscing elit. Cras adipiscing elit. Cras
vehicula bibendum vehicula bibendum vehicula bibendum vehicula bibendum
arcu sit amet lacinia. arcu sit amet lacinia. arcu sit amet lacinia. arcu sit amet lacinia.
Sed dui nulla. Sed dui nulla. Sed dui nulla. Sed dui nulla.
text-decoration
Podemos definir a decorao dos textos contidos em um elemento HTML com a propriedade
text-decoration.
Valor Descrio
none Texto sem decorao (padro).
underline Texto com trao inferior.
overline Texto com trao superior.
line-through Texto riscado.
inherit Assume o valor da mesma propriedade no elemento HTML pai.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. text-decoration: none
Lorem ipsum dolor sit amet, consectetur adipiscing elit. text-decoration: underline
Lorem ipsum dolor sit amet, consectetur adipiscing elit. text-decoration: overline
Lorem ipsum dolor sit amet, consectetur adipiscing elit. text-decoration: line-through
text-transform
A capitalizao dos textos pode ser determinada atravs da propriedade text-transform.
Valor Descrio
none Texto normal (padro).
capitalize A primeira letra de cada palavra ser transformada em maiscula.
uppercase Todas as letras do texto sero transformadas em maisculas.
lowercase Todas as letras do texto sero transformadas em minsculas.
inherit Assume o valor da mesma propriedade no elemento HTML pai.
Lorem ipsum dolor sit amet. Consectetur adipiscing elit. text-transform: none
lorem ipsum dolor sit amet, consectetur adipiscing elit. text-transform: lowercase
www.facebook.com/k19treinamentos 165
CSS 166
text-indent
Normalmente, indentamos a primeira linha de um bloco de texto. Podemos definir o compri-
mento dessa indentao atravs da propriedade text-indent.
Valor Descrio
medida A medida corresponde ao tamanho da indentao.
x% O valor x o tamanho da indentao em porcentagem relativa largura do ele-
mento HTML pai.
inherit Assume o valor da mesma propriedade no elemento HTML pai.
Lorem ipsum dolor sit amet, consectetur adipiscing Lorem ipsum dolor sit amet, consectetur
elit. Cras vehicula bibendum arcu. adipiscing elit. Cras vehicula bibendum arcu.
Sed dui nulla, cursus et lacinia eu, vulputate ac Sed dui nulla, cursus et lacinia eu, vulputate ac
dolor. dolor.
Quisque faucibus congue congue. Quisque faucibus congue congue.
letter-spacing
O espaamento entre as letras pode ser determinado atravs da propriedade letter-spacing.
Valor Descrio
normal Espaamento padro definido para a fonte utilizada (padro).
medida A medida corresponde ao espaamento extra desejado. Esse valor pode ser nega-
tivo.
inherit Assume o valor da mesma propriedade no elemento HTML pai.
Lorem ipsum dolor sit amet. Consectetur adipiscing elit... letter-spacing: normal
Lorem ipsum dolor sit amet, consectetur adipiscing elit.Aenean mats nam ... letter-spacing: -2px
word-spacing
O espaamento entre as palavras pode ser determinado com a propriedade word-spacing.
Valor Descrio
normal Espaamento padro definido para a fonte utilizada (padro).
medida A medida corresponde ao espaamento extra desejado. Esse valor pode ser nega-
tivo.
inherit Assume o valor da mesma propriedade no elemento HTML pai.
Lorem
ipsum
dolor
sit
amet.
Consectetur
adipiscing
elit.
Pellentesque
leo
anon
tortor
tincid... word-spacing: -4px
166 www.k19.com.br
167 CSS
word-wrap
Podemos controlar, atravs da propriedade word-wrap, como as palavras so divididas quando
ocorre uma quebra de linha automtica.
Valor Descrio
normal As palavras so divididas apenas nos pontos de quebras definidos com o ele-
mento wbr (padro).
break-word As palavras podem ser divididas em qualquer ponto.
Otorrinolaringologista. Otorrinolaringo
logista.
line-height
A altura das linhas de um texto pode ser determinada com a propriedade line-height.
Valor Descrio
normal Altura padro de linha (padro).
x A altura das linhas o produto do valor x pelo tamanho da fonte atual.
medida A medida corresponde altura das linhas.
x% O valor x a altura das linhas em porcentagem relativa ao tamanho da fonte atual.
inherit Assume o valor da mesma propriedade no elemento HTML pai.
Lorem ipsum dolor sit amet, consectetur adipiscing Lorem ipsum dolor sit amet, consectetur adipiscing
elit. Cras vehicula bibendum arcu.
Sed dui nulla, cursus et lacinia eu, vulputate ac elit. Cras vehicula bibendum arcu.
dolor.
Quisque faucibus congue congue. Sed dui nulla, cursus et lacinia eu, vulputate ac
white-space
possvel controlar a forma de tratamento dos espaos em branco e das quebras de linha atravs
da propriedade white-space. Os valores possveis para essa propriedade so:
Valor Descrio
normal Sequncias de espaos em branco contidas no cdigo HTML so tratadas como um
nico espao. As quebras de linha contidas no cdigo HTML no geram quebras de
linha na pgina renderizada. Quebras de linha automticas so inseridas quando
necessrio (padro).
www.facebook.com/k19treinamentos 167
CSS 168
Valor Descrio
nowrap Sequncias de espaos em branco contidas no cdigo HTML so tratadas como um
nico espao. As quebras de linha contidas no cdigo HTML no geram quebras
de linha na pgina renderizada. Nenhuma quebra de linha inserida automatica-
mente.
pre Sequncias de espaos em branco so completamente consideradas. As quebras
de linha contidas no cdigo HTML geram quebras de linha na pgina renderizada.
Nenhuma quebra de linha inserida automaticamente.
pre-line Sequncias de espaos em branco contidas no cdigo HTML so tratados como
um nico espao. As quebras de linha contidas no cdigo HTML geram quebras de
linha na pgina renderizada. Quebras de linha automticas so inseridas quando
necessrio.
pre-wrap Sequncias de espaos em branco so completamente consideradas. As quebras
de linha contidas no cdigo HTML geram quebras de linha na pgina renderizada.
Quebras de linha automticas so inseridas quando necessrio.
inherit Assume o valor da mesma propriedade no elemento HTML pai.
HTML
<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras vehicula
bibendum arcu.
Lorem ipsum dolor sit amet, consectetur Lorem ipsum dolor sit amet, consectetur adipiscing elit.
adipiscing elit. Cras vehicula bibendum
arcu. Sed dui nulla, cursus et lacinia eu,
vulputate ac dolor. Quisque faucibus
congue congue.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras vehicula bibendum arcu.
white-space: pre
Lorem ipsum dolor sit amet, consectetur Lorem ipsum dolor sit amet,
adipiscing elit. Cras vehicula bibendum consectetur adipiscing elit. Cras vehicula
arcu. bibendum arcu.
Sed dui nulla, cursus et lacinia eu, Sed dui nulla, cursus et lacinia
vulputate ac dolor. eu, vulputate ac dolor.
Quisque faucibus congue congue. Quisque faucibus congue congue.
168 www.k19.com.br
169 CSS
text-shadow
Para adicionar uma sombra no texto de um elemento HTML, devemos utilizar a propriedade
text-shadow. Para usar essa propriedade, devemos definir as seguintes informaes sobre a sobra
desejada: a posio horizontal, a posio vertical, o raio do blur e a cor.
Deslocamento Esmaecimento
horizontal (opcional)
Deslocamento Cor
horizontal (opcional)
Vrias sombras podem ser aplicadas ao texto de um elemento HTML. As informaes que defi-
nem essas sombras devem ser separadas por vrgula.
Texto
Texto Texto
text-shadow: 10px 10px #ff0000 text-shadow: 10px 10px 10px #ff0000
Texto
Texto Texto
text-shadow: -10px -10px #ff0000 text-shadow: -10px -10px 10px #ff0000
Texto Texto
text-shadow: 0 0 10px #ff0000 text-shadow: 10px 10px 10px #ff0000,
-10px -10px 10px #0000ff
Outras propriedades
A linguagem CSS define mais algumas propriedades de formatao de texto.
unicode-bdi
hanging-punctuation
punctuation-trim
text-align-last
text-justify
text-outline
text-overflow
text-wrap
direction
www.facebook.com/k19treinamentos 169
CSS 170
word-break
Exerccios de Fixao
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao9.zip
1 p {
2 border : 2 px black solid ;
3 }
4
5 # p1 {
6 width : 400 px ;
7 color : blue ;
8 text - align : justify ;
9 text - decoration : line - through ;
10 text - transform : uppercase ;
11 text - indent : 20 px ;
12 letter - spacing : 2 px ;
13 line - height : 25 px ;
14 word - spacing : 11 px ;
15 }
16
17 # p2 {
18 width : 100 px ;
19 word - wrap : break - word ;
170 www.k19.com.br
171 CSS
20 }
21
22 # p3 {
23 width : 400 px ;
24 white - space : pre - line ;
25 }
26
27 # p4 {
28 width : 100 px ;
29 text - transform : uppercase ;
30 letter - spacing : 5 px ;
31 text - shadow : 2 px 2 px # ff0000 ;
32 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao10.zip
http://localhost/css/public_html/textos.html.
http://localhost/~<USUARIO>/css/public_html/textos.html.
Fontes
Podemos controlar as fontes utilizadas nos textos de uma pgina web com as seguintes proprie-
dades.
font-family
Uma lista com as fontes desejadas ordenadas por prioridade pode ser determinada atravs da
propriedade font-family.
1 font - family : " Arial Black " , " Georgia " , " Courier New " ;
Eventualmente, uma determinada fonte pode no estar disponvel. Os navegadores devem uti-
lizar a primeira fonte disponvel da lista definida com a propriedade font-family. Por isso, essa lista
deve ser ordenada da fonte com maior prioridade para a fonte com menor prioridade.
Algumas fontes so consideradas seguras (Web Safe Fonts). Essa qualidade atribuda s fontes
que so suportadas em praticamente todos os sistemas operacionais e navegadores. Uma lista com
essas fontes pode ser consultada no endereo http://cssfontstack.com/.
serif: Fontes serifadas. Os acabamentos nas extremidades das hastes das letras so denomina-
dos serifas.
sans-serif: Fontes no serifadas.
cursive: Fontes com estilo semelhante escrita manual.
www.facebook.com/k19treinamentos 171
CSS 172
Se qualquer fonte de um determinado grupo genrico pode ser utilizada, devemos adicionar o
nome desse grupo na lista definida com a propriedade font-family. Nesse caso, os prprios navega-
dores escolhem uma fonte do grupo genrico escolhido.
1 font - family : " Arial Black " , " Georgia " , " Courier New " , " sans - serif " ;
No exemplo acima, se as fontes Arial Black, Georgia e Courier New no estiverem dispon-
veis, os navegadores utilizaro alguma fonte do grupo sans-serif.
font-size
O tamanho da fonte determinado atravs da propriedade font-size.
Valor Descrio
xx-small Tamanho de fonte extra extra pequeno.
x-small Tamanho de fonte extra pequeno.
small Tamanho de fonte pequeno.
medium Tamanho de fonte mdio (padro).
large Tamanho de fonte grande.
x-large Tamanho de fonte extra grande.
xx-large Tamanho de fonte extra extra grande.
smaller Um tamanho de fonte menor do que o do elemento HTML pai.
larger Um tamanho de fonte maior do que o do elemento HTML pai.
medida A medida corresponde ao tamanho da fonte.
x% O valor x o tamanho da fonte. Esse valor uma porcentagem do tamanho da
fonte do elemento HTML pai.
inherit Assume o valor da mesma propriedade no elemento HTML pai.
172 www.k19.com.br
173 CSS
Valor Descrio
normal Fonte normal (padro).
italic Fonte itlica.
oblique Fonte oblqua.
inherit Assume o valor da mesma propriedade no elemento HTML pai.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. font-style: normal
Lorem ipsum dolor sit amet, consectetur adipiscing elit. font-style: italic
Lorem ipsum dolor sit amet, consectetur adipiscing elit. font-style: oblique
font-variant
Para determinar que o texto de um elemento HTML deve ser exibido em small caps, devemos
utilizar a propriedade font-vaiant. Todas as letras de um texto em small caps so transformadas em
maisculas e o tamanho da fonte da primeira letra de cada palavra maior do que o tamanho da
fonte das demais letras.
Valor Descrio
normal Fonte normal (padro).
small-caps Fonte em small caps.
inherit Assume o valor da mesma propriedade no elemento HTML pai.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. font-variant: normal
LOREM IPSUM DOLOR SIT AMET, CONSECTETUR ADIPISCING E... font-variant: small-caps
www.facebook.com/k19treinamentos 173
CSS 174
font-weight
A grossura dos caracteres pode ser definida com a propriedade font-weight.
Valor Descrio
normal Grossura normal (padro).
bold Negrito.
100 Grossura 100.
200 Grossura 200.
300 Grossura 300.
400 Grossura 400. Equivale ao valor normal
500 Grossura 500.
600 Grossura 600.
700 Grossura 700. Equivale ao valor bold
800 Grossura 800.
900 Grossura 900.
bolder Uma grossura maior do que a do elemento HTML pai.
lighter Uma grossura menor do que a do elemento HTML pai.
inherit Assume o valor da mesma propriedade no elemento HTML pai.
Importante
Normalmente, as fontes no definem uma grossura diferente para cada um dos poss-
veis valores da propriedade font-weight. Por isso, geralmente, dois ou mais valores so
mapeados para a mesma grossura de fonte.
font-weight
Roboto
http://google.com/fonts/specimen/Roboto
K19 Treinamentos font-weight: 100
font
A propriedade font um atalho para as outras propriedades de fonte.
174 www.k19.com.br
175 CSS
1 font : font - style font - variant font - weight font - size / line - height font - family ;
@font-face
A regra @font-face permite utilizar uma fonte mesmo que ela no esteja disponvel no sistema
operacional do usurio. A fonte pode estar em um arquivo local (mquina do usurio) ou remoto
(servidor). Para cada fonte que deve ser adicionada, devemos definir uma regra font-face. Os na-
vegadores carregam as fontes sob demanda, ou seja, somente se elas forem necessrias. Veja um
exemplo de utilizao dessa regra.
1 @font - face {
2 font - family : K19 ;
3 src : url ( http : // www . k19 . com . br / fonts / K19 . woff ) ;
4 }
A funo url() deve ser utilizada quando queremos uma fonte que est armazenada remota-
mente. Para carregar uma fonte disponvel na mquina do usurio, devemos utilizar a funo local(),
passando como parmetro o nome da fonte desejada.
1 @font - face {
2 font - family : NomeDaFonte ;
3 src : local ( nome - da - fonte ) ;
4 }
Para utilizar as fontes definidas na regra @font-face, basta definir a a propriedade font-family.
1 @font - face {
2 font - family : NomeDaFonte ;
3 src : url ( nome - da - fonte . eot ) ; /* IE9 */
4 src : url ( nome - da - fonte . eot ?# iefix ) format ( embedded - opentype ) , /* IE6 - IE8 */
5 url ( nome - da - fonte . woff ) format ( woff ) , /* Navegadores Modernos */
6 url ( nome - da - fonte . ttf ) format ( truetype ) , /* Safari , Android , iOS */
7 url ( nome - da - fonte . svg # webfontregular ) format ( svg ) ; /* iOS antigos */
8 }
O suporte dos navegadores aos diversos formatos de fonte est constantemente evoluindo. H
diversos sites que informam de maneira atualizada quais formatos so suportados por cada navega-
dor. Recomendamos o site Can I use (http://caniuse.com/).
Existem diversos repositrios de fontes pagas e/ou gratuitas. Podemos utilizar as fontes des-
ses repositrios atravs da regra font-face. Um dos repositrios mais importantes o Google Fonts
(http://www.google.com/fonts).
Outras propriedades
A linguagem CSS define mais algumas propriedades de formatao de fonte.
font-size-adjust
www.facebook.com/k19treinamentos 175
CSS 176
font-stretch
Exerccios de Fixao
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao12.zip
1 p {
2 border : 2 px black solid ;
3 }
4
5 # p1 {
6 width : 400 px ;
7 font - family : " Arial Black " , " Georgia " , " Courier New " , " sans - serif " ;
8 font - size : xx - large ;
9 font - style : italic ;
10 font - variant : small - caps ;
11 font - weight : bold ;
12 }
13
14 # p2 {
15 width : 400 px ;
16 font - family : Butcherman ;
17 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao13.zip
http://localhost/css/public_html/fontes.html.
176 www.k19.com.br
177 CSS
http://localhost/~<USUARIO>/css/public_html/fontes.html.
Listas
list-style-type
Podemos definir o smbolo utilizado nos itens de uma determinada lista com a propriedade list-
style-type. A listagem completa desses smbolos pode ser consultada no endereo http://www.w3.
org/TR/css3-lists/#ua-stylesheet. Veja alguns possveis valores da propriedade list-style-type.
list-style-image
possvel definir uma imagem para ser utilizada nos itens de uma determinada lista com a pro-
priedade list-style-image.
Valor Descrio
url(url) URL da imagem.
www.facebook.com/k19treinamentos 177
CSS 178
Valor Descrio
none Sem imagem (padro).
inherit Assume o valor da mesma propriedade no elemento HTML pai.
K19 Treinamentos
K19 Treinamentos list-style-image: url(estrela.png)
K19 Treinamentos
list-style-position
Por padro, os bullets de uma lista no so exibidos dentro dos boxes dos itens. Podemos alterar
esse comportamento atravs da propriedade list-style-position.
Valor Descrio
inside Os bullets so exibidos dentro dos boxes dos itens.
outside Os bullets no so exibidos dentro dos boxes dos itens. (padro).
inherit Assume o valor da mesma propriedade no elemento HTML pai.
list-style
A propriedade list-style um atalho para as outras propriedades de lista.
1 list - style : list - style - type , list - style - position , list - style - image
Exerccios de Fixao
178 www.k19.com.br
179 CSS
13 </ ul >
14
15 < ul id = " ul2 " >
16 < li > K01 - Lgica de Programao </ li >
17 < li > K02 - Desenvolvimento Web com HTML , CSS e JavaScript </ li >
18 < li > K03 - Modelo Relacional e SQL </ li >
19 </ ul >
20
21 < ol >
22 < li > K01 - Lgica de Programao </ li >
23 < li > K02 - Desenvolvimento Web com HTML , CSS e JavaScript </ li >
24 < li > K03 - Modelo Relacional e SQL </ li >
25 </ ol >
26 </ body >
27 </ html >
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao15.zip
1 li {
2 border : 2 px black solid ;
3 width : 400 px ;
4 }
5
6 # ul1 {
7 list - style - type : square ;
8 list - style - position : inside ;
9 }
10
11 # ul2 {
12 list - style - image : url ( http : // k19 . com . br / figs / k02 - logo - small . png ) ;
13 }
14
15 ol {
16 list - style - type : upper - roman ;
17 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao16.zip
http://localhost/css/public_html/listas.html.
http://localhost/~<USUARIO>/css/public_html/listas.html.
Bordas
A linguagem CSS possui diversas propriedades para definir a formatao das bordas dos elemen-
tos HTML.
www.facebook.com/k19treinamentos 179
CSS 180
border-style
Podemos definir o estilo das bordas de um elemento HTML com a propriedade border-style. Veja
os principais valores dessa propriedade.
border-width
A grossura das bordas pode ser determinada com a propriedade border-width.
Valor Descrio
thin Borda fina.
medium Borda mdia (padro).
thick Borda grossa.
medida A medida corresponde grossura da borda.
inherit Assume o valor da mesma propriedade no elemento HTML pai.
border-color
A propriedade border-color define a cor das bordas de um elemento HTML. Essa propriedade
aceita o valor transparent(padro) ou qualquer cor CSS.
Valor Descrio
color Uma cor CSS.
transparent Faz a borda ser transparente.
inherit Assume o valor da mesma propriedade no elemento HTML pai.
180 www.k19.com.br
181 CSS
border
A propriedade border um atalho para as propriedades que definem o estilo, a grossura e a cor
das bordas dos elementos HTML.
border-width: 10px;
border-top-style: dashed;
border-top-color: blue;
border-right-style: solid;
border-right-color: green;
border-bottom-style: groove;
border-bottom-color: orange;
border-left-style: dotted;
border-left-color: red;
border-radius
Bordas com cantos arredondados podem ser definidas com a propriedade border-radius.
www.facebook.com/k19treinamentos 181
CSS 182
Valor Descrio
medida A medida corresponde ao raio.
x% O valor x o raio em porcentagem.
5px
10px 10px 10px
5px 5px
10px 10px
20px 20px
5px 3px
border-*-*-radius
10px 10px
10px 10px
182 www.k19.com.br
183 CSS
border-collapse
Podemos definir bordas para cada clula de uma tabela e para a prpria tabela. Por padro, essas
bordas so exibidas separadamente. Mas, possvel determinar que duas bordas vizinhas sejam
exibidas como se fossem uma s com a propriedade border-collapse.
Valor Descrio
separate Bordas separadas (padro).
collapse Bordas unidades.
inherit Assume o valor da mesma propriedade no elemento HTML pai.
border-spacing
A propriedade border-spacing permite definir o espaamento entre as clulas de uma tabela.
Essa propriedade afeta o espaamento entre as bordas somente se o valor da propriedade border-
collapse for separate.
Valor Descrio
medida1 medida2 A medida1 corresponde ao espaamento horizontal e a medida2 corresponde
ao espaamento vertical.
medida A medida corresponde ao espaamento horizontal e vertical.
inherit Assume o valor da mesma propriedade no elemento HTML pai.
Outras propriedades
A linguagem CSS define mais algumas propriedades de formatao de bordas.
border-image
border-image-outset
border-image-repeat
border-image-slice
border-image-source
border-image-width
www.facebook.com/k19treinamentos 183
CSS 184
Exerccios de Fixao
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao18.zip
1 div {
2 width : 200 px ;
3 height : 100 px ;
4 margin : 10 px ;
5 }
6
7 # div1 {
8 border - style : solid ;
9 border - width : thin ;
10 border - color : red ;
11 border - radius : 10 px ;
12 }
13
14 # div2 {
15 border - style : dotted ;
16 border - color : yellow ;
17 border - radius : 10 px 30 px ;
18 }
19
20 # div3 {
184 www.k19.com.br
185 CSS
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao19.zip
http://localhost/css/public_html/bordas.html.
http://localhost/~<USUARIO>/css/public_html/bordas.html.
Outline
www.facebook.com/k19treinamentos 185
CSS 186
O box de um elemento HTML pode ser contornado por uma linha denominada outline. Essa
linha no afeta as dimenses dos boxes. A linguagem CSS possui diversas propriedades para definir
a formatao do outline dos elementos HTML.
outline-style
Podemos definir o estilo do outline de um elemento HTML com a propriedade outline-style. Veja
os principais valores dessa propriedade.
outline-color
A propriedade outline-color define a cor do outline de um elemento HTML.
Valor Descrio
color Uma cor CSS.
invert A cor inversa cor do background (padro).
inherit Assume o valor da mesma propriedade no elemento HTML pai.
outline-width
A grossura dos outlines pode ser determinada com a propriedade outline-width.
Valor Descrio
thin Outline fino.
medium Outline mdio (padro).
thick Outline grosso.
medida A medida corresponde grossura do outline.
inherit Assume o valor da mesma propriedade no elemento HTML pai.
186 www.k19.com.br
187 CSS
outline-offset
Podemos definir a distncia do outline de um elemento HTML em relao s bordas do mesmo
com a propriedade outline-offset.
Valor Descrio
medida A medida corresponde ao tamanho do outline-offset (0px o valor padro). Esse
valor pode ser negativo.
inherit Assume o valor da mesma propriedade no elemento HTML pai.
Lorem ipsum dolor sit amet, consectetur adipiscing Lorem ipsum dolor sit amet, consectetur adipiscing
elit. Aliquam accumsan vehicula diam sit amet elit. Aliquam accumsan vehicula diam sit amet
bibendum. Aliquam sed tempor tellus. Duis bibendum. Aliquam sed tempor tellus. Duis
placerat suscipit turpis in sollicitudin. Nunc lacus placerat suscipit turpis in sollicitudin. Nunc lacus
magna, auctor vitae venenatis eu, dictum ac augue. magna, auctor vitae venenatis eu, dictum ac augue.
outline
A propriedade outline um atalho para as propriedades outline-color, outline-style e outline-
width. Veja a sintaxe dessa propriedade.
Exerccios de Fixao
www.facebook.com/k19treinamentos 187
CSS 188
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao21.zip
1 div {
2 width : 200 px ;
3 height : 100 px ;
4 border : 4 px solid black ;
5 margin : 50 px ;
6 }
7
8 # div1 {
9 outline - style : solid ;
10 outline - color : red ;
11 outline - width : 4 px ;
12 }
13
14 # div2 {
15 outline - style : dashed ;
16 outline - color : blue ;
17 outline - width : 2 px ;
18 outline - offset : -20 px ;
19 }
20
21 # div3 {
22 outline - style : solid ;
23 outline - color : green ;
24 outline - width : 4 px ;
25 outline - offset : 20 px ;
26 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao22.zip
http://localhost/css/public_html/outlines.html.
http://localhost/~<USUARIO>/css/public_html/outlines.html.
Sombras
A propriedade box-shadow permite adicionar sombras externas e internas nos boxes dos ele-
mentos HTML. O valor dessa propriedade pode ser definido de diversas maneiras. Confira, nas ima-
gens abaixo, algumas formas de utilizao da propriedade box-shadow para definir sombras exter-
nas.
188 www.k19.com.br
189 CSS
Deslocamento horizontal
#a {
box-shadow: 10px 10px #7f7f7f; #a
}
Deslocamento vertical
Deslocamento horizontal
Esmaecimento
#b {
box-shadow: 10px 10px 10px #7f7f7f; #b
}
Deslocamento vertical
Deslocamento horizontal
Propagao
Esmaecimento
#c {
box-shadow: 10px 10px 0 10px #7f7f7f; #c
}
Deslocamento vertical
Os valores dos deslocamentos vertical e horizontal podem ser negativos fazendo com que a som-
bra externa seja projetada para cima e para a esquerda.
As regras para definir uma da sombra interna so praticamente as mesmas da sombra externa. A
nica diferena que devemos comear a atribuio do valor com a palavra inset.
Deslocamento horizontal
Deslocamento vertical
#a {
box-shadow: inset 10px 10px #000000;
} #a
www.facebook.com/k19treinamentos 189
CSS 190
Deslocamento horizontal
Deslocamento vertical
#b {
box-shadow: inset 10px 10px 10px #000000;
} #b
Esmaecimento
Deslocamento horizontal
Deslocamento vertical
#c {
box-shadow: inset 10px 10px 0 10px #000000;
}
Esmaecimento
#c
Propagao
Exerccios de Fixao
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao24.zip
1 div {
2 width : 200 px ;
3 height : 100 px ;
4 border : 4 px solid black ;
5 margin : 50 px ;
6 }
7
8 # div1 {
190 www.k19.com.br
191 CSS
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao25.zip
http://localhost/css/public_html/sombras.html.
http://localhost/~<USUARIO>/css/public_html/sombras.html.
Margens
A linguagem CSS possui diversas propriedades para definir a formatao das margens internas e
externas dos elementos HTML.
margin-*
Os tamanhos das margens externas do box de elemento HTML podem ser definidos individual-
mente com as propriedades margin-left, margin-top, margin-right e margin-bottom.
Valor Descrio
auto O tamanho da margem calculado automaticamente pelos navegadores.
medida A medida corresponde ao tamanho da margem (0px o padro).
x% O valor x corresponde ao tamanho da margem. Esse valor uma porcenta-
gem da largura do elemento HTML pai.
inherit Assume o valor da mesma propriedade no elemento HTML pai.
www.facebook.com/k19treinamentos 191
CSS 192
5px
margin-top: 5px
20px 10px
margin-right: 10px
margin-bottom: 15px
margin-left: 20px
15px
margin
A propriedade margin um atalho para as propriedades margin-left, margin-top, margin-right
e margin-bottom. Podemos utilizar a propriedade margin de 4 formas diferentes:
5px 5px
15px 15px
5px 5px
5px 5px
padding-*
Os tamanhos das margens internas do box de elemento HTML podem ser definidos individual-
mente com as propriedades padding-left, padding-top, padding-right e padding-bottom.
Valor Descrio
medida A medida corresponde ao tamanho da margem (0px o padro).
x% O valor x corresponde ao tamanho da margem. Esse valor uma porcenta-
gem da largura do elemento HTML pai.
inherit Assume o valor da mesma propriedade no elemento HTML pai.
192 www.k19.com.br
193 CSS
5px
Lorem ipsum dolor sit amet, consectetur
adipiscing elit. Duis volutpat laoreet magna,
nec placerat nisl egestas id. Maecenas a padding-top: 5px
20px nulla vel arcu viverra lobortis. In ligula nunc, 10px
cursus non faucibus sed, hendrerit id est.
Maecenas felis neque, porta et sagittis padding-right: 10px
faucibus, fringilla id tellus. Etiam nec
pulvinar tellus. Mauris et diam at est cursus padding-bottom: 15px
egestas. Donec tincidunt metus non ante
tristique egestas.
padding-left: 20px
15px
padding
A propriedade padding um atalho para as propriedades padding-left, padding-top, padding-
right e padding-bottom. Podemos utilizar a propriedade padding de 4 formas diferentes:
5px 5px
Lorem ipsum dolor sit amet, consectetur Lorem ipsum dolor sit amet, consectetur
adipiscing elit. Duis volutpat laoreet magna, adipiscing elit. Duis volutpat laoreet magna,
nec placerat nisl egestas id. Maecenas a nec placerat nisl egestas id. Maecenas a
20px nulla vel arcu viverra lobortis. In ligula nunc, 10px 10px nulla vel arcu viverra lobortis. In ligula nunc, 10px
cursus non faucibus sed, hendrerit id est. cursus non faucibus sed, hendrerit id est.
Maecenas felis neque, porta et sagittis Maecenas felis neque, porta et sagittis
faucibus, fringilla id tellus. Etiam nec faucibus, fringilla id tellus. Etiam nec
pulvinar tellus. Mauris et diam at est cursus pulvinar tellus. Mauris et diam at est cursus
egestas. Donec tincidunt metus non ante egestas. Donec tincidunt metus non ante
tristique egestas. tristique egestas.
15px 15px
5px 5px
Lorem ipsum dolor sit amet, consectetur Lorem ipsum dolor sit amet, consectetur
adipiscing elit. Duis volutpat laoreet magna, adipiscing elit. Duis volutpat laoreet magna,
nec placerat nisl egestas id. Maecenas a nec placerat nisl egestas id. Maecenas a
10px nulla vel arcu viverra lobortis. In ligula nunc, 10px 5px nulla vel arcu viverra lobortis. In ligula nunc, 5px
cursus non faucibus sed, hendrerit id est. cursus non faucibus sed, hendrerit id est.
Maecenas felis neque, porta et sagittis Maecenas felis neque, porta et sagittis
faucibus, fringilla id tellus. Etiam nec faucibus, fringilla id tellus. Etiam nec
pulvinar tellus. Mauris et diam at est cursus pulvinar tellus. Mauris et diam at est cursus
egestas. Donec tincidunt metus non ante egestas. Donec tincidunt metus non ante
tristique egestas. tristique egestas.
5px 5px
Mais Sobre
Considere o seguinte exemplo.
1 # div2 {
www.facebook.com/k19treinamentos 193
CSS 194
2 width : 50%;
3 }
1 # div2 {
2 margin - left : auto ;
3 margin - right : auto ;
4 width : 50%;
5 }
Exerccios de Fixao
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao27.zip
1 div {
2 width : 600 px ;
3 border : 1 px solid black ;
4 }
5
6 p, a {
7 border : 1 px solid black ;
8 }
9
10 # p1 {
11 margin : 5 px 10 px 20 px 30 px ;
12 padding : 5 px 0 px 0 px 20 px ;
13 }
14
15 # a1 {
16 margin - left : 10 px ;
194 www.k19.com.br
195 CSS
17 padding : 5 px ;
18 }
19
20 # a2 {
21 margin - left : 20 px ;
22 padding : 10 px ;
23 }
24
25 # p2 {
26 margin : 20 px ;
27 padding : 10 px ;
28 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao28.zip
http://localhost/css/public_html/margens.html.
http://localhost/~<USUARIO>/css/public_html/margens.html.
Altura e Largura
A linguagem CSS possui algumas propriedades para controlar a largura e a altura dos elementos
HTML.
height e width
A altura e a largura dos boxes dos elementos HTML podem ser definidas com as propriedades
height e width respectivamente.
Valor Descrio
auto A altura ou largura so calculadas automaticamente pelos navegadores.
medida A medida corresponde largura ou a altura.
x% A medida corresponde largura ou a altura como porcentagem das dimenses do
elemento HTML pai
inherit Assume o valor da mesma propriedade no elemento HTML pai.
min-height e max-height
A propriedade height utilizada para determinar a altura exata do box de um elemento HTML.
Uma outra abordagem definir um limite inferior e/ou um limite superior para essa dimenso. Esses
limites podem ser definidos com as propriedades min-height e max-height.
Valor Descrio
none Sem valor (padro para max-height).
medida A medida corresponde altura mxima ou mnima desejada (0px padro para
min-height).
www.facebook.com/k19treinamentos 195
CSS 196
Valor Descrio
x% O valor x corresponde altura mxima ou mnima. Esse valor uma porcentagem
da altura do elemento HTML pai
inherit Assume o valor da mesma propriedade no elemento HTML pai.
min-width e max-width
A propriedade width utilizada para determinar a largura exata do box de um elemento HTML.
Uma outra abordagem definir um limite inferior e/ou um limite superior para essa dimenso. Esses
limites podem ser definidos com as propriedades min-width e max-width.
Valor Descrio
none Sem valor (padro para max-width).
medida A medida corresponde largura mxima ou mnima desejada (0px padro para
min-width).
x% O valor x corresponde largura mxima ou mnima. Esse valor uma porcentagem
da largura do elemento HTML pai
inherit Assume o valor da mesma propriedade no elemento HTML pai.
Exerccios de Fixao
196 www.k19.com.br
197 CSS
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao30.zip
1 p {
2 border : 1 px solid black ;
3 max - width : 600 px ;
4 max - height : 250 px ;
5 min - height : 100 px ;
6 }
7
8 # p1 {
9 width : 200 px ;
10 }
11
12 # p2 {
13 width : 400 px ;
14 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao31.zip
http://localhost/css/public_html/altura-largura.html.
http://localhost/~<USUARIO>/css/public_html/altura-largura.html.
Display e Visibilidade
A linguagem CSS possui algumas propriedades para controlar a forma de exibio e a visibilidade
dos elementos HTML.
display
A propriedade display define a forma de exibio dos elementos HTML. Os 5 principais valores
dessa propriedade so: inline(padro), block, inline-block, list-item e none.
Valor Descrio
inline Considere o box de um elemento HTML com display: inline. Esse box no gera
quebras de linha e as suas dimenses so calculadas com base no contedo do ele-
mento HTML. As propriedades width e height no modificam a largura e a altura
do box. As margens e as bordas do box de um elemento HTML com display: inline
empurram os boxes vizinhos horizontalmente. Verticalmente, os boxes vizinhos
no so empurrados.
block Considere o box de um elemento HTML com display: block. Esse box gera quebras
de linha e, por padro, ocupa todo o espao horizontal do elemento pai. Podemos
controlar a largura e a altura desse box com as propriedades width e height.
www.facebook.com/k19treinamentos 197
CSS 198
Valor Descrio
inline-block O comportamento dos boxes dos elementos HTML com display: inline-block
similar ao dos boxes dos elementos HTML com display: inline. Basicamente, a
diferena entre eles que podemos modificar a largura e altura dos boxes dos ele-
mentos HTML com display: inline-block.
list-item O comportamento dos boxes dos elementos HTML com display: list-item similar
ao dos boxes dos elementos HTML com display: block. Basicamente, a diferena
entre eles que um bullet exibido no canto esquerdo de box de um elemento
HTML com display: list-item.
none Os boxes dos elementos HTML com display: none no so exibidos e no ocupam
espao na pgina.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam accumsan vehicula diam sit
amet bibendum. Aliquam sed tempor tellus. Duis placerat suscipit turpis in sollicitudin.
Nunc lacus magna, auctor vitae venenatis eu, dictum ac augue. Nunc eleifend dignissim felis.
display: inline
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam accumsan vehicula diam sit
amet bibendum. Aliquam sed tempor tellus. Duis
placerat
suscipit turpis in sollicitudin. Nunc lacus magna, auctor vitae venenatis eu, dictum ac augue.
Nunc eleifend dignissim felis.
display: block
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam accumsan vehicula diam sit
amet bibendum. Aliquam sed tempor tellus. Duis placerat suscipit turpis in sollicitudin.
Nunc lacus magna, auctor vitae venenatis eu, dictum ac augue. Nunc eleifend dignissim felis.
display: inline-block
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam accumsan vehicula diam sit
amet bibendum. Aliquam sed tempor tellus. Duis
placerat
suscipit turpis in sollicitudin. Nunc lacus magna, auctor vitae venenatis eu, dictum ac augue.
Nunc eleifend dignissim felis.
display: list-item
198 www.k19.com.br
199 CSS
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam accumsan vehicula diam sit
amet bibendum. Aliquam sed tempor tellus. Duis suscipit turpis in sollicitudin. Nunc lacus
magna, auctor vitae venenatis eu, dictum ac augue. Nunc eleifend dignissim felis.
display: none
visibility
Podemos determinar se um elemento HTML deve ser exibido ou no atravs da propriedade
visibility. O valor visible(padro) indica que o elemento deve ser exibido e o valor hidden indica que
o elemento no deve ser exibido.
Valor Descrio
visible Visvel (padro).
hidden Invisvel.
inherit Assume o valor da mesma propriedade no elemento HTML pai.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam accumsan vehicula diam sit
amet bibendum. Aliquam sed tempor tellus. Duis placerat suscipit turpis in sollicitudin.
Nunc lacus magna, auctor vitae venenatis eu, dictum ac augue. Nunc eleifend dignissim felis.
visibility: visible
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam accumsan vehicula diam sit
amet bibendum. Aliquam sed tempor tellus. Duis suscipit turpis in sollicitudin.
Nunc lacus magna, auctor vitae venenatis eu, dictum ac augue. Nunc eleifend dignissim felis.
visibility: hidden
Importante
Na renderizao, os elementos HTML com display: none so totalmente desconside-
rados. Em outras palavras, como se eles simplesmente no existissem. Dessa forma,
eles no afetam o posicionamento dos demais elementos. Por outro lado, os elementos HTML
com visibility: hidden apesar de no serem exibidos fazem parte da pgina renderizada e po-
dem afetar o posicionamento dos demais elementos pois o espao ocupado por eles pode no
ser nulo.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam accumsan vehicula diam sit
amet bibendum. Aliquam sed tempor tellus. Duis suscipit turpis in sollicitudin. Nunc lacus
magna, auctor vitae venenatis eu, dictum ac augue. Nunc eleifend dignissim felis.
display: none
www.facebook.com/k19treinamentos 199
CSS 200
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam accumsan vehicula diam sit
amet bibendum. Aliquam sed tempor tellus. Duis suscipit turpis in sollicitudin.
Nunc lacus magna, auctor vitae venenatis eu, dictum ac augue. Nunc eleifend dignissim felis.
visibility: hidden
Exerccios de Fixao
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao33.zip
1 p {
2 border : 2 px solid black ;
200 www.k19.com.br
201 CSS
3 width : 600 px ;
4 }
5
6 span {
7 padding : 15 px ;
8 margin : 40 px ;
9 width : 200 px ;
10 height : 100 px ;
11 border : 2 px solid black ;
12 background - color : yellow ;
13 }
14
15 # span1 {
16 display : inline ;
17 }
18
19 # span2 {
20 display : block ;
21 }
22
23 # span3 {
24 display : inline - block ;
25 }
26
27 # span4 {
28 display : list - item ;
29 }
30
31 # span5 {
32 display : none ;
33 }
34
35 # span6 {
36 visibility : hidden ;
37 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao34.zip
http://localhost/css/public_html/display-visibilidade.html.
http://localhost/~<USUARIO>/css/public_html/display-visibilidade.html.
Opacidade
Valor Descrio
x O valor x um nmero entre 0(totalmente transparente) e 1(sem transparncia,
padro).
inherit Assume o valor da mesma propriedade no elemento HTML pai.
www.facebook.com/k19treinamentos 201
CSS 202
Exerccios de Fixao
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao36.zip
1 div {
2 width : 100 px ;
3 height : 100 px ;
4 background - color : red ;
5 }
6
7 # div1 {
8 opacity : 0;
9 }
10
11 # div2 {
12 opacity : 0.25;
13 }
14
15 # div3 {
16 opacity : 0.5;
17 }
18
19 # div4 {
20 opacity : 0.75;
21 }
22
23 # div5 {
24 opacity : 1;
25 }
202 www.k19.com.br
203 CSS
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao37.zip
http://localhost/css/public_html/opacidade.html.
http://localhost/~<USUARIO>/css/public_html/opacidade.html.
Posicionamento
A linguagem CSS define quatro formas para posicionar os boxes dos elementos HTML: static,
relative, fixed e absolute. Mostraremos o funcionamento de cada uma dessas formas. A propriedade
position determina a forma de posicionamento desejada.
static
O valor static o valor padro da propriedade position. O box de um elemento com position:
static colocado na sua posio natural. No podemos alterar a posio dos boxes dos elementos
HTML com position: static.
Duis nunc est, consequat vel pulvinar in, egestas sit amet odio. Praesent
at leo feugiat, fermentum diam ut, commodo lacus. Interdum et malesua
fames ac ante ipsum primis in faucibus.
position: static
relative
O box de um elemento com position: relative colocado em uma posio relativa a sua posio
natural. As propriedades left, top, right e bottom so utilizadas para determinar o deslocamento
entre a posio desejada e a posio natural. O espao que seria ocupado por esse box se ele estivesse
em sua posio natural no ocupado por nenhum outro elemento.
www.facebook.com/k19treinamentos 203
CSS 204
Duis nunc est, consequat vel pulvinar in, egestas sit amet odio. Praesent
at leo feugiat, fermentum diam ut, commodo lacus. Interdum et malesua
fames ac ante ipsum primis in faucibus.
position: relative
fixed
O box de um elemento com position: fixed colocado em uma posio relativa pgina e no
acompanha a rolagem do contedo. As propriedades left, top, right e bottom so utilizadas para
determinar o deslocamento entre a posio desejada e pagina.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam Fusce vehicula turpis vitae mauris ornare, sed vestibulum arcu
accumsan vehicula diam sit amet bibendum. Aliquam sed tempor dapibus. Etiam posuere luctus arcu ut molestie. Aenean rutrum
tellus. Duis placerat suscipit turpis in sollicitudin. erat nec dolor imperdiet volutpat. Fusce id turpis suscipit, tristique
Duis nunc est, consequat vel pulvinar in, egestas sit amet odio. dui ac, gravida augue. Nam ac placerat justo. Aliquam ut congue
Praesent at leo feugiat, fermentum diam ut, commodo lacus. ligula. Fusce id varius magna. In quis fringilla ante, id
Interdum et malesua fames ac ante ipsum primis in faucibus. pellentesque risus. Maecenas elementum at purus a facilisis.
Fusce vehicula turpis vitae mauris ornare, sed vestibulum arcu Lorem ipsum dolor sit amet, consectetur adipiscing elit.
dapibus. Etiam posuere luctus arcu ut molestie. Aenean rutrum Aliquam sed tempor tellus. Duis placerat suscipit turpis in
erat nec dolor imperdiet volutpat. Fusce id turpis suscipit, tristique sollicitudin. Nunc lacus magna, auctor vitae venenatis eu, dictum
dui ac, gravida augue. Nam ac placerat justo. Aliquam ut congue ac augue. Nunc eleifend dignissim felis at mattis. Duis nunc est,
ligula. Fusce id varius magna. In quis fringilla ante, id consequat vel pulvinar in, egestas sit amet odio. Praesent at leo
pellentesque risus. Maecenas elementum at purus a facilisis. feugiat, fermentum diam ut, commodo lacus. Interdum et
Lorem ipsum dolor sit amet, consectetur adipiscing elit. malesuada fames ac ante ipsum primis in faucibus.
position: fixed
absolute
O box de um elemento com position: absolute colocado em uma posio relativa posio do
box do elemento HTML ancestral mais prximo com position diferente de static. Se no existir um
ancestral nessas condies a posio ser relativa pgina. As propriedades left, top, right e bottom
so utilizadas para determinar o deslocamento entre a posio desejada e o ponto de referncia.
Duis nunc est, consequat vel pulvinar in, egestas sit amet odio. Praesent
at leo feugiat, fermentum diam ut, commodo lacus. Interdum et malesua
fames ac ante ipsum primis in faucibus.
position: absolute
Figura 3.7: Elemento com position diferente de static utilizado como referncia
204 www.k19.com.br
205 CSS
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam Duis nunc est, consequat vel pulvinar in, egestas sit amet odio.
accumsan vehicula diam sit amet bibendum. Aliquam sed tempor Praesent at leo feugiat, fermentum diam ut, commodo lacus.
tellus. Duis placerat suscipit turpis in sollicitudin. Interdum et malesua fames ac ante ipsum primis in faucibus.
Duis nunc est, consequat vel pulvinar in, egestas sit amet odio. Fusce vehicula turpis vitae mauris ornare, sed vestibulum arcu
Praesent at leo feugiat, fermentum diam ut, commodo lacus. dapibus. Etiam posuere luctus arcu ut molestie. Aenean rutrum
Interdum et malesua fames ac ante ipsum primis in faucibus. erat nec dolor imperdiet volutpat. Fusce id turpis suscipit, tristique
Fusce vehicula turpis vitae mauris ornare, sed vestibulum arcu dui ac, gravida augue. Nam ac placerat justo. Aliquam ut congue
dapibus. Etiam posuere luctus arcu ut molestie. Aenean rutrum ligula. Fusce id varius magna. In quis fringilla ante, id
erat nec dolor imperdiet volutpat. Fusce id turpis suscipit, tristique pellentesque risus. Maecenas elementum at purus a facilisis.
dui ac, gravida augue. Nam ac placerat justo. Aliquam ut congue Lorem ipsum dolor sit amet, consectetur adipiscing elit.
ligula. Fusce id varius magna. In quis fringilla ante, id Aliquam sed tempor tellus. Duis placerat suscipit turpis in
pellentesque risus. Maecenas elementum at purus a facilisis. sollicitudin. Nunc lacus magna, auctor vitae venenatis eu, dictum
Lorem ipsum dolor sit amet, consectetur adipiscing elit. ac augue. Nunc eleifend dignissim felis at mattis.
position: absolute
float
Podemos fazer o box de um elemento HTML flutuar ao redor dos demais elementos atravs da
propriedade float.
Valor Descrio
left Flutuar esquerda.
right Flitar direita.
none Sem flutuao (padro).
inherit Assume o valor da mesma propriedade no elemento HTML pai.
Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet,
consectetur adipiscing elit. consectetur adipiscing elit.
Aliquam accumsan vehicula Aliquam accumsan vehicula
diam sit amet bibendum. diam sit amet bibendum.
Aliquam sed tempor tellus. Duis placerat Aliquam sed tempor tellus. Duis placerat
suscipit turpis in sollicitudin. suscipit turpis in sollicitudin.
Importante
Os elementos HTML com float diferente de none podem ser reposicionados se a janela
for redimensionada.
Importante
Os elementos HTML com float diferente de none no afetam a altura ou a largura do
elemento HTML onde eles esto contidos.
clear
Os box dos elementos HTML prximos do box de um elemento HTML om float diferente de none
so empurrados horizontalmente esquerda ou direita. Podemos determinar que, ao invs de se-
rem empurrados horizontalmente, eles sejam exibidos em uma nova linha atravs da propriedade
clear.
www.facebook.com/k19treinamentos 205
CSS 206
Valor Descrio
left No permite boxes flutuando esquerda dele.
right No permite boxes flutuando direita dele.
both No permite boxes flutuando nem esquerda nem direita dele.
none Permite boxes flutuando esquerda e direita (padro) dele.
inherit Assume o valor da mesma propriedade no elemento HTML pai.
Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet,
consectetur adipiscing elit. consectetur adipiscing elit.
clear: none
Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet,
consectetur adipiscing elit. consectetur adipiscing elit.
clear: none
z-index
A sobreposio dos boxes dos elementos HTML pode ser controlada atravs da propriedade z-
index. Basicamente, essa propriedade permite determinar em qual plano um box deve ser exibido.
Valor Descrio
auto Mesmo plano do box do elemento HTML pai (padro).
x O valor x o plano desejado. Esse valor pode ser negativo.
inherit Assume o valor da mesma propriedade no elemento HTML pai.
206 www.k19.com.br
207 CSS
Alinhamento vertical
Utilizando as propriedades de margem e posicionamento podemos alinhar um elemento de
forma centralizada na vertical.
Qualquer valor
diferente de static
#container {
height: 600px;
position: relative; top: 50%
}
margin-top: -100px
#conteudo { #conteudo
height: 200px;
position: absolute;
top: 50%;
margin-top: -100px; #container
}
Exerccios de Fixao
www.facebook.com/k19treinamentos 207
CSS 208
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao39.zip
1 img {
2 float : left ;
3 }
4
5 # p3 {
6 clear : left ;
7 }
8
9 div {
10 width : 200 px ;
11 height : 100 px ;
12 color : white ;
13 }
14
15 # div1 {
16 position : fixed ;
17 right : 20 px ;
18 top : 40 px ;
19 background - color : green ;
20 }
21
22 # div2 {
23 position : relative ;
24 top : 30 px ;
25 left : 60 px ;
26 background - color : blue ;
27 }
28
29 # div3 {
30 position : absolute ;
31 bottom : -40 px ;
32 right : -100 px ;
33 background - color : red ;
34 z - index : -1;
35 }
208 www.k19.com.br
209 CSS
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao39.zip
http://localhost/css/public_html/posicionamento.html.
http://localhost/~<USUARIO>/css/public_html/posicionamento.html.
Overflow e clip
overflow-x
A propriedade overflow-x determina o que os navegadores devem fazer quando o contedo de
um elemento HTML extrapola horizontalmente os limites do mesmo.
Valor Descrio
visible O contedo excedente na horizontal ser exibido (padro).
hidden O contedo excedente na horizontal no ser exibido.
scroll O contedo excedente na horizontal no ser exibido e um mecanismo rolagem
horizontal ser disponibilizado.
auto O contedo excedente na horizontal no ser exibido e um mecanismo rolagem
horizontal ser disponibilizado somente se necessrio.
Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.
www.facebook.com/k19treinamentos 209
CSS 210
overflow-y
A propriedade overflow-y determina o que os navegadores devem fazer quando o contedo de
um elemento HTML extrapola verticalmente os limites do mesmo.
Valor Descrio
visible O contedo excedente na vertical ser exibido (padro).
hidden O contedo excedente na vertical no ser exibido.
scroll O contedo excedente na vertical no ser exibido e um mecanismo rolagem ver-
tical ser disponibilizado.
auto O contedo excedente na vertical no ser exibido e um mecanismo rolagem ver-
tical ser disponibilizado somente se necessrio.
Lorem ipsum dolor sit Lorem ipsum dolor sit Lorem ipsum dolor
amet, consectetur amet, consectetur sit amet, consectetur
adipiscing elit. adipiscing elit. adipiscing elit.
Aliquam accumsan Aliquam accumsan Aliquam accumsan
vehicula diam sit. vehicula diam sit. vehicula diam sit.
overflow-y: visible overflow-y: hidden overflow-y: scroll
overflow
A propriedade overflow determina o que os navegadores devem fazer quando o contedo de um
elemento HTML extrapola os limites do mesmo.
Valor Descrio
visible O contedo excedente ser exibido (padro).
hidden O contedo excedente no ser exibido.
scroll O contedo excedente no ser exibido e um mecanismo rolagem ser disponibi-
lizado.
auto O contedo excedente no ser exibido e um mecanismo rolagem ser disponibi-
lizado somente se necessrio.
no-display O elemento HTML no ser exibido se o seu contedo extrapolar os limites do seu
box.
inherit Assume o valor da mesma propriedade no elemento HTML pai.
210 www.k19.com.br
211 CSS
Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet,
consectetur adipiscing elit. consectetur adipiscing elit. consectetur adipiscing elit.
Aliquam accumsan vehicula Aliquam accumsan vehicula Aliquam accumsan vehicula
diam sit. Duis placerat diam sit. Duis placerat diam sit. Duis placerat
suscipit turpis in sollicitudin. suscipit turpis in sollicitudin. suscipit turpis in sollicitudin.
overflow: visible overflow: hidden overflow: scroll
clip
Podemos determinar a regio do box de um elemento HTML que deve ser exibida com a propri-
edade clip. Essa propriedade s tem efeito sobre elementos com position: absolute.
Valor Descrio
auto O box inteiro ser exibido (padro).
rect(top, right, bottom, left) Retngulo que define a regio que ser exibida.
inherit Assume o valor da mesma propriedade no elemento HTML pai.
85px 20px
50px
95px
Exerccios de Fixao
www.facebook.com/k19treinamentos 211
CSS 212
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao42.zip
1 div {
2 margin : 70 px ;
3 width : 200 px ;
4 height : 100 px ;
5 border : 1 px solid red ;
6 }
7
8 p {
9 width : 270 px ;
10 }
11
12 # div1 {
13 overflow : visible ;
14 }
15
16 # div2 {
17 overflow : hidden ;
18 }
19
20 # div3 {
21 overflow : scroll ;
22 }
23
212 www.k19.com.br
213 CSS
24 # div4 {
25 overflow : auto ;
26 }
27
28 # div5 {
29 overflow : auto ;
30 }
31
32 # img1 {
33 position : absolute ;
34 top : 10 px ;
35 left : 400 px ;
36 clip : auto ;
37 }
38
39 # img2 {
40 position : absolute ;
41 top : 250 px ;
42 left : 400 px ;
43 clip : rect (10 px , 118 px , 108 px , 40 px ) ;
44 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao43.zip
http://localhost/css/public_html/overflow-clip.html.
http://localhost/~<USUARIO>/css/public_html/overflow-clip.html.
Transformaes
No CSS3 foram introduzidas algumas funes para realizar as transformaes de translado, es-
calonamento, distoro e rotao nos elementos de uma pgina HTML. Essas funes so utilizadas
em conjunto com a propriedade transform do CSS3.
translate()
www.facebook.com/k19treinamentos 213
CSS 214
transform: translate( m , n );
Original
Transladado
scale()
transform: scale( m , n );
w* m Original
w Escalonado
h
h* n
rotate()
214 www.k19.com.br
215 CSS
transform: rotate( m );
Original
m Rotacionado
skew()
A funo skew(m, n) distorcer um elemento em relao aos eixos x e y. m e n definem as distor-
es aplicadas nos eixos x e y respectivamente. Os valores de m e n devem ser dados em graus, voltas
ou grado.
transform: skew( m , n );
Original
Destorcido
Exerccios de Fixao
www.facebook.com/k19treinamentos 215
CSS 216
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao45.zip
1 div {
2 margin : 70 px ;
3 border : 1 px solid black ;
4 background - color : yellow ;
5 width : 100 px ;
6 height : 100 px ;
7 }
8
9 # div1 {
10 transform : translate (50 px , -20 px ) ;
11
12 /* Webkit : Chrome , Safari */
13 - webkit - transform : translate (50 px , -20 px ) ;
14 }
15
16 # div2 {
17 transform : scale (0.5 , 2) ;
18
19 /* Webkit : Chrome , Safari */
20 - webkit - transform : scale (0.5 , 2) ;
21 }
22
23 # div3 {
24 transform : rotate (15 deg ) ;
25
26 /* Webkit : Chrome , Safari */
27 - webkit - transform : rotate (15 deg ) ;
28 }
29
30 # div4 {
31 transform : skew (10 deg , -45 deg ) ;
32
33 /* Webkit : Chrome , Safari */
34 - webkit - transform : skew (10 deg , -45 deg ) ;
35 }
36
37 /* Moz : Firefox */
38 /* substituir " webkit " por " moz "
39
40 /* O : Opera */
41 /* substituir " webkit " por " o "
42
43 /* Ms : Internet Explorer */
216 www.k19.com.br
217 CSS
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao46.zip
http://localhost/css/public_html/transformacoes.html.
http://localhost/~<USUARIO>/css/public_html/transformacoes.html.
Transies
Como vimos anteriormente, as regras CSS podem ser aplicadas aos elementos HTML de acordo
com o estado atual do mesmo. Por exemplo, considere as duas regras CSS a seguir.
1 div {
2 width : 50 px ;
3 height : 50 px ;
4 }
5
6 div : hover {
7 width : 100 px ;
8 height : 100 px ;
9 }
De acordo com as duas regras CSS acima, quando o ponteiro do mouse for colocado por cima de
um div, a largura e a altura desse elemento HTML aumentar instantaneamente de 50px para 100px.
Quando a mudana visual de um elemento HTML muito significativa, o resultado pode no ser
agradvel aos usurio. A linguagem CSS possui propriedades para melhorar essas transies.
transition-duration
A durao das transies pode ser controlada com a propriedade transition-duration.
www.facebook.com/k19treinamentos 217
CSS 218
Valor Descrio
tempo A durao em segundos(s) ou milissegundos(ms). Os o valor padro.
width: 80px;
width: 20px; height: 80px;
height: 20px; transition-duration: 4s;
tempo (s)
0 4
transition-delay
Podemos estabelecer um atraso para o incio de uma transio com a propriedade transition-
delay.
Valor Descrio
tempo A durao em segundos(s) ou milissegundos(ms). Os o valor padro.
width: 80px;
height: 80px;
width: 20px; transition-duration: 1500ms;
height: 20px; transition-delay: 1s;
tempo (s)
0 1 2.5
transition-timing-function
Os frames que foram uma transio podem ser exibidos com padres diferentes. Por exemplo,
uma transio pode iniciar devagar, no meio acelerar e terminar devagar. O padro desejado pode
ser determinado atravs da propriedade transition-timing-function.
Valor Descrio
linear Mesma velocidade do incio at o final da transio. Equivale a cubic-
bezier(0, 0, 1, 1).
ease O incio da transio lento, o meio rpido e o final volta a ser lento (pa-
dro). Equivale a cubic-bezier(0.25, 0.1, 0.25, 1).
218 www.k19.com.br
219 CSS
Valor Descrio
ease-in O incio da transio lento. O meio e o final so rpidos. Equivale a cubic-
bezier(0.42, 0, 1, 1)
ease-out O incio e o meio da transio so rpidos e o final lento. Equivale a cubic-
bezier(0, 0, 0.58, 1)
ease-in-out Semelhante ao valor ease com incio e final mais longos. Equivale a cubic-
bezier(0.42, 0, 0.58, 1).
cubic-bezier(n,n,n,n) A transio seguir o padro definido pela funo cbica de bezier.
height: 80px;
transition-duration: 4s;
height: 20px; transition-timing-function: linear;
tempo (s)
0 4
height: 80px;
transition-duration: 4s;
height: 20px; transition-timing-function: ease;
tempo (s)
0 4
height: 80px;
transition-duration: 4s;
height: 20px; transition-timing-function: ease-in;
tempo (s)
0 4
www.facebook.com/k19treinamentos 219
CSS 220
height: 80px;
transition-duration: 4s;
height: 20px; transition-timing-function: ease-out;
tempo (s)
0 4
height: 80px;
transition-duration: 4s;
height: 20px; transition-timing-function: ease-in-out;
tempo (s)
0 4
transition-property
Podemos escolher quais propriedades CSS devem ser consideradas nas transies atravs da pro-
priedade transition-property.
Valor Descrio
none Nenhuma propriedade ser considerada na transio.
all Todas as propriedades sero consideradas na transio (padro).
lista-de-propriedades Lista das propriedades que devem ser consideradas na transio.
width: 20px;
height: 80px;
opacity: 1;
width: 1px; transition-duration: 4s;
height: 20px; transition-timing-function: linear;
opacity: 0.3; transition-property: height, opacity;
tempo (s)
0 4
220 www.k19.com.br
221 CSS
Exerccios de Fixao
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao48.zip
1 # div1 {
2 margin : 300 px ;
3 padding : 10 px ;
4 width : 200 px ;
5 height : 200 px ;
6 background - color : #064 e83 ;
7 color : white ;
8 transition : 1 s ease - in - out ;
9 }
10
11 # div1 : hover {
12 transform : scale (4 , 4) rotate (360 deg ) ;
13
14 /* Webkit : Chrome , Safari */
15 - webkit - transform : scale (4 , 4) rotate (360 deg ) ;
16 }
17
18 /* Moz : Firefox */
19 /* substituir " webkit " por " moz "
20
21 /* O : Opera */
22 /* substituir " webkit " por " o "
23
24 /* Ms : Internet Explorer */
25 /* substituir " webkit " por " ms " */
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao49.zip
http://localhost/css/public_html/transicoes.html.
www.facebook.com/k19treinamentos 221
CSS 222
http://localhost/~<USUARIO>/css/public_html/transicoes.html.
Animaes
A partir da sua terceira verso, a linguagem CSS adicionou algumas propriedades para criao de
animaes. Essas animaes so criadas atravs do conceito de keyframes. Nessa abordagem, de-
vemos definir os quadros principais e os navegadores completam a animao inserindo os quadros
intermerdirios.
Os quadros principais so definidos de acordo com o momento no qual eles sero exibidos. Esse
instante descrito como uma porcentagem do tempo total da animao.
222 www.k19.com.br
223 CSS
tempo (s)
0 3 6
@keyframes minha-animacao {
0% {
height: 20px;
opacity: 0.35;
}
50% {
opacity: 1;
}
100% {
height: 80px;
opacity: 0.35;
}
}
Mais Sobre
Essencialmente, as duas animaes abaixo so exatamente iguais.
1 @keyframes animacao1 {
2 from {
3 width : 10 px ;
4 }
5 to {
6 width : 70 px ;
7 }
8 }
1 @keyframes animacao2 {
2 0% {
3 width : 10 px ;
4 }
5 100% {
6 width : 70 px ;
7 }
8 }
Depois de definir as animaes com a propriedade keyframes, devemos associ-la aos elemen-
tos HTML atravs da propriedade animation-name e determinar o tempo de durao com a propri-
edade animation-duration.
1 div {
www.facebook.com/k19treinamentos 223
CSS 224
animation-timing-function
Podemos determinar o padro de exibio dos quadros de uma animao com a propriedade
animation-timing-function.
Valor Descrio
linear Mesma velocidade do incio at o final da animao. Equivale a cubic-
bezier(0, 0, 1, 1).
ease O incio da animao lento, o meio rpido e o final volta a ser lento (pa-
dro). Equivale a cubic-bezier(0.25, 0.1, 0.25, 1).
ease-in O incio da animao lento. O meio e o final so rpidos. Equivale a cubic-
bezier(0.42, 0, 1, 1)
ease-out O incio e o meio da animao so rpidos e o final lento. Equivale a cubic-
bezier(0, 0, 0.58, 1)
ease-in-out Semelhante ao valor ease com incio e final mais longos. Equivale a cubic-
bezier(0.42, 0, 0.58, 1).
cubic-bezier(n,n,n,n) A animao seguir o padro definido pela funo cbica de Bzier.
animation-delay
Podemos adicionar um atraso para o incio de uma animao com a propriedade animation-
delay.
Valor Descrio
tempo A durao em segundos(s) ou milissegundos(ms). 0s o valor padro.
animation-iteration-count
A quantidade de repeties de uma animao pode ser determinada com a propriedade animation-
iteration-count.
Valor Descrio
x O valor x a quantidade de repeties da animao. 1 o valor padro.
infinite A animao se repetir indefinidamente.
animation-direction
A direo adotada na exibio de uma animao pode ser determinada atravs da propriedade
animation-direction.
224 www.k19.com.br
225 CSS
Valor Descrio
normal A animao ser exibida na direo normal (padro).
reverse A animao ser exibida na direo inversa.
alternate A animao ser exibida nas direes normal e inversa de forma alternada,
iniciando com a direo normal
alternate-reverse A animao ser exibida nas direes normal e inversa de forma alternada,
iniciando com a direo inversa.
animation-play-state
As animaes podem ser pausadas ou reiniciadas atravs da propriedade animation-play-state.
Valor Descrio
paused A animao parada.
running A animao em execuo.
Exerccios de Fixao
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao51.zip
1 # img1 {
2 position : absolute ;
3 top : 0 px ;
4 left : 100 px ;
5 z - index : 2;
6 animation : animacao1 1 s linear , animacao2 0.5 s linear ,
7 animacao3 500 ms linear , animacao4 500 ms linear ;
8 animation - delay : 2s , 3s , 3.5 s , 4 s ;
9
10 /* Webkit : Chrome , Safari */
11 - webkit - animation : animacao1 1 s linear , animacao2 0.5 s linear ,
12 animacao3 500 ms linear , animacao4 500 ms linear ;
13 - webkit - animation - delay : 2s , 3s , 3.5 s , 4 s ;
14 }
15
www.facebook.com/k19treinamentos 225
CSS 226
16 # img2 {
17 position : absolute ;
18 top : 400 px ;
19 left : 110 px ;
20 z - index : 1;
21 transform : scale (2.5 , 2.5) ;
22 animation : animacao5 1 s linear , animacao6 0.5 s linear ,
23 animacao7 500 ms linear , animacao8 500 ms linear ;
24 animation - delay : 2s , 3s , 3.5 s , 4 s ;
25
26 /* Webkit : Chrome , Safari */
27 - webkit - transform : scale (2.5 , 2.5) ;
28 - webkit - animation : animacao5 1 s linear , animacao6 0.5 s linear ,
29 animacao7 500 ms linear , animacao8 500 ms linear ;
30 - webkit - animation - delay : 2s , 3s , 3.5 s , 4 s ;
31 }
32
33 @keyframes animacao1 {
34 to {
35 top : 310 px ;
36 }
37 }
38
39 @keyframes animacao2 {
40 from {
41 top : 310 px ;
42 }
43 to {
44 top : 335 px ;
45 transform : scale (1.25 , 0.75) ;
46 }
47 }
48
49 @keyframes animacao3 {
50 from {
51 top : 335 px ;
52 transform : scale (1.25 , 0.75) ;
53 }
54 to {
55 top : 285 px ;
56 transform : scale (0.75 , 1.25) ;
57 }
58 }
59
60 @keyframes animacao4 {
61 from {
62 top : 285 px ;
63 transform : scale (0.75 , 1.25) ;
64 }
65 to {
66 top : 310 px ;
67 transform : scale (1 , 1) ;
68 }
69 }
70
71 @keyframes animacao5 {
72 to {
73 transform : scale (1.5 , 1.5) ;
74 }
75 }
76
77 @keyframes animacao6 {
78 from {
79 transform : scale (1.5 , 1.5) ;
80 }
81 to {
82 transform : scale (1.75 , 1.75) ;
83 }
84 }
85
226 www.k19.com.br
227 CSS
86 @keyframes animacao7 {
87 from {
88 transform : scale (1.75 , 1.75) ;
89 }
90 to {
91 transform : scale (1.25 , 1.25) ;
92 }
93 }
94
95 @keyframes animacao8 {
96 from {
97 transform : scale (1.25 , 1.25) ;
98 }
99 to {
100 transform : scale (1.5 , 1.5) ;
101 }
102 }
103
104 /* Webkit : Chrome , Safari */
105
106 @ - webkit - keyframes animacao1 {
107 to {
108 top : 310 px ;
109 }
110 }
111
112 @ - webkit - keyframes animacao2 {
113 from {
114 top : 310 px ;
115 }
116 to {
117 top : 335 px ;
118 - webkit - transform : scale (1.25 , 0.75) ;
119 }
120 }
121
122 @ - webkit - keyframes animacao3 {
123 from {
124 top : 335 px ;
125 - webkit - transform : scale (1.25 , 0.75) ;
126 }
127 to {
128 top : 285 px ;
129 - webkit - transform : scale (0.75 , 1.25) ;
130 }
131 }
132
133 @ - webkit - keyframes animacao4 {
134 from {
135 top : 285 px ;
136 - webkit - transform : scale (0.75 , 1.25) ;
137 }
138 to {
139 top : 310 px ;
140 - webkit - transform : scale (1 , 1) ;
141 }
142 }
143
144 @ - webkit - keyframes animacao5 {
145 to {
146 - webkit - transform : scale (1.5 , 1.5) ;
147 }
148 }
149
150 @ - webkit - keyframes animacao6 {
151 from {
152 - webkit - transform : scale (1.5 , 1.5) ;
153 }
154 to {
155 - webkit - transform : scale (1.75 , 1.75) ;
www.facebook.com/k19treinamentos 227
CSS 228
156 }
157 }
158
159 @ - webkit - keyframes animacao7 {
160 from {
161 - webkit - transform : scale (1.75 , 1.75) ;
162 }
163 to {
164 - webkit - transform : scale (1.25 , 1.25) ;
165 }
166 }
167
168 @ - webkit - keyframes animacao8 {
169 from {
170 - webkit - transform : scale (1.25 , 1.25) ;
171 }
172 to {
173 - webkit - transform : scale (1.5 , 1.5) ;
174 }
175 }
176
177 /* Moz : Firefox */
178 /* substituir " webkit " por " moz "
179
180 /* O : Opera */
181 /* substituir " webkit " por " o "
182
183 /* Ms : Internet Explorer */
184 /* substituir " webkit " por " ms " */
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao52.zip
http://localhost/css/public_html/animacoes.html.
http://localhost/~<USUARIO>/css/public_html/animacoes.html.
Seletores
Como vimos, os seletores so utilizados para determinar quais elementos HTML devem ser afe-
tados por uma regra CSS. A linguagem CSS oferece uma grande variedade de seletores.
Seletores bsicos
228 www.k19.com.br
229 CSS
Seletores de atributos
Pseudo-classes
www.facebook.com/k19treinamentos 229
CSS 230
Pseudo-elementos
Prioridade de seletores
Eventualmente, um elemento HTML afetado por duas ou mais regras CSS. Alm disso, uma de-
terminada propriedade CSS pode ser definida com valores diferentes em duas ou mais dessas regras.
Nesse caso, essa propriedade ter o valor definido na regra CSS de maior prioridade. Essas priori-
dades so calculadas de acordo com os seletores utilizados nas regras CSS e na ordem em que elas
foram definidas.
1 p {
2 color : red ;
3 font - size : 14 px ;
4 }
5
6 p {
7 color : blue ;
8 }
Perceba que todo elemento p afetado pelas duas regras CSS acima. Nessas duas regras, a pro-
priedade color foi definida com valores diferentes. Os seletores dessas duas regras possuem a mesma
importncia. Nesse caso, a ltima regra tem maior prioridade. Portanto, o texto do pargrafo ser
exibido em azul.
230 www.k19.com.br
231 CSS
A propriedade font-size no entrou em conflito, pois foi definida em apenas uma das regras CSS.
Portanto, o tamanho da fonte do texto do pargrafo ser 14px.
1 . class1 {
2 color : red ;
3 font - size : 14 px ;
4 }
5
6 p {
7 color : blue ;
8 }
Observe que o pargrafo do exemplo afetado pelas duas regras CSS acima. Nesse caso, qual ser
a cor do texto do pargrafo? A resposta correta vermelho. Isso ocorre, pois os seletores de classe
possuem importncia maior que os seletores de tipo.
Conforme a complexidade dos seletores utilizados em nossas regras CSS aumenta, a dificuldade
em determinar qual deles possui maior importncia tambm aumenta. Por isso, devemos seguir o
algoritmo definido na especificao da linguagem CSS para determinar a importncia dos seletores.
Nesse algoritmo, os seletores obtero uma pontuao em quatro critrios diferentes.
A: Caso as propriedades sejam definidas atravs do atributo style, a pontuao nesse critrio ser 1.
Caso contrrio ser 0.
B: A pontuao nesse critrio ser a quantidade de seletores de ID que formam o seletor da regra
CSS.
C: A pontuao nesse critrio ser a soma das quantidades de seletores de classe, de atributos e de
pseudo-classes que formam o seletor da regra CSS.
D: A pontuao nesse critrio ser a soma das quantidades de seletores de tipo e de pseudo-elementos
que formam o seletor da regra CSS.
O critrio A possui prioridade sobre o critrio B, que por sua vez possui prioridade sobre o critrio
C, que por sua vez possui prioridade sobre o critrio D. Veja nas imagens abaixo, um exemplo de
como calcular a pontuao dos seletores.
C B C B C B C D D D C
.class2 #div1:hover #p1 .class1 #a1:visited span:first-child input[checked] {
color: red;
}
Pontuao: 0 , 3 , 5 , 3
A B C D
www.facebook.com/k19treinamentos 231
CSS 232
D D C D D C B C B C B
section article.class2 div div:hover #p1 .class1 #a1:visited #input1 {
color: red;
}
Pontuao: 0 , 3 , 4 , 4
A B C D
No critrio A, as duas regras obtiveram a mesma pontuao. Como ocorreu um empate, devemos
analisar o critrio seguinte. No critrio B, houve outro empate. Portanto, devemos analisar o prximo
critrio. No critrio C, a primeira regra possui uma pontuao maior. Dessa forma, o seletor da
primeira regra possui maior importncia fazendo com que essa regra tenha maior prioridade.
Exerccios de Fixao
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao54.zip
1 * {
232 www.k19.com.br
233 CSS
2 margin : 0 px ;
3 padding : 0 px ;
4 }
5
6 body {
7 background - color : # ddd ;
8 }
9
10 # conteudo {
11 width : 800 px ;
12 margin : 0 auto ;
13 background - color : white ;
14 border : 1 px solid #333;
15 padding : 10 px ;
16 }
17
18 . cancelado {
19 text - decoration : line - through ;
20 }
21
22 ul {
23 padding : 0 0 0 40 px ;
24 }
25
26 ul li {
27 color : blue ;
28 }
29
30 # conteudo > ul > li {
31 margin : 0 0 20 px 0;
32 }
33
34 ul + p {
35 color : red ;
36 }
37
38 ul ~ p {
39 font - style : italic ;
40 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao55.zip
http://localhost/css/public_html/seletores-basicos.html.
http://localhost/~<USUARIO>/css/public_html/seletores-basicos.html.
www.facebook.com/k19treinamentos 233
CSS 234
11 <a href = " # link - c " title = " Pgina 3 " > Link 3 </ a >
12 <a href = " # link - d " title = " Link para a pgina 4 " > Link 4 </ a >
13 <a href = " # link - e " title = " Link para a pgina da K19 Treinamentos " > Link 5 </ a >
14 <a href = " # links - f " title = " Link para a pgina 6 " > Link 6 </ a >
15 <a href = " # link " title = " Link para a pgina 7 " > Link 7 </ a >
16
17 < hr >
18
19 < img src = " http :// www . k19 . com . br / figs / main - header - logo . png "
20 title = " Logo da K19 " >
21 < img src = " http :// www . k19 . com . br / figs / k01 - logo - large . png " >
22 < img src = " http :// www . k19 . com . br / figs / k02 - logo - large . png " >
23 </ body >
24 </ html >
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao57.zip
1 [ title ] {
2 border : 4 px solid red ;
3 }
4
5 [ title = Pgina 3 ] {
6 color : green ;
7 }
8
9 [ title ~= K19 ] {
10 padding : 10 px ;
11 background : yellow ;
12 }
13
14 [ title ^= Link ] {
15 margin - right : 30 px ;
16 }
17
18 [ href$ = link ] {
19 outline : 4 px solid blue ;
20 }
21
22 [ src *= large ] {
23 border : 4 px solid green ;
24 }
25
26 [ href |= # link ] {
27 font - size : 30 px ;
28 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao58.zip
http://localhost/css/public_html/seletores-de-atributos.html.
http://localhost/~<USUARIO>/css/public_html/seletores-de-atributos.html.
234 www.k19.com.br
235 CSS
www.facebook.com/k19treinamentos 235
CSS 236
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao60.zip
1 : root {
2 font - size : 30 px ;
3 }
4
5 # lista1 li : first - child {
6 color : red ;
7 }
8
9 # lista1 li : last - child {
10 color : blue ;
11 }
12
13 # lista2 li : nth - child (2) {
14 color : magenta ;
15 }
16
17 # lista2 li : nth - last - child (2) {
18 color : orange ;
19 }
20
21 p : first - of - type {
22 color : yellow ;
23 }
24
25 p : last - of - type {
26 color : aqua ;
27 }
28
29 p : nth - of - type (2) {
30 color : firebrick ;
31 }
32
33 p : nth - last - of - type (2) {
34 color : lawngreen ;
35 }
36
37 : only - child {
38 border : 4 px solid red ;
39 }
40
41 h2 : only - of - type {
42 color : plum ;
236 www.k19.com.br
237 CSS
43 }
44
45 : empty {
46 height : 20 px ;
47 border : 4 px dashed black ;
48 }
49
50 a : link {
51 color : springgreen ;
52 font - weight : bold ;
53 }
54
55 a : visited {
56 color : # ccc ;
57 }
58
59 a : active {
60 color : orange ;
61 }
62
63 a : hover {
64 color : fuchsia ;
65 }
66
67 input : focus {
68 background - color : red ;
69 color : white ;
70 }
71
72 : target {
73 border : 4 px solid magenta ;
74 color : purple ;
75 }
76
77 : lang ( en ) {
78 color : red ;
79 }
80
81 : enabled {
82 outline : 4 px solid red ;
83 }
84
85 : disabled {
86 outline : 4 px solid blue ;
87 }
88
89 : checked {
90 outline : 4 px solid green ;
91 }
92
93 : not ( ul ) > li {
94 padding - left : 100 px ;
95 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao61.zip
http://localhost/css/public_html/seletores-de-pseudo-classes.html.
http://localhost/~<USUARIO>/css/public_html/seletores-de-pseudo-classes.html.
www.facebook.com/k19treinamentos 237
CSS 238
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao63.zip
1 p : first - line {
2 background - color : yellow ;
3 }
4
5 p : first - letter {
6 font - size : 50 px ;
7 }
8
9 h1 : before {
10 content : ~ ;
11 color : red ;
12 }
13
14 h1 : after {
15 content : ~ ;
16 color : red ;
17 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao64.zip
http://localhost/css/public_html/seletores-de-pseudo-elementos.html.
http://localhost/~<USUARIO>/css/public_html/seletores-de-pseudo-elementos.html.
Media Queries
238 www.k19.com.br
239 CSS
Media Types
No momento em que definimos as regras CSS dos nossos documentos, tambm podemos de-
terminar para quais tipos de mdia essas regras sero vlidas, ou seja, podemos decidir quais regras
sero aplicadas quando o documento for apresentado em uma tela, no papel ou narrado por um
sintetizador de voz, por exemplo. Podemos informar o tipo de mdia de duas formas: com o atributo
media do elemento link ou com a regra media do CSS.
1 < link rel = " stylesheet " type = " text / css " href = " aquivo . css " media = " screen " >
1 @media screen {
2 body {
3 background - color : black ;
4 }
5
6 ...
7 }
Podemos definir as mesmas regras CSS para diversos tipos de mdia. Para isso devemos separar
esses tipos por vrgula.
1 < link rel = " stylesheet " type = " text / css " href = " aquivo . css " media = " screen , print " >
Media Groups
Algumas propriedades no so aplicveis a determinados tipos de mdia. Por exemplo, a propri-
edade width no pode ser aplicada mdia speech. Por outro lado, algumas propriedades podem
ser aplicadas diversas mdias. Por exemplo, a propriedade position pode ser aplicada s mdias
screen, projection, handheld, print, tty e tv.
www.facebook.com/k19treinamentos 239
CSS 240
Para identificar, mais facilmente, quais propriedades podem ser aplicadas a um determinado
tipo de mdia, a especificao da linguagem CSS divide em grupos os diversos tipos de mdia.
Propriedades especficas
Os tipos de mdia do CSS permitem definir diferentes regras para cada tipo de mdia. Entretanto,
eventualmente necessrio definir regras CSS de acordo com caractersticas mais especficas dos
dispositivo de sada. Para isso, devemos utilizar as chamadas media queries. Veja o seguinte exem-
plo.
No exemplo acima, as regras CSS sero aplicadas caso o tipo de mdia utilizado seja screen e a
rea de renderizao do documento (viewport) tenha, no mnimo, 500 pixels de largura. Como vimos
as media queries tambm podem ser definidas atravs do atributo media do elemento link.
1 < link
2 rel = " stylesheet "
3 type = " text / css "
4 href = " arquivo . css "
5 media = " screen and ( min - width : 500 px ) " / >
No exemplo abaixo, o cdigo dentro da regra media ser aplicado quando a largura do viewport
for pelo menos 500 pixels ou quando a orientao for portrait.
Eventualmente, uma media query pode no fazer sentido. Considere o seguinte exemplo.
240 www.k19.com.br
241 CSS
No exemplo acima, a media query contraditria, pois o tipo de mdia speech no compatvel
com a propriedade min-width. Dessa forma, o cdigo CSS definido dentro da regra media nunca
ser processado.
Veja a seguir algumas propriedades que podemos utilizar nas media queries
Exerccios de Fixao
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao66.zip
1 @media all {
2 p {
3 font - size : 50 px ;
www.facebook.com/k19treinamentos 241
CSS 242
4 }
5 }
6
7 @media screen {
8 p {
9 color : red ;
10 }
11 }
12
13 @media print {
14 p {
15 color : blue ;
16 }
17 }
18
19 @media handheld , screen and ( max - device - width :480 px ) {
20 p {
21 color : green ;
22 }
23 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao67.zip
http://localhost/css/public_html/media-types.html.
http://localhost/~<USUARIO>/css/public_html/media-types.html.
Sprites
Normalmente, uma pgina web formada por diversas imagens pequenas ou mdias. Se essas
imagens forem adicionadas com o elemento img, o navegador realizar uma requisio HTTP para
cada imagem. Consequentemente, o tempo de carregamento da pgina ser alto devido a quanti-
dade de requisies e ao overhead dos pacotes HTTP.
Analogia
Adicionar individualmente imagens pequenas ou mdias em uma pgina web como
1
80
19
E 8
K X
K
P B 0-
Y
B
K
O
E
D
A
M
ter quer comprar diversos itens pequenos ou mdios no supermercado e fazer uma vi-
agem para trazer cada um deles.
Uma tcnica amplamente utilizada para melhorar o tempo de carregamento das pginas web
denominada sprite. Essa tcnica consiste em agrupar todas as imagens pequenas e mdias em uma
nica imagem grande e depois recort-la com as propriedades CSS.
242 www.k19.com.br
243 CSS
cursos-icones.png
Exerccios de Fixao
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao69.zip
1 li : before {
2 content : " " ;
3 display : inline - block ;
4 width : 44 px ;
5 height : 44 px ;
6 vertical - align : middle ;
7 background - image : url ( " http :// www . k19 . com . br / figs / k19 - logos - sprite . png " ) ;
8 background - repeat : no - repeat ;
www.facebook.com/k19treinamentos 243
CSS 244
9 }
10
11 li . k12 : before {
12 background - position : -44 px 0 px ;
13 }
14
15 li . k21 : before {
16 background - position : -88 px 0 px ;
17 }
18
19 li . k22 : before {
20 background - position : 0 px -44 px ;
21 }
22
23 li . k23 : before {
24 background - position : -44 px -44 px ;
25 }
26
27 li . k20 : before {
28 background - position : -88 px -44 px ;
29 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-fixacao70.zip
http://localhost/css/public_html/sprites.html.
http://localhost/~<USUARIO>/css/public_html/sprites.html.
De acordo com a especificao CSS, os gradientes so semelhantes s imagens. Eles podem ser
definidos em qualquer propriedade que aceite uma imagem como valor.
Mais Sobre
At o momento do fechamento da verso atual desta apostila, o navegador Firefox
s suporta as funes de gradiente nas propriedades background ou background-
image.
Gradiente linear
244 www.k19.com.br
245 CSS
Definio da Lista de
linha do gradiente paradas de cores
linear-gradient( [ <angulo> | to <lado-ou-canto>,]? <parada-de-cor> [, <parada-de-cor>]+ )
<angulo> <lado-ou-canto>
Representa o ngulo de inclinao do gradiente. Representa a regio do box do gradiente na qual a ltima
<parada-de-cor> ser posicionada. formado pelos pares de
<parada-de-cor> lados left | right e/ou top | bottom, no importando a ordem em
Representa uma cor e a posio em que ela deve que aparecem. A primeira <parada-de-cor> ser posicionada na
aparecer sobre a linha do gradiente. regio simetricamente oposta a da ltima <parada-de-cor>.
Linha do gradiente
linear-gradient(to top left, green, yellow)
-
340 -20
Repare que quando a primeira parada de cor comea em uma posio diferente de 0%, o gradi-
ente preenchido com a cor da primeira parada de cor do 0% at essa posio.
A princpio o gradiente linear com repetio funcionar da mesma forma que o gradiente linear.
Seu comportamento s ser alterado nas seguintes situaes:
www.facebook.com/k19treinamentos 245
CSS 246
Se uma ou as duas situaes ocorrerem, o gradiente se repetir para completar as regies da linha
do gradiente sem cores definidas.
Gradiente radial
Para definir um gradiente radial, devemos utilizar a funo radial-gradient.
246 www.k19.com.br
247 CSS
<tamanho> | <porcentagem> <posio>
Representa o tamanho do raio da forma do gradiente. Representa a posio do box do gradiente na qual a primeira
No caso da elipse, o tamanho pode ser dado atravs <parada-de-cor> ser posicionada. Pode ser informada atravs
da porcentagem em relao ao tamanho do box do dos pares de lados left | right e/ou top | bottom, no importando
gradiente. a ordem em que aparecem. Tambm pode receber o valor
center, que o padro. A posio tambm pode ser informada
<parada-de-cor> atravs de coordenadas em relao ao canto superior esquerdo
Representa uma cor e a posio em que ela deve do box do gradiente.
aparecer sobre a linha do gradiente.
<alcance>
Representa a forma como o gradiente ser distribudo dentro do
box do gradiente.
Forma do gradiente
Para definir um gradiente radial com repetio, devemos utilizar a funo repeating-radial-gradient
que recebe exatamente os mesmos parmetros da funo radial-gradient.
A princpio o gradiente radial com repetio funcionar da mesma forma que o gradiente radial.
Seu comportamento s ser alterado nas seguintes situaes:
Se uma ou as duas situaes ocorrerem, o gradiente se repetir para completar as regies da linha
do gradiente sem cores definidas.
Confira o exemplo:
www.facebook.com/k19treinamentos 247
CSS 248
Uma propriedade herda o valor do elemento pai quando atribumos o valor inherit ela.
1 div {
2 color : red ;
3 }
No exemplo acima, a propriedade color foi definida apenas para o elemento div. No elemento p,
essa propriedade assumir o valor padro que inherit, ou seja, ser herdado automaticamente do
elemento pai. Como consequncia a cor do texto do pargrafo ser vermelha.
1 div {
2 border : 1 px solid red ;
3 }
O elemento div ter borda de 1 pixel com cor vermelha. Diferentemente do exemplo anterior, o
pargrafo no herdar o valor para a propriedade border, pois ela no possui o valor inherit como
padro. Se quisssemos que o elemento p herdasse o valor da propriedade border, deveramos defi-
nir as seguintes regras CSS:
1 div {
2 border : 1 px solid red ;
3 }
4
5 p {
6 border : inherit ;
7 }
248 www.k19.com.br
249 CSS
De acordo com o box model, devemos levar em considerao as margens internas, bordas e as
propriedades width e height de um elemento para determinarmos as suas dimenses. No comeo,
isso pode no parecer muito natural, pois tendemos a imaginar a largura e altura final do elemento
como sendo as medidas atribudas somente s propriedades width e height, respectivamente. Isso
acaba gerando uma grande confuso, principalmente para quem est comeando a aprender CSS.
content-box
Comportamento padro. As propriedades width e height definem as dimenses da rea do con-
tedo do elemento.
padding-box
As propriedades width e height definem as dimenses da rea do contedo do elemento em
conjunto com as margens internas.
border-box
As propriedades width e height definem as dimenses da rea do contedo do elemento em
conjunto com as margens internas e bordas.
inherit
Assume o valor da mesma propriedade no elemento HTML pai.
www.facebook.com/k19treinamentos 249
CSS 250
O nmero de usurios que acessam a Internet atravs de dispositivos mveis est cada vez maior
e s tende a crescer. Portanto, os desenvolvedores web devem ficar cada vez mais preocupados em
atender de maneira satisfatria o pblico mobile.
Atender o pblico mobile de maneira satisfatria significa apresentar o contedo de uma pgina
utilizando da melhor forma possvel os recursos do dispositivo.
Por exemplo, uma pgina pode ter uma usabilidade muito boa quando acessada atravs de um
desktop. Porm, ao acess-la atravs de um smartphone, as letras podem ficar muito pequenas, o
contedo pode no se encaixar no tamanho da tela ou as interaes atravs do toque podem no
funcionar to bem se comparadas s interaes realizadas com o mouse.
Uma soluo para esse problema seria a criao de uma verso do site para cada tipo de disposi-
tivo. Geralmente, a verso para desktop a mais completa e as demais possuem recursos reduzidos.
Essa uma soluo adotada por diversos sites. Normalmente, as verses mobile so acessadas atra-
vs de URLs especficas. Em geral, essas URLs comeam com mobile, mob ou at mesmo m (ex:
http://m.kekanto.com). Entretanto, antes de adotar essa soluo devemos levantar algumas ques-
tes:
Muito mais trabalhosa. Basicamente, para cada tipo de dispositivo, teramos um site diferente,
ou seja, teramos que gerenciar dois ou mais sites ao invs de apenas um.
Para cada tipo de dispositivo uma URL diferente. Por exemplo, uma para mobile (http://mob.
dominio.com), outra para televisores (http://tv.dominio.com) e outra para desktops (http://www.
dominio.com). Alm disso, deveramos nos preocupar com o redirecionamento das URLs, pois seria
mais apropriado que um usurio acessando o endereo www.dominio.com atravs de sua televiso
fosse redirecionado para tv.dominio.com.
O usurio vai ficar insatisfeito se ele no puder fazer tudo que ele fazia no desktop?
Sim! Se a verso diferenciada for uma verso reduzida da verso desktop, ele ficar extremamente
decepcionado. Os usurios tendem a querer ter todo o poder do desktop nos smartphones e afins.
Para evitar esses e outros problemas, uma outra soluo que est ganhando cada vez mais fora
parte do princpio de que a pgina deve ser a mesma. O que deve mudar a forma de apresent-la
ao usurio. Essa a ideia do Design Responsivo.
O design responsivo pode ser dividido em trs partes principais: layouts flexveis, media queries
e mdias flexveis. A seguir iremos discutir sobre cada parte.
250 www.k19.com.br
251 CSS
Layouts Flexveis
A ideia por trs dos layouts flexveis fazer com que os elementos de uma pgina sejam capazes
de terem as suas dimenses adaptadas dinamicamente. Isso bem interessante quando queremos
que o layout da pgina se adapte a diferentes tamanhos de tela ou alguns elementos sejam redimen-
sionados aps uma interao do usurio, por exemplo.
Quando criamos layouts estticos, em geral, trabalhamos com unidades de medida estticas
como px, pt, in, cm e etc. Ao criarmos layouts flexveis passamos a trabalhar muito mais com as
unidades relativas como %, em, ex e etc. Fazemos isso para evitar que ocorram deformaes ou
overflow na apresentao do contedo.
Para facilitar o trabalho de quem desenhar o layout de uma pgina e tambm de quem pro-
duzir o cdigo HTML e CSS, uma tcnica muito comum a de tentar visualizar a tela como um
sistema de grades. Nesse sistema, cada grade deve ter as suas dimenses definidas com unidades de
medida relativas. Dessa forma, se a tela do usurio for redimensionada, todo o sistema de grade ser
reajustado.
Layout esttico
Layout flexvel
Media Queries
Como o objetivo do design responsivo apresentar o contedo de uma pgina de maneiras dife-
rentes em dispositivos com tamanhos de telas diferentes, em algum momento sentiremos a necessi-
dade de criar regras CSS para cada tamanho de tela ou para cada conjunto de tamanho de telas. Em
uma situao como essa, as media queries se encaixam perfeitamente e devemos utiliz-las.
Breakpoints
O ponto principal da relao das media queries com o design responsivo a definio daquilo
que chamamos de breakpoints (pontos de quebra). Muitos autores costumam definir esses pontos
www.facebook.com/k19treinamentos 251
CSS 252
em torno dos tamanhos dos viewports mais comuns como 320px, 480px, 768px, 1024px e assim por
diante. Essa uma estratgia normalmente chamada de device-driven breakpoints, device-based
breakpoints ou pontos de quebra orientados dispositivos. Evite essa tcnica, pois, como o prprio
nome diz, ela faz com que as regras CSS sejam aplicadas quando uma pgina for aberta em dispositi-
vos com tamanhos de tela esperados, ou seja, a pgina poder estar despreparada quando for aberta
por um dispositivo com tela de 400px, por exemplo.
Uma estratgia muito mais interessante a que chamamos de content-driven breakpoints, content-
based breakpoints ou pontos de quebra orientados ao contedo. Nessa estratgia definimos os pon-
tos de quebra observando se o contedo da pgina se acomoda corretamente ao tamanho do view-
port. Uma tcnica muito eficiente comear do menor para o maior tamanho de viewport. Em geral,
o menor tamanho refere-se aos dispositivos mobile e, por isso, a tcnica recebe o nome de mobile
first.
Aplicar a estratgia do content-drive breakpoints juntamente com a tcnica mobile first re-
lativamente simples: redimensione a janela do navegador para que o viewport fique com o menor
tamanho esperado (mobile). Esse ser o primeiro breakpoint. Aplique as regras CSS na pgina e em
seguida redimensione a janela do navegador at que o contedo no seja apresentado corretamente
ou a pgina tenha o layout quebrado. Quando isso ocorrer significa que encontramos o prximo
breakpoint. Nesse breakpoint, aplique as regras CSS para que a pgina volte a ser apresentada corre-
tamente. Repita esse processo at considerar que tenha definido todos os breakpoints necessrios.
Mdias Flexveis
Para criarmos uma pgina que seja confortvel para a leitura, devemos ajustar o posicionamento
e a dimenso dos elementos conforme vimos anteriormente. As imagens, players de vdeo e udio
no so excees. Entretanto, quando trabalhamos com certos tipos de mdias devemos ter alguns
cuidados especiais.
Suponha uma imagem de 320px de largura que gostaramos de exibir em uma pgina de maneira
que ela se adapte largura da tela. Conseguiramos fazer isso utilizando a propriedade width: 100%,
por exemplo. Veja abaixo como ficaria essa pgina exibida em um smartphone e em um desktop.
Smartphone Desktop
Na imagem acima podemos perceber que a qualidade da imagem diminuiu ao estic-la. Para
evitar ou amenizar esse tipo de problema poderamos criar diversas verses da imagem, uma para
252 www.k19.com.br
253 CSS
cada breakpoint. Poderamos tambm obter uma imagem original de tamanho maior, pois, em geral,
diminuir uma imagem perde menos qualidade do que esticar. Ou ainda, dependendo da imagem,
poderamos utilizar uma verso vetorial da mesma. Como podemos observar, existem diversas tc-
nicas para resolver esse tipo de problema e, caso tenha interesse, procure por Icon Fonts, formato de
imagem SVG e Compressive Images. Esses so termos muito utilizados por tcnicas de otimizao
de imagens na web.
No caso dos players de vdeo e udio recomendamos a leitura do artigo neste endereo: http:
//alistapart.com/article/creating-intrinsic-ratios-for-video
Exerccios Complementares
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar1.zip
1 div {
2 height : 100 px ;
3 width : 400 px ;
4 }
5
6 # div1 {
7 background - color : red ;
8 }
9
10 # div2 {
11 background - color : #00 ff00 ;
12 }
13
14 # div3 {
15 background - color : rgb (0 , 0 , 255) ;
16 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar2.zip
www.facebook.com/k19treinamentos 253
CSS 254
http://localhost/css/public_html/background-color.html.
http://localhost/~<USUARIO>/css/public_html/background-color.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar4.zip
1 body {
2 background - image :
3 url ( " http :// www . k19 . com . br / figs / planeta . png " ) ,
4 url ( " http :// www . k19 . com . br / figs / fundo . jpg " ) ;
5 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar5.zip
http://localhost/css/public_html/background-image.html.
http://localhost/~<USUARIO>/css/public_html/background-image.html.
254 www.k19.com.br
255 CSS
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar7.zip
1 div {
2 height : 300 px ;
3 width : 400 px ;
4 border : 1 px solid black ;
5 margin : 10 px ;
6 }
7
8 # div1 {
9 background - image : url ( " http :// www . k19 . com . br / figs / planeta - small . png " ) ;
10 }
11
12 # div2 {
13 background - image : url ( " http :// www . k19 . com . br / figs / planeta - small . png " ) ;
14 background - repeat : no - repeat ;
15 }
16
17 # div3 {
18 background - image : url ( " http :// www . k19 . com . br / figs / planeta - small . png " ) ;
19 background - repeat : repeat - x ;
20 }
21
22 # div4 {
23 background - image : url ( " http :// www . k19 . com . br / figs / planeta - small . png " ) ;
24 background - repeat : repeat - y ;
25 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar8.zip
http://localhost/css/public_html/background-repeat.html.
http://localhost/~<USUARIO>/css/public_html/background-repeat.html.
www.facebook.com/k19treinamentos 255
CSS 256
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar10.zip
1 body {
2 height : 2000 px ;
3 background - image : url ( " http :// www . k19 . com . br / figs / fundo . jpg " ) ;
4 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar11.zip
http://localhost/css/public_html/background-attachment.html.
http://localhost/~<USUARIO>/css/public_html/background-attachment.html.
1 body {
2 height : 2000 px ;
3 background - image : url ( " http :// www . k19 . com . br / figs / fundo . jpg " ) ;
4 background - attachment : fixed ;
5 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar13.zip
http://localhost/css/public_html/background-attachment.html.
http://localhost/~<USUARIO>/css/public_html/background-attachment.html.
256 www.k19.com.br
257 CSS
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar15.zip
1 body {
2 background - image : url ( " http :// www . k19 . com . br / figs / planeta - small . png " ) ;
3 background - repeat : no - repeat ;
4 background - position : center top ;
5 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar16.zip
http://localhost/css/public_html/background-position.html.
http://localhost/~<USUARIO>/css/public_html/background-position.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar18.zip
www.facebook.com/k19treinamentos 257
CSS 258
1 div {
2 width : 400 px ;
3 height : 50 px ;
4 margin : 10 px ;
5 padding : 50 px ;
6 border : 10 px dotted black ;
7 background - color : yellow ;
8 }
9
10 # div1 {
11 background - clip : border - box ;
12 }
13
14 # div2 {
15 background - clip : padding - box ;
16 }
17
18 # div3 {
19 background - clip : content - box ;
20 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar19.zip
http://localhost/css/public_html/background-clip.html.
http://localhost/~<USUARIO>/css/public_html/background-clip.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar21.zip
1 div {
2 width : 400 px ;
3 height : 100 px ;
4 margin : 10 px ;
5 padding : 25 px ;
258 www.k19.com.br
259 CSS
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar22.zip
http://localhost/css/public_html/background-origin.html.
http://localhost/~<USUARIO>/css/public_html/background-origin.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar24.zip
1 div {
2 width : 400 px ;
3 height : 100 px ;
4 margin : 10 px ;
5 padding : 25 px ;
6 border : 10 px dotted black ;
7 background - repeat : no - repeat ;
8 background - image : url ( " http :// www . k19 . com . br / figs / planeta - small . png " ) ;
9 }
10
www.facebook.com/k19treinamentos 259
CSS 260
11 # div1 {
12 background - size : 50 px auto ;
13 }
14
15 # div2 {
16 background - size : cover ;
17 }
18
19 # div3 {
20 background - size : contain ;
21 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar25.zip
http://localhost/css/public_html/background-size.html.
http://localhost/~<USUARIO>/css/public_html/background-size.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar27.zip
1 # p1 {
2 color : red ;
3 }
4
5 # p2 {
6 color : #00 ff00 ;
7 }
8
9 # p3 {
10 color : rgb (0 , 0 , 255) ;
11 }
260 www.k19.com.br
261 CSS
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar28.zip
http://localhost/css/public_html/color.html.
http://localhost/~<USUARIO>/css/public_html/color.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar30.zip
1 p {
2 border : 1 px solid black ;
3 width : 400 px ;
4 }
www.facebook.com/k19treinamentos 261
CSS 262
5
6 # p1 {
7 text - align : left ;
8 }
9
10 # p2 {
11 text - align : center ;
12 }
13
14 # p3 {
15 text - align : right ;
16 }
17
18 # p4 {
19 text - align : justify ;
20 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar31.zip
http://localhost/css/public_html/text-align.html.
http://localhost/~<USUARIO>/css/public_html/text-align.html.
262 www.k19.com.br
263 CSS
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar33.zip
1 p {
2 width : 400 px ;
3 }
4
5 # p1 {
6 text - decoration : underline ;
7 }
8
9 # p2 {
10 text - decoration : overline ;
11 }
12
13 # p3 {
14 text - decoration : line - through ;
15 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar34.zip
http://localhost/css/public_html/text-decoration.html.
http://localhost/~<USUARIO>/css/public_html/text-decoration.html.
www.facebook.com/k19treinamentos 263
CSS 264
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar36.zip
1 p {
2 width : 400 px ;
3 }
4
5 # p1 {
6 text - transform : capitalize ;
7 }
8
9 # p2 {
10 text - transform : uppercase ;
11 }
12
13 # p3 {
14 text - transform : lowercase ;
15 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar37.zip
http://localhost/css/public_html/text-transform.html.
http://localhost/~<USUARIO>/css/public_html/text-transform.html.
264 www.k19.com.br
265 CSS
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar39.zip
1 p {
2 width : 400 px ;
3 }
4
5 # p1 {
6 text - indent : 0 px ;
7 }
8
9 # p2 {
10 text - indent : 30 px ;
11 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar40.zip
http://localhost/css/public_html/text-indent.html.
http://localhost/~<USUARIO>/css/public_html/text-indent.html.
www.facebook.com/k19treinamentos 265
CSS 266
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar42.zip
1 # p1 {
2 letter - spacing : 2 px ;
3 }
4
5 # p2 {
6 letter - spacing : -2 px ;
7 }
8
9 # p3 {
10 letter - spacing : 4 px ;
11 }
12
13 # p4 {
14 letter - spacing : 6 px ;
15 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar43.zip
http://localhost/css/public_html/letter-spacing.html.
http://localhost/~<USUARIO>/css/public_html/letter-spacing.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar45.zip
266 www.k19.com.br
267 CSS
1 # p1 {
2 word - spacing : 10 px ;
3 }
4
5 # p2 {
6 word - spacing : -5 px ;
7 }
8
9 # p3 {
10 word - spacing : 30 px ;
11 }
12
13 # p4 {
14 word - spacing : 50 px ;
15 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar46.zip
http://localhost/css/public_html/word-spacing.html.
http://localhost/~<USUARIO>/css/public_html/word-spacing.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar48.zip
1 p {
2 width : 100 px ;
3 border : 1 px solid black ;
4 }
5
www.facebook.com/k19treinamentos 267
CSS 268
6 # p1 {
7 word - wrap : break - word ;
8 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar49.zip
http://localhost/css/public_html/word-wrap.html.
http://localhost/~<USUARIO>/css/public_html/word-wrap.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar51.zip
1 p {
2 width : 400 px ;
3 border : 1 px solid black ;
4 }
5
6 # p1 {
7 line - height : 20 px ;
8 }
9
10 # p2 {
11 line - height : 40 px ;
12 }
268 www.k19.com.br
269 CSS
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar52.zip
http://localhost/css/public_html/line-height.html.
http://localhost/~<USUARIO>/css/public_html/line-height.html.
www.facebook.com/k19treinamentos 269
CSS 270
49
50 Sed
51 dui nulla , cursus et lacinia eu , vulputate ac dolor .
52 Quisque faucibus congue congue .
53 </ p >
54 </ body >
55 </ html >
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar54.zip
1 p {
2 width : 400 px ;
3 border : 1 px solid black ;
4 }
5
6 # p1 {
7 white - space : nowrap ;
8 }
9
10 # p2 {
11 white - space : pre ;
12 }
13
14 # p3 {
15 white - space : pre - line ;
16 }
17
18 # p4 {
19 white - space : pre - wrap ;
20 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar55.zip
http://localhost/css/public_html/white-space.html.
http://localhost/~<USUARIO>/css/public_html/white-space.html.
270 www.k19.com.br
271 CSS
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar57.zip
1 p {
2 font - size : xx - large ;
3 }
4
5 # p1 {
6 text - shadow : 3 px 3 px # ff0000 ;
7 }
8
9 # p2 {
10 text - shadow : -3 px -3 px # ff0000 ;
11 }
12
13 # p3 {
14 text - shadow : 0 0 10 px # ff0000 ;
15 }
16
17 # p4 {
18 text - shadow : 10 px 10 px 10 px # ff0000 ;
19 }
20
21 # p5 {
22 text - shadow : 5 px 5 px 5 px # ff0000 , -5 px -5 px 5 px #0000 ff ;
23 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar58.zip
http://localhost/css/public_html/text-shadow.html.
http://localhost/~<USUARIO>/css/public_html/text-shadow.html.
www.facebook.com/k19treinamentos 271
CSS 272
4 < meta http - equiv = " Content - Type " content = " text / html ; charset = UTF -8 " >
5 < title > K19 - font - family </ title >
6 < link rel = " stylesheet " type = " text / css " href = " font - family . css " >
7 </ head >
8 < body >
9 <p id = " p1 " >
10 Lorem ipsum dolor sit amet , consectetur adipiscing elit .
11 </ p >
12 <p id = " p2 " >
13 Lorem ipsum dolor sit amet , consectetur adipiscing elit .
14 </ p >
15 <p id = " p3 " >
16 Lorem ipsum dolor sit amet , consectetur adipiscing elit .
17 </ p >
18 <p id = " p4 " >
19 Lorem ipsum dolor sit amet , consectetur adipiscing elit .
20 </ p >
21 <p id = " p5 " >
22 Lorem ipsum dolor sit amet , consectetur adipiscing elit .
23 </ p >
24 </ body >
25 </ html >
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar60.zip
1 p {
2 font - size : xx - large ;
3 }
4
5 # p1 {
6 font - family : " Arial " ;
7 }
8
9 # p2 {
10 font - family : " Courier " ;
11 }
12
13 # p3 {
14 font - family : " Verdana " ;
15 }
16
17 # p4 {
18 font - family : " serif " ;
19 }
20
21 # p5 {
22 font - family : " cursive " ;
23 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar61.zip
http://localhost/css/public_html/font-family.html.
272 www.k19.com.br
273 CSS
http://localhost/~<USUARIO>/css/public_html/font-family.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar63.zip
1 # p1 {
2 font - size : x - small ;
3 }
4
5 # p2 {
6 font - size : x - large ;
7 }
8
9 # p3 {
10 font - size : xx - large ;
11 }
12
13 # p4 {
14 font - size : 18 px ;
15 }
16
17 # p5 {
18 font - size : 30 px ;
19 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar64.zip
www.facebook.com/k19treinamentos 273
CSS 274
http://localhost/css/public_html/font-size.html.
http://localhost/~<USUARIO>/css/public_html/font-size.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar66.zip
1 p {
2 font - size : xx - large ;
3 }
4
5 # p1 {
6 font - style : italic ;
7 }
8
9 # p2 {
10 font - style : oblique ;
11 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar67.zip
http://localhost/css/public_html/font-style.html.
http://localhost/~<USUARIO>/css/public_html/font-style.html.
274 www.k19.com.br
275 CSS
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar69.zip
1 p {
2 font - size : xx - large ;
3 }
4
5 # p1 {
6 font - variant : small - caps ;
7 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar70.zip
http://localhost/css/public_html/font-variant.html.
http://localhost/~<USUARIO>/css/public_html/font-variant.html.
www.facebook.com/k19treinamentos 275
CSS 276
14 </ p >
15 <p id = " p3 " >
16 Lorem ipsum dolor sit amet , consectetur adipiscing elit .
17 </ p >
18 </ body >
19 </ html >
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar72.zip
1 p {
2 font - size : xx - large ;
3 }
4
5 # p1 {
6 font - weight : 400;
7 }
8
9 # p2 {
10 font - weight : 700;
11 }
12
13 # p3 {
14 font - weight : bold ;
15 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar73.zip
http://localhost/css/public_html/font-weight.html.
http://localhost/~<USUARIO>/css/public_html/font-weight.html.
276 www.k19.com.br
277 CSS
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar75.zip
1 p {
2 font - size : xx - large ;
3 }
4
5 # p1 {
6 font - family : " Norican " ;
7 }
8
9 # p2 {
10 font - family : " Bad Script " ;
11 }
12
13 # p3 {
14 font - family : " Ceviche One " ;
15 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar76.zip
http://localhost/css/public_html/font-face.html.
http://localhost/~<USUARIO>/css/public_html/font-face.html.
www.facebook.com/k19treinamentos 277
CSS 278
18 </ ul >
19 < ul id = " ul3 " >
20 < li > K01 - Lgica de Programao </ li >
21 < li > K02 - Desenvolvimento Web com HTML , CSS e JavaScript </ li >
22 < li > K03 - Modelo Relacional e SQL </ li >
23 </ ul >
24 < ol id = " ol1 " >
25 < li > K01 - Lgica de Programao </ li >
26 < li > K02 - Desenvolvimento Web com HTML , CSS e JavaScript </ li >
27 < li > K03 - Modelo Relacional e SQL </ li >
28 </ ol >
29 < ol id = " ol2 " >
30 < li > K01 - Lgica de Programao </ li >
31 < li > K02 - Desenvolvimento Web com HTML , CSS e JavaScript </ li >
32 < li > K03 - Modelo Relacional e SQL </ li >
33 </ ol >
34 < ol id = " ol3 " >
35 < li > K01 - Lgica de Programao </ li >
36 < li > K02 - Desenvolvimento Web com HTML , CSS e JavaScript </ li >
37 < li > K03 - Modelo Relacional e SQL </ li >
38 </ ol >
39 </ body >
40 </ html >
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar78.zip
1 # ul1 {
2 list - style - type : disc ;
3 }
4
5 # ul2 {
6 list - style - type : circle ;
7 }
8
9 # ul3 {
10 list - style - type : square ;
11 }
12
13 # ol1 {
14 list - style - type : decimal ;
15 }
16
17 # ol2 {
18 list - style - type : lower - latin ;
19 }
20
21 # ol3 {
22 list - style - type : georgian ;
23 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar79.zip
http://localhost/css/public_html/list-style-type.html.
278 www.k19.com.br
279 CSS
http://localhost/~<USUARIO>/css/public_html/list-style-type.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar81.zip
1 # ul1 {
2 list - style - image : url ( " http :// www . k19 . com . br / figs / star . png " ) ;
3 }
4
5 # ul2 {
6 list - style - image : url ( " http :// www . k19 . com . br / figs / cake . png " ) ;
7 }
8
9 # ul3 {
10 list - style - image : url ( " http :// www . k19 . com . br / figs / flying_heart . png " ) ;
11 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar82.zip
http://localhost/css/public_html/list-style-image.html.
http://localhost/~<USUARIO>/css/public_html/list-style-image.html.
www.facebook.com/k19treinamentos 279
CSS 280
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar84.zip
1 li {
2 border : 1 px solid black ;
3 }
4
5 # ul1 {
6 list - style - position : inside ;
7 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar85.zip
http://localhost/css/public_html/list-style-position.html.
http://localhost/~<USUARIO>/css/public_html/list-style-position.html.
280 www.k19.com.br
281 CSS
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar87.zip
1 div {
2 width : 400 px ;
3 height : 200 px ;
4 margin : 10 px ;
5 border - width : 6 px ;
6 }
7
8 # div1 {
9 border - style : dotted ;
10 }
11
12 # div2 {
13 border - style : dashed ;
14 }
15
16 # div3 {
17 border - style : solid ;
18 }
19
20 # div4 {
21 border - style : double ;
22 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar88.zip
http://localhost/css/public_html/border-style.html.
http://localhost/~<USUARIO>/css/public_html/border-style.html.
www.facebook.com/k19treinamentos 281
CSS 282
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar90.zip
1 div {
2 width : 400 px ;
3 height : 200 px ;
4 margin : 10 px ;
5 border - style : solid ;
6 }
7
8 # div1 {
9 border - width : thin ;
10 }
11
12 # div2 {
13 border - width : thick ;
14 }
15
16 # div3 {
17 border - width : 2 px ;
18 }
19
20 # div4 {
21 border - width : 10 px ;
22 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar91.zip
http://localhost/css/public_html/border-width.html.
http://localhost/~<USUARIO>/css/public_html/border-width.html.
282 www.k19.com.br
283 CSS
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar93.zip
1 div {
2 width : 400 px ;
3 height : 200 px ;
4 border - style : solid ;
5 }
6
7 # div1 {
8 border - color : red ;
9 }
10
11 # div2 {
12 border - color : #00 ff00 ;
13 }
14
15 # div3 {
16 border - color : rgb (0 , 0 , 255) ;
17 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar94.zip
http://localhost/css/public_html/border-color.html.
http://localhost/~<USUARIO>/css/public_html/border-color.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar96.zip
1 div {
2 width : 400 px ;
3 height : 200 px ;
4
www.facebook.com/k19treinamentos 283
CSS 284
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar97.zip
http://localhost/css/public_html/bordas-individuais.html.
http://localhost/~<USUARIO>/css/public_html/bordas-individuais.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar99.zip
1 div {
2 width : 400 px ;
3 height : 100 px ;
4 margin : 10 px ;
5 border : 2 px solid black ;
6 }
7
8 # div1 {
9 border - radius : 20 px ;
284 www.k19.com.br
285 CSS
10 }
11
12 # div2 {
13 border - radius : 20 px 60 px ;
14 }
15
16 # div3 {
17 border - radius : 20 px 60 px 100 px ;
18 }
19
20 # div4 {
21 border - radius : 20 px 60 px 100 px 140 px ;
22 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar100.zip
http://localhost/css/public_html/border-radius.html.
http://localhost/~<USUARIO>/css/public_html/border-radius.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar102.zip
www.facebook.com/k19treinamentos 285
CSS 286
1 table {
2 border : 2 px solid black ;
3 margin : 10 px ;
4 }
5
6 td {
7 border : 2 px solid black ;
8 }
9
10 # tabela1 {
11 border - collapse : collapse ;
12 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar103.zip
http://localhost/css/public_html/border-collapse.html.
http://localhost/~<USUARIO>/css/public_html/border-collapse.html.
286 www.k19.com.br
287 CSS
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar105.zip
1 table {
2 border : 2 px solid black ;
3 margin : 10 px ;
4 }
5
6 td {
7 border : 2 px solid black ;
8 }
9
10 # tabela1 {
11 border - spacing : 10 px 5 px ;
12 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar106.zip
http://localhost/css/public_html/border-spacing.html.
http://localhost/~<USUARIO>/css/public_html/border-spacing.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar108.zip
1 div {
2 width : 400 px ;
3 height : 100 px ;
4 margin : 10 px ;
5 }
6
7 # div1 {
www.facebook.com/k19treinamentos 287
CSS 288
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar109.zip
http://localhost/css/public_html/outline-style.html.
http://localhost/~<USUARIO>/css/public_html/outline-style.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar111.zip
1 div {
2 width : 400 px ;
3 height : 100 px ;
4 margin : 10 px ;
5 outline - style : solid ;
6 }
7
8 # div1 {
9 outline - color : red ;
10 }
11
12 # div2 {
13 outline - color : #00 ff00 ;
14 }
15
16 # div3 {
288 www.k19.com.br
289 CSS
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar112.zip
http://localhost/css/public_html/outline-color.html.
http://localhost/~<USUARIO>/css/public_html/outline-color.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar114.zip
1 div {
2 width : 400 px ;
3 height : 100 px ;
4 margin : 20 px ;
5 outline - style : solid ;
6 }
7
8 # div1 {
9 outline - width : thin ;
10 }
11
12 # div2 {
13 outline - width : thick ;
14 }
15
16 # div3 {
17 outline - width : 2 px ;
18 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar115.zip
www.facebook.com/k19treinamentos 289
CSS 290
http://localhost/css/public_html/outline-width.html.
http://localhost/~<USUARIO>/css/public_html/outline-width.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar117.zip
1 div {
2 width : 400 px ;
3 height : 50 px ;
4 margin : 50 px ;
5 outline : 5 px solid red ;
6 border : 5 px solid black ;
7 }
8
9 # div1 {
10 outline - offset : 20 px ;
11 }
12
13 # div2 {
14 outline - offset : -20 px ;
15 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar118.zip
http://localhost/css/public_html/outline-offset.html.
http://localhost/~<USUARIO>/css/public_html/outline-offset.html.
290 www.k19.com.br
291 CSS
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar120.zip
1 div {
2 width : 200 px ;
3 height : 100 px ;
4 border : 4 px solid black ;
5 margin : 50 px ;
6 }
7
8 # div1 {
9 box - shadow : 10 px 5 px gray ;
10 }
11
12 # div2 {
13 box - shadow : 10 px 5 px 5 px gray ;
14 }
15
16 # div3 {
17 box - shadow : inset 10 px 10 px gray ;
18 }
19
20 # div4 {
21 box - shadow : inset 10 px 10 px 5 px gray ;
22 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar121.zip
http://localhost/css/public_html/box-shadow.html.
http://localhost/~<USUARIO>/css/public_html/box-shadow.html.
www.facebook.com/k19treinamentos 291
CSS 292
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar123.zip
1 div {
2 display : inline - block ;
3 border : 1 px solid black ;
4 width : 100 px ;
5 height : 100 px ;
6 }
7
8 # div1 {
9 margin - top : 50 px ;
10 margin - right : 50 px ;
11 }
12
13 # div2 {
14 margin - bottom : 50 px ;
15 }
16
17 # div3 {
18 margin - left : 50 px ;
19 }
20
21 # div4 {
22 margin - left : 50 px ;
23 margin - bottom : 50 px ;
24 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar124.zip
http://localhost/css/public_html/margens-externas.html.
http://localhost/~<USUARIO>/css/public_html/margens-externas.html.
292 www.k19.com.br
293 CSS
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar126.zip
1 div {
2 display : inline - block ;
3 border : 2 px solid black ;
4 width : 100 px ;
5 height : 100 px ;
6 background - color : yellow ;
7 background - clip : content - box ;
8 }
9
10 # div1 {
11 padding - top : 50 px ;
12 padding - right : 50 px ;
13 }
14
15 # div2 {
16 padding - bottom : 50 px ;
17 }
18
19 # div3 {
20 padding - left : 50 px ;
21 }
22
23 # div4 {
24 padding - left : 50 px ;
25 padding - bottom : 50 px ;
26 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar127.zip
http://localhost/css/public_html/margens-internas.html.
http://localhost/~<USUARIO>/css/public_html/margens-internas.html.
www.facebook.com/k19treinamentos 293
CSS 294
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar129.zip
1 p {
2 border : 1 px solid black ;
3 max - height : 200 px ;
4 max - width : 400 px ;
5 }
6
7 # p1 {
8 width : 200 px ;
9 }
10
11 # p2 {
12 height : 130 px ;
13 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-css-complementar130.zip
http://localhost/css/public_html/conteudo-dimensao.html.
294 www.k19.com.br
295 CSS
http://localhost/~<USUARIO>/css/public_html/conteudo-dimensao.html.
Resumo do Captulo
4 De acordo com o Box Model, cada box possui contedo, margens internas, bordas e margens
externas.
5 Por padro, os boxes dos block-level elements ocupam todo o espao horizontal do elemento
pai e provocam quebras de linha.
6 Por padro, os boxes dos inline-level elements ocupam apenas o espao necessrio e no
provocam quebras de linha.
8 Uma regra CSS composta por seletor e corpo. No corpo, so definidas as propriedades CSS.
9 Os seletores definem quais elementos HTML sero afetados pelas regras CSS.
11 As regras CSS podem ser aplicadas aos documentos HTML de trs formas diferentes: inline
style, internal style sheet e external style sheet.
13 Na linguagem CSS, toda cor est associada a um cdigo numrico expresso em hexadecimal.
Algumas cores possuem nome.
www.facebook.com/k19treinamentos 295
CSS 296
14 Podemos escolher uma cor atravs do cdigo dela ou atravs das funes rgb(), rgba(), hsl() e
hsla(). As cores que possuem nome podem ser escolhidas atravs do seu nome.
15 As unidades absolutas da linguagem CSS so: cm, mm, in, pt, pc e px.
16 As unidades relativas da linguagem CSS so: em, ex, ch, rem, vw, vh, vmin e vmax.
296 www.k19.com.br
297 CSS
37 Quando ocorre conflito entre duas ou mais regras CSS, devemos calcular a prioridade dos
seletores dessas regras para saber qual delas ser aplicada.
38 Com as media queries podemos definir formataes especficas para os diversos tipos de dis-
positivos que desejamos suportar.
Prova
1 Considere a formatao padro dos navegadores. O que podemos dizer sobre um block-level
element?
www.facebook.com/k19treinamentos 297
CSS 298
quebras de linha.
d) Ocupa horizontalmente somente o espao necessrio para o seu contedo e provocam que-
bras de linha.
2 Considere a formatao padro dos navegadores. O que podemos dizer sobre um inline-level
element?
d) Ocupa horizontalmente somente o espao necessrio para o seu contedo e provocam que-
bras de linha.
1 < link rel = " stylesheet " type = " text / css " src = " estilo . css " > </ link >.
1 < style rel = " stylesheet " type = " text / css " src = " estilo . css " > </ style >
1 < link rel = " stylesheet " type = " text / css " href = " estilo . css " > </ link >
1 < stylesheet src = " estilo . css " > </ stylesheet >
298 www.k19.com.br
299 CSS
a) red
b) #00ff00
c) preto
a) px
b) em
c) rem
d) qm
e) pc
6 Qual das propriedades abaixo pode ser utilizada para definir uma imagem de fundo de um
elemento?
a) background-attachment
b) background
c) bg-color
d) background-size
e) bg-image
7 Para definirmos a cor da fonte de um texto, qual propriedade CSS devemos utilizar?
a) color
b) font-color
c) text-color
d) foreground-color
e) colour
www.facebook.com/k19treinamentos 299
CSS 300
1 < div > Lorem ipsum dolor sit amet , consectetur adipiscing elit .
2
3 Cras vehicula bibendum arcu .
4 Sed dui nulla , cursus et lacinia eu ,
5 vulputate ac dolor .
6 Quisque faucibus congue congue . </ div >
a) Todas as sequncias de espaos sero tratadas como um nico espao e as quebras de linha
sero respeitadas.
c) Todas as sequncias de espaos sero respeitadas e as quebras de linha sero tratadas como
um espao.
d) Todas as sequncias de espaos sero tratadas como um nico espao e as quebras de linha
sero ignoradas.
e) Todas as sequncias de espaos sero tratadas como um nico espao e as quebras de linha
sero tratadas como um espao.
9 Para alterar o comportamento padro com relao ao tratamento dos espaos e quebras de linha,
devemos utilizar qual propriedade CSS?
a) white-space
b) word-spacing
c) word-wrap
d) line-height
e) white-spacing
10 Podemos alterar a fonte de um texto atravs da propriedade CSS font-family. Quais valores
podem ser atribudos a essa propriedade?
300 www.k19.com.br
301 CSS
1 width : 100 px ;
2 border : 10 px solid black ;
3 margin : 10 px ;
4 padding : 10 px ;
a) 120px de largura.
b) 120px de altura.
c) 130px de largura.
d) 140px de altura.
e) 160px de largura.
12 Qual a diferena entre uma borda produzida pela propriedade outline e outra produzida pela
propriedade border?
a) Nenhuma diferena.
c) A borda produzida pela propriedade outline no pode ter sua cor alterada.
13 Podemos utilizar a propriedade display com valor none ou a propriedade visibility com valor
hidden para fazer com que um elemento no aparea em uma pgina HTML. Qual a diferena entre
as duas abordagens?
a) Nenhuma diferena.
b) O espao do box de um elemento com propriedade display igual a none permanece inalterado.
c) O espao do box de um elemento com propriedade visibility igual a hidden deixa de existir.
d) O espao do box de um elemento com propriedade display igual a none deixa de existir.
e) Se o valor none for atribudo a propriedade display, ela no poder mudar mais de valor.
www.facebook.com/k19treinamentos 301
CSS 302
1 position : absolute ;
2 top : 0 px ;
3 left : 0 px ;
d) Ser posicionado a 0px do topo e 0px da esquerda do primeiro elemento ancestral que tenha a
propriedade position diferente de static.
e) Ser posicionado a 0px do topo e 0px da esquerda do primeiro elemento ancestral que tenha
a propriedade position diferente de static. Caso nenhum ancestral se encaixe nessa condio,
ele ser posicionado a 0px do topo e 0px da esquerda da pgina.
b) O trecho do contedo que ultrapassar na vertical os limites do elemento div ser exibido.
d) O trecho do contedo que ultrapassar na horizontal os limites do elemento div ser exibido.
1 < div id = " div1 " class = " class1 " >
2 <p id = " p1 " > Lorem ipsum dolor sit amet . </ p >
3 <p id = " p2 " class = " class1 " > Lorem ipsum dolor sit amet . </ p >
4 < div id = " div2 " >
5 Lorem ipsum dolor sit amet .
6 <p id = " p3 " class = " class1 " > Lorem ipsum dolor sit amet . </ p >
7 < div id = " div3 " >
8 Lorem ipsum dolor sit amet .
9 <p id = " p4 " class = " class1 " > Lorem ipsum dolor sit amet . </ p >
10 </ div >
302 www.k19.com.br
303 CSS
O que podemos dizer sobre as regras CSS definidas dentro da media query acima?
a) Sero aplicadas quando o viewport tiver 480px e a altura do viewport for maior que a sua lar-
gura.
b) Sero aplicadas apenas quando a largura do viewport for maior que a sua altura.
d) Sero aplicadas quando o viewport tiver 480px ou a altura do viewport for maior que a sua
largura.
13 17
Minha Pontuao Pontuao Mnima: Pontuao Mxima:
www.facebook.com/k19treinamentos 303
CSS 304
304 www.k19.com.br
CAPTULO
J AVA S CRIPT
4
Nos captulos anteriores, vimos que as linguagens HTML e a CSS so fundamentais para a cria-
o de pginas web. O foco do HTML o contedo enquanto o foco do CSS a formatao dessas
pginas.
JavaScript interno
O cdigo JavaScript pode ser definido dentro de um documento HTML no corpo do elemento
script.
JavaScript externo
O cdigo JavaScript pode ser definido em arquivos separados e depois associados aos documen-
tos HTML atravs do elemento script.
1 < script src = " script . js " > </ script >
Nessa outra abordagem, podemos reutilizar o mesmo cdigo JavaScript em vrios documentos
HTML.
Carregamento
www.facebook.com/k19treinamentos 305
J AVA S CRIPT 306
Como vimos, o elemento script permite associar cdigo JavaScript aos documentos HTML. Esse
elemento pode ser adicionado dentro do corpo dos elementos head e body. A localizao do ele-
mento script afeta o momento no qual o cdigo JavaScript ser carregado pelos navegadores.
No exemplo a seguir, o elemento script foi colocado dentro do corpo do head. Dessa forma, o
cdigo JavaScript ser carregado antes do body ser processado. Consequentemente, a pgina s ser
exibida depois do carregamento do JavaScript.
Normalmente, a segunda abordagem mais recomendada pois as pginas web so exibidas mais
rapidamente aos usurios. Contudo, eventualmente, o cdigo JavaScript deve ser utilizado antes do
processamento dos elementos do body. Nesses casos, necessrio utilizar a primeira abordagem.
Chrome DevTools
Os navegadores oferecem alguns recursos para testar ou depurar cdigo JavaScript. Nas imagens
abaixo, mostramos a utilizao do painel Console do Chrome DevTools.
306 www.k19.com.br
307 J AVA S CRIPT
www.facebook.com/k19treinamentos 307
J AVA S CRIPT 308
Exerccios de Fixao
Importante
No Windows, utilizando o IIS (Internet Information Services) como Web Server, voc
deve salvar o projeto javascript em C:\inetpub\wwwroot. Lembre-se que necess-
rio instalar o IIS conforme vimos anteriormente.
308 www.k19.com.br
309 J AVA S CRIPT
Importante
No Ubuntu, utilizando o Apache HTTP Server como Web Server, voc deve salvar o pro-
jeto javascript em /home/<USUARIO>/public_html. Lembre-se que necessrio
instalar e configurar o Apache HTTP Server como vimos anteriormente.
www.facebook.com/k19treinamentos 309
J AVA S CRIPT 310
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao1.zip
310 www.k19.com.br
311 J AVA S CRIPT
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao2.zip
http://localhost/javascript/public_html/javascript.html.
http://localhost/~<USUARIO>/javascript/public_html/javascript.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao4.zip
http://localhost/javascript/public_html/javascript.html.
http://localhost/~<USUARIO>/javascript/public_html/javascript.html.
www.facebook.com/k19treinamentos 311
J AVA S CRIPT 312
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao6.zip
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao7.zip
http://localhost/javascript/public_html/javascript.html.
http://localhost/~<USUARIO>/javascript/public_html/javascript.html.
Variveis
Assim como qualquer linguagem de programao, JavaScript permite a criao de variveis atra-
vs da palavra chave var. Toda varivel deve ter um nome (identificador).
1 var altura ;
Operadores
312 www.k19.com.br
313 J AVA S CRIPT
Para manipular os valores das variveis de um programa, devemos utilizar os operadores ofere-
cidos pela linguagem de programao adotada. A linguagem JavaScript possui diversos operadores
e os principais so categorizados da seguinte forma:
Aritmtico: + - * / %
Atribuio: = += -= *= /= %= ++ --
Relacional: == != < <= > >=
Lgico: && ||
Aritmticos
Os operadores aritmticos funcionam de forma muito semelhante aos operadores da matem-
tica. Os operadores aritmticos so:
Adio +
Subtrao -
Multiplicao *
Diviso /
Mdulo %
1 var umMaisUm = 1 + 1;
2 // umMaisUm = 2
3
4 var tresVezesDois = 3 * 2;
5 // tresVezesDois = 6
6
7 var quatroDivididoPorDois = 4 / 2;
8 // quatroDivididoPor2 = 2
9
10 var seisModuloCinco = 6 % 5;
11 // seisModuloCinco = 1
12
13 var x = 7;
14
15 x = x + 1 * 2;
16 // x = 9
17
18 x = x - 3;
19 // x = 6
20
21 x = x / (6 - 2 - (3 * 5) / (16 - 1) ) ;
22 // x = 2
Importante
O mdulo de um nmero x , na matemtica, o valor numrico de x desconsiderando
o seu sinal (valor absoluto). Na matemtica expressamos o mdulo da seguinte forma:
| 2| = 2.
www.facebook.com/k19treinamentos 313
J AVA S CRIPT 314
Importante
As operaes aritmticas em JavaScript obedecem as mesmas regras da matemtica
com relao precedncia dos operadores e parnteses. Portanto, as operaes so
resolvidas a partir dos parnteses mais internos at os mais externos, primeiro resolvemos as
multiplicaes, divises e os mdulos. Em seguida, resolvemos as adies e subtraes.
Mais Sobre
As operaes de potenciao e raiz quadrada podem ser realizadas atravs dos mtodos
Math.pow e Math.sqrt. Veja alguns exemplos.
Concatenao de Strings
Como vimos anteriormente, o operador + utilizado para realizar soma aritmtica. Mas, ele
tambm pode ser utilizado para concatenar strings. Veja um exemplo.
Observe que o operador + foi aplicado a um valor numrico e a um texto. Nesses casos, o valor
numrico , automaticamente, transformado em texto e a concatenao realizada.
314 www.k19.com.br
315 J AVA S CRIPT
Atribuio
Nas sees anteriores, j vimos um dos operadores de atribuio, o operador = (igual). Os opera-
dores de atribuio so:
Simples =
Incremental +=
Decremental -=
Multiplicativa *=
Divisria /=
Modular %=
Incremento ++
Decremento --
1 var valor = 1;
2 // valor = 1
3
4 valor += 2;
5 // valor = 3
6
7 valor -= 1;
8 // valor = 2
9
10 valor *= 6;
11 // valor = 12
12
13 valor /= 3;
14 // valor = 4
15
16 valor %= 3;
17 // valor = 1
18
19 valor ++;
20 // valor = 2
21
22 valor - -;
23 // valor = 1
1 var valor = 1;
2 // valor = 1
3
4 valor = valor + 2;
5 // valor = 3
6
7 valor = valor - 1;
8 // valor = 2
9
10 valor = valor * 6;
11 // valor = 12
12
13 valor = valor / 3;
14 // valor = 4
15
16 valor = valor % 3;
17 // valor = 1
18
www.facebook.com/k19treinamentos 315
J AVA S CRIPT 316
19 valor = valor + 1;
20 // valor = 2
21
22 valor = valor - 1;
23 // valor = 1
Como podemos observar, os operadores de atribuio, exceto o simples (=), reduzem a quan-
tidade de cdigo escrito. Podemos dizer que esses operadores funcionam como atalhos para as
operaes que utilizam os operadores aritmticos.
Relacionais
Muitas vezes precisamos determinar a relao entre uma varivel ou valor e outra outra varivel
ou valor. Nessas situaes, utilizamos os operadores relacionais. As operaes realizadas com os
operadores relacionais devolvem valores booleanos. Os operadores relacionais so:
Igualdade ==
Diferena !=
Menor <
Menor ou igual <=
Maior >
Maior ou igual >=
1 var valor = 2;
2 var t = false ;
3 t = ( valor == 2) ; // t = true
4 t = ( valor != 2) ; // t = false
5 t = ( valor < 2) ; // t = false
6 t = ( valor <= 2) ; // t = true
7 t = ( valor > 1) ; // t = true
8 t = ( valor >= 1) ; // t = true
Lgicos
A linguagem JavaScript permite verificar duas ou mais condies atravs de operadores lgicos.
Os operadores lgicos devolvem valores booleanos. A seguir descreveremos o funcionamento desses
operadores.
&& (E)
A tabela verdade uma forma prtica de visualizar o resultado dos operadores lgicos. Veja a
seguir a tabela verdade do operador &&.
316 www.k19.com.br
317 J AVA S CRIPT
|| (OU)
A tabela verdade uma forma prtica de visualizar o resultado dos operadores lgicos. Veja a
seguir a tabela verdade do operador ||.
Operador !
Valores booleanos podem ser invertidos com o operador de ! (negao). Por exemplo, podemos
verificar se uma varivel numrica armazena um valor maior do que 0.5 de duas formas diferentes.
1 d > 0.5
1 !( d <= 0.5)
Pr e Ps Incremento ou Pr e Ps Decremento
Os operadores ++ e -- podem ser utilizados de duas formas diferentes, antes ou depois de
uma varivel numrica.
1 var i = 10;
2 i ++;
www.facebook.com/k19treinamentos 317
J AVA S CRIPT 318
3 i - -;
1 var i = 10;
2 ++ i ;
3 --i ;
1 var i = 10;
2
3 // true
4 alert ( i ++ == 10) ;
Observe que o operador ++ foi utilizado nas expresses do exemplo acima em conjunto com
o operador ==. Como dois operadores foram utilizados na mesma expresso, voc pode ter d-
vida em relao a ordem de execuo desses operadores. O incremento com o operador ++ ser
realizado antes ou depois da comparao com o operador ==?
1 var i = 10;
2
3 // false
4 alert (++ i == 10) ;
1 var i = 10;
2
3 var j = ++ i + i - -;
4
5 alert ( j ) ;
318 www.k19.com.br
319 J AVA S CRIPT
Operador ternrio ?:
Considere um programa que controla as notas dos alunos de uma escola. Para exemplificar, va-
mos gerar a nota de um aluno aleatoriamente.
O programa deve exibir a mensagem aprovado se nota de um aluno for maior ou igual a 0.5
e reprovado se a nota for menor do que 0.5. Esse problema pode ser resolvido com o operador
ternrio.
Quando a condio(nota >= 0.5) verdadeira, o operador ternrio devolve o primeiro resultado
(aprovado). Caso contrrio, devolve o segundo resultado(reprovado). Podemos guardar o resul-
tado do operador ternrio em uma varivel ou simplesmente exibi-lo.
1 var resultado = nota >= 0.5 ? " aprovado " : " reprovado " ;
2 alert ( nota >= 0.5 ? " aprovado " : " reprovado " ) ;
Nos exemplos anteriores, o operador ternrio foi utilizado com valores do tipo string. Contudo,
podemos utiliz-lo com qualquer tipo de valor. Veja o exemplo a seguir.
Controle de fluxo
if e else
O comportamento de uma aplicao pode ser influenciado por valores definidos pelos usurios.
Por exemplo, considere um sistema de cadastro de produtos. Se um usurio tenta adicionar um
produto com preo negativo, a aplicao no deve cadastrar esse produto. Caso contrrio, se o preo
no for negativo, o cadastro pode ser realizado normalmente.
Outro exemplo, quando o pagamento de um boleto realizado em uma agncia bancria, o sis-
tema do banco deve verificar a data de vencimento do boleto para aplicar ou no uma multa por
atraso.
Para verificar uma determinada condio e decidir qual bloco de instrues deve ser executado,
devemos aplicar o comando if.
1 if ( preco < 0) {
2 alert ( O preo do produto no pode ser negativo ) ;
www.facebook.com/k19treinamentos 319
J AVA S CRIPT 320
3 } else {
4 alert ( Produto cadastrado com sucesso ) ;
5 }
O comando if permite que valores booleanos sejam testados. Se o valor passado como parmetro
para o comando if for true, o bloco do if executado. Caso contrrio, o bloco do else executado. O
comando else assim como o seu bloco so opcionais.
while
Em alguns casos, necessrio repetir um determinado trecho de cdigo vrias vezes. Por exem-
plo, suponha que seja necessrio exibir 5 vezes a mensagem: Bom Dia. Podemos resolver essa
tarefa com o seguinte cdigo JavaScript.
Se ao invs de 5 vezes fosse necessrio exibir 100 vezes a mensagem Bom Dia, j seriam 100
linhas de cdigo JavaScript. muito trabalhoso utilizar essa abordagem para solucionar esse pro-
blema.
Atravs do comando while, possvel executar vrias vezes um determinado trecho de cdigo.
1 var contador = 0;
2
3 while ( contador < 100) {
4 console . log ( " Bom Dia " ) ;
5 contador ++;
6 }
A varivel contador indica o nmero de vezes que a mensagem Bom Dia foi exibida. O operador
++ incrementa a varivel contador a cada iterao. O parmetro do comando while deve ser um valor
booleano.
for
O comando for anlogo ao while. A principal diferena entre esses dois comandos que o for
recebe trs argumentos.
Exerccios de Fixao
320 www.k19.com.br
321 J AVA S CRIPT
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao9.zip
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao10.zip
http://localhost/javascript/public_html/exibe-nome.html.
http://localhost/~<USUARIO>/javascript/public_html/exibe-nome.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao12.zip
www.facebook.com/k19treinamentos 321
J AVA S CRIPT 322
3 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao13.zip
http://localhost/javascript/public_html/exibe-1-ate-100.html.
http://localhost/~<USUARIO>/javascript/public_html/exibe-1-ate-100.html.
*
**
*
**
*
**
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao15.zip
322 www.k19.com.br
323 J AVA S CRIPT
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao16.zip
http://localhost/javascript/public_html/exibe-padrao-1.html.
http://localhost/~<USUARIO>/javascript/public_html/exibe-padrao-1.html.
18 Percorra todos os nmeros de 1 at 100. Para os nmeros mltiplos de 4, exiba a palavra PIN,
e para os outros, exiba o prprio nmero. Veja o exemplo abaixo:
1
2
3
PIN
5
6
7
PIN
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao18.zip
www.facebook.com/k19treinamentos 323
J AVA S CRIPT 324
7 }
8 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao19.zip
http://localhost/javascript/public_html/exibe-padrao-2.html.
http://localhost/~<USUARIO>/javascript/public_html/exibe-padrao-2.html.
Objetos
Criando objetos
Um objeto pode ser criado de forma literal com a sintaxe JSON. Veja o exemplo a seguir.
Um objeto pode se relacionar com outros objetos atravs de propriedades. Observe o cdigo
abaixo.
1 var formacaoJava = {
2 sigla : " K10 " , nome : " Formao Desenvolvedor Java " ,
3 cursos : [
4 {
5 sigla : " K11 " ,
6 nome : " Orientao a Objetos em Java "
7 },
8 {
9 sigla : " K12 " ,
10 nome : " Desenvolvimento Web com JSF2 e JPA2 "
11 },
12 ]
13 };
324 www.k19.com.br
325 J AVA S CRIPT
1 var curso = {
2 sigla : " K11 " ,
3 nome : " Orientao a Objetos em Java "
4 };
5
6 console . log ( curso . sigla ) ;
7 console . log ( curso [ " sigla " ]) ;
8
9 var sigla = " sigla " ;
10 console . log ( curso [ sigla ]) ;
1 var curso = {
2 sigla : " K11 " ,
3 nome : " Orientao a Objetos em Java "
4 };
5
6 curso . sigla = " K12 " ;
7 curso . nome = " Desenvolvimento Web com JSF2 e JPA2 " ;
8
9 console . log ( curso . sigla ) ;
10 console . log ( curso . nome ) ;
Referncias
Os objetos so acessados atravs de referncias.
1 var curso = {
2 sigla : " K11 " ,
3 nome : " Orientao a Objetos em Java "
4 };
5
6 // copiando uma referncia
7 var x = curso ;
8
9 x . sigla = " K12 " ;
10 x . nome = " Desenvolvimento Web com JSF2 e JPA2 " ;
11
12 // imprime K12
13 console . log ( curso . sigla ) ;
14
15 // imprime Desenvolvimento Web com JSF2 e JPA2
16 console . log ( curso . nome ) ;
Prottipos
Podemos criar um objeto baseado em outro objeto existente (prottipo). Para isso, podemos
utilizar a propriedade especial __proto__. Observe o cdigo abaixo.
www.facebook.com/k19treinamentos 325
J AVA S CRIPT 326
5 };
6
7 // criando um objeto sem propriedades
8 var novo_curso = {};
9
10 // definindo o primeiro objeto como prottipo do segundo
11 novo_curso . __proto__ = curso ;
12
13 // imprime K11
14 console . log ( novo_curso . sigla ) ;
15
16 // imprime Orientao a Objetos em Java
17 console . log ( novo_curso . nome ) ;
Tambm podemos utilizar o mtodo create de Object para criar objetos baseados em objetos
existentes. Veja o exemplo abaixo.
Se uma propriedade for adicionada a um objeto, ela tambm ser adicionada a todos os objetos
que o utilizam como prottipo.
1 var curso = {
2 sigla : " K11 " ,
3 nome : " Orientao a Objetos em Java "
4 };
5
6 var novo_curso = Object . create ( curso ) ;
7
8 curso . carga_horaria = 36;
9
10 // imprime K11
11 console . log ( novo_curso . sigla ) ;
12
13 // imprime Orientao a Objetos em Java
14 console . log ( novo_curso . nome ) ;
15
16 // imprime 36
17 console . log ( novo_curso . carga_horaria ) ;
Por outro lado, se uma propriedade for adicionada a um objeto, ela no ser adicionada no pro-
ttipo desse objeto.
1 var curso = {
2 sigla : " K11 " ,
3 nome : " Orientao a Objetos em Java "
4 };
5
326 www.k19.com.br
327 J AVA S CRIPT
Se o valor de uma propriedade de um objeto for modificado, os objetos que o utilizam como
prottipo podem ser afetados.
1 var curso = {
2 sigla : " K11 " ,
3 nome : " Orientao a Objetos em Java "
4 };
5
6 var novo_curso = Object . create ( curso ) ;
7
8 curso . sigla = " K12 " ;
9 curso . nome = " Desenvolvimento Web com JSF2 e JPA2 " ;
10
11 // imprime K12
12 console . log ( novo_curso . sigla ) ;
13
14 // imprime Desenvolvimento Web com JSF2 e JPA2
15 console . log ( novo_curso . nome ) ;
Por outro lado, alteraes nos valores das propriedades de um objeto no afetam o prottipo
desse objeto.
1 var curso = {
2 sigla : " K11 " ,
3 nome : " Orientao a Objetos em Java "
4 };
5
6 var novo_curso = Object . create ( curso ) ;
7
8 novo_curso . sigla = " K12 " ;
9 novo_curso . nome = " Desenvolvimento Web com JSF2 e JPA2 " ;
10
11 // imprime K11
12 console . log ( curso . sigla ) ;
13
14 // imprime Orientao a Objetos em Java
15 console . log ( curso . nome ) ;
Considere um objeto que foi construdo a partir de um prottipo. Se o valor de uma propriedade
herdada do prottipo for alterada nesse objeto, ela se torna independente da propriedade no prot-
tipo. Dessa forma, alteraes no valor dessa propriedade no prottipo no afetam mais o valor dela
no objeto gerado a partir do prottipo.
1 var curso = {
2 sigla : " K11 " ,
3 nome : " Orientao a Objetos em Java "
4 };
5
6 var novo_curso = Object . create ( curso ) ;
7
www.facebook.com/k19treinamentos 327
J AVA S CRIPT 328
1 var curso = {
2 sigla : " K11 " ,
3 nome : " Orientao a Objetos em Java "
4 };
5
6 // imprime K11
7 console . log ( curso . sigla ) ;
8
9 delete curso . sigla ;
10
11 // imprime undefined
12 console . log ( curso . sigla ) ;
1 var curso = {
2 sigla : " K11 " ,
3 nome : " Orientao a Objetos em Java "
4 };
5
6 // imprime true
7 console . log ( " sigla " in curso ) ;
8
9 // imprime false
10 console . log ( " carga_horaria " in curso ) ;
Exerccios de Fixao
328 www.k19.com.br
329 J AVA S CRIPT
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao21.zip
22Adicione um arquivo chamado objetos.js no projeto javascript. Crie objetos com propriedades
chamadas sigla e nome. Exiba o valor dessas propriedades no console do navegador.
1 var curso = { sigla : " K11 " , nome : " Orientao a Objetos em Java " };
2 console . log ( curso . sigla ) ;
3 console . log ( curso . nome ) ;
4
5 var curso2 = { sigla : " K12 " , nome : " Desenvolvimento Web com JSF2 e JPA2 " };
6 console . log ( curso2 . sigla ) ;
7 console . log ( curso2 . nome ) ;
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao22.zip
http://localhost/javascript/public_html/objetos.html.
http://localhost/~<USUARIO>/javascript/public_html/objetos.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao24.zip
1 var curso = { sigla : " K11 " , nome : " Orientao a Objetos em Java " };
2
3 // exibe K11
4 console . log ( curso . sigla ) ;
5
6 // exibe Orientao a Objetos em Java
7 console . log ( curso . nome ) ;
www.facebook.com/k19treinamentos 329
J AVA S CRIPT 330
8
9 var x = curso ;
10
11 x . sigla = " K12 " ;
12 x . nome = " Desenvolvimento Web com JSF2 e JPA2 " ;
13
14 // exibe K12
15 console . log ( curso . sigla ) ;
16
17 // exibe Desenvolvimento Web com JSF2 e JPA2
18 console . log ( curso . nome ) ;
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao25.zip
http://localhost/javascript/public_html/referencias.html.
http://localhost/~<USUARIO>/javascript/public_html/referencias.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao27.zip
1 var curso = { sigla : " K11 " , nome : " Orientao a Objetos em Java " };
2
3 var novo_curso = Object . create ( curso ) ;
4
5 // exibe K11
6 console . log ( novo_curso . sigla ) ;
7
8 // exibe Orientao a Objetos em Java
9 console . log ( novo_curso . nome ) ;
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao28.zip
330 www.k19.com.br
331 J AVA S CRIPT
http://localhost/javascript/public_html/prototype.html.
http://localhost/~<USUARIO>/javascript/public_html/prototype.html.
edade em um objeto utilizado como prottipo e verifique que essa propriedade ser adicionada nos
objetos criados a partir desse prottipo.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao30.zip
1 var curso = { sigla : " K11 " , nome : " Orientao a Objetos em Java " };
2
3 var novo_curso = Object . create ( curso ) ;
4
5 curso . carga_horaria = 36;
6
7 // exibe K11
8 console . log ( novo_curso . sigla ) ;
9
10 // exibe Orientao a Objetos em Java
11 console . log ( novo_curso . nome ) ;
12
13 // exibe 36
14 console . log ( novo_curso . carga_horaria ) ;
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao31.zip
http://localhost/javascript/public_html/propriedade-1.html.
http://localhost/~<USUARIO>/javascript/public_html/propriedade-1.html.
www.facebook.com/k19treinamentos 331
J AVA S CRIPT 332
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao33.zip
1 var curso = { sigla : " K11 " , nome : " Orientao a Objetos em Java " };
2
3 var novo_curso = Object . create ( curso ) ;
4
5 novo_curso . carga_horaria = 36;
6
7 // exibe K11
8 console . log ( curso . sigla ) ;
9
10 // exibe Orientao a Objetos em Java
11 console . log ( curso . nome ) ;
12
13 // exibe undefined
14 console . log ( curso . carga_horaria ) ;
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao34.zip
http://localhost/javascript/public_html/propriedade-2.html.
http://localhost/~<USUARIO>/javascript/public_html/propriedade-2.html.
332 www.k19.com.br
333 J AVA S CRIPT
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao36.zip
1 var curso = { sigla : " K11 " , nome : " Orientao a Objetos em Java " };
2
3 var novo_curso = Object . create ( curso ) ;
4
5 // exibe K11
6 console . log ( novo_curso . sigla ) ;
7
8 // exibe Orientao a Objetos em Java
9 console . log ( novo_curso . nome ) ;
10
11 curso . sigla = " K12 " ;
12 curso . nome = " Desenvolvimento Web com JSF2 e JPA2 " ;
13
14 // exibe K12
15 console . log ( novo_curso . sigla ) ;
16
17 // exibe Desenvolvimento Web com JSF2 e JPA2
18 console . log ( novo_curso . nome ) ;
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao37.zip
http://localhost/javascript/public_html/propriedade-3.html.
http://localhost/~<USUARIO>/javascript/public_html/propriedade-3.html.
www.facebook.com/k19treinamentos 333
J AVA S CRIPT 334
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao39.zip
1 var curso = { sigla : " K11 " , nome : " Orientao a Objetos em Java " };
2
3 var novo_curso = Object . create ( curso ) ;
4
5 novo_curso . sigla = " K12 " ;
6 novo_curso . nome = " Desenvolvimento Web com JSF2 e JPA2 " ;
7
8 // exibe K12
9 console . log ( novo_curso . sigla ) ;
10
11 // exibe Desenvolvimento Web com JSF2 e JPA2
12 console . log ( novo_curso . nome ) ;
13
14 curso . sigla = " K21 " ;
15 curso . nome = " Persistncia com JPA2 e Hibernate " ;
16
17 // exibe K12
18 console . log ( novo_curso . sigla ) ;
19
20 // exibe Desenvolvimento Web com JSF2 e JPA2
21 console . log ( novo_curso . nome ) ;
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao40.zip
http://localhost/javascript/public_html/propriedade-4.html.
http://localhost/~<USUARIO>/javascript/public_html/propriedade-4.html.
Funes
As funes em JavaScript so objetos. Voc pode armazen-las em variveis, arrays e outros ob-
jetos. Elas podem ser passadas como argumento ou devolvidas por outra funo. Veja o exemplo
abaixo.
334 www.k19.com.br
335 J AVA S CRIPT
1 function multiplicacao (x , y ) {
2 return x * y ;
3 }
Mtodo
Quando uma funo faz parte de um objeto, ela chamada de mtodo. Para executar um mtodo,
devemos utilizar a referncia de um objeto e passar os parmetros necessrios. Observe o cdigo
abaixo.
1 var conta = {
2 saldo : 0 ,
3 deposita : function ( valor ) {
4 this . saldo += valor ;
5 }
6 }
7
8 conta . deposita (100) ;
9 console . log ( conta . saldo ) ;
Apply
Uma funo pode ser associada momentaneamente a um objeto e executada atravs do mtodo
apply.
Arguments
Os argumentos passados na chamada de uma funo podem ser recuperados atravs do array
Arguments. Inclusive, esse array permite que os argumentos excedentes sejam acessados.
www.facebook.com/k19treinamentos 335
J AVA S CRIPT 336
Exerccios de Fixao
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao42.zip
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao43.zip
http://localhost/javascript/public_html/multiplicacao.html.
336 www.k19.com.br
337 J AVA S CRIPT
http://localhost/~<USUARIO>/javascript/public_html/multiplicacao.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao45.zip
1 var conta = {
2 saldo : 0 ,
3 deposita : function ( valor ) {
4 this . saldo += valor ;
5 }
6 };
7
8 conta . deposita (500) ;
9
10 console . log ( conta . saldo ) ;
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao46.zip
http://localhost/javascript/public_html/metodos.html.
http://localhost/~<USUARIO>/javascript/public_html/metodos.html.
www.facebook.com/k19treinamentos 337
J AVA S CRIPT 338
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao48.zip
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao49.zip
http://localhost/javascript/public_html/soma.html.
http://localhost/~<USUARIO>/javascript/public_html/soma.html.
Arrays
A linguagem Javascript prov um objeto com caractersticas semelhantes a um array. Esse tipo
de objeto pode ser criado de forma literal com a sintaxe JSON.
338 www.k19.com.br
339 J AVA S CRIPT
Percorrendo um Array
Para percorrer um array, podemos utilizar o comando for.
1 var cursos = [ " K01 " ," K02 " ," K03 " ];
2
3 for ( var i = 0; i < cursos . length ; i ++) {
4 console . log ( cursos [ i ]) ;
5 }
Adicionando Elementos
Para adicionar um elemento no final de um array, podemos utilizar a propriedade length.
Removendo Elementos
O mtodo delete() permite remover elementos de um array.
1 var cursos = [ " K01 " , " K02 " , " K03 " ];
2
3 delete cursos [0];
4 // [ undefined , " K02 " , " K03 "]
5
6 for ( var i = 0; i < cursos . length ; i ++) {
7 console . log ( cursos [ i ]) ;
8 }
Concatenando Arrays
O mtodo concat() permite concatenar dois arrays.
1 var formacaoBasica = [ " K01 " , " K02 " , " K03 " ];
2 var formacaoJava = [ " K11 " , " K12 " ];
3
4 var formacaoCompleta = formacaoBasica . concat ( formacaoJava ) ;
5 // [" K01 ", " K02 " , " K03 " , " K11 " , " K12 "]
6
7 for ( var i = 0; i < formacaoCompleta . length ; i ++) {
8 console . log ( formacaoCompleta [ i ]) ;
9 }
www.facebook.com/k19treinamentos 339
J AVA S CRIPT 340
1 var cursos = [ " K01 " , " K02 " , " K03 " ];
2
3 var curso = cursos . pop () ;
4 // [" K01 ", " K02 "]
5
6 console . log ( " Elemento removido : " + curso ) ;
7
8 for ( var i = 0; i < cursos . length ; i ++) {
9 console . log ( cursos [ i ]) ;
10 }
1 var cursos = [ " K01 " , " K02 " , " K03 " ];
2
3 cursos . reverse () ;
4 // [" K03 ", " K02 " , " K01 "]
5
6 for ( var i = 0; i < cursos . length ; i ++) {
7 console . log ( cursos [ i ]) ;
8 }
1 var cursos = [ " K01 " , " K02 " , " K03 " ];
2
3 var curso = cursos . shift () ;
4 // [" K02 ", " K03 "]
5
6 console . log ( " Elemento removido : " + curso ) ;
7
8 for ( var i = 0; i < cursos . length ; i ++) {
9 console . log ( cursos [ i ]) ;
10 }
1 var cursos = [ " K01 " , " K02 " , " K03 " , " K11 " , " K12 " ];
2
340 www.k19.com.br
341 J AVA S CRIPT
1 var cursos = [ " K11 " ," K12 " ," K21 " ," K22 " ," K23 " ];
2
3 cursos . splice (2 , 3 , " K31 " , " K32 " ) ;
4 // [" K11 ", " K12 " , " K31 " , " K32 "]
5
6 for ( var i = 0; i < cursos . length ; i ++) {
7 console . log ( cursos [ i ]) ;
8 }
1 var cursos = [ " K12 " ," K21 " ," K22 " ," K23 " ];
2
3 cursos . unshift ( " K11 " ) ;
4 // [" K11 ", " K12 " , " K21 " , " K22 " , " K23 "]
5
6 for ( var i = 0; i < cursos . length ; i ++) {
7 console . log ( cursos [ i ]) ;
8 }
Strings
1 var curso = " K12 - Desenvolvimento Web com JSF2 e JPA2 " ;
2
3 console . log ( curso . slice (0 ,3) ) ;
www.facebook.com/k19treinamentos 341
J AVA S CRIPT 342
1 var curso = " K12 - Desenvolvimento Web com JSF2 e JPA2 " ;
2 var aux = curso . split ( " -" ) ;
3
4 console . log ( aux [0]) ;
5 console . log ( aux [1]) ;
Exerccios de Fixao
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao51.zip
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao52.zip
http://localhost/javascript/public_html/array-length.html.
http://localhost/~<USUARIO>/javascript/public_html/array-length.html.
342 www.k19.com.br
343 J AVA S CRIPT
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao54.zip
1 var cursos = [ " K11 " ," K12 " ," K21 " ," K22 " ," K23 " ," K31 " ," K32 " ];
2 for ( var i = 0; i < cursos . length ; i ++) {
3 console . log ( cursos [ i ]) ;
4 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao55.zip
http://localhost/javascript/public_html/array-elementos.html.
http://localhost/~<USUARIO>/javascript/public_html/array-elementos.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao57.zip
1 var cursos = [ " K11 " ," K12 " ," K21 " ," K22 " ," K23 " ," K31 " ," K32 " ];
2
3 cursos [ cursos . length ] = " K01 " ;
www.facebook.com/k19treinamentos 343
J AVA S CRIPT 344
4
5 for ( var i = 0; i < cursos . length ; i ++) {
6 console . log ( cursos [ i ]) ;
7 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao58.zip
http://localhost/javascript/public_html/array-add.html.
http://localhost/~<USUARIO>/javascript/public_html/array-add.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao60.zip
1 var cursos = [ " K11 " ," K12 " ," K21 " ," K22 " ," K23 " ," K31 " ," K32 " ];
2
3 cursos . push ( " K01 " ) ;
4
5 for ( var i = 0; i < cursos . length ; i ++) {
6 console . log ( cursos [ i ]) ;
7 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao61.zip
http://localhost/javascript/public_html/array-push.html.
344 www.k19.com.br
345 J AVA S CRIPT
http://localhost/~<USUARIO>/javascript/public_html/array-push.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao63.zip
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao64.zip
http://localhost/javascript/public_html/array-concat.html.
http://localhost/~<USUARIO>/javascript/public_html/array-concat.html.
www.facebook.com/k19treinamentos 345
J AVA S CRIPT 346
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao66.zip
1 var cursos = [ " K11 " ," K12 " ," K21 " ," K22 " ," K23 " ];
2
3 var curso = cursos . pop () ;
4
5 console . log ( curso ) ;
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao67.zip
http://localhost/javascript/public_html/array-pop.html.
http://localhost/~<USUARIO>/javascript/public_html/array-pop.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao69.zip
1 var cursos = [ " K11 " ," K12 " ," K21 " ," K22 " ," K23 " ];
2
3 cursos . reverse () ;
4
5 for ( var i = 0; i < cursos . length ; i ++) {
6 console . log ( cursos [ i ]) ;
7 }
346 www.k19.com.br
347 J AVA S CRIPT
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao70.zip
http://localhost/javascript/public_html/array-reverse.html.
http://localhost/~<USUARIO>/javascript/public_html/array-reverse.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao72.zip
1 var cursos = [ " K11 " ," K12 " ," K21 " ," K22 " ," K23 " ];
2
3 var curso = cursos . shift () ;
4
5 console . log ( " Elemento removido : " + curso ) ;
6
7 for ( var i = 0; i < cursos . length ; i ++) {
8 console . log ( cursos [ i ]) ;
9 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao73.zip
http://localhost/javascript/public_html/array-shift.html.
http://localhost/~<USUARIO>/javascript/public_html/array-shift.html.
www.facebook.com/k19treinamentos 347
J AVA S CRIPT 348
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao75.zip
1 var cursos = [ " K11 " ," K12 " ," K21 " ," K22 " ," K23 " ];
2
3 var formacaoJava = cursos . slice (0 ,2) ;
4
5 for ( var i = 0; i < formacaoJava . length ; i ++) {
6 console . log ( formacaoJava [ i ]) ;
7 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao76.zip
http://localhost/javascript/public_html/array-slice.html.
http://localhost/~<USUARIO>/javascript/public_html/array-slice.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao78.zip
348 www.k19.com.br
349 J AVA S CRIPT
1 var cursos = [ " K12 " ," K21 " ," K22 " ," K23 " ];
2
3 cursos . unshift ( " K11 " ) ;
4
5 for ( var i = 0; i < cursos . length ; i ++) {
6 console . log ( cursos [ i ]) ;
7 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao79.zip
http://localhost/javascript/public_html/array-unshift.html.
http://localhost/~<USUARIO>/javascript/public_html/array-unshift.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao81.zip
1 var curso = " K12 - Desenvolvimento Web com JSF2 e JPA2 " ;
2 var aux = curso . split ( " -" ) ;
3
4 console . log ( aux [0]) ;
5 console . log ( aux [1]) ;
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao82.zip
http://localhost/javascript/public_html/array-split.html.
www.facebook.com/k19treinamentos 349
J AVA S CRIPT 350
http://localhost/~<USUARIO>/javascript/public_html/array-split.html.
Os documentos HTML assim como os seus elementos so representados por objetos JavaScript.
Podemos acessar o objeto que representa o documento HTML atual atravs da varivel document.
Os objetos que representam os elementos do documento HTML atual podem ser acessados atravs
dessa varivel.
Recuperando elementos
Podemos buscar elementos HTML por ID atravs do mtodo getElementById. Esse mtodo
devolve null se no existir elemento HTML com o identificador desejado.
Podemos buscar elementos HTML pelo valor do atributo name atravs do mtodo getEle-
mentsByName. Esse mtodo devolve um array com os elementos recuperados.
Podemos buscar elementos HTML pelo valor do atributo class atravs do mtodo getElementsBy-
ClassName. Esse mtodo devolve um array com os elementos recuperados.
Podemos buscar elementos HTML utilizando seletores CSS atravs dos mtodos querySelec-
tor e querySelectorAll. O primeiro mtodo devolve o primeiro elemento compatvel com o
seletor CSS passado como parmetro. O segundo mtodo devolve um array com todos os ele-
mentos compatveis com o seletor CSS passado como parmetro.
350 www.k19.com.br
351 J AVA S CRIPT
Alterando elementos
1 elemento . innerHTML = " Acesse <a href = http :// www . k19 . com . br > K19 </ a > " ;
Removendo elementos
Adicionando elementos
www.facebook.com/k19treinamentos 351
J AVA S CRIPT 352
Mais Sobre
Os objetos que representam os documentos e os elementos HTML possuem uma
grande quantidade de propriedades e mtodos. Para saber mais sobre essas proprie-
dade e esses mtodos, recomendamos a consulta aos seguintes endereos:
https://developer.mozilla.org/en-US/docs/Web/API/Document
https://developer.mozilla.org/en-US/docs/Web/API/element
Exerccios de Fixao
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao84.zip
352 www.k19.com.br
353 J AVA S CRIPT
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao85.zip
http://localhost/javascript/public_html/DOM.html.
http://localhost/~<USUARIO>/javascript/public_html/DOM.html.
Eventos
www.facebook.com/k19treinamentos 353
J AVA S CRIPT 354
A interatividade entres as pginas web e os usurios depende fortemente dos eventos que podem
ser reconhecidos pelos navegadores. Por exemplo, atualmente, os navegadores so capazes de iden-
tificar o movimento do mouse, a digitao do usurio, a finalizao do carregamento de uma pgina
web, o redimensionamento da janela, entre outros eventos.
H uma quantidade muito grande de eventos que podem ser reconhecidos pelos navegadores.
Recomendamos que voc consulte os seguintes endereos para obter maiores informaes:
http://www.w3.org/TR/DOM-Level-3-Events/
http://en.wikipedia.org/wiki/DOM_events
Podemos definir o que deve ocorrer quando um determinado evento detectado. No exemplo
abaixo, toda vez que o usurio clicar no pargrafo, a mensagem K19 ser exibida no console do
navegador.
load
O evento load disparado no trmino do carregamento de um recurso (imagem, script, folhas de
estilos, entre outros) contido em um documento HTML ou do prprio documento. Podemos definir
o tratamento desse evento utilizando o atributo onload. Esse atributo pode ser utilizado em diversos
elementos HTML. Por exemplo: body, img, script e link.
resize
O evento resize disparado quando ocorre uma alterao no tamanho de determinados elemen-
tos. Podemos definir o tratamento desse evento utilizando o atributo onresize. Esse atributo pode
ser utilizado em diversos elementos HTML. Por exemplo: body, img, form e textarea.
scroll
O evento scroll disparado quando a barra de rolagem de um determinado elemento HTML
movida. Podemos definir o tratamento desse evento utilizando o atributo onscroll. Esse atributo
pode ser utilizado em diversos elementos HTML. Por exemplo: body, section, div e textarea.
focus
O evento focus disparado quando um determinado elemento ganha o foco. Podemos definir o
tratamento desse evento utilizando o atributo onfocus. Esse atributo pode ser utilizado em diversos
354 www.k19.com.br
355 J AVA S CRIPT
change
O evento change disparado quando um determinado elemento HTML perde o foco aps ter o
seu contedo alterado. Podemos definir o tratamento desse evento utilizando o atributo onchange.
Esse atributo pode ser utilizado em diversos elementos HTML. Por exemplo: input, select e textarea.
blur
O evento blur disparado quando um determinado elemento perde o foco. Podemos definir o
tratamento desse evento utilizando o atributo onblur. Esse atributo pode ser utilizado em diversos
elementos HTML. Por exemplo: input, select e textarea.
select
O evento select disparado quando o texto contido em um input ou textarea selecionado.
Podemos definir o tratamento desse evento utilizando o atributo onselect.
submit
O evento submit disparado imediatamente antes do envio de um formulrio. Podemos definir
o tratamento desse evento utilizando o atributo onsubmit.
reset
O evento reset disparado quando um formulrio reiniciado. Podemos definir o tratamento
desse evento utilizando o atributo onreset.
www.facebook.com/k19treinamentos 355
J AVA S CRIPT 356
1. mousedown
2. mouseup
3. click
dblclick
O evento dblclick disparado quando um determinado elemento recebe um duplo clique. Po-
demos definir o tratamento desse evento utilizando o atributo ondblclick. Esse atributo pode ser
utilizado em diversos elementos HTML. Por exemplo: p, div, table e img.
mousemove
O evento mousemove disparado quando o usurio movimenta o mouse sobre um determinado
elemento. Podemos definir o tratamento desse evento utilizando o atributo onmousemove. Esse
atributo pode ser utilizado em diversos elementos HTML. Por exemplo: p, div, table e img.
mouveover
O evento mouveover disparado quando o ponteiro do mouse passa a estar sobre um deter-
minado elemento. Podemos definir o tratamento desse evento utilizando o atributo onmouveover.
Esse atributo pode ser utilizado em diversos elementos HTML. Por exemplo: p, div, table e img.
mouseout
O evento mouseout disparado quando o ponteiro do mouse deixa de estar sobre um determi-
nado elemento. Podemos definir o tratamento desse evento utilizando o atributo onmouseout. Esse
atributo pode ser utilizado em diversos elementos HTML. Por exemplo: p, div, table e img.
356 www.k19.com.br
357 J AVA S CRIPT
1. keydown
2. keypress
3. keyup
1 < input
2 onkeydown = " console . log ( 1 ) "
3 onkeypress = " console . log ( 2 ) "
4 onkeyup = " console . log ( 3 ) " ...>
Mais Sobre
O evento keypress no disparado para teclas que no representam caracteres. Por
exemplo, SHIFT, CTRL, ALT, entre outros.
1 function click () {
2 console . log ( " click " ) ;
3 }
4
5 var elemento = document . getElementById ( " conteudo " ) ;
6 elemento . addEventListener ( " click " , click ) ;
Nessa abordagem, podemos associar diversas funes para tratar um determinado evento para
um determinado elemento HTML.
www.facebook.com/k19treinamentos 357
J AVA S CRIPT 358
Nessa abordagem, apenas uma funo pode ser associada a um determinado evento para um
determinado elemento HTML.
Exerccios de Fixao
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao88.zip
358 www.k19.com.br
359 J AVA S CRIPT
8 };
9
10 input . addEventListener ( " change " , function () {
11 console . log ( " change " ) ;
12 }) ;
13
14 input . onblur = function () {
15 console . log ( " blur " ) ;
16 };
17
18 input . onselect = function () {
19 console . log ( " select " ) ;
20 };
21
22 input . onkeydown = function () {
23 console . log ( " keydown " ) ;
24 };
25
26 input . onkeypress = function () {
27 console . log ( " keypress " ) ;
28 };
29
30 input . onkeyup = function () {
31 console . log ( " keyup " ) ;
32 };
33
34 var div = document . querySelector ( " div " ) ;
35
36 div . onmousedown = function () {
37 console . log ( " mousedown " ) ;
38 };
39
40 div . onmouseup = function () {
41 console . log ( " mouseup " ) ;
42 };
43
44 div . onclick = function () {
45 console . log ( " click " ) ;
46 };
47
48 div . ondblclick = function () {
49 console . log ( " dblclick " ) ;
50 };
51
52 div . onmousemove = function ( event ) {
53 var x = event . clientX ;
54 var y = event . clientY ;
55 console . log ( " mousemove : ( " + x + " , " + y + " ) " ) ;
56 };
57
58 div . onmouseover = function () {
59 console . log ( " mouseover " ) ;
60 };
61
62 div . onmouseout = function () {
63 console . log ( " mouseout " ) ;
64 };
65 };
66
67 function resize () {
68 var w = window . outerWidth ;
69 var h = window . outerHeight ;
70
71 console . log ( " resize ( " + w + " , " + h + " ) " ) ;
72 }
73
74 function scroll () {
75 var x = window . pageXOffset ;
76 var y = window . pageYOffset ;
77
www.facebook.com/k19treinamentos 359
J AVA S CRIPT 360
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao89.zip
http://localhost/javascript/public_html/eventos.html.
http://localhost/~<USUARIO>/javascript/public_html/eventos.html.
Web Storage
Podemos armazenar dados nos navegadores dos usurios atravs do Web Storage. H duas for-
mas de armazenamento.
Os dados armazenados com a API do Web Storage so separados por domnio e no so compar-
tilhados entre navegadores diferentes. Os navegadores podem determinar a quantidade de espao
de armazenamento disponvel. Por padro, esse espao deve ser de pelo menos 5MB por domnio.
Armazenando dados
O mtodo setItem dos objetos localStorage e sessionStorage utilizado para inserir dados no
Web Storage. Esse mtodo recebe dois parmetros, uma chave e o um valor.
Recuperando dados
O mtodo getItem dos objetos localStorage e sessionStorage utilizado para recuperar dados
do Web Storage. Esse mtodo recebe uma chave como parmetro.
360 www.k19.com.br
361 J AVA S CRIPT
Removendo dados
O mtodo removeItem dos objetos localStorage e sessionStorage utilizado para remover dados
do Web Storage. Esse mtodo recebe uma chave como parmetro.
1 localStorage . clear () ;
2 sessionStorage . clear () ;
Exerccios de Fixao
www.facebook.com/k19treinamentos 361
J AVA S CRIPT 362
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao91.zip
1 function atualizaSaudacao () {
2 var saudacao = document . getElementById ( " saudacao " ) ;
3 if ( localStorage . nome ) {
4 saudacao . innerHTML = " Ol " + localStorage . nome ;
5 } else {
6 saudacao . innerHTML = null ;
7 }
8 };
9
10 window . onload = function () {
11 var botaoEnviar = document . getElementById ( " botaoEnviar " ) ;
12 botaoEnviar . onclick = function () {
13 var campoNome = document . getElementById ( " campoNome " ) ;
14 localStorage . nome = campoNome . value ;
15 atualizaSaudacao () ;
16 };
17
18 var botaoLimpar = document . getElementById ( " botaoLimpar " ) ;
19 botaoLimpar . onclick = function () {
20 localStorage . removeItem ( " nome " ) ;
21 atualizaSaudacao () ;
22 };
23
24 atualizaSaudacao () ;
25 };
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao92.zip
http://localhost/javascript/public_html/web-storage.html.
http://localhost/~<USUARIO>/javascript/public_html/web-storage.html.
History
Podemos avanar ou retroceder no histrico dos navegadores atravs do objeto history. Esse
objeto pode ser acessado atravs do objeto window.
Avanando ou retrocedendo
Podemos avanar ou retroceder uma pgina no histrico atravs dos mtodos forward e back
respectivamente.
362 www.k19.com.br
363 J AVA S CRIPT
Tambm podemos utilizar o mtodo go. Esse mtodo recebe um nmero inteiro como parme-
tro.
stateObject: Um objeto que pode ser utilizado para armazenar informaes sobre a nova entrada.
Como exemplo, considere que a pgina correspondente URL www.k19.com.br esteja sendo exi-
bida no navegador.
O cdigo acima adicionaria uma nova entrada com ttulo K19 - Cursos e URL www.k19.com.br/
cursos. J o cdigo abaixo, substituiria a entrada atual do histrico por uma nova com ttulo K19 -
Apostilas e URL www.k19.com.br/apostilas.
www.facebook.com/k19treinamentos 363
J AVA S CRIPT 364
Exerccios de Fixao
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao94.zip
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao95.zip
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao96.zip
364 www.k19.com.br
365 J AVA S CRIPT
http://localhost/javascript/public_html/historico-pagina1.html.
http://localhost/javascript/public_html/historico-pagina2.html.
http://localhost/javascript/public_html/historico-pagina3.html.
http://localhost/~<USUARIO>/javascript/public_html/historico-pagina1.html.
http://localhost/~<USUARIO>/javascript/public_html/historico-pagina2.html.
http://localhost/~<USUARIO>/javascript/public_html/historico-pagina3.html.
Geolocalizao
O primeiro passo para utilizar essa API, definir uma funo JavaScript para receber a localizao
quando ela for obtida.
Exerccios de Fixao
www.facebook.com/k19treinamentos 365
J AVA S CRIPT 366
14 < script src = " https :// maps . googleapis . com / maps / api / js ? v =3. exp & sensor = false " >
15 </ script >
16
17 < script src = " geolocalizacao . js " > </ script >
18 </ head >
19 < body >
20 < h1 > K19 - Geolocalizacao </ h1 >
21 < div id = " mapa " > </ div >
22 </ body >
23 </ html >
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao98.zip
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-fixacao99.zip
http://localhost/javascript/public_html/geolocalizacao.html.
http://localhost/~<USUARIO>/javascript/public_html/geolocalizacao.html.
Podemos agendar tarefas para serem executadas no futuro. Para isso, podemos utilizar os mto-
dos setTimeout e setInterval. A primeira permite definir uma funo que deve ser executada apenas
uma vez depois de um determinado tempo. A segunda permite definir uma funo que deve ser
executada de forma peridica.
366 www.k19.com.br
367 J AVA S CRIPT
No exemplo a seguir, definimos uma funo que ser executada uma vez depois de 1600 milise-
gundos.
Por outro lado, nesse outro exemplo, definimos uma funo que ser executada a cada 2500 mi-
lisegundos.
1 function alarmeTimeout () {
2 console . log ( " timeout " ) ;
3 }
4
5 window . setTimeout ( alarmeTimeout , 1600) ;
6
7 window . clearTimeout ( alarmeTimeout ) ;
1 function alarmeInterval () {
2 console . log ( " interval " ) ;
3 }
4
5 window . setInterval ( alarmeInterval , 2500) ;
6
7 window . clearInterval ( alarmeInterval ) ;
Exerccios Complementares
3 Crie um documento HTML vinculado a um documento JavaScript que percorra todos os nme-
ros de 1 at 60. Para os nmeros mltiplos de 3, exiba ***. Para os nmeros que no so mltiplos
de 3, exiba *.
www.facebook.com/k19treinamentos 367
J AVA S CRIPT 368
*
**
***
****
*****
*
**
***
****
*
**
***
****
Dica: O mtodo Math.random() gera nmeros aleatrios maiores ou iguais a 0 e menores do que
1. O mtodo Math.floor() recebe um nmero real como parmetro e devolve o maior inteiro menor
ou igual a esse nmero real.
368 www.k19.com.br
369 J AVA S CRIPT
Dica: Os arrays possuem um mtodo chamada sort. Esse mtodo ordena os elementos dos ar-
rays.
Resumo do Captulo
2 Cdigo JavaScript pode ser aplicado aos documentos HTML de duas formas: JavaScript interno
e JavaScript externo.
4 Comentrios JavaScript de bloco podem ser definidos com os marcadores /* e */. script.
5 Comentrios JavaScript de linha podem ser definidos com o marcador //. script.
Aritmtico: + - * / %
Atribuio: = += -= *= /= %= ++ --
Relacional: == != < <= > >=
Lgico: && ||
www.facebook.com/k19treinamentos 369
J AVA S CRIPT 370
15 A propriedade style pode ser utilizada para alterar as propriedades CSS dos elementos HTML.
19 Podemos armazenar dados na mquina dos usurios com a API do Web Storage.
Prova
a) Podemos associar cdigo JavaScript aos documentos HTML atravs dos elementos script e js.
e) Podemos associar cdigo JavaScript aos documentos HTML atravs do elemento script.
370 www.k19.com.br
371 J AVA S CRIPT
var i = 10;
var j = ++ i + i - -;
a) 18.
b) 19.
c) 20.
d) 21.
e) 22.
var i = 10;
var j = 15;
console . log (!( i < j ) ? ( j % 2 == i % 3 ? " K01 " : " K02 " ) : ( j % 4 > i % 4 ? " K03 " : " -
K11 " ) ) ;
a) K01.
b) K02.
c) K03.
d) K11.
www.facebook.com/k19treinamentos 371
J AVA S CRIPT 372
var i = 10;
a) 12, 14 e 16.
b) 12 e 14.
c) 11, 13 e 15.
d) 11 e 13.
a) b, a, b, undefined.
b) a, b, undefined, a.
c) b, a, undefined, a.
d) b, a, undefined, b.
e) a, b, a, undefined.
372 www.k19.com.br
373 J AVA S CRIPT
c) A propriedade css dos elementos HTML permite que as propriedades CSS sejam acessadas
e/ou modificadas.
a) A API Web Storage permite que dados sejam armazenados nos Web Servers.
c) Para armazenadas dados com a API Web Storage, devemos utilizar o mtodo put().
d) Para armazenadas dados com a API Web Storage, devemos utilizar o mtodo add().
e) Podemos apagar todos os dados armazenados com a API Web atravs do mtodo reset().
c) A localizao dos usurios pode ser obtida atravs da API de geolocalizao somente com a
autorizao dos usurios.
www.facebook.com/k19treinamentos 373
J AVA S CRIPT 374
d) A localizao dos usurios pode ser obtida atravs da API de geolocalizao mesmo sem a au-
torizao dos usurios.
8 11
Minha Pontuao Pontuao Mnima: Pontuao Mxima:
374 www.k19.com.br
CAPTULO
J Q UERY
5
Introduo
Basicamente, jQuery uma biblioteca JavaScript. Ela foi desenvolvida para simplificar e diminuir
a quantidade de cdigo JavaScript. Os principais recursos oferecidos por essa essa biblioteca so:
Seletores
Eventos
Efeitos e Animaes
AJAX
Para utilizar o jQuery, basta adicionar o arquivo JavaScript que contm o cdigo dessa biblio-
teca em um documento HTML. Esse arquivo JavaScript pode ser obtido no endereo http://docs.
jquery.com/Downloading_jQuery. Ele est disponvel em duas verses: Compressed e Uncom-
pressed. Em produo, a primeira verso deve ser utilizada para no sobrecarregar a transferncia
de dados entre o Web Server e os navegadores. Em desenvolvimento, podemos utilizar a segunda
verso pois ela possui um cdigo bem mais legvel o que facilita a depurao.
1 < script src = " http :// code . jquery . com / jquery -1.10.1. min . js " > </ script >
Google CDN
www.facebook.com/k19treinamentos 375
J Q UERY 376
1 < script
2 src = " http :// ajax . googleapis . com / ajax / libs / jquery /1.10.2/ jquery . min . js " > </ script >
Microsoft CDN
1 < script
2 src = " http :// ajax . aspnetcdn . com / ajax / jQuery / jquery -1.10.2. min . js " > </ script >
CDNJS
1 < script
2 src = " http :// cdnjs . cloudflare . com / ajax / libs / jquery /1.10.2/ jquery . min . js " > </ script >
Exerccios de Fixao
Importante
No Windows, utilizando o IIS (Internet Information Services) como Web Server, voc
deve salvar o projeto jQuery em C:\inetpub\wwwroot. Lembre-se que necessrio
instalar o IIS conforme vimos anteriormente.
Importante
No Ubuntu, utilizando o Apache HTTP Server como Web Server, voc deve salvar o
projeto jQuery em /home/<USUARIO>/public_html. Lembre-se que necessrio
instalar e configurar o Apache HTTP Server como vimos anteriormente.
376 www.k19.com.br
377 J Q UERY
www.facebook.com/k19treinamentos 377
J Q UERY 378
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-jquery-fixacao1.zip
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-jquery-fixacao2.zip
378 www.k19.com.br
379 J Q UERY
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-jquery-fixacao3.zip
http://localhost/jQuery/public_html/jQuery.html.
http://localhost/~<USUARIO>/jQuery/public_html/jQuery.html.
Eventos
Evento Descrio
ready Esse evento disparado aps o carregamento rvore de elementos do documento
HTML.
http://api.jquery.com/ready
focusin Esse evento disparado quando um elemento ou um dos seus descendentes ganha
o foco.
http://api.jquery.com/focusin
focusout Esse evento disparado quando um elemento ou um dos seus descendentes perde o
foco.
http://api.jquery.com/focusout
change Em determinados casos, esse evento disparado depois de um elemento ter o seu va-
lor modificado e em seguida perder o foco. Em outros casos, esse evento disparado
depois de um elemento ter o seu valor modificado e selecionado nessa ordem.
http://api.jquery.com/change
www.facebook.com/k19treinamentos 379
J Q UERY 380
Evento Descrio
keypress Esse evento semelhante ao evento keydown. Contudo, ele no disparado para
teclas que no representam caracteres (exemplo: SHIFT, CTRL, ALT, entre outros). O
keypress disparado depois do keydown.
http://api.jquery.com/keypress
keyup Esse evento disparado quando uma tecla solta.
http://api.jquery.com/keyup
click Esse evento disparado quando o usurio clica sobre um elemento com o boto es-
querdo ou com o boto do meio do mouse.
http://api.jquery.com/click
dblclick Esse evento disparado quando o usurio realiza um duplo clique sobre um ele-
mento com o boto esquerdo ou com o boto do meio do mouse.
http://api.jquery.com/dblclick
mousedown Esse evento disparado quando o usurio pressiona um boto do mouse sobre um
determinado elemento.
http://api.jquery.com/mousedown
mouseup Esse evento disparado quando o usurio solta um boto do mouse sobre um deter-
minado elemento.
http://api.jquery.com/mouseup
mouseenter Esse evento disparado no momento em que o ponteiro do mouse passa a estar
sobre um determinado elemento.
http://api.jquery.com/mouseenter
mouseleave Esse evento disparado no momento em que o ponteiro do mouse passa a no estar
sobre um determinado elemento.
http://api.jquery.com/mouseleave
hover Esse evento disparado no mouseenter e mouseleave.
http://api.jquery.com/hover
mouveover Esse evento disparado no momento em que o ponteiro do mouse passa a estar
sobre um determinado elemento ou sobre os seus descendentes.
http://api.jquery.com/mouveover
mouseout Esse evento disparado no momento em que o ponteiro do mouse passa a no estar
sobre um determinado elemento ou sobre os seus descendentes.
http://api.jquery.com/mouseout
mousemove Esse evento disparado quando o ponteiro do mouse se move sobre um determi-
nado elemento ou sobre os seus descendentes.
http://api.jquery.com/mousemove
submit Esse evento disparado quando um formulrio enviado.
http://api.jquery.com/submit
on
Podemos definir o tratamento dos eventos com o mtodo on. No exemplo abaixo, o primeiro
parmetro o nome do evento que ser tratado e o segundo parmetro a funo que tratar o evento.
O tratamento de diversos eventos pode ser definido com uma nica chamada do mtodo on.
380 www.k19.com.br
381 J Q UERY
off
Podemos eliminar o tratamento de um evento com o mtodo off. A seguir, mostramos algumas
formas de utilizao desse mtodo.
Atalhos
O tratamento de um evento pode ser definido atravs de mtodos que funcionam como atalhos
para o mtodo on. No exemplo abaixo, utilizamos o mtodo click que um atalho para on("click",
funo).
Propriedades
Os eventos so associados informaes especificas. Por exemplo, quando o evento click dis-
parado, ele associado a uma coordenada horizontal e uma vertical. Essas coordenadas definem
a posio do ponteiro do mouse quando o clique ocorreu. Para recuperar essas informaes, basta
adicionar um parmetro nas funes de tratamento de eventos.
Propriedade Descrio
pageX Coordenada horizontal da posio do ponteiro do mouse.
http://api.jquery.com/event.pageX
www.facebook.com/k19treinamentos 381
J Q UERY 382
Propriedade Descrio
event.which A tecla ou o boto do mouse que foi pressionado.
http://api.jquery.com/event.which
Mais Sobre
Podemos utilizar a propriedade event.which para recuperar o keyCode das teclas
pressionadas nos eventos keydown, keypress e keyup. Contudo, importante saber
que o mapeamento de teclas para os eventos keydown e keyup diferente do mapeamento de
teclas para o evento keypress.
Exerccios de Fixao
382 www.k19.com.br
383 J Q UERY
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-jquery-fixacao5.zip
www.facebook.com/k19treinamentos 383
J Q UERY 384
60 }) ;
61
62 /* tratando o evento keypress */
63 $( " input " ) . keypress ( function ( event ) {
64 console . log ( " keypress : ( " + event . which + " ) " ) ;
65 }) ;
66
67 /* tratando o evento keyup */
68 $( " input " ) . keyup ( function ( event ) {
69 console . log ( " keyup : ( " + event . which + " ) " ) ;
70 }) ;
71
72 /* tratando o evento click */
73 $( " # div1 " ) . click ( function ( event ) {
74 console . log ( " click : ( " + event . pageX + " , " + event . pageY + " ) " ) ;
75 }) ;
76
77 /* tratando o evento dblclick */
78 $( " # div1 " ) . dblclick ( function ( event ) {
79 console . log ( " dblclick : ( " + event . pageX + " , " + event . pageY + " ) " ) ;
80 }) ;
81
82 /* tratando o evento mousedown */
83 $( " # div1 " ) . mousedown ( function ( event ) {
84 console . log ( " mousedown : ( " + event . pageX + " , " + event . pageY + " ) " ) ;
85 }) ;
86
87 /* tratando o evento mouseup */
88 $( " # div1 " ) . mouseup ( function ( event ) {
89 console . log ( " mouseup : ( " + event . pageX + " , " + event . pageY + " ) " ) ;
90 }) ;
91
92 /* tratando o evento mouseenter */
93 $( " # div1 " ) . mouseenter ( function ( event ) {
94 console . log ( " mouseenter : ( " + event . pageX + " , " + event . pageY + " ) " ) ;
95 }) ;
96
97 /* tratando o evento mouseleave */
98 $( " # div1 " ) . mouseleave ( function ( event ) {
99 console . log ( " mouseleave : ( " + event . pageX + " , " + event . pageY + " ) " ) ;
100 }) ;
101
102 /* tratando o evento hover */
103 $( " # div1 " ) . hover ( function ( event ) {
104 console . log ( " hover : ( " + event . pageX + " , " + event . pageY + " ) " ) ;
105 }) ;
106
107 /* tratando o evento mouseover */
108 $( " # div1 " ) . mouseover ( function ( event ) {
109 console . log ( " mouseover : ( " + event . pageX + " , " + event . pageY + " ) " ) ;
110 }) ;
111
112 /* tratando o evento mouseout */
113 $( " # div1 " ) . mouseout ( function ( event ) {
114 console . log ( " mouseout : ( " + event . pageX + " , " + event . pageY + " ) " ) ;
115 }) ;
116
117 /* tratando o evento mousemove */
118 $( " # div2 " ) . mousemove ( function ( event ) {
119 console . log ( " mousemove : ( " + event . pageX + " , " + event . pageY + " ) " ) ;
120 }) ;
121 }) ;
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-jquery-fixacao6.zip
384 www.k19.com.br
385 J Q UERY
http://localhost/jQuery/public_html/eventos.html.
http://localhost/~<USUARIO>/jQuery/public_html/eventos.html.
Seletores
Seletor Descrio
* Seleciona todos os elementos.
$("*");
http://api.jquery.com/all-selector
[atributo] Seleciona os elementos que possuem o atributo especificado.
http://api.jquery.com/has-attribute-selector
[atributo="valor"] Seleciona os elementos tal que o valor de um determinado atributo igual ao valor
especificado.
http://api.jquery.com/attribute-equals-selector
http://api.jquery.com/attribute-not-equal-selector
[atributo="valor"] Seleciona os elementos tal que o valor de um determinado atributo comea com o
valor especificado.
http://api.jquery.com/attribute-starts-with-selector
[atributo$="valor"] Seleciona os elementos tal que o valor de um determinado atributo termina com o
valor especificado.
http://api.jquery.com/attribute-ends-with-selector
www.facebook.com/k19treinamentos 385
J Q UERY 386
Seletor Descrio
[atributo*="valor"] Seleciona os elementos tal que o valor de um determinado atributo contm o valor
especificado como substring.
http://api.jquery.com/attribute-contains-selector
[atributo="valor"] Seleciona os elementos tal que o valor de um determinado atributo contm o valor
especificado como palavra.
http://api.jquery.com/attribute-contains-word-selector
[atributo|="valor"] Seleciona os elementos tal que o valor de um determinado atributo igual ao valor
especificado ou inicia com esse valor seguido do caractere -.
http://api.jquery.com/attribute-contains-prefix-selector
http://api.jquery.com/multiple-attribute-selector
http://api.jquery.com/id-selector
tipo Seleciona todos os elementos do tipo especificado.
http://api.jquery.com/element-selector
http://api.jquery.com/descendant-selector
s1 > s2 Seleciona todos os elementos que combinam com o seletor s2 e so filhos de elemen-
tos que combinam com o seletor s1.
http://api.jquery.com/child-selector
386 www.k19.com.br
387 J Q UERY
Seletor Descrio
s1 + s2 Seleciona todos os elementos que combinam com o seletor s2 e so irmos sucessores
adjacentes de elementos que combinam com o seletor s1.
$ ( " h1 + p " )
http://api.jquery.com/next-adjacent-Selector
s1 s2 Seleciona todos os elementos que combinam com o seletor s2 e so irmos sucessores
de elementos que combinam com o seletor s1.
$ ( " h1 ~ p " )
http://api.jquery.com/next-siblings-selector
http://api.jquery.com/class-selector
s1,s2,s3... Seleciona todos os elementos que combinam com pelo menos um dos seletores espe-
cificados.
http://api.jquery.com/multiple-selector
:first Seleciona o primeiro elemento da lista dos elementos que combinam com o seletor
utilizado.
http://api.jquery.com/first-selector
:last Seleciona o ltimo elemento da lista dos elementos que combinam com o seletor uti-
lizado.
http://api.jquery.com/last-selector
:eq(n) Seleciona o n-simo elemento da lista dos elementos que combinam com o seletor
utilizado.
http://api.jquery.com/eq-selector
:gt(n) Da lista de elementos que combinam com o seletor utilizado, seleciona do (n+1)-
simo elemento at o ltimo.
http://api.jquery.com/gt-selector
www.facebook.com/k19treinamentos 387
J Q UERY 388
Seletor Descrio
:lt(n) Da lista de elementos que combinam com o seletor utilizado, seleciona do primeiro
elemento at o (n-1)-simo.
http://api.jquery.com/lt-selector
:even Da lista de elementos que combinam com o seletor utilizado, seleciona todos os ele-
mentos de ndice par.
http://api.jquery.com/even-selector
:odd Da lista de elementos que combinam com o seletor utilizado, seleciona todos os ele-
mentos de ndice mpar.
http://api.jquery.com/odd-selector
http://api.jquery.com/first-child-selector
http://api.jquery.com/first-of-type-selector
:last-child Seleciona os elementos que no possuem um irmo sucessor.
http://api.jquery.com/last-child-selector
http://api.jquery.com/last-of-type-selector
http://api.jquery.com/nth-child-selector
388 www.k19.com.br
389 J Q UERY
Seletor Descrio
:nth-last-child(n) Seleciona os elementos que possuem (n - 1) irmos sucessores.
http://api.jquery.com/nth-last-child-selector
:nth-of-type(n) Seleciona os elementos que possuem (n - 1) irmos antecessores do mesmo tipo.
http://api.jquery.com/nth-of-type-selector
http://api.jquery.com/nth-last-of-type-selector
http://api.jquery.com/only-child-selector
:only-of-type Seleciona todos os elementos que no possuem irmos do mesmo tipo.
http://api.jquery.com/only-of-type-selector
http://api.jquery.com/parent-selector
http://api.jquery.com/hidden-selector
:visible Seleciona os elementos considerados visible. Os elementos que ocupam espao na
pgina so considerados visible.
http://api.jquery.com/visible-selector
www.facebook.com/k19treinamentos 389
J Q UERY 390
Seletor Descrio
:disabled Seleciona todos os elementos desabilitados.
http://api.jquery.com/disabled-selector
:enabled Seleciona todos os elementos habilitados.
http://api.jquery.com/enabled-selector
:contains("texto") Seleciona todos os elementos que possuem o texto especificado em seu contedo.
http://api.jquery.com/contains-selector
http://api.jquery.com/empty-selector
:has(seletor) Seleciona os elementos que possuem pelo menos um descendente que combina com
o seletor passado como parmetro.
http://api.jquery.com/has-selector
http://api.jquery.com/not-selector
http://api.jquery.com/button-selector
:file Seleciona todos os elementos com type="file".
http://api.jquery.com/file-selector
390 www.k19.com.br
391 J Q UERY
Seletor Descrio
:image Seleciona todos os elementos com type="image".
http://api.jquery.com/image-selector
:password Seleciona todos os elementos com type="password".
http://api.jquery.com/password-selector
http://api.jquery.com/radio-selector
http://api.jquery.com/checkbox-selector
:reset Seleciona todos os elementos com type="reset".
http://api.jquery.com/reset-selector
http://api.jquery.com/text-selector
http://api.jquery.com/submit-selector
:input Seleciona todos os elementos input e textarea.
http://api.jquery.com/input-selector
:header Seleciona os ttulos (h1,h2,h3,h4,h5 e h6).
http://api.jquery.com/header-selector
http://api.jquery.com/lang-selector
www.facebook.com/k19treinamentos 391
J Q UERY 392
Seletor Descrio
:animated Seleciona todos os elementos que esto com alguma animao em andamento.
http://api.jquery.com/animated-selector
:root Seleciona o elemento raiz do documento.
http://api.jquery.com/root-selector
:selected Seleciona os elementos option marcados.
http://api.jquery.com/selected-selector
Exerccios de Fixao
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-jquery-fixacao8.zip
392 www.k19.com.br
393 J Q UERY
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-jquery-fixacao9.zip
http://localhost/jQuery/public_html/seletores.html.
http://localhost/~<USUARIO>/jQuery/public_html/seletores.html.
Efeitos e Animaes
Efeito Descrio
fadeIn Faz os elementos se tornarem opacos gradativamente.
http://api.jquery.com/fadeIn
www.facebook.com/k19treinamentos 393
J Q UERY 394
Efeito Descrio
show Exibe os elementos.
http://api.jquery.com/show
toggle Esconde os elementos que esto sendo exibidos e exibe os elementos que esto es-
condidos.
http://api.jquery.com/toggle
Durao
Podemos definir a durao dos efeitos ou animaes em milissegundos. No exemplo abaixo, o
tempo de execuo do efeito fadeOut foi definido como 1000 milissegundos.
Callback
Podemos definir uma funo para ser executada ao trmino da execuo dos efeitos ou das ani-
maes. No exemplo abaixo, uma funo que exibe a mensagem terminou o fadeOut foi associada
ao trmino do efeito fadeOut.
Exerccios de Fixao
394 www.k19.com.br
395 J Q UERY
11 height : 100 px ;
12 background - color : yellow ;
13 border : 1 px solid black ;
14 }
15 </ style >
16 </ head >
17 < body >
18 < button id = " fadeIn " > fadeIn </ button >
19 < button id = " fadeOut " > fadeOut </ button >
20 < button id = " fadeToggle " > fadeToggle </ button >
21 < button id = " fadeTo1 " > fadeTo 0.5 </ button >
22 < button id = " fadeTo2 " > fadeTo 1.0 </ button >
23 < button id = " hide " > hide </ button >
24 < button id = " show " > show </ button >
25 < button id = " toggle " > toggle </ button >
26 < button id = " slideDown " > slideDown </ button >
27 < button id = " slideUp " > slideUp </ button >
28 < button id = " slideToggle " > slideToggle </ button >
29 < button id = " animate1 " > animate1 </ button >
30 < button id = " animate2 " > animate2 </ button >
31 < div id = " div " > </ div >
32 </ body >
33 </ html >
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-jquery-fixacao11.zip
www.facebook.com/k19treinamentos 395
J Q UERY 396
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-jquery-fixacao12.zip
http://localhost/jQuery/public_html/efeitos.html.
http://localhost/~<USUARIO>/jQuery/public_html/efeitos.html.
Manipulao
Mtodo Descrio
addClass Adiciona uma ou mais classes aos elementos selecionados.
http://api.jquery.com/addClass
396 www.k19.com.br
397 J Q UERY
Mtodo Descrio
removeClass Remove uma, vrias ou todas as classes dos elementos selecionados.
http://api.jquery.com/removeClass
toggleClass Inverte a presena de uma ou mais classes nos elementos selecionados.
http://api.jquery.com/toggleClass
http://api.jquery.com/hasClass
after Adiciona um determinado contedo imediatamente depois de cada um dos elementos se-
lecionados.
$ ( " h1 " ) . after ( " <p > subttulo </ p > " )
http://api.jquery.com/after
before Adiciona um determinado contedo imediatamente antes de cada um dos elementos sele-
cionados.
http://api.jquery.com/before
insertAfter Semelhante ao after com sintaxe levemente diferente.
http://api.jquery.com/insertAfter
http://api.jquery.com/insertBefore
www.facebook.com/k19treinamentos 397
J Q UERY 398
Mtodo Descrio
append Adiciona um determinado contedo no final do corpo de cada um dos elementos selecio-
nados.
$ ( " p " ) . append ( " <em >( fonte K19 ) </ em > " )
http://api.jquery.com/append
prepend Adiciona um determinado contedo no comeo do corpo de cada um dos elementos sele-
cionados.
$ ( " p " ) . prepend ( " <em >( fonte K19 ) </ em > " )
http://api.jquery.com/prepend
$ ( " <em >( fonte K19 ) </ em > " ) . appendTo ( " p " )
http://api.jquery.com/appendTo
$ ( " <em >( fonte K19 ) </ em > " ) . prependTo ( " p " )
http://api.jquery.com/prependTo
attr Esse mtodo pode ser utilizado para dois propsitos. O primeiro recuperar os valores dos
atributos do primeiro elemento selecionado. O segundo alterar os valores dos atributos de
todos os elementos selecionados.
http://api.jquery.com/attr
prop Esse mtodo pode ser utilizado para dois propsitos. O primeiro recuperar os valores
das propriedades do primeiro elemento selecionado. O segundo alterar os valores das
propriedades de todos os elementos selecionados.
var checked = $ ( " input [ checkbox ] " ) . prop ( " checked " ) ;
http://api.jquery.com/prop
398 www.k19.com.br
399 J Q UERY
Mtodo Descrio
css Esse mtodo pode ser utilizado para dois propsitos. O primeiro recuperar os valores das
propriedades CSS do primeiro elemento selecionado. O segundo alterar os valores das
propriedades CSS de todos os elementos selecionados.
http://api.jquery.com/css
http://api.jquery.com/removeAttr
http://api.jquery.com/removeProp
clone Cria uma cpia dos elementos selecionados.
http://api.jquery.com/clone
http://api.jquery.com/detach
http://api.jquery.com/empty
remove Remove os elementos selecionados da rvore de elementos.
http://api.jquery.com/remove
www.facebook.com/k19treinamentos 399
J Q UERY 400
Mtodo Descrio
replaceAll Substitui todos os elementos selecionados.
$ ( " <p > K19 </ p > " ) . replaceAll ( " p " ) ;
http://api.jquery.com/replaceAll
replaceWith Semelhante ao replaceAll com sintaxe levemente diferente.
$ ( " p " ) . replaceWith ( " <p > K19 </ p > " ) ;
http://api.jquery.com/replaceWith
height Esse mtodo pode ser utilizado para dois propsitos. O primeiro recuperar a altura do
primeiro elemento selecionado. O segundo alterar a altura de todos os elementos selecio-
nados.
http://api.jquery.com/height
width Esse mtodo pode ser utilizado para dois propsitos. O primeiro recuperar a largura do
primeiro elemento selecionado. O segundo alterar a largura de todos os elementos seleci-
onados.
http://api.jquery.com/width
http://api.jquery.com/innerHeight
http://api.jquery.com/innerWidth
400 www.k19.com.br
401 J Q UERY
Mtodo Descrio
outerHeight Recupera o outerHeight do primeiro elemento selecionado. Se esse mtodo for chamado
sem parmetros, o outerHeight a soma da altura, margem interna inferior, margem in-
terna superior, borda inferior e borda superior. Se ele for chamado com o parmetro true,
o outerHeight a soma da altura, margem interna inferior, margem interna superior, borda
inferior, borda superior, margem externa inferior e margem externa superior.
http://api.jquery.com/outerHeight
outerWidth Recupera o outerWidth do primeiro elemento selecionado. Se esse mtodo for chamado
sem parmetros, o outerWidth a soma da largura, margem interna da esquerda, margem
interna da direita, borda da esquerda e borda da direita. Se ele for chamado com o parme-
tro true, o outerWidth a soma da largura, margem interna da esquerda, margem interna
da direita, borda da esquerda, borda da direita, margem externa da esquerda e margem ex-
terna da direita.
http://api.jquery.com/outerWidth
html Esse mtodo pode ser utilizado para dois propsitos. O primeiro recuperar o contedo
HTML do primeiro elemento selecionado. O segundo alterar o contedo HTML de todos
os elementos selecionados.
$ ( " div " ) . html ( " <h1 > K19 < h /1 > <p > Cursos da K19 . </p > " ) ;
http://api.jquery.com/html
text Esse mtodo pode ser utilizado para dois propsitos. O primeiro recuperar o o texto con-
tido no corpo do primeiro elemento selecionado. O segundo alterar o texto contido no
corpo de todos os elementos selecionados.
http://api.jquery.com/text
val Esse mtodo utilizado para recuperar o valor de elementos como input, textarea e select.
Ele considera o primeiro elemento selecionado.
http://api.jquery.com/val
www.facebook.com/k19treinamentos 401
J Q UERY 402
Mtodo Descrio
wrap Adiciona na rvore de elementos uma estrutura envolvendo cada um dos elementos seleci-
onados.
$ ( " p " ) . wrap ( " < section > < div > </ div > </ section > " ) ;
http://api.jquery.com/wrap
wrapAll Adiciona na rvore de elementos uma estrutura envolvendo o conjunto dos elementos sele-
cionados.
$ ( " p " ) . wrapAll ( " < section > < div > </ div > </ section > " ) ;
http://api.jquery.com/wrapAll
wrapInner Adiciona na rvore de elementos uma estrutura envolvendo o contedo de cada um dos
elementos selecionados.
http://api.jquery.com/wrapInner
http://api.jquery.com/unwrap
offset Esse mtodo pode ser utilizado para dois propsitos. O primeiro recuperar a posio do
primeiro elemento selecionado. O segundo alterar a posio de todos os elementos seleci-
onados. Nessa alterao, os elementos com position: static passam para position: relative.
http://api.jquery.com/offset
http://api.jquery.com/position
402 www.k19.com.br
403 J Q UERY
Mtodo Descrio
scrollLeft Esse mtodo pode ser utilizado para dois propsitos. O primeiro recuperar a posio da
barra de rolagem horizontal do primeiro elemento selecionado. O segundo alterar a posi-
o da barra de rolagem horizontal de todos os elementos selecionados.
http://api.jquery.com/scrollLeft
scrollTop Esse mtodo pode ser utilizado para dois propsitos. O primeiro recuperar a posio da
barra de rolagem vertical do primeiro elemento selecionado. O segundo alterar a posio
da barra de rolagem vertical de todos os elementos selecionados.
http://api.jquery.com/scrollTop
Exerccios de Fixao
www.facebook.com/k19treinamentos 403
J Q UERY 404
29 < button id = " height " > height </ button >
30 < button id = " width " > width </ button >
31 < button id = " innerHeight " > innerHeight </ button >
32 < button id = " innerWidth " > innerWidth </ button >
33 < button id = " outerHeight " > outerHeight </ button >
34 < button id = " outerWidth " > outerWidth </ button >
35
36 < div id = " div1 " >
37 < ul >
38 < li > Jonas Hirata </ li >
39 < li > Marcelo Martins </ li >
40 < li > Rafael Cosentino </ li >
41 </ ul >
42 </ div >
43 </ body >
44 </ html >
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-jquery-fixacao14.zip
404 www.k19.com.br
405 J Q UERY
45 }) ;
46
47 $( " # append " ) . click ( function () {
48 $( " # p1 " ) . remove () ;
49 $( " # div1 " ) . append ( " <p id = p1 > append <p > " ) ;
50 }) ;
51
52 $( " # prepend " ) . click ( function () {
53 $( " # p1 " ) . remove () ;
54 $( " # div1 " ) . prepend ( " <p id = p1 > prepend <p > " ) ;
55 }) ;
56
57 $( " # appendTo " ) . click ( function () {
58 $( " # p1 " ) . remove () ;
59 $( " <p id = p1 > appendTo <p > " ) . appendTo ( " # div1 " ) ;
60 }) ;
61
62 $( " # prependTo " ) . click ( function () {
63 $( " # p1 " ) . remove () ;
64 $( " <p id = p1 > prependTo <p > " ) . prependTo ( " # div1 " ) ;
65 }) ;
66
67 $( " # height " ) . click ( function () {
68 $( " # p1 " ) . remove () ;
69 var height = $( " # div1 " ) . height () ;
70 $( " # div1 " ) . after ( " <p id = p1 > height : " + height + " <p > " ) ;
71 }) ;
72
73 $( " # width " ) . click ( function () {
74 $( " # p1 " ) . remove () ;
75 var width = $( " # div1 " ) . width () ;
76 $( " # div1 " ) . after ( " <p id = p1 > width : " + width + " <p > " ) ;
77 }) ;
78
79 $( " # innerHeight " ) . click ( function () {
80 $( " # p1 " ) . remove () ;
81 var innerHeight = $( " # div1 " ) . innerHeight () ;
82 $( " # div1 " ) . after ( " <p id = p1 > innerHeight : " + innerHeight + " <p > " ) ;
83 }) ;
84
85 $( " # innerWidth " ) . click ( function () {
86 $( " # p1 " ) . remove () ;
87 var innerWidth = $( " # div1 " ) . innerWidth () ;
88 $( " # div1 " ) . after ( " <p id = p1 > innerWidth : " + innerWidth + " <p > " ) ;
89 }) ;
90
91 $( " # outerHeight " ) . click ( function () {
92 $( " # p1 " ) . remove () ;
93 var outerHeight = $( " # div1 " ) . outerHeight () ;
94 $( " # div1 " ) . after ( " <p id = p1 > outerHeight : " + outerHeight + " <p > " ) ;
95 }) ;
96
97 $( " # outerWidth " ) . click ( function () {
98 $( " # p1 " ) . remove () ;
99 var outerWidth = $( " # div1 " ) . outerWidth () ;
100 $( " # div1 " ) . after ( " <p id = p1 > outerWidth : " + outerWidth + " <p > " ) ;
101 }) ;
102 }) ;
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-jquery-fixacao15.zip
http://localhost/jQuery/public_html/manipulacao.html.
www.facebook.com/k19treinamentos 405
J Q UERY 406
http://localhost/~<USUARIO>/jQuery/public_html/manipulacao.html.
Mais mtodos
Mtodo Descrio
add Adiciona elementos a um conjunto.
http://api.jquery.com/add
http://api.jquery.com/parent
http://api.jquery.com/parents
siblings Recupera os irmos de cada elemento de um conjunto.
http://api.jquery.com/siblings
Exemplo: recuperando os filhos dos divs e dos spans que possuam a classe destaque.
http://api.jquery.com/children
find Recupera os descendentes de cada elemento de um conjunto. Opcionalmente, pode
receber um seletor como parmetro para filtrar o resultado.
Exemplo: recuperando os descendentes dos divs e dos spans que possuam a classe destaque.
http://api.jquery.com/find
406 www.k19.com.br
407 J Q UERY
Mtodo Descrio
each Permite executar uma funo para cada elemento de um conjunto.
http://api.jquery.com/each
map Permite executar uma funo para cada elemento de um conjunto. Essa funo pode
devolver um valor. Esses valores sero devolvidos em um objeto jQuery.
http://api.jquery.com/map
http://api.jquery.com/filter
Exemplo: recupera os divs e os spans que possuem um elemento da classe destaque como descendente.
http://api.jquery.com/has
http://api.jquery.com/not
first Devolve o primeiro elemento de uma lista.
http://api.jquery.com/first
http://api.jquery.com/last
http://api.jquery.com/eq
www.facebook.com/k19treinamentos 407
J Q UERY 408
Mtodo Descrio
slice Recupera um determinado trecho de uma lista de elementos.
http://api.jquery.com/slice
next Devolve os irmos adjacentes sucessores dos elementos de um conjunto.
http://api.jquery.com/next
http://api.jquery.com/nextAll
http://api.jquery.com/prev
prevAll Devolve os irmos antecessores dos elementos de um conjunto.
http://api.jquery.com/prevAll
AJAX
A forma bsica de interao entre os usurios e as pginas web limitada. Quando o usurio
clica em um link ou em um boto de uma pgina web, uma requisio HTTP enviada ao servidor
correspondente. Quando chegar no servidor, essa requisio ser processada. No trmino desse
processamento, o servidor enviar uma resposta HTTP contendo uma pgina web para a mquina
do usurio. Ao receber essa resposta, o navegador do usurio carregar a pgina inteira.
Nessa abordagem, muitas vezes, ocorre um desperdcio de tempo, pois, na maior parte dos ca-
sos, no seria necessrio carregar a pgina inteira e sim pequenos pedaos dela. Mesmo assim, o
navegador sempre carregar todo o contedo das pginas web.
Alm disso, h outro problema nessa abordagem, o usurio no pode interagir com a pgina
web durante o envio da requisio HTTP; processamento no servidor; envio da resposta HTTP e
carregamento do pgina.
Para aumentar a interatividade entre os usurios e as pginas web, podemos utilizar a forma
de interao conhecida como AJAX (Asynchronous Javascript and XML). Nessa outra abordagem,
os navegadores podem atualizar pedaos de uma pgina web sem ter carreg-la completamente.
408 www.k19.com.br
409 J Q UERY
Alm disso, com AJAX, os usurios podem interagir com as pginas web durante o envio da requisio
HTTP; processamento no servidor; envio da resposta HTTP e carregamento parcial das pginas web.
load
Podemos obter contedo de Web Server atravs do mtodo load. Esse mtodo realiza requisies
HTTP do tipo GET com AJAX. No exemplo abaixo, o contedo do documento HTML k19.html obtido
do servidor e inserido no corpo do elemento com id="conteudo".
get
Podemos realizar requisies HTTP do tipo GET com AJAX atravs do mtodo get. Esse mtodo
recebe como parmetro a URL correspondente requisio que desejamos realizar. No exemplo
abaixo, a requisio foi realizada para URL k19.php mas o resultado foi ignorado.
Para recuperar o resultado da requisio devemos utilizar o mtodo done. Devemos passar como
argumento para esse mtodo a funo que tratar o resultado. Essa funo receber o resultado
como parmetro. Observe, no exemplo abaixo, que o resultado exibido no console do navegador.
var dados = {
nome : " Rafael " ,
empresa : " K19 "
};
k19.php?nome=Rafael&empresa=K19
post
Podemos realizar requisies HTTP do tipo POST com AJAX atravs do mtodo post. Esse m-
todo funciona de forma semelhante ao mtodo get. Veja alguns exemplos.
www.facebook.com/k19treinamentos 409
J Q UERY 410
var dados = {
nome : " Rafael " ,
empresa : " K19 "
};
k19.php?nome=Rafael&empresa=K19
Exerccios de Fixao
1 <? php
2 $soma = $_REQUEST [ " x " ] + $_REQUEST [ " y " ];
3
4 echo $soma ;
5 ?>
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-jquery-fixacao17.zip
410 www.k19.com.br
411 J Q UERY
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-jquery-fixacao18.zip
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-jquery-fixacao19.zip
http://localhost/jQuery/public_html/ajax.html.
http://localhost/~<USUARIO>/jQuery/public_html/ajax.html.
Exerccios Complementares
www.facebook.com/k19treinamentos 411
J Q UERY 412
19 # saida {
20 margin : 0 px auto ;
21 width : 800 px ;
22 height : 200 px ;
23 overflow : auto ;
24 }
25
26 # content {
27 width : 800 px ;
28 margin : 250 px auto 0 px ;
29 }
30
31 pre {
32 padding : 10 px ;
33 border - radius : 15 px ;
34 background - color : # eeeeee ;
35 }
36
37 # div1 , # div2 {
38 background - color : yellow ;
39 width : 200 px ;
40 height : 200 px ;
41 }
42
43 # div3 {
44 background - color : blue ;
45 width : 50 px ;
46 height : 50 px ;
47 margin : auto ;
48 }
49 </ style >
50 </ head >
51 < body id = " body " >
52 < div id = " header " >
53 < div id = " saida " > </ div >
54 </ div >
55 < div id = " content " >
56
57 < h1 > ready </ h1 >
58 < pre id = " ready - on " >
59 $( document ) . ready ( function () {
60 var saida = $( " # saida " ) ;
61 saida . append ( " evento ready disparado & lt ; br & gt ; " ) ;
62 }) ;
63 </ pre >
64
65 < h1 > resize </ h1 >
66 < button id = " resize " > ON </ button >
67 < pre >
68 /* ON */
69 $( window ) . resize ( function () {
70 var largura = $( window ) . width () ;
71 var altura = $( window ) . height () ;
72 saida . append ( " resize : ( " + largura + " , " + altura + " ) " ) ;
73 saida . append ( " & lt ; br & gt ; " ) ;
74 saida . scrollTop ( saida . prop ( " scrollHeight " ) ) ;
75 }) ;
76
77 /* OFF */
78 $( window ) . off ( " resize " ) ;
79 </ pre >
80
81 < h1 > scroll </ h1 >
82 < button id = " scroll " > ON </ button >
83 < pre >
84 /* ON */
85 $( window ) . scroll ( function () {
86 var x = $( window ) . scrollLeft () ;
87 var y = $( window ) . scrollTop () ;
88 saida . append ( " scroll : ( " + x + " , " + y + " ) " ) ;
412 www.k19.com.br
413 J Q UERY
www.facebook.com/k19treinamentos 413
J Q UERY 414
159 saida . append ( type + " : ( " + event . which + " ) " ) ;
160 saida . append ( " & lt ; br & gt ; " ) ;
161 saida . scrollTop ( saida . prop ( " scrollHeight " ) ) ;
162 }
163 );
164
165 /* OFF */
166 $( " # input4 " ) . off ( " keydown keypress keyup " ) ;
167 </ pre >
168 < label > Teste : </ label >
169 < input id = " input4 " >
170
171 < h1 > click , dblclick , mousedown , mouseup , mouseenter ,
172 mouseleave , hover , mouseover e mouseout </ h1 >
173 < button id = " mouse " > ON </ button >
174 < pre >
175 /* ON */
176 $( " # div1 " ) . on ( " click dblclick mousedown mouseup " +
177 " mouseenter mouseleave hover mouseover mouseout " ,
178 function ( event ) {
179 var type = event . type ;
180
181 saida . append ( type + " : ( " + event . which + " ) " ) ;
182 saida . append ( " & lt ; br & gt ; " ) ;
183 saida . scrollTop ( saida . prop ( " scrollHeight " ) ) ;
184 }
185 );
186
187 /* OFF */
188 $( " # div1 " ) . off ( " click dblclick mousedown mouseup " +
189 " mouseenter mouseleave hover mouseover mouseout " ) ;
190 </ pre >
191 < div id = " div1 " > < div id = " div3 " > </ div > </ div >
192
193 < h1 > mousemove </ h1 >
194 < button id = " mousemove " > ON </ button >
195 < pre >
196 /* ON */
197 $( " # div2 " ) . mousemove ( function ( event ) {
198 var x = event . pageX ;
199 var y = event . pageY ;
200 var type = event . type ;
201
202 saida . append ( type + " : ( " + x + " , " + y + " ) " ) ;
203 saida . append ( " & lt ; br & gt ; " ) ;
204 saida . scrollTop ( saida . prop ( " scrollHeight " ) ) ;
205 }) ;
206
207 /* OFF */
208 $( " # div2 " ) . off ( " mousemove " ) ;
209 </ pre >
210 < div id = " div2 " > </ div >
211 </ div >
212 </ body >
213 </ html >
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-jquery-complementar1.zip
1 /* ready */
2 $( document ) . ready ( function () {
3 var saida = $( " # saida " ) ;
4 saida . append ( " evento ready disparado < br > " ) ;
5
414 www.k19.com.br
415 J Q UERY
6 /* resize */
7 var resize = false ;
8 $( " # resize " ) . click ( function () {
9 if ( resize ) {
10 $( window ) . off ( " resize " ) ;
11 $( " # resize " ) . html ( " ON " ) ;
12 resize = false ;
13 } else {
14 $( window ) . resize ( function () {
15 var largura = $( window ) . width () ;
16 var altura = $( window ) . height () ;
17 saida . append ( " resize : ( " + largura + " , " + altura + " ) " ) ;
18 saida . append ( " <br > " ) ;
19 saida . scrollTop ( saida . prop ( " scrollHeight " ) ) ;
20 }) ;
21 $( " # resize " ) . html ( " OFF " ) ;
22 resize = true ;
23 }
24 }) ;
25
26 /* scroll */
27 var scroll = false ;
28 $( " # scroll " ) . click ( function () {
29 if ( scroll ) {
30 $( window ) . off ( " scroll " ) ;
31 $( " # scroll " ) . html ( " ON " ) ;
32 scroll = false ;
33 } else {
34 $( window ) . scroll ( function () {
35 var x = $( window ) . scrollLeft () ;
36 var y = $( window ) . scrollTop () ;
37 saida . append ( " scroll : ( " + x + " , " + y + " ) " ) ;
38 saida . append ( " <br > " ) ;
39 saida . scrollTop ( saida . prop ( " scrollHeight " ) ) ;
40 }) ;
41 $( " # scroll " ) . html ( " OFF " ) ;
42 scroll = true ;
43 }
44 }) ;
45
46 /* focus focusin blur focusout */
47 var foco = false ;
48 $( " # foco " ) . click ( function () {
49 if ( foco ) {
50 $( " * " ) . off ( " focus focusin blur focusout " ) ;
51 $( " # foco " ) . html ( " ON " ) ;
52 foco = false ;
53 } else {
54 $( " * " ) . on ( " focus focusin blur focusout " ,
55 function ( event ) {
56 var tag = this . tagName ;
57 var id = this . id ;
58 var type = event . type ;
59
60 saida . append ( type + " ( " + tag + " , # " + id + " ) " ) ;
61 saida . append ( " <br > " ) ;
62 saida . scrollTop ( saida . prop ( " scrollHeight " ) ) ;
63 }
64 );
65 $( " # foco " ) . html ( " OFF " ) ;
66 foco = true ;
67 }
68 }) ;
69
70 /* select */
71 var select = false ;
72 $( " # select " ) . click ( function () {
73 if ( select ) {
74 $( " # input2 " ) . off ( " select " ) ;
75 $( " # select " ) . html ( " ON " ) ;
www.facebook.com/k19treinamentos 415
J Q UERY 416
76 select = false ;
77 } else {
78 $( " # input2 " ) . select ( function () {
79 saida . append ( " select : ( " + window . getSelection () + " ) " ) ;
80 saida . append ( " <br > " ) ;
81 saida . scrollTop ( saida . prop ( " scrollHeight " ) ) ;
82 }) ;
83 $( " # select " ) . html ( " OFF " ) ;
84 select = true ;
85 }
86 }) ;
87
88 /* change */
89 var change = false ;
90 $( " # change " ) . click ( function () {
91 if ( change ) {
92 $( " # input3 " ) . off ( " change " ) ;
93 $( " # change " ) . html ( " ON " ) ;
94 change = false ;
95 } else {
96 $( " # input3 " ) . change ( function () {
97 saida . append ( " change : ( " + $( this ) . val () + " ) " ) ;
98 saida . append ( " <br > " ) ;
99 saida . scrollTop ( saida . prop ( " scrollHeight " ) ) ;
100 }) ;
101 $( " # change " ) . html ( " OFF " ) ;
102 change = true ;
103 }
104 }) ;
105
106 /* key */
107 var key = false ;
108 $( " # key " ) . click ( function () {
109 if ( key ) {
110 $( " # input4 " ) . off ( " keydown keypress keyup " ) ;
111 $( " # key " ) . html ( " ON " ) ;
112 key = false ;
113 } else {
114 $( " # input4 " ) . on ( " keydown keypress keyup " ,
115 function ( event ) {
116 var type = event . type ;
117
118 saida . append ( type + " : ( " + event . which + " ) " ) ;
119 saida . append ( " <br > " ) ;
120 saida . scrollTop ( saida . prop ( " scrollHeight " ) ) ;
121 }
122 );
123 $( " # key " ) . html ( " OFF " ) ;
124 key = true ;
125 }
126 }) ;
127
128 /* mouse */
129 var mouse = false ;
130 $( " # mouse " ) . click ( function () {
131 if ( mouse ) {
132 $( " # div1 " ) . off ( " click dblclick mousedown mouseup " +
133 " mouseenter mouseleave hover mouseover mouseout " ) ;
134 $( " # mouse " ) . html ( " ON " ) ;
135 mouse = false ;
136 } else {
137 $( " # div1 " ) . on ( " click dblclick mousedown mouseup " +
138 " mouseenter mouseleave hover mouseover mouseout " ,
139 function ( event ) {
140 var x = event . pageX ;
141 var y = event . pageY ;
142 var type = event . type ;
143
144 saida . append ( type + " : ( " + x + " , " + y + " ) " ) ;
145 saida . append ( " <br > " ) ;
416 www.k19.com.br
417 J Q UERY
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-jquery-complementar2.zip
http://localhost/jQuery/public_html/jquery-complementar.html.
http://localhost/~<USUARIO>/jQuery/public_html/jquery-complementar.html.
Resumo do Captulo
www.facebook.com/k19treinamentos 417
J Q UERY 418
6 A biblioteca jQuery suporta todos os seletores do CSS. Alm disso, ela oferece alguns seletores
que no existem no CSS.
8 Podemos determinar uma funo que deve ser executada ao trmino de um efeito ou anima-
o.
9 A biblioteca jQuery oferece muitos recursos para a manipulao dos elementos HTML.
Prova
d) Geralmente, a utilizao de CDNs aumenta a segurana dos sites e das aplicao web.
418 www.k19.com.br
419 J Q UERY
c) Podemos utilizar o mtodo event() para adicionar ou eliminar os tratamentos dos eventos.
www.facebook.com/k19treinamentos 419
J Q UERY 420
5 7
Minha Pontuao Pontuao Mnima: Pontuao Mxima:
420 www.k19.com.br
APNDICE
P ROJETO
A
Para exercitar o contedo visto nesta apostila, implemete uma pgina web semelhante imagem
a seguir.
Smartphone Desktop
Exerccios de Fixao
www.facebook.com/k19treinamentos 421
P ROJETO 422
Importante
No Windows, utilizando o IIS (Internet Information Services) como Web Server, voc
deve salvar o projeto blog em C:\inetpub\wwwroot. Lembre-se que necessrio ins-
talar o IIS conforme vimos anteriormente.
Importante
No Ubuntu, utilizando o Apache HTTP Server como Web Server, voc deve salvar o
projeto blog em /home/<USUARIO>/public_html. Lembre-se que necessrio ins-
talar e configurar o Apache HTTP Server como vimos anteriormente.
422 www.k19.com.br
423 P ROJETO
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-projeto-fixacao1.zip
www.facebook.com/k19treinamentos 423
P ROJETO 424
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-projeto-fixacao2.zip
424 www.k19.com.br
425 P ROJETO
3 No projeto blog, crie um arquivo chamado principal.css em uma pasta chamada css.
www.facebook.com/k19treinamentos 425
P ROJETO 426
426 www.k19.com.br
427 P ROJETO
www.facebook.com/k19treinamentos 427
P ROJETO 428
428 www.k19.com.br
429 P ROJETO
279
280 # main - wrapper {
281 max - width : 980 px ;
282 width : 100%;
283 margin : 0 auto ;
284 }
285
286 # main - header {
287 position : relative ;
288 background : black ;
289 padding : 0.8 em ;
290 }
291
292 # main - header h1 {
293 color : white ;
294 font - size : 1.5 em ;
295 display : inline - block ;
296 vertical - align : middle ;
297 }
298
299 article header {
300 background : #38 c3f2 ;
301 color : white ;
302 padding : 0.8 em ;
303 }
304
305 article header h1 {
306 font - size : 1.2 em ;
307 }
308
309 article header h2 {
310 font - size : 0.8 em ;
311 font - weight : normal ;
312 }
313
314 . article - text {
315 padding : 0.8 em ;
316 }
317
318 . article - text p {
319 font - size : 0.8 em ;
320 margin - bottom : 0.8 em ;
321 }
322
323 # archive - links header {
324 background : #888;
325 color : white ;
326 padding : 0.8 em ;
327 }
328
329 # archive - links header h1 {
330 font - size : 1 em ;
331 }
332
333 # archive - links ul {
334 padding : 0.8 em 0 0.8 em 1.6 em ;
335 color : #888;
336 font - size : 0.8 em ;
337 }
338
339 # archive - links li {
340 padding : 0.2 em 0;
341 }
342
343 # archive - links li a {
344 color : inherit ;
345 text - decoration : none ;
346 }
347
348 # archive - links li a : hover {
www.facebook.com/k19treinamentos 429
P ROJETO 430
430 www.k19.com.br
431 P ROJETO
419 footer {
420 text - align : center ;
421 clear : left ;
422 }
423
424 footer small {
425 font - size : 0.5 em ;
426 }
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-projeto-fixacao3.zip
www.facebook.com/k19treinamentos 431
P ROJETO 432
53 </ p >
54 </ article >
55 </ div >
56 </ article >
57 <? php endfor ; ? >
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-jquery-fixacao4.zip
5 No projeto blog, crie um arquivo chamado principal.js em uma pasta chamada js.
1 var scrollTimeout = 0;
2 var isLoadingArticles = false ;
3
4 $( document ) . ready ( function () {
5 $( # articles - container ) . on ( click , . show - comments , function ( e ) {
6 $( this ) . parent () . find ( form , article ) . slideDown () ;
7 $( this ) . hide () ;
8 }) ;
9
10 // Trata o evento de clique no boto de menu adicionando uma classe
11 // ao mesmo para indicar que o mesmo est expandido .
12 $( # main - menu - btn ) . click ( function ( e ) {
13 e . stopPropagation () ;
14 $( this ) . parent () . find ( ul ) . addClass ( expanded ) . slideDown () ;
15 }) ;
16
17 // Trata o evento de clique em qualquer rea da pgina para contrair e
18 // remover a classe expanded do menu principal .
19 $( html ) . click ( function ( e ) {
20 $( # main - header ul . expanded ) . removeClass ( expanded ) . slideUp (400 , function () {
21 $( this ) . removeAttr ( style ) ;
22 }) ;
23 }) ;
24
25 $( window ) . scroll ( function () {
26 // Utilizando um timeout para evitar chamadas excessivas
27 // funo afterScroll () .
28 clearTimeout ( scrollTimeout ) ;
29 scrollTimeout = setTimeout ( afterScroll , 500) ;
30 }) ;
31
32 // Carregando os artigos assim que a pgina for carregada .
33 loadArticles () ;
34 }) ;
35
36 function afterScroll () {
37 if (! isLoadingArticles && $( # lazy - load - point ) . isOnScreen () ) {
38 loadArticles () ;
39 }
40 }
41
42 function loadArticles () {
43 $. ajax ({
44 url : servico . php ,
45 dataType : html ,
46 beforeSend : function ( jqXHR , settings ) {
47 isLoadingArticles = true ;
48
49 // Exibe o GIF animado que indica o carregamento do contedo .
50 $( # lazy - load - point ) . addClass ( loading ) ;
51 },
52 complete : function () {
53 // O uso do timeout neste ponto desnecessrio . Foi utilizado aqui
54 // para dar tempo do GIF animado ser visualizado em um servidor
55 // local .
432 www.k19.com.br
433 P ROJETO
56 setTimeout ( function () {
57 isLoadingArticles = false ;
58 // Oculta o GIF animado que indica o carregamento do contedo .
59 $( # lazy - load - point ) . removeClass ( loading ) ;
60 } , 1000) ;
61 },
62 success : function ( data , textStatus , jqXHR ) {
63 // O uso do timeout neste ponto desnecessrio . Foi utilizado aqui
64 // para dar tempo do GIF animado ser visualizado em um servidor
65 // local .
66 setTimeout ( function () {
67 $( # articles - container ) . prepend ( data ) ;
68 } , 1000) ;
69 },
70 error : function ( jqXHR , textStatus , errorThrown ) {
71 alert ( errorThrown ) ;
72 }
73 }) ;
74 }
75
76 // Extendendo o jQuery com o mtodo isOnScreen que verifica se um
77 // elemento est na regio visvel da pgina .
78 $. fn . isOnScreen = function () {
79 var win = $( window ) ;
80
81 var viewport = {
82 top : win . scrollTop () ,
83 left : win . scrollLeft ()
84 };
85 viewport . right = viewport . left + win . width () ;
86 viewport . bottom = viewport . top + win . height () ;
87
88 var bounds = this . offset () ;
89 bounds . right = bounds . left + this . outerWidth () ;
90 bounds . bottom = bounds . top + this . outerHeight () ;
91
92 return (!( viewport . right < bounds . left ||
93 viewport . left > bounds . right ||
94 viewport . bottom < bounds . top ||
95 viewport . top > bounds . bottom ) ) ;
96 };
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-projeto-fixacao5.zip
6 Copie o arquivo k02-projeto.zip da pasta K19-Arquivos para a sua rea de trabalho. Descom-
pacte esse arquivo e copie o contedo das pastas css e img para as pastas css e img do projeto blog
respectivamente.
http://localhost/blog/public_html/index.html.
http://localhost/~<USUARIO>/blog/public_html/index.html.
www.facebook.com/k19treinamentos 433
P ROJETO 434
434 www.k19.com.br
APNDICE
Q UIZZES
B
Quiz 1
Considere uma pgina HTML contendo um <div> com largura (width) 200px, margem
interna (padding) 10px e borda de 3px. Visualmente, qual o espao horizontal ocupado por
esse elemento?
a) 200px
b) 203px
c) 210px
d) 213px
e) 226px
De acordo com o Box Model do CSS visto no Captulo 3, ao atribuirmos margens internas e bor-
das em um elemento com largura definida fazemos com que, visualmente, a largura ocupada por
esse elemento seja a soma das propriedades width, padding-left, padding-right, border-
left e border-right. Como utilizamos a propriedade padding com o valor 10px para definir
as margens internas, podemos considerar que temos 10px nas propriedades padding-left e
padding-right. A mesma idia se aplica propriedade border, portanto temos border-left
e border-right com 3px cada.
Fazendo a soma temos: 200px (width) + 10px (padding-left) + 10px (padding-right) + 3px (border-
left) + 3px (border-right) = 226px
www.facebook.com/k19treinamentos 435
QUIZZES 436
436 www.k19.com.br
APNDICE
R ESPOSTAS
C
Questo 1.1
Questo 1.2
Questo 1.3
Questo 1.4
Questo 1.5
Questo 1.6
www.facebook.com/k19treinamentos 437
R ESPOSTAS 438
http://localhost/html/public_html/pagina-simples.html.
http://localhost/~<USUARIO>/html/public_html/pagina-simples.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-complementar1.zip
438 www.k19.com.br
439 R ESPOSTAS
http://localhost/html/public_html/geografia.html.
http://localhost/~<USUARIO>/html/public_html/geografia.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-complementar2.zip
http://localhost/html/public_html/seguro-treinamento.html.
http://localhost/~<USUARIO>/html/public_html/seguro-treinamento.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-complementar3.zip
www.facebook.com/k19treinamentos 439
R ESPOSTAS 440
http://localhost/html/public_html/caracteres-especiais.html.
http://localhost/~<USUARIO>/html/public_html/caracteres-especiais.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-complementar4.zip
http://localhost/html/public_html/espacos-e-quebras-de-linha.html.
http://localhost/~<USUARIO>/html/public_html/espacos-e-quebras-de-linha.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-complementar5.zip
440 www.k19.com.br
441 R ESPOSTAS
http://localhost/html/public_html/codigo-java.html.
http://localhost/~<USUARIO>/html/public_html/codigo-java.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-complementar6.zip
www.facebook.com/k19treinamentos 441
R ESPOSTAS 442
http://localhost/html/public_html/elementos-i-b.html.
http://localhost/~<USUARIO>/html/public_html/elementos-i-b.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-complementar7.zip
http://localhost/html/public_html/sao-paulo.html.
http://localhost/~<USUARIO>/html/public_html/sao-paulo.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-complementar8.zip
442 www.k19.com.br
443 R ESPOSTAS
http://localhost/html/public_html/spfc.html.
http://localhost/~<USUARIO>/html/public_html/spfc.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-complementar9.zip
http://localhost/html/public_html/mais-citacoes.html.
www.facebook.com/k19treinamentos 443
R ESPOSTAS 444
http://localhost/~<USUARIO>/html/public_html/mais-citacoes.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-complementar10.zip
http://localhost/html/public_html/abbr.html.
http://localhost/~<USUARIO>/html/public_html/abbr.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-complementar11.zip
444 www.k19.com.br
445 R ESPOSTAS
19 < dt > < dfn > Primeiro pau </ dfn > </ dt >
20 < dd >
21 Trave mais prxima da origem de um cruzamento .
22 </ dd >
23 </ dl >
24 </ body >
25 </ html >
http://localhost/html/public_html/mais-definicoes.html.
http://localhost/~<USUARIO>/html/public_html/mais-definicoes.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-complementar12.zip
http://localhost/html/public_html/mais-alteracoes.html.
http://localhost/~<USUARIO>/html/public_html/mais-alteracoes.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-complementar13.zip
www.facebook.com/k19treinamentos 445
R ESPOSTAS 446
http://localhost/html/public_html/mais-datas.html.
http://localhost/~<USUARIO>/html/public_html/mais-datas.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-complementar14.zip
http://localhost/html/public_html/texto-marcado.html.
http://localhost/~<USUARIO>/html/public_html/texto-marcado.html.
446 www.k19.com.br
447 R ESPOSTAS
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-complementar15.zip
http://localhost/html/public_html/pontos-turisticos.html.
http://localhost/~<USUARIO>/html/public_html/pontos-turisticos.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-complementar16.zip
www.facebook.com/k19treinamentos 447
R ESPOSTAS 448
14 < li >
15 Coloque o aparelho na horizontal sobre uma superfcie plana .
16 </ li >
17 < li >
18 Conecte o aparelho ao computador utilizando um cabo USB .
19 </ li >
20 < li >
21 Use o CD - ROM para instalao do software .
22 </ li >
23 < li >
24 Conecte o aparelho fonte de energia com um adaptador AC .
25 </ li >
26 < li >
27 Ligue o aparelho e espere o reconhecimento do computador .
28 </ li >
29 </ ol >
30 </ body >
31 </ html >
http://localhost/html/public_html/manual-k19.html.
http://localhost/~<USUARIO>/html/public_html/manual-k19.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-complementar17.zip
http://localhost/html/public_html/mais-links.html.
http://localhost/~<USUARIO>/html/public_html/mais-links.html.
448 www.k19.com.br
449 R ESPOSTAS
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-complementar18.zip
http://localhost/html/public_html/mais-imagens.html.
http://localhost/~<USUARIO>/html/public_html/mais-imagens.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-complementar19.zip
www.facebook.com/k19treinamentos 449
R ESPOSTAS 450
http://localhost/html/public_html/mais-tabelas.html.
http://localhost/~<USUARIO>/html/public_html/mais-tabelas.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-complementar20.zip
450 www.k19.com.br
451 R ESPOSTAS
www.facebook.com/k19treinamentos 451
R ESPOSTAS 452
452 www.k19.com.br
453 R ESPOSTAS
147 < label for = " mais_conhecimentos_id " > Mais conhecimentos </ label >
148 < textarea
149 id = " mais_conhecimentos_id "
150 rows = " 10 "
151 cols = " 20 "
152 maxlength = " 500 " > Digite os seus conhecimentos </ textarea >
153 </ fieldset >
154
155 < input type = " submit " value = " Enviar " >
156 </ form >
157 </ body >
158 </ html >
http://localhost/html/public_html/mais-formularios.html.
http://localhost/~<USUARIO>/html/public_html/mais-formularios.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-html-complementar21.zip
Questo 2.1
Questo 2.2
Questo 2.3
Questo 2.4
Questo 2.5
Questo 2.6
www.facebook.com/k19treinamentos 453
R ESPOSTAS 454
Questo 2.7
Questo 2.8
Questo 2.9
Questo 2.10
Questo 2.11
Questo 2.12
Questo 2.13
Questo 2.14
Questo 2.15
Questo 3.1
Questo 3.2
454 www.k19.com.br
455 R ESPOSTAS
Questo 3.3
Questo 3.4
Questo 3.5
Questo 3.6
Questo 3.7
Questo 3.8
Questo 3.9
Questo 3.10
Questo 3.11
Questo 3.12
www.facebook.com/k19treinamentos 455
R ESPOSTAS 456
Questo 3.13
Questo 3.14
Questo 3.15
Questo 3.16
Questo 3.17
http://localhost/javascript/public_html/exibe-numeros-1-50-2x.html.
456 www.k19.com.br
457 R ESPOSTAS
http://localhost/~<USUARIO>/javascript/public_html/exibe-numeros-1-50-2x.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-complementar1.zip
http://localhost/javascript/public_html/exibe-nome-k19.html.
http://localhost/~<USUARIO>/javascript/public_html/exibe-nome-k19.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-complementar2.zip
www.facebook.com/k19treinamentos 457
R ESPOSTAS 458
http://localhost/javascript/public_html/multiplos-de-tres.html.
http://localhost/~<USUARIO>/javascript/public_html/multiplos-de-tres.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-complementar3.zip
458 www.k19.com.br
459 R ESPOSTAS
http://localhost/javascript/public_html/multiplos-de-quatro-e-sete.html.
http://localhost/~<USUARIO>/javascript/public_html/multiplos-de-quatro-e-sete.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-complementar4.zip
http://localhost/javascript/public_html/exibe-triangulo.html.
http://localhost/~<USUARIO>/javascript/public_html/exibe-triangulo.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-complementar5.zip
www.facebook.com/k19treinamentos 459
R ESPOSTAS 460
http://localhost/javascript/public_html/exibe-triangulos.html.
http://localhost/~<USUARIO>/javascript/public_html/exibe-triangulos.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-complementar6.zip
1 var penultimo = 0;
2 var ultimo = 1;
3
4 console . log ( penultimo ) ;
5 console . log ( ultimo ) ;
6
7 for ( var contador = 0; contador < 28; contador ++) {
460 www.k19.com.br
461 R ESPOSTAS
http://localhost/javascript/public_html/fibonnaci.html.
http://localhost/~<USUARIO>/javascript/public_html/fibonnaci.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-complementar7.zip
www.facebook.com/k19treinamentos 461
R ESPOSTAS 462
24 }
http://localhost/javascript/public_html/embaralha.html.
http://localhost/~<USUARIO>/javascript/public_html/embaralha.html.
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-complementar8.zip
http://localhost/javascript/public_html/ordena.html.
http://localhost/~<USUARIO>/javascript/public_html/ordena.html.
462 www.k19.com.br
463 R ESPOSTAS
Arquivo: https://github.com/K19/K19-Exercicios/archive/k02-javascript-complementar9.zip
Questo 4.1
Questo 4.2
Questo 4.3
Questo 4.4
Questo 4.5
Questo 4.6
Questo 4.7
Questo 4.8
Questo 4.9
Questo 4.10
www.facebook.com/k19treinamentos 463
R ESPOSTAS 464
Questo 4.11
Questo 5.1
Questo 5.2
Questo 5.3
a, d
Questo 5.4
Questo 5.5
Questo 5.6
Questo 5.7
464 www.k19.com.br