You are on page 1of 306

HTML5 e CSS3

Index
Captulo 1: Web
1.1
Histria
1.2
Timeline
1.3
Google em 1997
1.4
Camadas
1.5
Front-end
1.6
Back-end
1.7
Requsies
1.8
Integraes
EP: Integraes
1.8
Domnio
1.9
Hospedagem
1.10 Pgina HTML
1.11 Verses HTML
1.12 Verses CSS
1.13 Linguagens de Progamao
1.14 Padres HTML
1.15 Navegadores
EP: Navegadores
1.16 Engines
1.17 Engines Timeline
1.18 Browsers Timeline
1.19 Cross-browser
Capitulo 2:
Introduo Linguagem
2.1
Editores de Texto e IDE
2.2
Sublime Text
EP: Sublime Text
2.3
HTML
2.4
XHTML
2.5
XML
2.6
Tags
2.7
Estrutura Bsica HTML
2.9
Indentao
2.9.1 Cdigo sem Indentao
2.9.2 Cdigo com Indentao
1

EP: Tags
2.10 Comentrios
EP: Comentrios
2.11 Documentao Online
Captulo 3:
Elementos e Atributos
3.1
Conceito
3.2
Elementos
EP: Elementos
3.3
Atributos
3.4
Atributos Globais
3.5
Elementos e Atributos
EP: Elementos e Atributos
3.6
Estrutura HTML
3.7
DOCTYPE
EP: Estrutura HTML
3.8
Estrutura Bsica HTML
3.9
Interpretao do Navegador
Captulo 4:
Tags de Cabealho
4.1
<head>
4.1.1
<title>
4.1.2
<meta>
4.1.2.1
Atributo name <meta>
EP: <meta>
4.1.2.2
Demais Atributos de <meta>
4.1.2.3
Atributo http-equiv <meta>
EP: http-equiv
4.1.2.4
Atributo charset <meta>
4.1.2.5
Encoding
4.1.2.6
ISO e UTF
EP: Econding
4.1.2.7
Entidades de Encoding
EP: Entidades de Encoding
4.1.3
<style>
EP: <style>
4.1.4
<link>
EP: <link>
4.1.5
<script>
EP: <script>
2

4.1.6
<noscript>
EP: <noscript>
Captulo 5:
Tags de Exibio
5.1
Sobre
5.2
Block & Inline
5.2.1
Block
5.2.2
Inline
5.3
<body>
5.4
<h1>...<h6>
EP: <h1>...<h6>
5.5
<p>
EP: <p>
5.6
<span>
5.7
<s>
5.8
<sub>
5.9
<sup>
5.10 <pre>
EP: Textos
5.11 <img>
EP: <img>
5.12 <button>
EP: <button>
5.13 Listas
5.13.1
<ol>
5.13.2
<ul>
5.13.3
<li>
EP: Listas
5.14 <div>
EP: <div>
5.15 <a>
5.15.1
Navegao
5.15.2
ncora
5.15.3 target
EP: <a>
Captulo 6: Tags Semnticas
6.1
Sobre
6.2
Tags
6.2.1 <header>
3

6.2.2
<article>
6.2.3
<footer>
6.2.4
<section>
EP: Tags Semnticas
Captulo 7:
Tags de Formulrio
7.1
Formulrios
7.2
<form>
EP: <form>
7.3
Principais Elementos
7.4
<input>
EP: <input>
7.5
<label>
EP: <label>
7.6
<select>
EP: <select>
7.7
<textarea>
EP: <textarea>
7.8
<fieldset>
EP: <fieldset>
Captulo 8:
Novos Tipos de Formulrio
8.1
Novos Tipos
8.2
Suporte dos Navegadores
8.3
Vantagens do Uso
EP: Novos Tipos
Captulo 9:
Conceitos de Requisies HTTP
9.1
Front-end & Back-end
9.2
Requisio
9.3
Header
9.4
URL Encoding
EP: URL Encoding
9.5
Servios
9.6
Caixa Preta
9.7
REST
9.8
Mtodos
9.9
GET
EP: GET
9.10 POST
9.11 Segurana
4

9.12 Ferramentas
Captulo 10:
Formulrios HTML
10.1 Mtodos vs Formulrios
10.2 Objeto do Formulrio
10.3 <form>
10.4 method
10.5 name
EP: Objeto do Formulrio
Captulo 11:
Validao
11.1 Papel do Front-end
11.3 Validao
11.3.1
Validaes mais Comuns
11.3.2
Validao HTML5
11.3.2.1
Atributos de Validao
11.3.2.2
Tipos que Validam
EP: Validao
11.3.2.3
Customizao
Captulo 12:
Recursos Externos
12.1 <object>
EP: <object>
12.2 <embed>
EP: <embed>
12.3 <iframe>
EP: <iframe>
12.4 Consideraes
EP: Consideraes
Captulo 13:
Mdias HTML5
13.1 udio
13.1.1
Suporte dos Navegadores
13.1.2
Arquivos de udio
13.1.3
<audio>
EP: <audio>
13.1.4
<source>
EP: <source>
13.2 Vdeo
13.2.1
Suporte dos Navegadores
13.2.2
Arquivos de Vdeo
13.2.3
<video>
5

EP: <video>
Captulo 14:
SVG
14.1 Viso Geral
14.2 Formato XML
14.2.1
Desmenbrando SVG
14.3 Usando SVG
EP: SVG
Captulo 15:
Tabela
15.1 <table>
15.2 Criando Tabelas
EP: <table>
15.3 Email Marketing
15.3.1
Regras Essenciais
EP: Email Marketing
Captulo 16: Fundamentos CSS
16.1 CSS
16.2 Reutilizao de Estilos
16.3 Sintaxe
16.4 Cometrios
Captulo 17:
Seletores
17.1 Element Selector
EP: Element Selector
17.2 id Selector
EP: id Selector
17.3 Class Selector
EP: Class Selector
17.4 Universal Selector
EP: Universal Selector
17.5 Declarao de Seletores
17.6 Combinando Seletores
EP: Combinando Seletores
Captulo 18:
Precedncia CSS
18.1 Nomenclatura de Vnculo
18.2 Precedncia CSS
EP: Precedncia CSS
18.3 Execuo de Precedncia
EP: Execuo de Precedncia
Captulo 19: Seletores Avanados
6

19.1 Hierarquia HTML


19.1.1
Descendant Selector
EP: Descendant Selector
19.1.2
Child Selector
EP: Child Selector
19.1.3
Adjacent Sibling Selector
EP: Adjacent SIbling Selector
19.1.4
General Sibling Selector
EP: General Sibling Selector
19.1.5
Consolidado dos Seletores Hierrquicos
19.2 Atributos HTML
19.2.1
Attribute Selector
EP: Attribute Selector
19.2.1 Attribute Selector (cont.)
EP: Attribute Selector (cont.)
19.3 Pseudo-class
EP: Pseudo-class (link)
19.3 Pseudo-class (cont.)
EP: Pseudo-class (form)
19.3 Pseudo-class (cont.)
EP: Pseudo-class (others)
19.4 Pseudo-class Avanado
EP: Pseudo-class Avanado
19.5 Peseudo-elements
EP: Pseudo-elements
19.6 Vendor Properties
Captulo 20:
Cores CSS
20.1 Cores
20.2 Hexadecimal
20.3 Web Safe Colors
20.4 RGB
20.5 RGBA
20.6 HSL
20.7 HSLA
Captulo 21: Fontes
21.1 Sobre
21.2 font-family
21.3 Fontes no Carregadas
7

EP: font-family
21.4 Web Safe Fonts
21.5 Sans-serif vs Serif
21.6 Proportional vs Monospace
21.7 Fontes Carregadas
21.8 @font-face
EP: @font-face
Captulo 22:
Propriedades CSS
22.1 Unidades de Medida CSS
22.2 Propriedades CSS
22.3 Valor das Propriedades
22.4 Shorthand
EP: Propriedades CSS
22.5 overflow
22.6 background
22.6.1
background-color
EP: background-color
22.6.2
background-clip
EP: background-clip
22.6.3
background-image
EP: background-image
22.6.4
background-repeat
EP: background-repeat
22.6.5
background-position
EP: background-position
22.6.6
background-size
EP: background-size
22.6.7
background-attachment
EP: background-attachment
22.6.8
background-origin
22.7 border
22.7.1
Shorthand Border
22.7.2
border-style
22.7.3
CSS3 Border
EP: border
22.8 padding
EP: padding
22.9 margin
8

EP: margin
22.10 Texto
22.10.1 CSS3 Text
EP: Texto
22.11
list-style
22.11.1 list-style-type
22.11.2 list-style-position
22.11.3 list-style-image
EP: list-style
22.12
Colunas
EP: Colunas
Captulo 23:
At Rules
23.1 Sobre
23.2 Principais
23.3 @charset
23.4 @import
EP: @import
23.5 @font-face
23.5.1
Suporte de Fontes
EP: @font-face
23.6 @media
EP: @media
Captulo 24: Box Model
24.1 Sobre
24.2 reas
24.3 Espaamento do Contedo
24.4 Largura e Altura
EP: Tamanho do Elemento
24.5 CSS Reset
EP: CSS Reset
Captulo 25:
Posicionamento
25.1 Dimenses
25.1.1
Valores das Dimenses
25.1.2
Propriedades de Dimenses
25.2 display
25.2.1
inline vs block
EP: inline vs block
25.2.2
Modificando a Exibio
9

EP: Modificando a Exibio


25.2.3
Removendo da Exibio
25.2.4
Visibilidade
EP: Exibio vs Visibilidade
25.3 position
25.3.1
static
EP: static
25.3.2
relative
EP: relative
25.3.3
absolute
EP: absolute
25.3.4
fixed
EP: fixed
25.3.5
z-index
EP: z-index
25.3.6
Ancorando Elementos
EP: Ancorando Elementos
25.4 Flutuando Elementos
25.4.1
float
EP: float
25.4.2
clear
EP: clear
25.4.3
Flutuao vs Proximidade
EP: Flutuao vs Proximidade
25.4.4
Clearfix
EP: Clearfix
25.5 Alinhamento
25.6 Centralizando
EP: Centralizando
25.7 Outras Tcnicas
EP: Outras Tcnicas
Captulo 26: Tipos de Layout
26.1 Fixo
EP: Fixo
26.2 Lquido
EP: Lquido
26.3 Hbrido
EP: Hbrido
10

26.4 Responsivo
EP: Responsivo
Captulo 27: Layout Responsivo
27.1 Sobre
27.2 Media Query
27.2.3
Media Type
27.2.4
Media Features
EP: Media Query
27.3 Operadores Lgicos
27.3.1
and
27.3.2
not
27.3.3
only
27.4 Instruo Completa
EP: Operadores Lgicos

11

12

Captulo 1: Web
1.1

Histria

Necessidade de comunicao militar

Internet vem do conceito de computadores globais interligados

Existe o termo intranet o qual refere-se a uma rede de computadores


fechada interligada

1.2

World Wide Web, criado para facilitar a comunicao e integrao na rede

Timeline

60 70: guerra fria d origem s redes

70 80: surge o termo internet

80 90: criadas as grandes redes de computadores

90 00: "boom" world wide web

00 atualmente: web 2.0 e 3.0

13

1.3

Google em 1997

1.4

Camadas

14

1.5

Front-end

Tambm chamado de "client-side"

Na web composto por pginas HTML

+CSS

+JavaScript

+ Recursos adicionais (imagens, fontes, etc)

Sua principal funo e exibir dados e envi-los para o servidor quando


necessrio

1.6

Nunca deve lidar com regras de negcio

Apenas envia e recebe dados atravs de requisies HTTP

No acessa banco de dados diretamente

Baixa segurana

Necessita de um servidor

Hospeda o site

Gerencia as requisies recebidas pelos servios web

Lida com as regras de negcio

Back-end
Disponibiliza os servios web

Lida com as requisies HTTP

Recebe e envia dados

Gerencia as regras de negcio e inteligncia do sistema

Pode integrar-se com outros servidores via servios web

Acessa o banco de dados e efetua sua manipulao

Lista, adiciona, atualiza e apaga registros

15

1.7

Linguagem

Servidor

PHP

Apache

Java

Tomcat, JBoss, GlassFish

.NET / ASP

Windows Server

CFML

ColdFusion

Ruby

Puma, Phusion Passenger

JavaScript

NodeJS

Requsies
HTTP - Hypertext Transfer Protocol

Protocolo de comunicao mais comum na Web

Essencialmente a transmisso de dados ocorre enviando textos

Existem outros protocolos como SSH e FTP

16

Segurana das informaes transferidas baixa

Dados criptografados

Necessrio o uso de certificados digitais

Toda requisio possui "headers"

1.8

Existe a opo de HTTPS para maior segurana

Cabealhos com informaes sobre a requisio e os dados transmitidos

Integraes
Web Services

Permite que o "client" se integre com o "server"

Servidor tambm pode se integrar com outros servidores via servios

A transmisso de dados ocorre atravs de requisies HTTP

Comunicao mantida por alguns instantes

Tempo necessrio para o servidor receber a requisio e enviar a


resposta

"Stateless"

Cada invocao do "client" gera uma nova requisio para o servidor

Servidor no guarda informaes do "client"

Segurana garantida atravs de sesso ou "tokens" enviados na


requisio

Para o "client" no importa o que acontece com a requisio quando recebida


pelo servidor

Qual o sistema operacional do servidor

Quais os recursos de infra estrutura envolvidos

Quantos servidores existem

Quais as camadas de seguranas aplicadas

Qual hardware utilizado

17

EP:

Integraes

1.

Abra o Google Chrome na pgina www.google.com.br

2.

Clique com o boto direito sobre alguma rea vazia

3.

Selecione a opo "Inspecionar Elementos"

4.

Selecione a aba "Network"

5.

Atualize a tela

6.

Perceba os arquivos carregados e o tempo necessrio

7.

Use a barra de rolagem e v para o primeiro item da lista

8.

Clique sobre ele

9.

Na aba "Headers" esto as informaes enviadas da pgina HTML para o


servidor

10.

Identifique a informao "Server" e seu valor

1.8

Domnio

Nome para localizar e identificar conjuntos de computadores na rede

Foi concebido com o objetivo de facilitar a memorizao dos endereos


de computadores na Internet

1.9

Sem ele seria necessrio memorizar uma sequncia de nmeros

Necessrio registrar um endereo para sua utilizao

No Brasil os registros podem ser feitos atravs do registro.br

Registro ".com" pode ser feito pela Verisign

Hospedagem

Contratao de um servidor que conter os arquivos do "site"

O domnio deve estar configurado para apontar para o endereo IP do servidor


de hospedagem

Os arquivos do "site" devem ser colocados na pasta pblica do servidor


18

1.10 Pgina HTML

Exibida quando o endereo do domnio invocado

Contm todos os recursos necessrios para a exibio

Essencialmente deve possuir um arquivo ".html"

Opcionalmente poder conter os arquivos do tipo ".css", ".js", ".jpg",


".png", ".gif", ".woff", ".mp3", ".mp4", etc

1.11 Verses HTML

19

1.12 Verses CSS

1.13 Linguagens de Progamao

Na pgina HTML podem ser usadas as seguintes linguagens de programao:

HTML marcao de texto

CSS estilo do texto marcado com HTML

JavaScript controle e manipulao HTML e CSS

SVG exibio de imagens vetoriais

1.14 Padres HTML

W3C - World Wide Web Consortium

Grupo de empresas fabricantes de software

Mantm HTML desde 1996

Define os rumos do HTML e a padronizao da linguagem

Interpretao igual nos navegadores

20

1.15 Navegadores

IE (Internet Explorer)

Firefox

Opera

Safari

Chrome

EP:
1.

Navegadores
Navegue para os endereos abaixo e verifique as estatsticas:
a. Navegadores
b.

http://www.w3schools.com/browsers/browsers_stats.asp
Telas

c.

http://www.w3schools.com/browsers/browsers_display.asp
Sistema Operacional
http://www.w3schools.com/browsers/browsers_os.asp

1.16 Engines

Interpretam os cdigos HTML, JavaScript, CSS e SVG do documento

Cada navegador pode ter um "engine" diferente

Podem haver diferenas na interpretao

Um "engine" quer ter um diferencial competitivo dentre os demais

21

Engine

Browser

Blink

Chrome e Opera

Webkit

Safari

Gecko

Firefox

Trident

Internet Explorer

1.17 Engines Timeline

22

1.18 Browsers Timeline

1.19 Cross-browser

Cdigo deve funcionar igual em mais de um navegador em mais de uma verso

Principal problema da programao HTML

Preocupao tanto no "desktop" quanto no "mobile"

Flash no possua este problema, pois o interpretador era nico

Cdigo sem interpretao

Verso do navegador pode no suportar as funcionalidades do HTML5

Diferena dos "engines"

Pode "quebrar" o layout de uma pgina, empurrando elementos para fora


da rea visvel do usurio

Necessrio

Identificar o pblico alvo e principal navegador utilizado

Testar em mais de um navegador e mais de uma verso

23

24

Capitulo 2:
2.1

Introduo Linguagem

Editores de Texto e IDE


Editores de Texto
Bloco de notas
Adobe Dreamweaver
Sublime Text
Notepad++
IDEs
Eclipse/Aptana
Webstorm
Netbeans
Cloud
JSFiddle
Codenvy
Koding
Codepen

25

2.2

Sublime Text
Um dos editores mais utilizados pela comunidade de desenvolvedores

Multi plataforma

Windows, Mac e Linux

Leve e verstil com relao as funcionalidades

Para diversas linguagens de programao

Customizvel conforme a necessidade do desenvolvedor

Pacotes podem ser adicionados

Novas funcionalidades estaro disponveis

Enriquecimento dos recursos nativos

Instalao pode ser manual ou automatizada com a ajuda do "Package


Control"

EP:
1.

Sublime Text
Baixe e instale o Sublime Text 3
a.

2.

3.

Busque no Google o endereo

Abra o Sublime e adicione um projeto


a.

Clique no menu superior "Project > Add Folder to Project"

b.

Selecione a pasta do seu projeto

c.

Perceba a barra lateral que se abriu

Baixe e instale o Package Control


a.

Busque no Google por "package control sublime text 3"

b.

Identifique no site a pgina de instalao

c.

Copie o cdigo exibido na tela (ateno para a verso do Sublime)

4.

Abra o Sublime Text 3

5.

Clique no item "View" do menu superior do Sublime

6.

Selecione a opo "Show Console"

7.

Cole o cdigo copiado do site e tecle enter

26

a.

Verifique o andamento da instalao na barra de status no canto inferior


esquerdo do Sublime

8.

Feche a visualizao do console


a.

9.

Repita os passos 5 e 6, porm selecione "Hide Console"

Digite o atalho CTRL + SHIFT + P


a.

No Mac use CMD ao invs de CTRL

b.

Ou use a opo do menu "Tools > Command Pallete"

c.

Uma janela flutuante ser exibida

10.

Digite "install"

11.

Selecione a opo "Package Control: Install Package"


a.

12.

Uma lista com todos os pacotes disponveis para o Sublime ser exibida

Digite "emmet" e selecione a opo com este nome


a.

Perceba a barra de status do Sublime no canto inferior esquerdo com o


andamento da instalao

b.

Alguns pacotes exibem uma mensagem no prprio Sublime quando


terminam a instalao (caso do Emmet)

c.
13.

Veremos as funcionalidades do Emmet posteriormente

Clique com o boto direito do mouse sobre a pasta do projeto na barra lateral e
veja quantas opes existem

14.

Repita os passos de 9 12 e instale o pacote "Sidebar Enhancements"


a.

Aguarde o trmino da instalao

b.

Verifique as novas opes existem quando clicar com o boto direito do


mouse sobre a pasta do projeto

27

2.3

HTML

Hypertext Markup Language

Criada por Tim Berners Lee em 1993

Linguagem de marcao de texto atravs de "tags"

Texto marcado poder ser manipulado por JavaScript e ou estilizado por CSS

2.4

2.5

XHTML
EXtensible Hypertext Markup Language
Definido a partir da verso 4.01 em 2000
Baseada na linguagem XML
Estrutura hierrquica
Mesmas regras de aninhamento
rvore de elementos
Declarados como "tags"
Um elemento pode ou no ter subelementos aninhados
"Branches and leafs"

XML

Serializao de dados bastante comum

Geralmente usada para configurao

Contm dados definidos em forma de "nodes" (ns)


<?xml version="1.0"?>
<hotdog>
<bread>
<sausage>
<sauce>ketchup</sauce>
<sauce>mustard</sauce>
</sausage>
</bread>
</hotdog>

28

2.6

Tags

Estruturas de linguagem de marcao

Existem aproximadamente pouco mais de 100 "tags" HTML5

Outras linguagens tambm usam o conceito de "tags"

XML

IDML

CFML

Elementos do documento HTML

Marcam uma caracterstica

Contedo aninhado dentro destas so vinculadas as caractersticas das


"tags" de abertura e fechamento

2.7

"Case insensitive"

Maioria das "tags" HTML5 tem o par de fechamento

Estrutura Bsica HTML


Declarao

Descrio

<!doctype html>

Navegador identificar o tipo do documento

<html></html>

Principal "tag" do documento ("root tag")

<head></head>

Possuir "tags" para configurao do documento


(ttulo, descrio, autor, palavras-chaves, etc)

<body></body>

Praticamente tudo que ser exibido para o usurio na


tela do navegador

29

2.8

Aninhamento das Tags


<!doctype html>
<html>
<head>
<title>Ttulo do Documento</title>
</head>
<body>
Tudo que ser visualizado no navegador
</body>
</html>

2.9

Indentao
A identificao de qual "tag" "pai" ou "filho" essencial para entendimento do
cdigo

Uma das tcnicas usadas para clareza do cdigo a indentao

"Filhos" ficam recuados direita dos pais

"Netos" ("bisnetos" e sucessivamente) ficaro aninhados aos "filhos"

Para a mquina no importa se o cdigo est indentado ou no

Basta apenas estar aninhado corretamento, sem erros de sintaxe

Os cdigos a seguir so exatamente idnticos

2.9.1 Cdigo sem Indentao


<html><head><title>My Title</title></head><body>My
content</body></html>

30

2.9.2 Cdigo com Indentao


<html>
<head>
<title>My Title</title>
</head>
<body>
My content
</body>
</html>

EP:

Tags

1.

Crie um arquivo de nome "basic.html"

2.

Adicione a informao ao navegador do tipo do documento


a.

Deve ser o primeiro cdigo do documento

<!doctype html>
3.

Abaixo da declarao anterior, crie a "root tag" HTML:


<!doctype html>
<html>
</html>

4.

Dentro de <html> aninhe as "tags" <head> e <body>:


a.

Ateno ao aninhamento e a indentao

<!doctype html>
<html>
<head></head>
<body></body>
5.

</html>
Escreva um texto dentro de <body>

31

<!doctype html>
<html>
<head></head>
<body>My first page !</body>
6.

</html>
Salve e teste no navegador

7.

Adicione a "tag" <title> como filha de <head>:


a.

Altere a indentao para melhor leitura do cdigo

<head>
<title>Oh yeah!!!</title>
</head>
8.

Salve e teste novamente no navegador

9.

Altere o texto de <body> adicionando quebras de linhas entre as palavras com a


tecla ENTER:
<body>
My
first
page !

10.

</body>
Salve e teste, verificando se as quebras de linha foram respeitadas

11.

Altere o cdigo colocando tudo em uma nica linha, porm marcando com a
"tag" <br>
<body>My<br> first<br> page !</body>

12.

Repita o ltimo teste

2.10 Comentrios

Comentrios so instrues de cdigo ignoradas pelo interpretador do


32

navegador

So teis para descrever alguma funcionalidade

Comentrio HTML multilinhas

Tudo que estiver dentro das "tags" de abertura e fechamento ser


comentado

<!-- Single line comment... -->


<!-Multi line comment...
-->
<!doctype html>
<html>
<!-- Comentrio, pode ser colocado em qualquer lugar -->
<head>
<title>Ttulo do Documento</title>
</head>
<body>
Tudo que ser visualizado pelo usurio
</body>
</html>

EP:
1.
2.

Comentrios
Abra o arquivo "basic.html" do EP anterior
Adicione um comentrio mencionando que o HTML respeita o cdigo de
marcao e no a forma como as informaes so dispostas
a. Avalie e identifique o melhor local para colocar seu comentrio

<!-Explique o comportamento da tecla ENTER

33

2.11 Documentao Online

O W3C possui toda a referncia sobre as "tags" HTML e seus atributos

Algumas empresas, como a Mozilla, tambm disponibilizaram uma


documentao HTML prpria

Todas seguem as informaes do W3C

Algumas esto mais atualizadas do que outras

Geralmente so de mais fcil entendimento do que o W3C

Alguns endereos com a documentao sobre as "tags" HTML:


http://www.w3schools.com/tags/default.asp
https://developer.mozilla.org/en-US/docs/Web/HTML/Element
http://msdn.microsoft.com/en-us/library/windows/apps/hh767345.aspx

34

35

Captulo 3:
3.1

Elementos e Atributos

Conceito

Cada "tag" HTML considerada um elemento

Um elemento por sua vez pode ser configurado por seus atributos

O exemplo abaixo apenas didtico, mostrando a "assinatura" do cdigo,


pois a "tag" <element> no existe

<element attribute="value">Text</element>

3.2

Elementos

Um documento HTML definido por elementos HTML

Cada elemento faz uma marcao no documento

O contedo do elemento ser marcado pela "tag" que o envolve

Maioria das "tags" sempre so definidas pela de abertura e de


fechamento, mas h excees

Se uma "tag" no contiver a de fechamento, o navegador tentar


interpretar da melhor forma possvel, mas comportamentos estranhos
podem acontecer

Um elemento, pode ter contedo ou no

As que no possuem contedo no precisam ser fechadas no HTML5

Como exemplo, a "tag" <h1> marca o texto com o formato para cabealho

Se no for fechada o formato de cabealho ser aplicado tudo mais que


estiver na sequncia

<h1>My Header</h1>

36

EP:

Elementos

1.

Crie um novo arquivo de nome "elements.html"

2.

Adicione a estrutura HTML essencial:


<!doctype html>
<html>
<body>
</body>

3.

</html>
Dentro da "tag"<body> adicione o seguinte cdigo:
<body>
<h1>My Header</h1>
This is my content
</body>

4.

Salve e teste no navegador

5.

Remova a "tag" de fechamento </h1>:


<body>
<h1>My Header
This is my content

6.
7.

</body>
Salve, teste e perceba que todo o texto recebeu o formato de cabealho
Desfaa o passo anterior e mantenha a "tag" de fechamento:
<body>
<h1>My Header</h1>
This is my content
</body>

37

3.3

Atributos
Atributos configuram um elemento

Definem valores para que uma "tag" tenha um determinado


comportamento

Os atributos podem variar de "tag" para "tag"

Alguns podem ser comuns, outros podem ser exclusivos

Na documentao HTML possvel identificar e esclarecer o funcionamento de


cada um deles

No exemplo abaixo a "tag" <h1> possui o atributo "align" que configura o estilo
do alinhamento do texto:
<h1 align="center">My Header</h1>

Nota: o atributo "align" est depreciado no HTML5 e deve ser evitado mesmo em verses
anteriores do HTML, uma vez que todo o estilo deve ser aplicado atravs de CSS.

3.4

Atributos Globais

So os atributos que podem ser adicionados a qualquer "tag" HTML

Existem em verses anteriores do HTML e tambm os novos com


funcionamento apenas no HTML5

HTML:
acesskey
class
dir
id
lang
style
tabindex
title

38

3.5

HTML 5:
contenteditable
data-*
draggable

Elementos e Atributos
Item

Exemplo

Elemento

Tag

Atributo

Configurao de uma tag

Contedo

Informaes das tags

39

EP:
1.

Elementos e Atributos
Navegue para o endereo abaixo e verifique os elementos HTML:
http://www.w3schools.com/tags/ref_byfunc.asp
https://developer.mozilla.org/en-US/docs/Web/HTML/Element

2.

Agora verifique os atributos:


https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes

3.

Finalmente identifique os atributos globais:


http://www.w3schools.com/tags/ref_standardattributes.asp
https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes

3.6

Estrutura HTML
Um documento HTML segue um padro estrutural definido pelo W3C, chamado
de DOM - Document Object Model

Esta estrutura define:

Ns de elementos
40

Regras hierrquicas

Acesso e manipulao dos objetos

Todas as "tags" possuem o conceito de "pai" e "filho"


<html>
<body>
<h1>My Header</h1>
</body>
</html>

Child Tags:
<html> tem como filho <body>
<body> tem como filho <h1>

Parent Tags:
<h1> tem como pai <body>
<body> tem como pai <html>

Cada elemento HTML considerado um n ("node")

A hierarquia est definida dentro de uma rvore de elementos HTML ("nodes")

Os pais so chamados de "parent nodes" e os filhos de "child nodes"

A indentao do cdigo fundamental para o entendimento

Um documento HTML deve ter uma estrutura de ns vlidos para que possa ser
exibido corretamente

A estrutura essencial para exibio :

Sendo que o contedo que ser exibido pela pgina sempre fica aninhado
dentro de <body>

Fortemente recomendado o uso de <!doctype html>

<html>
<body>
</body>
</html>

41

Porm muitas vezes desejado configurar mais informaes no documento


HTML

Novas "tags" e novos aninhamentos devem ser feitos

No exemplo a seguir a pgina possuir um ttulo

Maioria das configuraes da pgina ficam dentro de <head>

<html>
<head>
<title>My Page Title</title>
</head>
<body>
My page content...
</body>
</html>

3.7

DOCTYPE

Document Type Definition

Informa ao navegador o tipo do documento a ser renderizado

Deve ser colocada na 1 linha do documento HTML

<!doctype html>
<html>
<head>
<title>My Page Title</title>
</head>
<body>My page content...</body>
</html>

42

EP:

Estrutura HTML

1.

Crie um arquivo de nome "structure.html"

2.

Adicione a estrutura essencial HTML com contedo:


<html>
<body>
My page content...
</body>

3.
4.

</html>
Salve e teste no navegador
Adicione a instruo "doctype":
<!doctype html>

5.

6.

<html>...
Salve e teste novamente
a. Perceba que nada ocorreu
b. Identifique o ttulo que est sendo exibido na aba do navegador (o nome
do arquivo)
Adicione <head> e <title> dentro de <html>
<!doctype html>
<html>
<head>
<title>My Title</title>
</head>...

7.
8.

</html>
Salve e teste, identificado o ttulo na aba do navegador
Volte ao cdigo dentro de <body> e adicione quebras de linha entre as palavras:
<body>
My
page
content...

9.

</body>
Salve e teste
a.

Observe se as quebras foram respeitadas


43

10.

Volte o cdigo da forma inicial e adicione <br>


<body>
My<br>page<br>content...

11.

</body>
Salve e teste

3.8

Estrutura Bsica HTML

Tag

Descrio

Contedo do Elemento

<html>

"Root tag" do documento HTML


define continer para a rvore de
elementos DOM

Tudo, exceto outra "tag" HTML

<head>

Inclui o "cabealho" do
documento como ttulo,
metadados, estilos e "scripts"

<body>

Contedo do documento

<title>
<style>
<base>
<link>
<meta>
<script>
<noscript>

Tudo, exceto as anteriores, porm


pode incluir a "tag" de "script"

44

3.9

Interpretao do Navegador
O navegador interpreta o cdigo existente no documento HTML de cima para
baixo

"doctype" informa o tipo de documento a ser interpretado

Navegador comea a fazer o "parse" das "tags" HTML

"Parse" pode ser entendido* como:

Interpretao de todo o cdigo

Execuo das configuraes definidas em <head>

Renderizao do contedo

Nota: sequncia real dos processos diferente da apresentada aqui, a qual tem apelo
apenas didtico.

45

46

Captulo 4:
4.1

Tags de Cabealho

<head>

Aninhada dentro de <html>

Recebe praticamente todas as "tags" de configurao da pgina

Ttulo

Metadados

"Encoding"

Estilo

Script

<!doctype html>
<html>
<head>
</head>
</html>
4.1.1 <title>

Identifica o ttulo da pgina, o qual utilizado para

Janela (ou aba) do navegador

Pgina adicionada aos favoritos

Resultados de busca na Internet

<!doctype html>
<html>
<head>
<title>My Title</title>
</head>
</html>

47

4.1.2 <meta>

A "tag" <meta> define os metadados do documento

Aninhada dentro da "tag" <head>

No possui "tag" de fechamento para HTML5

Pode ser utilizada mais de uma vez

Metadados so usados pelo navegador

Conjunto de caracteres usados no contedo ("encoding")

Recarregar a pgina em determinados intervalos de tempo

Tambm so usados por:

Ferramentadas de indexao de "sites" (SEO - Search Engine


Optimization)

Servios na web

Especificam informaes sobre o documento antes da renderizao do contedo

Geralmente so informaes que no sero exibidas na tela

Ex: descrio, autor, palavras chaves, ltima data de modificao

<head>
<meta charset="UTF-8">
<meta name="description" content="Personal Info Page">
<meta name="keywords" content="John, Wayne, movies,
hollywood">
<meta name="author" content="Richard">
</head>
Quando usada para metadados descritivos, possui duas propriedades, "name" e
"content"

Representa o nome da caracterstica e seu valor

O interpretador (seja do navegador, seja do SEO ou qualquer outro)


obter o seguinte resultado: author=John

<meta name="author" content="John">

48

Tambm podem ser configurada com informaes proprietrias

Muito provavelmente, apenas a empresa proprietria conseguir


interpretar a informao

Ex: informaes referentes a configuraes de dispositivos mveis da


Apple

<meta name="meta-apple-mobile-web-app-status-bar-style"
content="black">
4.1.2.1

Valor

author

description

keywords

Atributo name <meta>

Descrio

Nome do autor
<meta name="author" content="My Name">

Descrio da pgina, geralmente utilizado por buscadores na


exibio de seus resultados
<meta name="description" content="My site does">

Lista de palavras chaves separadas por vrgulas, geralmente usado


por buscadores para identificar o contedo da pgina
<meta name="keywords" content="dvd, purchase,
store, movies">

49

EP:
1.
2.

<meta>
Crie um arquivo de nome "meta.html"
Adicione a estrutura bsica HTML, com ttulo:
<!doctype html>
<html>
<head>
<title>Pgina de So Paulo</title>
</head>

3.

</html>
Adicione ainda o texto em <body>:
<body>
So Paulo ganhar uma nova cano...
</body>

4.

Salve e teste
a.

Perceba que os caracteres do ttulo e do corpo no foram exibidos


corretamente

5.

Adicione o seguinte cdigo em <head>:


<meta charset="UTF-8">

6.

Salve e repita o teste


a.

7.

Verifique se os caracteres esto incorretos

Adicione o metadado referente ao autor:


<meta name="author" content="John">

8.

Salve e teste
a.

9.

Perceba que nenhuma mudana visual ocorreu para o usurio

Adicione os demais metadados descritivos:


a.

Descrio

b.

Palavras chaves

50

4.1.2.2

Demais Atributos de <meta>

Atributo

Valor

Descrio

charset

utf-8

Define o "encoding" da pgina

content

Texto

Contedo relativo ao valor utilizado em "name"

http-equiv

content-type
default-style
refresh

Informao do "header" (informao e valor) da


requisio HTTP quando a pgina invocada
pelo navegador

name

application-name
author
description
generator
keywords

Especifica o nome do metadado

51

4.1.2.3

Atributo http-equiv <meta>

Valor

Descrio

Define o "encoding" da pgina, apesar de no estar depreciado


recomenda-se usar a opo "charset" ou invs deste formato
content-type
<meta http-equiv="Content-Type"
content="text/html;charset=utf-8">

refresh

Especifica o intervalo de tempo em segundos no qual o navegador


deve atualizar a pgina
<meta http-equiv="refresh" content="30">

EP:

http-equiv

1.

Crie um arquivo de nome "http_equiv.html"

2.

Adicione a estrutura HTML bsica

3.

Adicione a "tag" <meta> com o seguinte atributo:


<meta http-equiv="refresh" content="2">

4.

Salve e teste
a.

Perceba a atualizao a cada 2 segundos

52

4.1.2.4

Atributo charset <meta>

Define o "encoding" do documento

Permite que os caracteres usado na pgina sejam exibidos corretamente

Conjunto de caracteres de um idioma

Ex: a A

4.1.2.5

Encoding

Conjunto de caracteres

Latinos

Japoneses

rabes

Cirlicos

Evoluo:
ASCII ANSI ISO-8859-1 UTF-8

HTML4 utilizava o ISO-8859-1

Maioria dos pases utilizava o este conjunto de caracteres

Muito similar ao ANSI, que possui 32 caracteres adicionais

HTML5 deve ser usado o UTF-8

Mais abrangente para outros idiomas

Abrange quase todos os caracteres, potuaes e smbolos no mundo

4.1.2.6

ISO e UTF

ISO

International Standards Organization

Organizao que define os conjuntos de caracteres padres para os


diferentes alfabetos

53

EP:
1.

UTF

Unicode Transformation Format

Tem maior utilizao e vem substituindo o ISO

Os primeiros 256 caracteres UTF correspondem aos 256 ISO

Econding
Navegue para o endereo abaixo e verifique os caracteres disponveis para
ASCII
a.

Perceba a pequena quantidade de caracteres disponveis e a ausncia


dos acentuados ( , , etc)

http://www.w3schools.com/charsets/ref_html_ascii.asp
2.

Verifique o valor "Entity Name" do sinal de maior > e menor < para ANSI e para
ISO-8859-1/UTF-8:
http://www.w3schools.com/charsets/ref_html_ansi.asp
http://www.w3schools.com/charsets/ref_html_entities_4.asp

4.1.2.7

Entidades de Encoding

Cada conjunto de caracteres define um nmero e um nome para as entidades

Ex: o sinal de maior pode ser escrito atravs do nome da entidade &gt; ou
seu nmero &#62;

A entidade possui a seguinte assinatura:


& + nome + ;
& + # + nmero + ;

54

Seu uso essencial dentro do cdigo HTML quando necessrio usar o sinal de
maior ou de menor
Evita o interpretador confundir com abertura e fechamento de "tags"
<body> &lt;h1&gt;</body>
Idealmente deve-se utilizar o nome da entidade ao invs do nmero para facilitar
a leitura do cdigo
<body> &#60;h1&#62;</body>

EP:

Entidades de Encoding

1.

Crie um novo arquivo de nome "entities.html"

2.

Adicione a estrutura bsica


a.

3.

Lembre-se sempre de utilizar UTF-8 na estrutura bsica

Adicione o seguinte texto em <body>:


<body><h1></body>

4.

Salve e teste, verificando se o texto "<h1>" foi exibido

5.

Altere o cdigo de <body> para:


<body>&lt;h1&gt;</body>

6.

Salve e repita o teste

7.

Abra a pgina do endereo abaixo


http://www.w3schools.com/charsets/ref_html_entities_4.asp

8.

9.

Adicione os nomes e os smbolos dos naipes de baralho dentro de <body>:


a.

espadas

b.

paus

c.

copas

d.

ouros

Escreva as entidades a seguir e descubra a palavra:


<h1>&#67;&#111;&#114;&#97;&#231;&#227;&#111;</h1>

55

4.1.3 <style>

Permite definir as informaes de estilo do documento

CSS Cascading Style Sheets

Define como os elementos devem ser renderizados no documento

<style>
h1 {
color: blue;
}
</style>

Possui dois atributos (alm dos globais):

"media" especifica qual a mdia que ser aplicado o estilo

"type" "mime type"

<style type="text/css" media="print">


h1 {
color: blue;
}
</style>

EP:

<style>

1.

Crie um novo arquivo de nome "style.html"

2.

Adicione a estrutura bsica HTML

3.

Dentro de <body> adicione <h1>:


<h1>My Header</h1>

4.

Salve e teste
a.

Ateno para a cor que est sendo exibida

56

5.

Dentro de <head> adicione uma "tag" <style> com:


<style type="text/css">
h1 {
color: blue;
}

6.

</style>
Salve e teste

7.

Altere a "tag" <style> adicionando o atributo "media":


<style type="text/css" media="print">
h1 {
color: blue;
}

8.

</style>
Salve e teste
a. Imprima a pgina e verifique a cor do texto

4.1.4 <link>

Vincula o documento HTML com outro externo

Carrega um recurso externo, como CSS

Pode ser utilizada mais de uma vez

No possui "tag" de fechamento

<head>
<link rel="icon" type="image/x-icon" href="favicon.ico">
<link rel="stylesheet" type="text/css" href="default.css">
</head>

57

Atributo

Valor

Descrio

href

URL

Especifica o caminho do arquivo externo

media

all
print

Define em qual aparelho a arquivo externo ser exibido

rel

icon
stylesheet

type

text/css

Valor obrigatrio que define qual o relacionamento do


documento com o arquivo externo

Opcional no HTML5, especifica o "MIME type" do arquivo


externo

EP: <link>
1.

Navegue para o endereo abaixo e baixe o cone com o nome "favicon.ico"


a.

Salve em uma pasta apropriada

http://www.favicon.cc/?action=icon&file_id=686403
2.

Crie um novo arquivo de nome "favicon.html"

3.

Adicione o seguinte cdigo em <head>:


a.

Coloque o caminho correto como valor de "href"

<link rel="icon" type="image/x-icon" href="favicon.ico">


4.

Salve e teste
a.

5.

Observe o cone ao lado do ttulo da pgina

Crie um novo arquivo de nome "link.css" e "link.html"

58

6.

Adicione o seguinte cdigo CSS e salve o arquivo:


h1 {
color: blue;
}

7.

Volte ao arquivo HTML "link.html"

8.

Adicione a "tag" <h1> em <body>:


<h1>My Header</h1>

9.

Adicione a "tag" <link> em <head>:


<link rel="stylesheet" type="text/css"
href="link.css">

10.

Salve e teste

11.

Adicione o atributo "media":


<link rel="stylesheet" type="text/css"
href="link.css" media="print">

12.

Salve e teste a impresso

4.1.5 <script>

Define o cdigo JavaScript do documento

Pode ser usada como:

Continer para cdigo

Apontar para arquivo JavaScript externo utilizando o atributo "src"

Quando usado o atributo "src" a "tag" deve ser vazia

No possvel apontar para arquivo externo e possui contedo ao


mesmo tempo

Pode ser usado nas "tags" <head> e <body>


59

Recomendado utilizar no final da "tag" <body>

Melhora a performance do carregamento da pgina

Navegador tem menos informao para interpretar antes de exibir a


pgina

Existem casos na qual a biblioteca deve ser carregada na "tag" <head>


para que possa funcionar corretamente

<script>
alert('Hello HTML5');
</script>
<script type="text/javascript" src="code.js"></script>

Atributo

Valor

Descrio

charset

pt-br

Especifica o "encoding" do arquivo externo

src

URL

Especifica o caminho do arquivo externo

type

text/javascript

Opcional no HTML5, especifica o "MIME type" do


arquivo externo

60

EP:

<script>

1.

Crie um arquivo de nome "script.html"

2.

Adicione o seguinte cdigo dentro de <head>:


<script>
alert('Hello HTML5');
</script>

3.

Salve e teste

4.

Crie um novo arquivo de nome "script.js" dentro da mesma pasta que contm o
arquivo "script.html"

5.

Adicione o seguinte cdigo JavaScript:

document.write('<h1>Hello from JS</h1>');


6.

Salve o arquivo e volte para o arquivo HTML "script.html"

7.

Adicione o seguinte cdigo em <head>:


<script type="text/javascript"
src="script.js"></script>

8.

Salve e teste
a.

Perceba o texto escrito via JavaScript com a formatao "h1"

61

4.1.6 <noscript>

Define um contedo alternativo para navegadores que foram definidos para no


usarem JavaScript ou no tem suporte a linguagem

Seu contedo ser mostrado apenas nesta condio

Pode ser usado nas "tags" <head> e <body>


<script>
alert('Hello HTML5');
</script>
<noscript>
This site requires JavaScript enabled.
</noscript>

EP:

<noscript>

1.

Crie documento HTML de nome "noscript.html"

2.

Adicione o cdigo em <head>, salve e teste:


<script>alert('Hello HTML5')</script>
<noscript>
This site requires JavaScript enabled.
</noscript>

3.

4.

Desabilite o JavaScript do navegador e este novamente


a.

Abra "Settings" do Google Chrome

b.

Procure por "javascript" no campo de busca das configuraes

c.

Clique em "Content Settings"

d.

Clique em "Do not allow any site to run JavaScript"

Habilite novamente o JavaScript do navegador

62

63

Captulo 5:

5.1

Sobre
So as "tags" que marcam algum contedo

Tags de Exibio

Ser visualizado pelo usurio quando acessar a pgina HTML

Muitas delas possuam atributos de estilo (como alinhamento de texto, cor de


fundo, etc) nas verses anteriores do HTML

5.2

Estes atributos foram depreciados no HTML5

Idealmente, estilos devem ser feitos apenas com CSS

Block & Inline


So as formas mais comuns de exibio HTML

Podem ser modificadas atravs de CSS

Define como o prximo contedo seguinte a tag ser exibido

Na mesma linha e na sequncia aps o fechamento da tag

Prxima linha aps o fechamento da tag

5.2.1 Block

Ocupa toda a largura disponvel, limitado ao seu "parent elment"

Contedo seguinte "tag" estar na prxima linha

5.2.2 Inline

Ocupa somente o espao necessrio para sua exibio

Contedo seguinte "tag" estar na sequncia

64

5.3

<body>

"Corpo" do documento HTML

Continer para quase todos os elementos HTML

Pode conter elementos que sero renderizados na tela ou no

5.4

Principal uso so para elementos a serem exibidos pelo navegador

<h1>...<h6>

Marca contedo que ser exibido como cabealho (ttulo) da pgina

No possui atributos (exceto globais)

Navegadores podem renderizar o texto de forma diferente

Em geral so textos em negrito

Tamanho da fonte varia conforme a "tag" utilizada

EP:

Quanto menor o nmero da "tag" maior o texto

Ex: <h1> tem o tamanho da fonte maior que <h2>

Exibio block

<h1>...<h6>

1.

Crie um novo arquivo de nome "h1.html"

2.

Dentro da "tag" <body> adicione as seguintes "tags":


<h1> My H1 text </h1>
<h2> My H2 text </h2>
<h3> My H3 text </h3>
<h4> My H4 text </h4>
<h5> My H5 text </h5>
<h6> My H6 text </h6>

65

3.

5.5

Salve e teste no navegador

<p>

Define um pargrafo que ser exibido na pgina

nfase pode ser dada combinado outras "tags" com exibio inline:

<strong> negrito

<em> itlico

<small> diminui o texto

Exibio block
<p>
This is a
<strong><em>bold and italic</em></strong> text
</p>

EP:
1.

<p>
No arquivo de nome "paragraph.html" e adicione o seguinte cdigo
<p>My first paragraph.</p>

2.

Salve e teste no navegador

3.

Adicione nfase no texto "first" adicionando as "tags":


<p>My <strong>first</strong> paragraph.</p>

4.

Salve e teste

5.

Adicione as demais "tags" de nfase no texto "first", testando uma por vez:
a.

<em>

b.

<small>

66

5.6

<span>
Marca algum contedo

No aplica qualquer mudana visual no elemento

Ideal para marcar um contedo que receber um estilo

Pode substituir as tags de nfase, por permitir estilo com maior flexibilidade

5.7

No faz sentido marcar com <strong> e remover o negrito !

Exibio inline

<s>

Marca o elemento que ser tachado

Exibio inline
<s>This text are going to be striked</s>

5.8

<sub>

Marca o elemento que ser subscrito

Exibio inline
<p>This paragraph has <sub>subscripted</sub> text</p>

5.9

<sup>
Marca o elemento que ser elevado

Ex: exibio de raz quadrada

Exibio inline
<p>
This paragraph has
<sup>superscripted</sup> text
</p>

67

5.10 <pre>

Marca o elemento que ser pr formatado

Preserva espaos e quebra de linha

Utiliza a fonte Courier

Exibio inline
<pre> This
text

is

pre

formated

</pre>

EP:

Textos

1.

Crie um arquivo de nome texts.html

2.

Adicione o seguinte contedo, salve e teste:


<p>Paragraph is block display</p>
<span>but span is inline display and the</span>
<span>next content will be placed high after the last
one</span>

3.

Logo abaixo do ltimo cdigo adicione:

<s>This text are going to be striked</s>


<p>This paragraph has <sub>subscripted</sub> text</p>
<p>
This paragraph has
<sup>superscripted</sup> text
</p>
4.

Salve e teste

5.

Finalmente, adicione o cdigo abaixo, salve e teste:


68

<pre> This
text
is
pre

formated

</pre>

5.11 <img>

Usada para carregar imagens no documento HTML

Podem ser recursos locais ou externos

No so tecnicamente inseridas no documento, um "link" e um espao


para exibio so criados

No possui "tag" de fechamento

Exibio inline

Pode receber os atributos de largura e altura

Podem distorcer, serrilhar ou perder qualidade visual da imagem

Se utilizado apenas um dos atributos de tamanho, a imagem manter a


proporo visual

<img src="myImage.jpg" alt="My Image"


height="42" width="42">

69

Atributo

Valor

alt

My text

height

10

src

URL

usemap

#myMapTagId

width

10

EP:

Descrio

Texto alternativo para a imagem exibido antes do


carregamento

Define em "pixels" a altura da imagem

Endereo URL para a imagem

Define as coordenadas das reas clicveis de uma


imagem

Define em "pixels" a largura da imagem

<img>

1.

Crie o arquivo "img.html" com a estrutura bsica

2.

Adicione em <body> a "tag" <img> conforme abaixo:


<img
src="http://lorempixel.com/900/900/food"

3.

alt="Random Food Image">


Salve e teste
a.

4.

Atualize a pgina e perceba a imagem mudando randomicamente

Adicione o atributo de largura e altura com um valor para distorcer a imagem:


a.

A imagem utilizada possui 900 pixels de altura e largura


70

<img
src="http://lorempixel.com/900/900/food"
alt="Random Food Image"
5.

width="500" height="50">
Remova o atributo "height", salve e teste
a.

6.

Repita o teste removendo "width" e mantendo apenas "height"

(Opcional) Adicione em <head> a "tag" <meta> para que a pgina seja


atualizada automaticamente a cada 3 segundos
<meta http-equiv="refresh" content="3">

5.12 <button>

Marca o contedo de que receber a formatao visual e a funcionalidade de um


boto

No recomendado seu uso dentro de um formulrio, devido ao


problema de "cross-browser"

Existem botes especficos para formulrio

Exibio inline

Pode receber texto e imagem

Principal diferena para os botes de formulrio

Apesar de existir o atributo "align", alinhamento deve ser feito via CSS

Apesar de poder utilizar <img> com o boto, mais eficiente aplicar a


imagem como fundo do boto atravs de CSS

<button>Save</button>
<button>
<img src="delete_icon.png">
Delete
</button>

71

EP:

<button>

1.

Crie um arquivo de nome "button.html"

2.

Adicione em <body> o seguinte cdigo:


<button>Save</button>

3.

Salve e teste

4.

Baixe o cone do endereo abaixo na mesma pasta do arquivo "button.html":


http://iconfindr.com/1eWqAml

5.

Renomeie o arquivo para "icon_save_48x48.png"

6.

No arquivo HTML adicione o cone:


<button>
<img src="icon_save_48x48.png">Save
</button>

7.

Salve e teste

8.

Utilize o atributo "width" da imagem e reduza o tamanho do cone para 16 pixels:


<button>
<img src="icon_save_48x48.png" width="16">
Save
</button>

9.
10.

Salve e teste
Utilize o atributo "autofocus" do boto:
a.

Mantenha o cdigo anterior do boto

<button autofocus>

72

11.

12.

Salve e teste
a.

Perceba que o boto recebe foco quando a pgina carregada

b.

Pressione a barra de espaos do seu teclado

Repita o teste com o atributo "disabled" do boto

5.13 Listas

Elementos de lista so bastante teis para criar desde lista simples at menus

Quando estilizados, podem perder os marcadores e ficar na horizontal


para simular um menu

Podem receber qualquer elemento HTML

Podem ter outras "tags" aninhadas para criar uma lista de produtos com
imagens e descrio, tanto na horizontal como vertical, conforme o cdigo
de estilo

HTML possui duas "tags" para estilos

<ol> "ordered list"

<ul> "unordered list"

Cada "tag" define um tipo de marcador diferente

O tipo do marcador por sua vez pode ser definido por estilo

Ex: letras, nmeros, nmeros romanos, etc

Ambas possuem exibio block

73

5.13.1

<ol>

"Ordered List"

Cria uma lista do tipo ordenada

Estilo pode ser numrico, alfabtico ou nmero romano

Decimais - 1,2,3(padro)

Alfabtico - a,b,c(minsculo e maisculo)

Romanos - i, ii, iii...(minsculo e maisculo)

Possui ainda o atributo "reversed" que reverte a numerao

Numerao ser em ordem descendente ao invs de ascendente

No altera a ordem dos itens

5.13.2

<ul>

"Unordered List"

Cria uma lista do tipo desordenada

Estilo podem ser "bullets"

Disco (padro)

Quadrados

Crculo

5.13.3

<li>

"Tag" responsvel por criar o "list item"

Tanto <ol> quanto <ul> devem possuir <li> como "child element"

O tipo do marcador (nmeros, "bullets") definido pelo "parent element"

Se o "pai" for <ul> aparecer "bullets", se for <ol> aparecer numerais

74

EP:

Listas

1.

Crie um novo arquivo de nome "list.html"

2.

Adicione o seguinte cdigo HTML:


<ol>
<li>Ordered Item 1</li>
<li>Ordered Item 2</li>

3.

</ol>
Salve e teste

4.

Adicione o atributo "reversed" em <ol>


<ol reversed>
<li>Ordered Item 1</li>
<li>Ordered Item 2</li>

5.

</ol>
Salve e teste
a.

6.

Perceba que os itens permaneceram na mesma posio

Adicione o cdigo abaixo do anterior:


<ul>
<li>Unordered Item 1</li>
<li>Unordered Item 2</li>
</ul>

7.

Salve e teste

75

5.14 <div>

Continer para seu contedo

No possui qualquer alterao visual

Exceto quando estilizado

Estilos podem ser usados para aplicao de cores, imagens de fundo,


posicionamento e layout

Todo o contedo do elemento acompanhar o posicionamento da <div>


"pai"

Deve-se ter o cuidado de utilizar somente a quantidade necessria

Por no implicar em qualquer mudana visual, comum existirem mais


"divs" do que as necessrias

Eleva o consumo de processamento e memria, principalmente quando a


tela for redimensionada (navegador tem de calcular o posicionamento de
cada elemento)

Geralmente recebem o atributo "id" com os valores "container", "main", "header",


"content", "footer"

EP:
1.
2.

Por serem bastante utilizadas para posicionamento e layout

Exibio block

<div>
Abra o arquivo "list.html"
Envolva <ul> com <div>:
a. Mantenha todo o cdigo anterior de <ul>
<div>
<ul> </ul>

3.

</div>
Salve, teste e verifique se houve alguma mudana visual

76

5.15 <a>

Faz a marcao de ncora

Tanto dentro da prpria pgina, como para uma pgina externa

Seu atributo "target" configura se uma nova pgina (ou aba do navegador) ser
aberta ou no

"_self" na prpria pgina (padro)

"_blank" nova pgina

As cores padro de um "link" so:

Azul no visitado

Violeta visitado

Vermelho ativo (clique ou "tab")

Exibio inline

Atributo

Valor

Descrio

href

URL
#elementId

Endereo externo no qual o "hyperlink" est


direcionando ou "id" de um elemento interno HTML

target

_self
_blank

Especifica onde abrir o documento no qual o "link"


direciona

77

5.15.1

Navegao

O Atributo "href" pode receber o valor de um endereo

Pode ser uma pgina do seu projeto ou uma pgina na Internet

<a href="index.html">Home</a>
<a href="http://www.google.com">Google</a>
5.15.2

ncora

O atributo "href" tambm pode receber o "id" de um elemento HTML na prpria


pgina criando uma ncora

Faz a rolagem (scroll) da pgina at o ponto em que o elemento estiver,


desde que a barra de rolagem esteja presente

Deve ser acompanhado do caractere # com o "id"

Ex: href="#elementId"

<a href="#moreInfo">More Info</a>


...
<p id="moreInfo">More info is here...</p>

5.15.3

target

Especifica onde abrir o documento no qual o "link" direciona

_self no prprio documento

_blank em uma nova pgina (ou aba do navegador)

_parent "parent frame"

_top todo o corpo da janela

"nome do iframe"

78

EP:

<a>

1.

Crie o arquivo de nome "anchor.html" insira o seguinte cdigo

2.
3.

<a href="http://www.google.com">Google</a>
Salve e teste
Adicione o atributo "target" com o valor "_self"
<a href="http://www.google.com"

4.

target="_self">Google</a>
Nenhuma mudana ocorreu pois usamos o padro

5.

Mude o valor de "target" para "_blank":


target="_blank"

6.

Salve e teste

7.

Insira lorem ipsum, aps o cdigo atual, o suficiente para que as barras de
rolagem apaream

8.

Adicione como ltima tag de <body> (antes do fechamento) a tag <p>:


<p id="moreInfo">More info is here...</p>

9.

Como primeira tag de <body> (aps abertura) adicione:


<a href="#moreInfo">More Info</a>

10.

Salve e teste, clicando em More info


a.

11.

Se necessrio, redimensione a janela para gerar barras de rolagem

(Opcional) Faa a ncora reversa


a.

Clicando no final da pgina e rolando para o topo

79

80

Captulo 6: Tags Semnticas

6.1

Sobre
Criadas para uso no HTML5

Navegadores antigos no as reconhecem e simplesmente as ignoram

No recomendado seu uso para aplicao de estilos, posicionamento


ou layout

Permitem a criao de "sites semnticos"

Informam o tipo de contedo existente

Ex: contedo de cabealho do site

Importantes para indexao das ferramentas de busca

Praticamente no possuem nenhuma mudana visual para o usurio

Exceto as "tag" <mark> e <figurecaption>

Dependendo do navegador as demais "tags" podem ficar posicionadas de


forma ligeiramente diferente

6.2

Tags

Tag

Agrupa Informaes

<header>

Cabealho

<nav>

Navegao

81

<section>

Contedos em geral

<article>

Contedos no relacionados pgina

<aside>

<hgroup>

<details>

Barra lateral da pgina, esquerda ou direita (pode conter


outras "tags" semnticas, como <nav>, <article>,
<figure>)

"Tags" de cabealho <h1>...<h6>

Detalhes de algum contedo

<figure>

Imagem de qualquer tipo (grficos, thumbs, fotos, etc)

<figurecaption>

Aninhada dentro de <figure>, exibe informao sobre a


imagem

<footer>

<summary>

Rodap

Sumrio, resumo ou concluso de algum contedo

82

<mark>

Marca o texto (similar a uma caneta marca texto)

<time>

Data, hora, perodo, momento de algum contedo

6.2.1 <header>

"Cabealho" a ser exibido na pgina HTML

Geralmente so usadas "tags" relativas a marcao de "cabealhos"


(<h1...h6>) e a navegao (<nav>)

Utilizado por ferramentas de busca para indexar a pgina

Muitas vezes o logotipo da empresa definido como "background" de


<h1>, para otimizar a indexao da pgina (SEO)

<header>
<h1>My Company</h1>
<nav>...</nav>
</header>
6.2.2 <article>

Define blocos de informaes independentes

Muitas vezes independente do contedo da prpria pgina

Ex: blog, frum, notcias, etc

<article>
<h2>Latest News</h2>
<p>...</p>
</article>

83

6.2.3 <footer>

Bloco de marcao com caractersticas de rodap da pgina

Ex: direitos autorais, desenvolvedor do site, "links" do menu em texto

<footer>
<p>2014 - All rights are reserved</p>
</footer>

6.2.4 <section>

Define a seo de contedos HTML

Geralmente com "tags" semnticas de contedo aninhadas

<section>
<aside>...</aside>
<article>...</article>
<figure>...</figure>
</section>

EP: Tags Semnticas


1.

Crie um novo arquivo de nome "semantics.html"

2.

Adicione o cdigo dentro de <body>:


<h1> This is my header </h1>
<h3> This is my section </h3>
<h6> This is my footer </h6>

3.

Salve, teste e observe o resultado visual da pgina

84

4.

Envolva as "tags" da seguinte forma:


a.

<h1> com <header>

b.

<h3> com <section>

c.

<h6> com <footer>

5.

Salve, teste e verifique se houve alguma mudana visual na pgina

6.

Seu cdigo deve estar similar :


<header>
<h1> This is my header </h1>
</header>
<section>
<h3> This is my section </h3>
</section>
<footer>
<h6> This is my footer </h6>

7.

</footer>
Envolva o contedo de <h3> com <mark> conforme a seguir:
<h3>This is my <mark>section</mark></h3>

8.

Salve e teste

9.

Dentro de <section> e abaixo de <h3> adicione o seguinte cdigo:


<h3>This is my <mark>section</mark></h3>
<figure>
<img src="http://lorempixel.com/200/200/sports/2">
<figurecaption>Surfing on Hawaii</figurecaption>
</figure>

10.

Salve e teste

85

86

Captulo 7:
7.1

Tags de Formulrio

Formulrios
So contineres que possuem algumas funcionalidades embutidas

Usados desde pginas de contados em sites, at aplicaes corporativas


mais robustas

7.2

Geralmente um formulrio envia dados atravs de elementos especiais


chamados de controles ("controls")
Ex: campos de texto, botes, etc

<form>

Tag que conter todos os controls

Lida com os dados inseridos pelo usurio na pgina HTML

<input> a principal tag usada em um formulrio

Conforme o valor do seu atributo type pode se tornar desde um campo


de texto at botes ou mesmo outros tipos de controles

Possui exibio inline

<form>
First name: <input type="text"><br>
Last name: <input type="text"><br>
<input type="reset" value="Reset">
</form>

87

EP: <form>
1.

Crie um novo arquivo de nome form.html

2.

Adicione o seguinte cdigo:


<form>
First name: <input type="text"><br>
Last name: <input type="text"><br>
<input type="reset" value="Reset">

3.

7.3

</form>
Salve e teste
a.

Insira algum valor no formulrio

b.

Pressione o boto Reset

Principais Elementos

<input>

<textarea>

<button>

<select>

<option>

<optgroup>

<fieldset>

<label>

7.4

<input>
Exibio pode variar conforme o atributo "type"

88

Controle no qual o usurio interagir

Se usado dentro de um <form> seus dados so gerenciados por este

Adicionar, alterar ou remover uma informao


Ex: capturados no "submit", apagados no "reset", etc

Seu atributo type especifica o tipo de formulrio e como este parecer


visualmente para o usurio

Atualmente existem pouco mais de 20 tipos diferentes

Todos os tipos so relacionados formulrio

Muitos dos atributos de <input> fazem sentido com o tipo correto

Ex: checked faz sentido (e funciona) apenas com o tipo radio ou


checkbox

Os tipos mais comuns so os j existentes em verses anteriores do HTML:

button

checkbox

file

hidden

image

password

radio

reset

submit

text

89

Atributo

Valor

Tipo

Define

accept

video/*
image/*

file

autocomplete

on
off

Habilita/desabilita a funcionalidade de
autocompletar

autofocus

---

Foco ao elemento quando a pgina


carregar

checked

---

disabled

---

list

datalist_id

text
number

O elemento <datalist> que contm os


valores pr definidos para o <input>

maxlength

text
number

Nmero mximo de caracteres que o


usurio pode inserir

multiple

---

file

Se o usurio pode selecionar mltiplos


arquivos

name

text

Nome do elemento, deve ser o mesmo


usado no servidor quando o formulrio
enviar dados

placeholder

text

text
number

MIME-type do arquivo que ser


carregado

checkbox
Se o elemento estar pr selecionado
radio

Se o elemento estar desabilitado

Dica que mostrada ao usurio antes do


seu preenchimento

90

readonly

---

Impede que o usurio modifique o valor do


elemento

size

text
number

Largura do elemento definido pelo nmero


de caracteres

value

text

Valor do elemento, o qual poder ser


usado no servidor (se submetido)

type

button
checkbox
color
date
datetime
datetime-local
email
file
hidden

Tipo do elemento, se no declarado o


valor padro ser do tipo text

type

image
month
number
password
radio
range
reset
search
submit
tel
text
time
url
week

Tipo do elemento, se no declarado o


valor padro ser do tipo text

EP:

<input>

1.

Abra o arquivo form.html

2.

Adicione antes do boto, o <input> do tipo password:


Password: <input type="password"><br>
91

3.

Salve e teste
a.

4.

Digite qualquer valor neste campo

Aps o ltimo cdigo, adicione o tipo file:


Select a file: <input type="file"><br>

5.

Salve e teste

6.

Adicione o atributo multiple no <input> tipo file

7.

Salve e teste
a.

8.

Verifique a mltipla seleo

Adicione o atributo accept no <input> tipo file:


<input type="file"
accept="image/*" multiple><br>

9.

Salve e teste
a.

Tente selecionar um arquivo diferente de imagem

b.

(Opcional) Aplique o filtro para aceitar apenas imagens jpg

c.

(Opcional) Crie uma nova tag com filtro para arquivo pdf

10.

Adicione um novo <input> do tipo checkbox:

11.

<input type="checkbox">Send me spam<br>


Salve e teste

12.

Adicione o atributo checked ao <input>:


<input type="checkbox" checked>

13.

Send me spam<br>
Salve e teste

14.

Adicione dois novos <input> do tipo radio:


<input type="radio">I am a man<br>
<input type="radio">I am a woman<br>

15.

Salve e teste
a.

16.

Tente selecionar ambos os <input>

Adicione o atributo name com o mesmo valor para os <input> do tipo radio:
92

<input type="radio" name="gender">


I am a man<br>
<input type="radio" name="gender">
I am a woman<br>
17.
18.

Salve e teste
a. Tente novamente selecionar ambos os <input>
Adicione o atributo placeholder no <input>:
First name:
<input type="text" placeholder="first name">

19.

Salve e teste

20.

Adicione tambm o atributo title:


a.

Faa o mesmo para os demais <input> de texto

<input placeholder="first name"


title="Insert your name">
21.

Salve e teste
a.

Mantenha o ponteiro do mouse sobre o campo para visualizar o valor do


atributo title

22.

Crie um novo <input> de texto com o atributo value:


Input with value:
<input value="This is a value"
placeholder="some text..."><br>

23.

Salve e teste
a.

Perceba que value sobrescreve placeholder

b.

Na pgina HTML, apague o valor do <input> e perceba que o valor do


placeholder aparecer

93

24.

Adicione outro <input> com o atributo readonly:


Read only input:
<input value="Change me!" readonly><br>

25.

Salve e teste
a.

26.

Tente inserir um novo valor no <input>

Adicione outro <input> com o atributo disabled:


Disabled input:
<input value="Change me!" disabled><br>

27.

Salve e teste
a.

Note a diferena entre readonly e disabled

b.

(Opcional) Coloque como valor de title com o texto readonly e


disabled respectivamente em cada <input>

28.

Adicione um novo <input> com o atributo maxlength:


Max length input:
<input maxlength="3" title="3 only !!!"

29.

30.

placeholder="Just 3 characters allowed"><br>


Salve e teste
a.

Tente adicionar mais de 3 caracteres no campo

b.

Perceba que o valor de placeholder possui mais de 3 caracteres

Adicione o atributo size no <input> maxlength:


<input size="3">

31.

Salve e teste
a.

Perceba que o texto do placeholder no est visvel

32.

Adicione o atributo autofocus no primeiro <input>

33.

Salve e teste
a.

Perceba que o <input> est com foco e pronto para a digitao

94

7.5

<label>

Utilizada em conjunto com a "tag" <input>

Quando o usurio clica no texto da "tag" o <input> selecionado

Auxilia na usabilidade do usurio

O atributo "for" deve fazer referncia ao valor do "id" da "tag" <input>

<label for="firstName">First name:</label>


<input type="text" id="firstName">

EP: <label>
1.

Volte ao arquivo "form.html"

2.

Adicione o atributo "id" s "tags" <input>

3.

Envolva os textos ao lado das "tags" <input> com <label>


a.

Atributo "for" deve ter o mesmo valor do atributo "id" da "tag" <input>

<label for="firstName">First name:</label>


<input id="firstName" type="text"><br>
<label for="lastName">Last name:</label>
<input id="lastName" type="text"><br>
4.

Salve e teste
a.

Clique exatamente sobre a palavra dentro de <label> e perceba o foco no


<input>

95

7.6

<select>

Cria um elemento com lista de itens para seleo do usurio

O atributo multiple permite selecionar mltiplos itens

Altera visualmente o elemento

A tag <option> define os itens do elemento

Deve estar aninhada dentro de <select>

<select>
<option>Item 1</option>
<option>Item 2</option>
<option>Item 3</option>
</select>

EP:
1.

<select>
Abra o arquivo form.html e adicione:
<label for="options">Options:</label>
<select id="options">
<option>Item 1</option>
<option>Item 2</option>
<option>Item 3</option>

2.
3.

</select>
Salve e teste
Adicione o atributo multiple:
<select id="options" multiple>

4.

Salve e teste
a.

Utilize a tecla CTRL e selecione mais de um elemento

96

7.7

<textarea>

Elemento para insero de texto

Similar ao <input> porm para mltiplas linhas

Possui muitos dos atributos de <input> do tipo texto

Principais atributos so:

cols largura

row altura

<textarea rows="2" cols="10">


Default value
</textarea>

EP:
1.

<textarea>
Abra o arquivo form.html e adicione:
<label for="description">Description:</label>
<textarea id="description"
rows="2" cols="10">
Default value
</textarea>

2.

Salve e teste

97

7.8

<fieldset>

Agrupa elementos relacionados em um <form>

Desenha um quadrado em volta dos seus elementos

O elemento <legend> adiciona um "ttulo" na linha do quadrado desenhado


<form>
<fieldset>
<legend>My Form</legend>
<label for="firstName">First name:</label>
<input type="text" id="firstName">
</fieldset>
</form>

EP:
1.

<fieldset>
No arquivo "form.html" adicione logo aps <form> a "tag" <fieldset> com
fechamento antes de </form>
<form>
<fieldset>

</fieldset>

2.

</form>
Salve e teste

3.

Adicione a "tag" <legend> dentro de <fieldset>:


<fieldset>
<legend>My Form</legend>

4.

</fieldset>
Salve e teste novamente
98

99

Captulo 8:
8.1

Novos Tipos

HTML5 define novos tipos para <input>

Alguns modificam visualmente o elemento

Novos Tipos de Formulrio

Deve-se ter um cuidado maior com o problema de "cross-browser",

A exibio incorreta pode comprometer a experincia do usurio

Podem validar o valor do campo conforme seu tipo

Geralmente antes do envio dos dados do formulrio para o servidor

Tipo

Suporte

Define

color

Elemento para seleo de cor ("color picker")

date

Controle de data com ano, ms e dia (sem horrio)

datetime

Similar ao tipo "date", porm com controle


adicional para horrio (hora, minuto, segundo) com
base na zona de horrio UTC

datetime-local

Similar ao tipo "date", porm com base no horrio


UTC

email

Elemento para insero de email

month

Similar ao tipo "date", porm par ms e ano

100

Elemento para insero de nmero com


botes internos para aumentar e reduzir o
valor

number

range

Elemento para a definio de valor


("slider")

search

Elemento para insero de texto, auxiliado


por boto interno para apagar o valor
inserido

tel

---

time

Elemento para insero de hora

url

Elemento para insero de URL


Similar ao tipo "date", porm para semana
e ano

week

8.2

Elemento para insero de nmero


telefnico

Suporte dos Navegadores


"Cross-browser" ainda bastante limitado

Mesmo para navegadores modernos

Navegadores antigos ignoram o novo tipo renderizando o padro texto

Dependendo do caso, em produo, o recomendvel utilizar jQuery UI


ou biblioteca similar

Tipos que no tem grande interferncia visual no elemento podem ser usados
sem maiores problemas

Mesmo que for exibido como tipo texto, no impedir (ou atrapalhar) o
usurio de interagir com o elemento

Ex: tipos "email", "search", "tel", etc

101

8.3

Vantagens do Uso
O uso dos novos tipos auxilia na interao do usurio com o elemento

No caso de dispositivos mveis, o tipo do teclado do dispositivo exibido


ao usurio muda conforme o tipo do <input>

Ex: tipo "email" abre o teclado com teclas que facilitam a insero do
email (ponto, arroba, etc)

EP:

Novos Tipos

1.

Crie um novo arquivo de nome "form_new_types.html"

2.

Adicione a "tag" <form>

3.

Dentro de <form> adicione o seguinte cdigo:


<fieldset>
<legend>Date & Time</legend>

4.

</fieldset>
Abaixo de <legend> adicione os tipos de datas:
<label for="date">Date:</label>
<input type="date" id="date"><br>
<label for="datetime">Date Time:</label>
<input type="datetime" id="datetime"><br>
<label for="datetimelocal">Date Time Local:</label>
<input type="datetime-local" id="datetimelocal"><br>
<label for="time">Time:</label>
<input type="time" id="time"><br>

102

<label for="week">Week:</label>
<input type="week" id="week"><br>
<label for="month">Month:</label>
5.

<input type="month" id="month"><br>


Salve e teste
a.

Abra tambm com outros navegadores alm do Chrome e verifique se a


visualizao a mesma

6.

Adicione mais um conjunto de "tags" dentro de <form>:


<fieldset>
<legend>Numerics:</legend>

7.

</fieldset>
Dentro de <fieldset> adicione:
<label for="number">Number:</label>
<input type="number" id="number"><br>
<label for="range">Range:</label>
<input type="range" id="range"><br>

<label for="tel">Telephone:</label>
8.

<input type="tel" id="tel"><br>


Salve e teste

9.

Adicione mais um conjunto de "tags" dentro de <form>:


<fieldset>
<legend>Others:</legend>
</fieldset>

103

10.

Dentro de <fieldset> adicione:


<label for="email">E-Mail:</label>
<input type="email" id="email"><br>

<label for="url">URL:</label>
<input type="url" id="url"><br>
11.

Dentro de <fieldset> adicione:


<label for="search">Search:</label>
<input type="search" id="search"><br>

<label for="color">Color:</label>
<input type="color" id="color"><br>
12.

Salve e teste

104

105

Captulo 9:
9.1

Front-end & Back-end


So camadas que se integram atravs de requisio

Conceitos de Requisies HTTP

Geralmente requisio HTTP - Hypertext Transfer Protocol

Pgina HTML faz uma requisio para um endereo vlido no qual o servidor
responde

Pode retornar desde uma pgina HTML ou apenas dados

O servidor deve estar adequadamente configurado e preparado para


receber a requisio

9.2

Cada camada tem seu papel bem definido e distinto

Front-end envia, recebe e exibe os dados do server

Back-end processa e retorna os dados processados para o client

Os papis de cada camada nunca devem ser invertidos

Front-end gerencia a exibio dos dados

Back-end gerencia as regras de negcios

Requisio

Transmisso de dados entre a pgina HTML e o servidor

Os dados so enviados como texto

Cada requisio envia informaes adicionais no header

Toda vez que uma pgina invocada dados so enviados e recebidos,


independente de um formulrio ter sido submetido

106

9.3

Header

9.4

URL Encoding

Dados so convertidos automaticamente para o formato ASCII

Somente este formato aceito na transmisso

Diferente do encoding da pgina, a qual exibe os dados para o usurio

Caracteres no seguros so convertidos utilizando:


% + hexadecimal
Ex: So Paulo
Header S%C3%A3o%20Paulo
URLSo%20Paulo

107

EP:
1.

URL Encoding
Abra o endereo abaixo:
http://www.url-encode-decode.com/

2.

Digite o texto So Paulo e clique no boto Url Encode


a.

9.5

Observe o resultado

Servios

Servidores configurados para receber e processar os dados da requisio

Os principais tipos de webservices so:

RPC - Remote Procedure Call

SOAP - Simple Object Access Protocol

REST - Representational State Transfer

108

9.6

Caixa Preta

O client no deve ter informaes especficas ou detalhadas do server

Apenas configuraes essenciais devem existir para o client:

9.7

Endereo

Mtodo

Nome para os parmetros

Para o client no importa a infra estrutura usada

Quantidade de mquinas

Camadas

Linguagem de programao

Sistema operacional

REST

Servio Web bastante comum e utilizado atualmente

Estilo de arquitetura

Sistemas que seguem os princpios REST so chamados de RESTful

Efetua uma operao com base em uma ao

Ao deve resultar em um estado final

Como (se presume) que a aplicao se comportar a seguir, ou o estado


no qual se encontrar aps a ao

109

9.8

Mtodos
So verbos de aes para uma requisio HTTP

Enviados no header da requisio HTTP

Em REST, representam o estado final no qual a ao resultar

Podem representar manipulaes de CRUD

Create

Read

Update

Delete

Mtodo
GET

Obtm valor(es)

HEAD

Obtm apenas o cabealho (header) da requisio

POST

Adiciona valor(es)

PUT

Atualiza valor(es)

PATCH

Atualiza valor(es)

DELETE

Apaga valor(es)

OPTIONS

Utilizao

Retorna os mtodos HTTP disponveis

Tecnicamente qualquer mtodo pode ser usado para transmitir ou receber dados

Porm o servidor que estiver configurado adequadamente, seguindo a


arquitetura REST, utilizar a ao invocada pelo mtodo para executar
algum procedimento

Ex: requisio com o mtodo DELETE apagar o registro

110

9.9

GET
Efetua a requisio transmitindo dados pela URL

nico mtodo que utiliza URL

Os dados podem ser visualizados e manipulados pelo usurio

Dados so enviados no formato nome e valor

Essencialmente tem o objetivo de obter dados

Mas muitas vezes utilizada para outras aes em sistemas que no


seguem a arquitetura REST (no recomendado)

Caracteriza-se por:

Permitir salvar a URL como favorito

Manter a URL (requisio) no histrico de navegao

Possui restrio de tamanho da URL (cerca de 3000 caracteres)

Os dados transmitidos tem a seguinte assinatura:


...url/server_pag.ext?name1=value1&name2=value2
Item

Exemplo

Descrio

server_pag.ext

search.php

list.jsp?category=dvd

Separador do endereo da
pgina do servidor e o(s)
parmetro(s) enviado(s)

name1=value1

item=dvd

Nome da propriedade e seu


valor enviado como
parmetro

&

product.asp?category=dvd&id=123

Separador de parmetros
(quando existir mais de um)

Endereo da pgina do
servidor

111

EP:

GET

1.

Abra o endereo www.google.com.br

2.

Digite no campo de buscas a palavra restful

3.

Observe a URL gerada

4.

Identifique o parmetro digitado na URL


a.

5.

Analise tambm os demais parmetros enviados na requisio

Modifique o parmetro na URL para html5


a.

No utilize o campo de buscas, modifique no campo de endereos do


navegador

b.
6.

Perceba a alterao da busca

(Opcional) Navegue para um site de compras tradicional na Web


a.

Navegue por alguma categoria existente como dvd

b.

Observe a URL gerada e os parmetros enviados

9.10 POST

Mtodo que permite o envio de dados sem utilizar a URL do navegador

Mais segura para o envio de dados

Porm pode a requisio e os dados transmitidos podem ser capturados


e manipulados com alguns softwares comuns

Essencialmente deve ser utilizada para inserir dados

Se o servio no seguir os princpios REST tambm pode ser usada para


atualizar e ou apagar dados

Caracteriza-se por:

No permite a manipulao direta e explcita do usurio

No permite armazenar a chamada nos favoritos ou no histrico

No possui problemas com relao a quantidade de parmetros enviados

112

9.11 Segurana

Nenhuma requisio tem algum mecanismo prprio de segurana

Para maior segurana recomenda-se o uso de HTTPS

Conexo criptografada com protocolo SSL/TLS (camada de segurana)

Utiliza certificados digitais para verificar a autenticidade do cliente e


servidor

Porta padro utilizada pelo navegador a 443

9.12 Ferramentas

Existem muitas ferramentas que permitem inspecionar um requisio

So bastante teis para o desenvolvimento e depurao da requisio

As mais comuns so:

Google Chrome/Network recurso disponvel como parte do Chrome


Developer Tools

Advanced Rest Client Extenso para o Google Chrome

Charles Proxy software instalado na mquina

113

114

Captulo 10:

Formulrios HTML

10.1 Mtodos vs Formulrios

O formulrio HTML suporta apenas os mtodos GET e POST

Utilizando Ajax, possvel efetuar requisies com outros mtodos

HTML5 previa suporte para PUT e DELETE, mas foram cancelados

Alguns navegadores em verses especficas fizeram algumas implementaes


para mais mtodos

No recomendado, por ser especfico e por gerar dependncia

10.2 Objeto do Formulrio

Os dados do formulrio so enviados atravs de um objeto criado


automaticamente por <form>

Objeto criado automaticamente quando existir um <input> do tipo


submit e o usurio clicar no boto

Os dados so enviados para o caminho configurado no atributo action


da tag <form> utilizando o mtodo definido

<form action="form.jsp" method="post">

Formulrio deve estar configurado adequadamente com o atributo name com


valor esperado pelo servidor

O atributo name ser usado como nome do parmetro e seu valor ser
o dado inserido pelo usurio no formulrio

115

<form action="form.jsp" method="get">


First name: <input type="text" name="firstName">
Last name: <input type="text" name="lastName">
<input type="submit" value="Submit">
</form>

url/form.jsp?firstName=John&lastName=Wayne

10.3 <form>
Atributo

Valor

action

URL

autocomplete

on
off

method

get
post

name

myFormName

Descrio

Caminho no qual os dados sero submetidos

Especifica se um formulrio pode ter a


funcionalidade de autocompletar do navegador

Mtodo HTTP no qual os dados sero submetidos

Nome do formulrio

116

novalidate

---

target

_blank
_self

Formulrio no deve ser validado quando


submetido

Especifica onde a resposta ser exibida aps


submisso

10.4 method

Configura como o formulrio enviar os dados

Servidor deve estar configurado para receber os dados utilizando um dos


mtodos

Os verbos de ao suportados pelo formulrio so:

GET

POST

10.5 name

Atributo no qual utilizado para enviar os dados ao servidor

Servidor deve estar configurado adequadamente para receber os dados

Com valor correto do atributo "name" e mtodo adequado de envio

Seu valor deve ser o mesmo usado no servidor

Se os valores forem diferentes no funcionar

117

EP:

Objeto do Formulrio

1.

Crie o arquivo de nome "form_submit.html"

2.

Adicione a "tag" <form>:


<form></form>

3.

Dentro dela adicione duas "tags" <input>:


First name:
<input type="text" name="fname"><br>
Last name:
<input type="text" name="lname"><br>

4.

Salve e teste

5.

Ainda dentro da "tag" <form> adicione o boto para enviar os dados:

6.

<input type="submit" value="Send">


Salve e teste novamente
a.

Perceba que ao clicar no boto a URL muda e os valores do atributo


"name" so utilizados na URL pelo mtodo padro GET

7.

Adicione o seguinte atributo "tag" <form>:

8.

action="http://httpbin.org/get"
Seu cdigo deve estar similar :
<form action="http://httpbin.org/get">
First name: <input type="text" name="firstName"><br>
Last name: <input type="text" name="lastName"><br>
<input type="submit" value="Send">

9.

</form>
Abra o Chrome Developer Tools e verifique os dados enviados
a.

Antes de enviar abra a ferramenta

b.

Entre na aba Network

c.

Adicione as informaes no formulrio e clique para enviar

118

d.

Clique no primeiro item (arquivo) de nome get

e.

Clique na sub aba Headers e verifique os dados em Query String


Parameters

10.

Altere os atributos de <form> para:


<form action="http://httpbin.org/post" method="post">

11.

Salve e teste
a.

Faa o mesmo teste anterior usando o Chrome Developer Tools

119

120

Captulo 11:

Validao

11.1 Papel do Front-end

Responsvel pela exibio de dados

Recebe e envia dados

Ex: exibir lista de produtos com valor e descrio

Opcionalmente, pode ajudar na validao de algum campo para evitar a


requisio

Diminui o trfego de dados e a quantidade de requisies para o servidor


lidar

Ex: validar se um campo foi preenchido

Deve possuir cdigo que gerencie apenas a visualizao dos dados e nunca
regras de negcio ou inteligncia do sistema

Facilmente manipulvel e passvel de ataque

Ex: nunca verificar se o usurio e senha esto corretos

Nunca acessa banco de dados diretamente, requer servidor para isso

11.2 Papel do Back-end

Gerencia os dados enviados e transmitidos para o front-end

Deve possuir toda a inteligncia do sistema

Sempre validar os dados, mesmo que a validao tenha sido aplicada


no front-end

Persistncia dos dados geralmente ocorre em um banco de dados

Garante a integridade dos dados e consequentemente do sistema


Somente o back-end tem acesso ao banco de dados

Opcionalmente pode se integrar com um ou mais servidores terceiros

Permite a integrao entre sistemas

121

11.3 Validao

Processo de validao importante para reduzir o trfego desnecessrio de


dados na rede

Opcional no front-end e obrigatrio no back-end

No faz sentido gerar uma requisio para o servidor para identificar se um


campo foi preenchido ou no

11.3.1

Gera consumo de recursos desnecessrios

Validaes mais Comuns

Tipo
Campo
obrigatrio

Validao
Se o campo foi preenchido pelo usurio

Email

Usurio inseriu uma informao de email, como utilizao do


caractere arroba, se a palavra contm caracteres vlidos para
email, se fez uso de .com

Nmero

Se o valor inserido um nmero, podendo ainda verificar se o


valor est dentro de um limite mximo e mnimo, ou ainda se
inteiro ou real

Nmeros
especficos
Seleo

Se o valor preenchido contm o dado desejado, como data,


CPF, cep, telefone, etc
Um item da lista foi selecionado (<select>) ou ainda se o usurio
escolheu uma opo (<input> tipo radio e checkbox)

Nota: usando como exemplo o tipo email, perceba que no feita a verificao real se o
email existe ou no, isso inteligncia do sistema e deve ser feita pelo servidor, porm
verificado se o valor digitado um email, ou seja, possui o caractere @ e .com no texto
inserido pelo usurio.

122

11.3.2

Validao HTML5

Os formulrios do HTML5 permitem fazer uma validao simples

Seu uso recomendado apenas para formulrios simples que sejam


visualizados em navegadores modernos

Ainda assim existem alguns navegadores modernos e atuais que no


suportam alguns tipos de validao

Recurso nativo do HTML5

No necessita de cdigo JavaScript

Tem escopo limitado e reduzido

Validao do formulrio ocorre com base no tipo do <input> utilizado e ou em


sua configurao

Se utilizado um tipo email apenas valores que contiverem um e-mail


sero aceitos na validao

Os dados so validados no momento em que o usurio clica no <input> do tipo


submit

<form> possui o atributo novalidate que controla se todo o formulrio


ser ou no validado

<input> possui o atributo formnovalidate que controla se apenas este


elemento ser ou no validado

<form>
<input type="email">
<input type="number" min="1" max="5">
<input type="date">
<input type="text" required>
<input type="text" pattern="[A-Za-z]{2}>
<input type="submit">
</form>

123

11.3.2.1

Atributos de Validao

Atributo

Valor

Tipo

formnovalid
ate

---

submit

Formulrio no ser validado

pattern

[0-9]{2}

text
number

Expresso regular que ser usada na validao


do formulrio

required

---

max/min

number
date

11.3.2.2

Define

Valida se o elemento foi preenchido (ou


selecionado) no envio do formulrio

Verifica se o valor inserido est dentro do(s)


limite(s) imposto(s) pelo(s) atributo(s)

Tipos que Validam

Os principais tipos que efetuam validao so:

tel

email

date

search

Muitos dos novos tipos so visualmente similares ao tipo text

Diferem na forma como o usurio interage, principalmente em mobile

Ex: quando o usurio interage como elemento do tipo email com um


tablet ou celular, o teclado aparece com os elementos para facilitar a
digitao do email (@, .com, etc)
124

EP:

Validao

1.

Crie um novo arquivo de nome form_validation.html

2.

Adicione a tag <form> sem nenhuma configurao

3.

Dentro dela adicione os seguintes <input> do tipo:


<input type="email"><br>
<input type="number"><br>
<input type="date"><br>
<input type="submit">

4.

Salve e teste
a.

Verifique quais dos elementos visualmente igual ao tipo text

b.

Ainda com o formulrio vazio, clique no boto submit e verifique se a


validao ocorre

c.

Preencha o campo do e-mail com um valor parcial e clique no boto


submit

i.

Continue preenchendo e validando este campo at que um email


seja inserido

d.
5.

Preencha o campo do tipo number com uma letra e valide o formulrio

Adicione a seguinte configurao para o tipo number:


<input type="number" min="1" max="5">

6.

Salve e teste
a.

Insira valores menores e maiores que os determinados pelos atributos


min e max e valide o formulrio

7.

Repita a configurao para o tipo date:


<input type="date"
min="2000-12-26" max="2000-12-31">

8.

Salve e teste
a.

Tente inserir uma data anterior ou posterior a definida


125

9.

Adicione um novo elemento obrigatrio dentro do formulrio:


<input type="text" required>

10.

11.

Salve e teste
a.

Deixe o novo elemento sem nenhum valor e valide o formulrio

b.

Adicione o atributo required para outros campos e repita o teste

Insira um novo elemento com validao de expresso regular (regex):


a.

A expresso verifica se o valor inserido uma letra (maiscula ou


minscula) e se existem dois caracteres

<input type="text" pattern="[A-Za-z]{2}">


12.

Salve e teste
a.

13.

Insira nmeros ou mais e menos de duas letras

No elemento submit adicione o atributo formnovalidate:


<input type="submit" formnovalidate>

14.

Salve e teste
a.

11.3.2.3

Customizao

Modificao dos textos das mensagens pode ocorrer com o uso de JavaScript

Verifique se o formulrio continua sendo validado

Atualmente apenas o Google Chrome permite a modificao

Estilo das mensagens diferente de navegador para navegador

Usa recursos visuais do prprio navegador para exibir as mensagens

Atualmente no possvel modificar o estilo das mensagens

126

127

Captulo 12:

Recursos Externos

12.1 <object>

Define um objeto que ser embutido no arquivo HTML

udio

Vdeo

PDF

Flash

HTML

Declarada dentro da "tag" <body>

Possvel definir um texto alternativo como contedo do elemento

Nas verses HTML anteriores aparecia em <head>


Exibido caso o navegador no tenha suporte para o arquivo embutido

Necessrio definir ao menos um dos atributos:

data endereo do arquivo a ser embutido

type MIME-type do arquivo

<!doctype html>
<html>
<body>
<object width="400" height="400" data="banner.swf">
Your browser does not support embed objects.
</object>
</body>
</html>

128

Atributo

Valor

data

URL

Endereo do objeto a ser embutido

height

200

Valor em "pixels" da altura

type

text/html

width

150

EP:

Descrio

Especifica o MIME-type do objeto a ser embutido

Valor em "pixels" da largura

<object>

1.

Crie um arquivo com nome embeds.html

2.

Baixe o arquivo na mesma pasta do arquivo HTML:


http://www.w3.org/TR/1998/REC-html40-19980424/html40.pdf

3.

Adicione o seguinte cdigo, salve e teste:


<h1>&lt;object&gt;</h1>
<object data="html40.pdf" type="application/pdf"
width="100%" height="800">
Your browser does not support embeded objects.
</object>
129

12.2 <embed>

Define um continer para uma "aplicao" externa ou contedo interativo de um


"plugin"

Disponibilizada oficialmente no HTML5

Existia em verses anteriores do HTML, apesar de no fazer parte da


especificao do HTML

Maioria dos navegadores a suporta, mesmo os antigos

Importa o arquivo externo para o documento HTML


<!doctype html>
<html>
<body>
<embed src="helloworld.swf">
</body>
</html>

Atributo

Valor

Descrio

height

200

Valor em "pixels" da altura

source

URL

Endereo do contedo a ser embutido

type

text/html

width

150

Especifica o MIME-type do objeto a ser embutido

Valor em "pixels" da largura

130

EP:

<embed>

1.

Abra o arquivo "embeds.html"

2.

Adicione o seguinte cdigo (abaixo do anterior):


<h1>&lt;embed&gt;</h1>
<embed
src="html40.pdf"
type="application/pdf"

3.

width="100%" height="800">
Salve e teste

12.3 <iframe>

Embuti outro documento dentro da pgina HTML

Bastante comum seu uso com outros arquivos HTML

Uso deve ser moderado pois:

Dificulta o acesso e troca de informaes entre as pginas com


JavaScript

Estilizao por CSS pode ser bastante trabalhosa

Permite colocar texto como contedo do elemento caso o navegador no tenha


suporte

<!doctype html>
<html>
<body>
<iframe src="http://www.google.com.br">
<p>Your browser does not support iframes.</p>
</iframe>
</body>
</html>

131

Atributo

Valor

height

200

Valor em "pixels" da altura

width

150

Valor em "pixels" da largura

name

myName

seamless

---

src

URL

EP:
1.

Descrio

Nome do elemento

Especifica que o contedo deve ser parte visual da


pgina que o carregou

Endereo do contedo a ser embutido

<iframe>
Abra o arquivo "embeds.html", adicione:
<h1>&lt;iframe&gt;</h1>
<iframe src="html40.pdf" type="application/pdf"
width="100%" height="800">
Your browser does not support embeded objects.
</iframe>

2.

Salve e teste

132

12.4 Consideraes

Estas tags permitem carregar outros arquivos HTML

Estes arquivos podem funcionar inteiramente ou parcialmente

Depende da tag utilizada para carreg-lo

No caso de <iframe> existem restries de segurana que podem ser


aplicadas, como permisso para rodar scripts ou mesmo submeter
formulrios

No h limites para aninhamentos

No caso de <iframe> uma pgina pode carregar outra de um domnio


diferente e assim por diante

Eleva o risco de segurana e controle de contedo

Muitas mdias sociais disponibilizam contedos que podem ser atribudos na


pgina com uma das tags

Integrao pode ser complexa ou invivel

Aplicao de estilos pode ser mais trabalhosa

Integrao com JavaScript entre as pginas

A indexao da pgina no funciona adequadamente

Algumas vezes todas as formas esto disponveis

Sites de busca no avaliam o contedo embutido

A pgina embutida pode exibir contedo completamente diferente do previsto na


pgina

Tambm possvel embutir outras pginas utilizando JavaScript

Muitas mdias sociais tambm oferecem esta opo

Tambm podem facilitar a manuteno

Possvel utilizar um cdigo HTML para cabealho e rodap, carregando


apenas seu contedo nas pginas desejadas

Se for necesria alguma alterao, basta modificar o arquivo carregado e


todas as pginas sero atualizadas

133

EP:

Consideraes

1.

Crie um novo arquivo de nome header.html

2.

Crie a estrutura bsica, adicione <h1>:


<h1>My Page Header</h1>

3.

Crie um novo arquivo de nome footer.html com:


<h6>My page footer</h6>

4.

Salve ambos os arquivos

5.

Crie um terceiro arquivo de nome index.html

6.

Adicione as tags <iframe> carregando header.html e footer.html

7.

Entre elas adicione o seguinte contedo


<h3>My index page content</h3>

8.

Salve e teste

9.

Crie mais duas pginas com os nomes:


a.

about.html

b.

contact.html

10.

Repita os passos 6 8 e coloque o respectivo contedo em <h3>

11.

Salve e teste

12.

Altere o contedo de header.html para:


<h1>Changed Header</h1>

13.

Salve e verifique as pginas criadas (index, about e contact)

134

135

Captulo 13:

Mdias HTML5

13.1 udio

HTML5 oferece API para udio e vdeo

Execuo do arquivo de udio ocorre de acordo com seu "engine"

13.1.1

Suporte dos Navegadores

Tipos suportados pelo HTML5 para udio so:

".mp3", ".ogg" e ".wav"

Cada navegador pode ou no implementar todos os arquivos ou


parcialmente

Navegador

MP3

Wav

Ogg

Internet Explorer

SIM

NO

NO

Chrome

SIM

SIM

SIM

Firefox

parcialmente

SIM

SIM

Safari

SIM

SIM

NO

Opera

NO

SIM

SIM

136

Nota: Mozilla Firefox suporta MP3 dependendo da sua verso, ou seja, h suporte no
Firefox 21 apenas quando estiver rodando nos sistemas operacionais Windows 7, Windows
8, Windows Vista e Android.

13.1.2

Arquivos de udio

Arquivo de udio um container de informaes sobre seu contedo

Em sua estrutura interna encontram-se

Informaes sobre as trilhas de udio

Metadados (ttulo, autor, nome da msica, tempo, etc)

137

13.1.3

Formato

MIME-type

MP3

audio/mpeg

Ogg

audio/ogg

Wav

audio/wav

<audio>

"Tag" usada para fazer a marcao do contedo de udio

Arquivo com contedo

"Streaming" do contedo

Se a "tag" no for suportada pelo navegador o texto que for definido como
contedo do elemento ser exibido

Atributo

Valor

Descrio

autoplay

---

O udio ser reproduzido to logo esteja pronto

controls

---

Exibe os controles

loop

---

Reinicia a reproduo automaticamente quando terminar

138

muted

---

preload

auto
metadata
none

src

URL

Mudo

Carrega todo o arquivo, apenas os metadados do arquivo


ou ainda no carrega o arquivo de udio, quando a pgina
HTML for carregada

Endereo do arquivo de udio

<audio src= "sound.ogg" controls>


Your browser does not support audio tag.
</audio>

EP:

<audio>

1.

Crie um novo arquivo de nome "audio.html"

2.

Em <body> adicione o cdigo:

<audio autoplay
src="http://www.music.helsinki.fi/tmt/opetus/uusmedia/esim/a2002
011001-e02-128k.ogg">
Your browser does not support audio tag.
</audio>
3.

Salve e teste no Google Chrome

4.

Repita o mesmo teste no Safari ou no Internet Explorer

5.

Volte ao cdigo e adicione o atributo "controls" na "tag" <audio>

6.

Salve e teste

7.

Teste os demais atributos


139

13.1.4

<source>

Define os mltiplos arquivos de mdia

Pode ser usado para udio e vdeo

Usado conforme o suporte do navegador do usurio

Ideal definir mais de um elemento com arquivos diferentes

Arquitetura "failover"

Atributo

Valor

media

screen and (min-width:320px)

src

URL

type

video/ogg

Descrio
Especifica o tipo de mdia (ainda
no suportado por nenhum
navegador)
Endereo do arquivo de udio
Especifique o MIME-type do
arquivo

<audio controls>
<source src="saound.mp3" type="audio/mpeg">
<source src="saound.ogg" type="audio/ogg">
Your browser does not support the audio tag.
</audio>

140

EP:

<source>

1.

Crie um novo arquivo de nome "audio_source.html"

2.

Em <body> adicione o cdigo:


<audio controls>
<source
src="http://www.music.helsinki.fi/tmt/opetus/uusmedia/
esim/a2002011001-e02-128k.mp3" type="audio/mpeg">
<source
src="http://www.music.helsinki.fi/tmt/opetus/uusmedia/
esim/a2002011001-e02-128k.ogg" type="audio/ogg">
Your browser does not support the audio tag.
</audio>

3.

Salve e teste no Chrome

4.

Repita o mesmo teste no Safari ou no Internet Explorer

13.2 Vdeo

API dos navegadores tambm permite trabalhar com arquivos de vdeo

Os formatos suportados so:

"mp4", "webm" e "ogg"

141

13.2.1

Suporte dos Navegadores

Navegador

MP4

WebM

Ogg

Internet Explorer

SIM

NO

NO

Chrome

SIM

SIM

SIM

Firefox

parcialmente

SIM

SIM

Safari

SIM

NO

NO

Opera

NO

SIM

SIM

Nota: Mozilla Firefox suporta MP4 de forma similar ao MP3, ou seja, h suporte no Firefox
21 apenas quando estiver rodando nos sistemas operacionais Windows 7, Windows 8,
Windows Vista e Android.

142

13.2.2

Arquivos de Vdeo

13.2.3

Formato

MIME-type

MP4

video/mp4

WebM

video/webm

Ogg

video/ogg

<video>

Similar a "tag" <audio>

Suporta leitura de arquivos de vdeo ou "streaming"

Utiliza a "tag" <source> para mltiplas referencias de arquivo

Possui todos os atributos de <audio> e mais os seguintes:

height

width

poster

Atributo

Valor

height

10

poster

URL

width

10

Descrio
Valor em "pixels" da altura
Endereo com a imagem do vdeo que ser usado
enquanto o arquivo carregado ou at que o
usurio clique em "play"
Valor em "pixels" da largura

143

<video width="320" height="240" controls>


<source src="movie.mp4" type="video/mp4">
<source src="movie.ogg" type="video/ogg">
Your browser does not support video tag.
</video>

EP:

<video>

1.

Crie um novo arquivo de nome "video.html"

2.

Adicione em <body>:

<video width="320" height="240" controls>


<source src="http://techslides.com/demos/samplevideos/small.mp4" type="video/mp4">
<source src="http://techslides.com/demos/samplevideos/small.ogv" type="video/ogg">
Your browser does not support video tag.
</video>
3.

Salve e teste

4.

Altere os valores de altura e largura para um valor maior

5.

Salve e teste

6.

Repita o teste com valores menores

144

145

Captulo 14:

SVG

14.1 Viso Geral

Uso recomendado pelo W3C

Define os grfico no formato XML

Permite o desenho de formas primitivas

Principal concorrente do Flash

Padro aberto ("open standard")

Suportado por quase todos os navegadores

14.2 Formato XML

Pode ser criado e editado com qualquer editor de texto

Permite busca, indexao, "script" e compresso

Qualquer elemento ou atributo podem ser animados

Mantm a qualidade de resoluo original

Independente do tamanho

Valores matemticos calculados conforme tamanho

Atende as especificaes DOM

Padres estabelecidos pelo W3C

Todas as "tags" de elemento devem possuir fechamento

Pode ser criado e editado com o "software" Inkscape

http://inkscape.org/

146

<svg xmlns='http://www.w3.org/2000/svg' version='1.1'>


<rect width='100' height='50' fill='#ccc' x='35' y='35'
strokewidth='3' stroke='#444' />
</svg>

14.2.1

Desmenbrando SVG

<svg
xmlns="http://www.w3.org/2000/svg"
version="1.1"
width="200px" height="200px">

147

Declarao

Descrio

<svg>

"Tag" de declarao do fragmento SVG

xmlns

"Namespace" do arquivo XML

version

width/height

Verso do SVG

Largura/altura

<rect
width='100' height='50'
fill='#ccc'
x='35' y='35'
strokewidth='3'
stroke='#444' />

Declarao

Descrio

<rect>

Desenha a forma primitiva de um retngulo

fill

Valor hexadecimal da cor do preenchimento

strokewidth
stroke

Largura do contorno
Valor hexadecimal da cor do contorno

148

14.3 Usando SVG

Um contedo SVG cria um "viewport"

Uma rea reservada para seu contexto

Posicionamento dos seus elementos ocorrem com base no "viewport"

Posio 0,0 o canto superior esquerdo do "viewport" e no da


pgina HTML

Pode ser usado diretamente atravs da "tag" <svg>

EP:

Declara-se o fragmento de um documento SVG

SVG

1.

Crie um arquivo de nome "svg.html"

2.

Dentro de <body> adicione o seguinte cdigo, salve e teste:


<svg xmlns='http://www.w3.org/2000/svg' version='1.1'>
<rect
width='500' height='250'
fill='#ccc' x='35' y='35'
strokewidth='3' stroke='#444' />
</svg>

3.

Remova todos os atributos da "tag" <svg> e teste novamente

4.

Baixe e instale o "software" Inkscape (ou use o Illustrator)

5.

Crie uma forma, salve e gere um arquivo SVG com o nome de "shape.svg"

6.

Abra o arquivo com algum editor de textos e inspecione o cdigo

7.

Copie o cdigo que estiver a partir da "tag" <svg> do arquivo para a pgina
HTML em <body>

8.

Salve e teste novamente

149

150

Captulo 15:

Tabela

15.1 <table>

Tabelas foram muito utilizadas para criar sites no passado

Posicionava os elementos dentro de clulas

Atualmente seu uso se restringe :

Exibio de informaes em grid (visualmente similar uma tabela do


excel)

Criao de email marketing

15.2 Criando Tabelas


Elemento

Descrio

<table>

Root tag

<tr>

Linha (row)

<th>

Cabealho (heading)

<td>

Dados (clula)

151

<table>
<tr>
<th>Name</th>
<th>Email</th>
</tr>
<tr>
<td>Peter Wasty</td>
<td>peter@wasty.com</td>
</tr>
<tr>
<td>Alex Afford</td>
<td>alex@afford.com</td>
</tr>
</table>

EP:

<table>

1.

Crie um novo arquivo de nome table.html

2.

Adicione o seguinte cdigo, salve e teste:


<table>
<tr>
<th>Name</th>
<th>Email</th>
</tr>
</table>

3.

Abaixo de <tr> e antes do fechamento de </table>:


<tr>
<td>Peter Wasty</td>
<td>peter@wasty.com</td>
</tr>
152

4.
5.

Salve e teste
Adicione mais registros na tabela:
a.

Alex Afford - alex@afford.com

b.

Mary Castella - mary@castella.com

c.

Zed Broken - zed@broken.com

6.

Salve e teste

7.

Adicione mais colunas tabela com dados aleatrios:


a.

Phone

b.

Picture (foto da pessoa)

<tr>
<th>Name</th>
<th>Email</th>
<th>Phone</th>
<th>Picture</th>
</tr>
<tr>
<td>Peter Wasty</td>
<td>peter@wasty.com</td>
<td>1122334455</td>
<td>
<img
src='http://lorempixel.com/200/200/people/3/'>
</td>
</tr>

153

15.3 Email Marketing

Como mencionado anteriormente, no se deve fazer uso de tabelas para a


criao (posicionamento e layout) de sites

Porm para email marketing seu uso fundamental

Os clientes de email conseguem interpretar apenas cdigos


simples/antigos de HTML

A tcnica para sua criao totalmente oposta a criao de um site tradicional

Cdigo similar a verso do HTML de 1999

No use HTML5 !

Os estilos que podem ser aplicados tambm so limitados:


http://www.campaignmonitor.com/css/

Existem algumas ferramentas teis para a criao:


http://premailer.dialect.ca/
https://litmus.com/
http://mailchimp.com/features/inbox-inspector/

15.3.1

Regras Essenciais

Estilos inline

No devem existir arquivos externos (como CSS)

Todo o estilo deve acontecer na prpria tag atravs do atributo style

Nem todos os estilos CSS so suportados

Carregamento de imagem

No assuma que as imagens sero carregadas/visualizadas

Muitos clientes de email bloqueiam as imagens

Sempre inclua a verso em texto simples

154

Estilos

Largura deve ser definida em cada clula ao invs da tabela toda

Aninhe tabelas uma dentro da outra

Defina a cor de fundo na tabela principal

Nos clientes de celulares, os textos so quebrados geralmente aps 60


caracteres

Espaos em branco

Sempre remova espaos em branco desnecessrios no cdigo

EP:

Email Marketing

1.

Abra o link abaixo:


a.

Voc necessitar criar uma conta ao final do processo para ter acesso ao
cdigo

http://www.campaignmonitor.com/templates/
2.

Clique no boto Start Building Now

3.

Escolha um dos modelos disponveis

4.

Use o painel esquerda para configurar cada item

5.

Siga os procedimentos indicados no site

155

156

Captulo 16: Fundamentos CSS


16.1 CSS

Cascading Style Sheets

Criado pelo W3C

Define como exibir os elementos HTML

Um mesmo arquivo HTML pode ser exibido com estilos diferentes

http://www.w3schools.com/css/demo_default.htm

Estilo pode ser adicionado atravs:

<style>: estilo pertecer unicamente ao arquivo HTML

<link>: estilo definido em arquivo externo com a extenso .css


permitindo o reaproveitamento do estilo em mais de um arquivo HTML

Recomendado que toda a formatao seja definida em um arquivo ".css" externo

<style type="text/css">
/*CSS style goes here*/
</style>
<link rel="stylesheet" type="text/css" href="myStyle.css">

16.2 Reutilizao de Estilos

Objetivo separar todos os estilos em um arquivo

No recomendado colocar estilos no documento HTML

Documento HTML deve definir apenas os elementos HTML

Facilita a manuteno e o reaproveitamento

Quando um estilo definido em uma pgina e redefinido em outra, tornase problema se for alterado

157

Um arquivo CSS pode ser reutilizado para definir estilos em mais de um


documento

Se alterado um valor, todos os documentos que o utilizarem sero


atualizados

16.3 Sintaxe

Possui duas partes principais:

Seletor

Seleciona o elemento HTML desejado

Declarao

Propriedade atributo de estilo o qual se deseja alterar

Valor

Instruo termina com com ponto e vrgula ;

Agrupado por chaves { declarao1; declarao2; declarao3;


}

h1 {
color: blue;
font-size: 12px;
}

158

16.4 Cometrios

Iniciam com barra + asterisco /*


Finalizam com asterisco + barra */
/* This is a comment */
/*
Everything inside those comment characters are
comments, even if it takes more than one line !
*/

159

160

Captulo 17:

Seletores

17.1 Element Selector

Tambm chamado de type selector

Forma mais comum de declarao CSS

Utiliza-se o nome da "tag" HTML sem os sinais de maior e menor usados no


documento HTML

Ex: h1, p, div

Todos os elementos iguais ao declarado possuiro o estilo

Seletores separados por vrgula aplicam o estilo a mais de um elemento


h1,h2,h3 { color: blue; }

EP:

Element Selector

1.

Crie os arquivos HTML e CSS com o nome "selectors" e os vincule

2.

No arquivo CSS adicione o seguinte cdigo:


h1 {
color: red;

4.

}
Adicione a tag <h1> no arquivo HTML:
<h1>First Header (element selector)</h1>

5.

Vincule o arquivo CSS com o documento HTML, adicionando o seguinte cdigo


em <head>:
<link rel="stylesheet"
type="text/css" href="selectors.css">

6.

Salve e teste

161

17.2 id Selector

Aplica estilo para um nico elemento

O "id" especifica qual elemento receber o estilo

Utiliza o atributo "id" do elemento HTML para identificar

Os valores devem ser idnticos

Se por algum motivo for alterado em um dos arquivos ambos


devero ser atualizados

Arquivo HTML
<h1 id="header">My Title</h1>

Arquivo CSS
#header {
color: blue;
}

EP:
1.

id Selector
No arquivo "selectors.html" adicione o elemento <h1>:
<h1 id="header">Second Header (id selector)</h1>

2.

No arquivo "selectors.css" adicione o seguinte cdigo


#header { color: blue; }

3.

Salve e teste
a.

Verifique as cores que prevaleceram

162

17.3 Class Selector

Estiliza um grupo de elementos

O atributo "id" deve ser utilizado com valor nico e consequentemente um


nico elemento ser estilizado

J o seletor de elementos aplica estilo todas as "tags" de um


determinado tipo

Todos os elementos que possurem o mesmo valor para o atributo "class"


recebero o estilo

Declarao no arquivo CSS diferente do arquivo HTML:

No arquivo CSS recebe um ponto antes do nome

No arquivo HTML o ponto no colocado

Arquivo HTML
<h1 class="myClassStyle">My Big Title</h1>
<h6 class="myClassStyle">My Small Title</h6>

Arquivo CSS
.myClassStyle {

EP:
1.

color: yellow; }

Class Selector
No arquivo "selectors.html" crie uma terceira "tag" <h1> com a seguinte
configurao:
<h1 class="myClass">Third Header (class selector)</h1>

2.

No arquivo "selectors.css" adicione o seguinte cdigo


.myClass { color: yellow; }

3.

Salve e teste

163

17.4 Universal Selector

Caractere asterisco * seleciona todos os elementos existentes na pgina


* {
color: green;
}

EP:
1.

Universal Selector
No arquivo selectors.html adicione o cdigo:
<h2>Fourth Header (universal selector)</h2>

2.

Adicione o cdigo CSS:


* {
color: green;
}

3.

Salve e teste
a.

4.

Perceba que no existe nenhum instruo CSS de estilo para <h2>

Adicione no arquivo HTML outras tags:


<h3>Fifith Header (universal selector)</h3>
<h4>Sixth Header (universal selector)</h4>

5.

Salve e teste

164

17.5 Declarao de Seletores

Tipo de Seletor

Declarao CSS

Seleo

Element

elementName

id

#elementId

Elemento HTML com o ID

Class

.className

Elementos HTML com a classe

Universal

Elementos HTML do tipo especificado

Todos os elementos HTML

17.6 Combinando Seletores

Possvel combinar os tipos de seletores para obter um resultado mais especfico

O estilo ser aplicado apenas se a instruo combinar com a estrutura e seletor


HTML:
<h1 class="title">H1 Header with "title" class</h1>
<h2 class="title">H2 Header with "title" class</h2>
<h3 class="title">H3 Header with "title" class</h3>

165

CSS:
.title{
color: darkcyan;
}
h1.title{
color: brown;
}

EP:

Combinando Seletores

1.

Crie novos arquivos HTML e CSS de nome selectors_combination e os vincule

2.

No arquivo HTML adicione o seguinte cdigo:


<h1 class="title">H1 Header with "title" class</h1>
<h2 class="title">H2 Header with "title" class</h2>
<h3 class="title">H3 Header with "title" class</h3>

3.

No arquivo CSS adicione o seguinte estilo:


.title{
color: darkcyan;
}

4.

Salve e teste
a.

5.

Como esperado, todas as tags com a classe receberam o estilo

Adicione a seguinte instruo CSS:


h1.title{
color: purple;
}

166

6.

Salve e teste
a.

Perceba que a cor purple foi aplicada apenas em <h1>

167

168

Captulo 18:

Precedncia CSS

18.1 Nomenclatura de Vnculo

A forma utilizada do CSS define a nomenclatura:

Externo arquivo ".css"

Interno "tag" <style>

"Inline" atributo "style" do elemento HTML

18.2 Precedncia CSS

Se um mesmo estilo for aplicado um elemento HTML, a ordem de precedncia


ser essencial para determinar qual o estilo que ser usado

Quando mais "prximo" da "tag" maior ser sua precedncia

Mais especfico sobrepe o menos especfico

inline
#id selector
.class selector
element selector
padro do navegador

169

EP:

Precedncia CSS

1.

Crie um novo arquivo de nome "precedence.html"

2.

Adicione o seguinte CSS:


h1 { color: red; }
.blueText { color: blue; }
#header { color:green; }

3.

Adicione o seguinte cdigo HTML:


<h1>Element selector</h1>

4.

Salve e teste
a.

5.

Ateno para a cor aplicada e o CSS utilizado

Crie mais uma "tag", salve e teste novamente:


<h1 class="blueText">Element + Class selectors</h1>

6.

Adicione o seguinte cdigo, salve e teste:


<h1 class="blueText" id="header">
Element + Class + ID selectors
</h1>

7.

Salve e teste
a.

8.

Perceba a cor aplicada e a precedncia do CSS

Adicione o seguinte cdigo:


<h1 class="blueText" id="header" style="color:gray">
Element + Class + ID selectors with inline attribute
</h1>

9.

Finalmente salve e teste

170

18.3 Execuo de Precedncia

Ordem, forma e disposio do cdigo CSS pode influenciar diretamente na sua


aplicao

Se a "tag" <link> for colocada aps a "tag" <style> os estilos da ltima se


sobreporo aos definidos anteriormente

EP:
1.

O mesmo ocorre se mltiplas "tags" <style> forem definidas

Execuo de Precedncia
No arquivo "precedence.html" adicione o cdigo CSS no final da instruo
existente, salve e teste:
a.

Ser a ltima instruo, abaixo de todas as demais

h1 { color: salmon; }
2.

Repita o teste adicionando o seguinte cdigo:


h1 { color: chocolate; }

171

172

Captulo 19: Seletores Avanados


19.1 Hierarquia HTML

Hierarquia HTML define a estrutura hierrquica dos elementos:

Parent elemento pai

Child elemento filho

Sibling elemento irmo

Em CSS possvel criar seletores com base na hierarquia HTML

Apesar de ser bastante usual, sua utilizao pode deixar o cdigo frgil,
pois se a estrutura HTML mudar o estilo no mais ser aplicado

Bastante til quando no existe acesso ao cdigo HTML (gerado pelo


servidor ou JavaScript)

19.1.1

Descendant Selector

SELETOR SELETOR

Seleciona todos os elementos que forem descendentes do primeiro seletor

No importa se um filho direto ou indireto (neto, bisnetos, etc)

CSS:
div h1 {
color: lime;
}

HTML:
<div>
<h1>First header</h1>
</div>
CSS:
173

div h1 { color: lime; }

HTML:
<div>
<h1>First header</h1>
<ul>
<li><h1>Second Header</h1></li>
</ul>
</div>

EP:

Descendant Selector

1.

Crie os arquivos HTML e CSS de nome selectors_descedant e os vincule

2.

Adicione o seguinte cdigo de estilo:


div h1 {
color: lime;
}

3.

Adicione o cdigo HTML:


<div>
<h1>First header</h1>
</div>

4.

<h1>Another header</h1>
Salve e teste
a. Perceba que <h1> fora da <div> no recebe o estilo

174

5.

Dentro da <div>, adicione o seguinte cdigo:


<ul>
<li><h1>Second Header</h1></li>
<li><h1>Third Header</h1></li>

6.
7.

</ul>
Salve e teste
a. Perceba que qualquer <h1> descendente de <div> recebe o estilo
Adicione o atributo class com valor myClass nos elementos <h1> com os
seguintes contedos:

8.

a.

First Header

b.

Third Header

c.

Another Header

Altere a instruo CSS para:


div h1.myClass { color: lime; }

9.

Salve e teste
a.

Perceba que somente os elementos <h1> descendentes de <div> com a


classe myClass receberam estilo

175

19.1.2

Child Selector

SELETOR > SELETOR

Seleciona todos os elementos que forem descendentes diretos do primeiro


seletor

Apenas elementos filhos diretos do elemento pai

Elementos descendentes no diretos (netos, bisnetos, etc) no


recebero o estilo

CSS:
div>h1 { color: lime; }

HTML:
<div>
<h1>First header</h1>
<ul>
<li><h1>Second Header</h1></li>
</ul>
</div>

EP:
1.
2.
3.

Child Selector
Duplique os arquivos HTML e CSS selectors_descedant para selectors_child
a. No esquea de corrigir o vnculo da tag <link>
Altere a instruo CSS para:
div>h1.myClass { color: lime; }
Salve e teste
a. Perceba que apenas <h1> descendente direto de <div> recebeu o estilo

176

19.1.3

Adjacent Sibling Selector

SELETOR + SELETOR

Podem ser usados quaisquer seletores vlidos CSS, e quantos forem


necessrios

Seleciona o elemento que estiver imediatamente seguinte ao elemento


especificado

Equivale ao elemento irmo na estrutura HTML

CSS:
h1 + h1 {
color: lime;
}

HTML:
<h1>First header</h1>
<h1>Second header</h1>
-------------------------------------------CSS:
h1 + h1 + h1 { color: lime; }

HTML:
<h1>First header</h1>
<h1>Second header</h1>
<h1>Third header</h1>
<h1>Fourth header</h1>
177

-------------------------------------------CSS:
h1 + h1.myClass { color: skyblue; }

HTML:
<h1>First header</h1>
<h1 class="myClass">Second header</h1>
<h1>Third header</h1>
<h1>Fourth header</h1>

EP:
1.

Adjacent SIbling Selector


Crie novos arquivos HTML e CSS com o nome selectors_adjacent_sibling e os
vincule

2.

Adicione o cdigo no arquivo HTML:


<h1>First header</h1>
<h1>Second header</h1>
<h1>Third header</h1>
<h1>Fourth header</h1>

3.

Adicione o cdigo no arquivo CSS:


h1 + h1 {
color: skyblue;

4.

}
Salve e teste
a.

Perceba que todos os elementos que possuem a estrutura <h1> + <h1>


receberam o estilo

178

5.

Altere o cdigo no arquivo CSS:


h1 + h1 + h1 {
color: skyblue;
}

6.

Salve e teste

7.

Altere o cdigo no arquivo CSS:


h1 + h1 + h1 + h1 {
color: skyblue;
}

8.

Salve e teste

9.

Altere o cdigo no arquivo HTML:


<h1>First header</h1>
<h1>Second header</h1>
<h1>Third header</h1>
<h2>Ops...structure has changed</h2>

10.

<h1>Fourth header</h1>
Salve e teste
a.

Perceba a fragilidade da aplicao do estilo no caso de mudana da


estrutura HTML

11.

Comente a tag <h2>

12.

(Opcional) Faa o teste utilizando class selector


a.

Adicione a classe no elemento <h1> correto

h1 + h1.myClass { color: skyblue; }

179

19.1.4

General Sibling Selector

SELETOR ~ SELETOR

Seleciona todos os elementos que forem seguintes ao elemento especificado e


tiverem o mesmo parent element

No importa se outros tipos de elementos existirem entre os elementos


seguintes ao especificado

CSS:
h2 ~ h1 { color: salmon; }
HTML:
<h1>First header</h1>
<h2>Second header</h2>
<h1>Third header</h1>
<h3>Fourth header</h3>
<h1>Fifth header</h1>

EP:
1.
2.

General Sibling Selector


Crie novos arquivos HTML e CSS com o nome selectors_general_sibling e os
vincule
Adicione o seguinte cdigo HTML:
<h1>First header</h1>
<h2>Second header</h2>
<h1>Third header</h1>
<h3>Fourth header</h3>
<h1>Fifth header</h1>

180

3.

Adicione o cdigo CSS:


h2 ~ h1 {
color: salmon;
}

4.

Salve e teste
a.

5.

Perceba que todos os elementos <h1> aps <h2> so selecionados

Adicione no final cdigo HTML anterior a seguinte instruo:


<div>
<h1>Sixth header</h1>

6.

</div>
Salve e teste
a. Perceba que o <h1> aninhado em <div> no recebe o estilo

181

19.1.5

Consolidado dos Seletores Hierrquicos

Combinao

CSS

Multiples

selector, selector

Elementos dos seletores separados por


vrgulas (ou um, ou outro)

Descendants

selector selector

Elementos dos seletores que forem


descendentes diretos ou indiretos

Child

selector > selector

Elementos dos seletores que forem


descendentes diretos

Adjacent Sibling

selector + selector

Elemento irmo ao definido pelo primeiro


seletor

selector ~ selector

Todos os elementos irmos ao definido


pelo primeiro seletor e filhos do mesmo
pai

General Sibling

Seleo

19.2 Atributos HTML

Possvel selecionar elementos atravs dos atributos HTML

Existncia de um atributo

Valor integral de um atributo

Valor parcial (contm um determinado valor) de um atributo

19.2.1

Attribute Selector

SELETOR[...]

Seleciona um elemento com base em seu atributo

Possuir um atributo ou mesmo seu valor


182

Instruo colocada aps a declarao do seletor entre colchetes

O uso do seletor opcional e se omitido ser usado o seletor universal,


ou seja, todos os elementos HTML

CSS:
h1[title] { color: firebrick; }

HTML:
<h1 title="First title attribute">First Header</h1>
<h1>Second Header</h1>
<h1 title="Third title attribute">Third Header</h1>
<h1>Fourth Header</h1>

EP: Attribute Selector


1.

Crie novos arquivos HTML e CSS de nome selector_attribute e os vincule

2.

Adicione o cdigo HTML:


<h1 title="First title attribute">First Header</h1>
<h1>Second Header</h1>
<h1 title="Third title attribute">Third Header</h1>

3.

<h1>Fourth Header</h1>
Adicione o seguinte CSS:
h1[title] { color: firebrick; }

4.

Salve e teste
a.

Perceba que apenas os elementos <h1> com atributo title receberam


estilo

5.

Altere a instruo CSS removendo o seletor h1:


[title] { color: firebrick; }
183

6.

Adicione o cdigo HTML:


<h2 title="Fifth title attribute">Fifth Header</h2>
<h3>Sixth Header</h3>

7.

<h4>Seventh Header</h4>
Salve e teste
a.

Perceba que todos os elementos com o atributo title foram selecionados

19.2.1 Attribute Selector (cont.)

Alm de verificar se um elemento possui ou no o atributo, possvel tambm


seu valor

Possvel verificar se o valor especificado:

Existe dentro da instruo

Est contido dentro da instruo

Comea ou termina como valor da instruo

Seletor

CSS

Seleo

[attr=value]

[target=_blank]

Elementos que contiverem o atributo e o valor


especificado

[attr~=value]

[title~=required]

Elementos que contiverem a palavra exata como


valor do atributo

[attr|=value]

[lang|=en]

Elementos que iniciarem e contiverem a palavra


exata como valor do atributo

[attr^=value]

[src^=icon]

Elementos que iniciarem e contiverem a palavra


como valor do atributo

[attr$=value]

[src$=.pdf]

Elementos que terminarem e contiverem a palavra


como valor do atributo

184

[attr*=value]

[src*=othersite]

Elementos que contiverem a palavra como valor


do atributo

EP: Attribute Selector (cont.)


1.

Abra os arquivos HTML e CSS selector_attribute

2.

Adicione o cdigo HTML:


<a href="https://www.google.com.br">Google BR</a>
<a href="http://www.google.com">Google US</a>

3.

Salve e teste
a.

4.

Verifique se os links esto funcionando corretamente

Adicione o seguinte estilo:


a[href="https://www.google.com.br"]{
color: deeppink;
}

5.

Salve e teste

6.

Altere a ltima instruo CSS para:


a[href="http"]{
color: deeppink;
}

7.

Salve e teste
a.

8.

Perceba que o valor no foi encontrado e nenhum estilo foi aplicado

Altere a ltima instruo CSS para:


a[href^="http"]{
color: deeppink;
}

185

9.

Salve e teste
a.

10.

Perceba que o valor foi encontrado no incio do atributo href

Altere a ltima instruo CSS para:


a[href$="br"]{
color: deeppink;

11.

}
Salve e teste
a.

Perceba que o valor foi encontrado no final do atributo href em apenas


dos elementos

12.

Altere a ltima instruo CSS para:


a[href*="google"]{
color: deeppink;
}

13.

Salve e teste
a.

Perceba que o valor foi encontrado dentro do valor de href

186

19.3 Pseudo-class

Palavra chave adicionada ao seletor

Especifica um estado especial do elemento

Ex: hover, enabled, focus, link, etc

Aplica o estilo apenas quando o elemento estiver no estado definido

/* selector:pseudo-class {
property: value;
}*/
h1:hover{
background-color: yellow;
}

Seletor

CSS

Seleo

active

a:active

Elemento estiver ativo (mouse pressionado no


elemento)

hover

a:hover

Usurio passa o mouse sobre o elemento

link

a:link

visited

a:visited

Elemento for um link visitado pelo usurio

target

a:target

Elemento alvo ncora

Elemento for um link

187

EP:

Pseudo-class (link)

1.

Crie novos arquivos HTML e CSS de nome selector_pseudo_class e os vincule

2.

Adicione uma tag <h1> com valor Links

3.

Adicione o cdigo HTML com a tag <a> configurada para os arquivos dos EPs
anteriores:

4.

a.

selectors_descedant.html

b.

selectors_adjacent_sibling.html

c.

selector_attribute.html

No aquivo CSS adicione a seguinte instruo:


a:link { color: green; }
a:visited { color: gray; }
a:hover { color: purple; }
a:active { color: pink; }

5.

Salve e teste

6.

Crie uma ncora na pgina:


<a href="anchor1">Go to anchor 1</a>
<a href="anchor2">Go to anchor 2</a>
<p>lorem ipsum</p>
<p id="anchor1">Anchor 1</p>
<p id="anchor2">Anchor 2</p>

7.

Adicione o CSS:

8.

:target { background-color: yellow;}


Salve e teste
a.

Clique nas ncoras e perceba o estilo sendo aplicado quando uma as


ncoras selecionada

188

19.3 Pseudo-class (cont.)


Seletor

CSS

disabled
enabled

input:disabled
input:enabled

focus

input:focus

Elemento com foco

invalid
valid

input:invalid
input:valid

Elemento estiver invlido / vlido

required

input:required

EP:

Seleo

Elemento estiver desabilitado / habilitado

Elemento que contiver o atributo required

Pseudo-class (form)

1.

Abra os arquivos selector_pseudo_class

2.

Adicione o cdigo HTML (abaixo do anterior):


<h1> Form </h1>
<form>
Required: <input type="text" required> <br>
Email:

<input type="email" required> <br>

Disabled: <input type="text" disabled>


</form>

189

3.

Adicione o cdigo CSS (abaixo do anterior):


input[type="text"]:required {
background-color: yellow;

4.

}
Salve e teste
a.

Perceba que apenas o <input> do tipo texto requerido foi selecionado e


recebeu estilo

5.

Adicione o cdigo CSS (abaixo do anterior):


input:focus{
background-color: skyblue;
}

6.

7.

Salve e teste
a.

Clique nos <input> requeridos

b.

Perceba que apenas um deles recebe o estilo de fundo azul

Adicione o cdigo CSS (abaixo do anterior):


input:invalid {
border-color: red;
}
input:valid {
border-color: green;
}

8.

Salve e teste
a.

Perceba que os <input> obrigatrios recebem o estilo automaticamente

b.

Preencha um deles adequadamente

190

19.3 Pseudo-class (cont.)


Seletor

CSS

empty

p:empty

lang

span:lang(fr)

not

:not(h1)

EP:

Seleo
Elemento estiver sem contedo

Elemento com atributo lang defindo para fr

Todos os elementos, exceto o definido entre os


parnteses

Pseudo-class (others)

1.

Abra os arquivos selector_pseudo_class

2.

Adicione o cdigo HTML (abaixo do anterior):


<h1>Others</h1>
<p></p>
<p>
Em francs <span lang="fr">bonjour</span>
significa bom dia ou mesmo boa tarde
</p>

3.

Adicione o cdigo CSS (abaixo do anterior):


p:empty{
background-color: pink;
height:50px;
}
191

4.
5.

Salve e teste
a. Perceba que se no for definida a altura o estilo no ser visvel
Adicione o cdigo CSS (abaixo do anterior):
span:lang(fr){
font-style: italic;
letter-spacing: 2px;
color: red;

6.
7.

}
Salve e teste
a. Perceba que apenas o texto em francs recebeu o estilo
Adicione o cdigo CSS (abaixo do anterior):
:not(span){
color: blue;
}

8.

Salve e teste
a.

Perceba que apenas o texto em <span> no recebeu o estilo

19.4 Pseudo-class Avanado

Permitem seleo bastante pontual e especfica

Essenciais para situaes na qual o desenvolvedor no tem acesso ao cdigo


HTML

Muito cdigo HTML adicionado dinamicamente atravs de JavaScript ou


mesmo por servidores

Impossibilita de adicionar os atributos id ou class para estilizar a


pgina

Muitos dependem da estrutura posicional dos elementos HTML

Se um elemento mudar de posio no mais ser selecionado

192

Seletor

CSS

Seleo

first-child
last-child

p:first-child
p:last-child

first-of-type
last-of-type

p:first-of-type
p:last-of-type

Elementos que forem os primeiros /


ltimos filhos de um determinado tipo
de seu pai

nth-child(n)

p:nth-child(3)

Elementos que forem os filhos na


posio definida por n de seu pai

nth-last-child(n)

p:nth-last-child(4)

Similar nth-child(n), porm do ltimo


para o primeiro

nth-of-type(n)

nth-of-type(3)

Elementos que forem os filhos de um


determinado tipo na posio definida por
n de seu pai

nth-last-of-type(n)

p:nth-last-of-type(2)

only-of-type

p:only-of-type

only-child

p:only-child

Elementos que forem os primeiros /


ltimos filhos de seu pai

Similar nth-of-type(n), porm do


ltimo para o primeiro
Elementos filhos nicos de um
determinado tipo de seu pai

Elementos filhos nicos de seu pai

193

EP:
1.

Pseudo-class Avanado
Crie novos arquivos HTML e CSS de nome selector_pseudo_class_advanced
e os vincule

2.

Adicione o seguinte cdigo HTML:


<p>First paragraph with &lt;body&gt; parent tag</p>
<p>Second paragraph with &lt;body&gt; parent tag</p>

3.

Adicione o CSS:
p:first-child{
background-color: lime;
}

4.

Salve e teste
a.

5.

Identifique qual das <p> recebeu estilo

Adicione o HTML (abaixo do anterior):


<div>
<p>First paragraph with &lt;div&gt; parent tag</p>
<p>Second paragraph with &lt;div&gt; parent tag</p>
</div>

6.

Salve e teste

7.

Adicione o CSS (abaixo do anterior):


p:last-child{
background-color: pink;
}

8.

Salve e teste
a.

Perceba que somente o <p> que for ltimo filho receber estilo

194

9.

Adicione como primeira tag (abaixo de <body>):


<h1>&lt;body&gt; first child !</h1>

10.

Salve e teste
a.

11.

Perceba que somente o <p> que for o primeiro filho receber estilo

Adicione o cdigo CSS:


p:first-of-type{
background-color: orange;
}

12.

Salve e teste
a.

Perceba que os <p> que forem primeiros filhos deste tipo recebem estio

b.

O estilo definido em p:first-child foi sobrescrito devido a ordem das


declaraes CSS (altere a ordem para se verificar)

13.

Acrescente um novo <p> com o texto lorem ipsum, como ltima tag de <body>
a.

Utilize a expresso do EMMET dentro de <p>: p>span[title=$]*5>{$


-- }(lorem)

b.

Perceba que o estilo p:last-child foi aplicado

c.

(Opcional) Altere a indentao do cdigo para que cada <span> fique


com um espao entre cada uma das tags

14.

Seu cdigo deve estar similar :


<p>
<span title="1">1 -- Lorem ipsum dolor sit amet...</span>
<span title="2">2 -- Non, totam, ad, blanditiis...

15.

Adicione o seguinte CSS:


span:nth-child(3){
background-color: yellow;
}
195

16.

Salve e teste

17.

Adicione o cdigo HTML entre o primeiro e o segundo <span>:


<span>1 Lorem ipsum dolor sit amet...</span>
<img src="http://www.lorempixel.com/100/100">
<span>2 Non, totam, ad, blanditiis...

18.

Salve e teste
a.

19.

Perceba que no existe mais <span> como terceira tag filha

Adicione a instruo CSS:


span:nth-last-child(4){
background-color: red;
}

20.

Salve e teste
a.

21.

Perceba a seleo com a contagem reversa

Altere a instruo atual nth-child(3) para:


span:nth-of-type(3){
background-color: yellow;
}

22.

Salve e teste

23.

Adicione o cdigo HTML, antes do fechamento de <body>:


<div>
<h1>&lt;h1&gt; child</h1>
</div>

196

24.

Adicione o cdigo CSS:


h1:only-child{
background-color: skyblue;
}

25.

Salve e teste

26.

Adicione o HTML abaixo de <h1> dentro da <div>:


<h2>&lt;h4&gt; child</h2>

27.

Salve e teste
a.

28.

Perceba que <h1> no mais a nica filha de <div>

Altere a instruo h1:only-child para:


h1:only-child{
background-color: skyblue;
}

29.

Salve e teste

19.5 Peseudo-elements

Similares pseudo-classes

Porm referem-se aos elementos ao invs do estado destes

Permite estilizar determinadas partes do documento

Primeira linha

Primeira letra

Seleo do mouse

197

Tambm permitem adicionar contedo de texto no documento HTML


/* selector::pseudo-element {
property: value;
}*/
p::first-letter{
font-size: 30px;
}

EP:

Pseudo-elements

1.

Crie um novo arquivo de nome selector_pseudo_element.html

2.

Adicione mltiplas linhas de cdigo lorem ipsum


a.

3.

Utilize a instruo EMMET: p*10>span*10>lorem

Adicione o CSS:
p::first-letter{
font-size: 30px;
}

4.

Salve e teste

5.

Altere a instruo p::first-letter para:


p::first-line{
font-size: 30px;
}

6.

Salve e teste

198

7.

Adicione as instrues CSS:


a.

O prefixo -moz- garante o funcionamento no navegador Firefox e ser


explicado posteriormente

::selection{
background-color: gold;
}
::-moz-selection{
background-color: gold;
}
8.

Salve e teste
a.

9.

Selecione algum texto com o mouse

Adicione a instruo CSS:


p::after{
content:

"CONTENT FROM CSS !!!";

}
10.

11.

Salve e teste
a.

Perceba que no possvel selecionar com o mouse o texto

b.

Verifique o cdigo fonte HTML e tente localizar o texto

(Opcional) Adicione um contedo usando ::before

199

19.6 Vendor Properties

Existem declaraes CSS que se referem ao engine do navegador


-webkit- Chrome e Safari
-moz- Firefox
-o- Opera
-ms- Internet Explorer
Permitem aplicar alguns estilos com base no "engine" do navegador

http://peter.sh/experiments/vendor-prefixed-css-property-overview/
Usado quando um navegador no entende um propriedade CSS

Pode gerar repetio de cdigo

-moz-border-radius: 10px 5px;


-webkit-border-radius: 10px 5px;
border-radius: 10px 5px;

200

201

Captulo 20:

Cores CSS

20.1 Cores

Cores podem ser definidas pelo nome ou hexadecimal


http://en.wikipedia.org/wiki/Web_colors
http://en.wikipedia.org/wiki/X11_color_names

Tambm possvel definir cores por:

RGB

RGBA

HSL

HSLA

20.2 Hexadecimal

Notao para definir cor em HTML

Alguns valores possuem um nome atribudo

Combinao RGB

Definido por 3 pares com 2 dgitos e iniciados pelo caractere #

Ex: #FFFFFF

Valor mais baixo zero (00) e mais alto 255 (FF)

Permite variaes de 16 milhes de cores

256 x 256 x 256

Quando um par de dgitos so repetidos possvel usar a verso reduzida


(atalho)

Ex: #FFFFFF #FFF;

202

#p1 {background-color:#ff0000;} / * red */


#p2 {background-color:#00ff00;} / * green */
#p3 {background-color:#0000ff;} / * blue */

20.3 Web Safe Colors

Inicialmente existia uma lista de cores seguras

Computadores conseguiam exibir 256 cores diferentes

40 reservadas para o sistema

216 "web safe colors"

Atualmente no existe esta preocupao, pois os computadores atuais so


capazes de exibir as 16 milhes de cores

20.4 RGB

Red, Green and Blue

"rgb(red, green, blue)"

Cada parmetro define intensidade da cor

Valores podem ser inteiros de 0 255 ou percentual 0% 100%

Para definir a cor azul pode-se:

rgb(0,0,255)

rgb(0%,0%,100%)

#p1 {background-color:rgb(255,0,0);} / * red */


#p2 {background-color:rgb(0,255,0);} / * green */
#p3 {background-color:rgb(0,0,255);} / * blue */

203

20.5 RGBA

Red, Green, Blue and Alpha

Extenso de RGB com "alpha"

O valor "alpha" define a opacidade do objeto

"rgba(red, green, blue, alpha)"

O valor de "alpha" deve ser de 0.0 (totalmente transparente) 1.0


(totalmente opaco)

No tem o mesmo suporte dos navegadores

IE9+, Firefox 3+, Chrome, Safari, e Opera 10+

/ * red with opacity */


#p1 {background-color:rgba(255,0,0,0.3);}
/ * green with opacity */
#p2 {background-color:rgba(0,255,0,0.3);}

/ * blue with opacity */


#p3 {background-color:rgba(0,0,255,0.3);}

20.6 HSL

Hue, Saturation and Lightness


hsl(hue, saturation, lightness)

Representa as cores atravs de coordenadas cilndricas

No tem o mesmo suporte dos navegadores

IE9+, Firefox 3+, Chrome, Safari, e Opera 10+

204

Valores

"Hue" varia de 0 360

Vermelho 0 ou 360

Verde 120

Azul 240

"Saturation" varia de 0% 100%

0% cinza bem claro

100% cor totalmente aplicada

"Light" varia de 0% 100%

0% preto

100% branco

/ * green */
#p1 {background-color:hsl(120,100%,50%);}
/ * light green */
#p2 {background-color:hsl(120,100%,75%);}
/ * dark green */
#p3 {background-color:hsl(120,100%,25%);}
/ * pastel green */
#p4 {background-color:hsl(120,60%,70%);}

205

20.7 HSLA

Hue, Saturation, Lightness and Alpha

No tem o mesmo suporte dos navegadores

IE9+, Firefox 3+, Chrome, Safari, e Opera 10+

"hsla(hue, saturation, lightness, alpha)"

O valor de "alpha" deve ser de 0.0 (totalmente transparente) 1.0


(totalmente opaco)

/ * green with opacity */


#p1 {background-color:hsla(120,100%,50%,0.3);}

/ * light green with opacity */


#p2 {background-color:hsla(120,100%,75%,0.3);}
/ * dark green with opacity */
#p3 {background-color:hsla(120,100%,25%,0.3);}
/ * pastel green with opacity */
#p4 {background-color:hsla(120,60%,70%,0.3);}

206

207

Captulo 21: Fontes


21.1 Sobre

So utilizadas aquelas definidas pela instruo CSS font-family

Define a famlia de fontes

Existem duas formas de utilizao:

Carregadas: adicionadas como um recurso do documento HTML

No carregadas: usadas se existirem no sistema operacional do usurio

21.2 font-family

Propriedade CSS que permite definir uma ou mais fontes a serem utilizadas na
pgina HTML

Geralmente so definidas fontes de uma mesma famlia

Se a primeira no for encontrada, a prxima da lista ser usada


Para que no ocorram grandes diferenas visuais e tamanhos diferentes

Quando um nome de fonte possuir espaos em branco deve-se


obrigatoriamente utilizar aspas para definir o nome

Ex: Times New Roman

p {
font-family: "Times New Roman", Times, serif;
}

208

21.3 Fontes no Carregadas

Forma mais tradicional de uso

Utiliza os recursos existentes na mquina do usurio

Caso no exista o sistema operacional tentar usar a que este considerar


como a mais prxima

Nem sempre o sistema operacional utiliza uma fonte to bem adequada


quanto aquela escolhida pelo desenvolvedor

EP:

Pode comprometer o posicionamento e layout da pgina HTML

font-family

1.

Crie um arquivo HTML de nome font_family.html

2.

Adicione o seguinte cdigo HTML:

<h2 class="serif">"Times New Roman", Times, serif</h2>


<h2 class="sans-serif">Arial, Helvetica, sans-serif</h2>
<h2 class="monospace">"Courier New", Courier, monospace</h2>
3.

4.

Adicione o CSS com as respectivas classes:


a.

font-family: "Times New Roman", Times, serif;

b.

font-family: Arial, Helvetica, sans-serif

c.

font-family: "Courier New", Courier, monospace

Salve e teste
a.

5.

Perceba a diferena entre as fontes

Adicione uma fonte inexistente no seu sistema:


a.

<h2 class="sf">SF Quartzite</h2>

b.

font-family: "SF Quartzite"

c.

Visualize a fonte correta no endereo

http://www.dafont.com/sf-quartzite.font

209

21.4 Web Safe Fonts

So as fontes consideradas seguras para Web

Existentes na maioria das mquinas

Famlias com visual e tamanhos similares

Propriedade "font-family" deve receber mais de um valor para ter a


funcionalidade de "failover"

Se o navegador no suportar a primeira, segue para o prximo

Primeiro valor define a fonte desejada, os demais definem famlia


genrica

Existem 3 categorias principais:

Serif Fonts

Sans-serif Fonts

Monospace Fonts

Cada categoria define um conjunto de famlias

Fonte

font-family

Monospace

"Courier New", Courier, monospace

Monospace

"Lucida Console", Monaco, monospace

Serif

Georgia, serif

Serif
"Palatino Linotype", "Book Antiqua", Palatino, serif

210

Serif
"Times New Roman", Times, serif

Sans-serif

Arial, Helvetica, sans-serif

Sans-serif
"Arial Black", Gadget, sans-serif

Sans-serif
"Comic Sans MS", cursive, sans-serif

Sans-serif
Impact, Charcoal, sans-serif

Sans-serif
"Lucida Sans Unicode", "Lucida Grande", sans-serif

Sans-serif
Tahoma, Geneva, sans-serif

Sans-serif
"Trebuchet MS", Helvetica, sans-serif

Sans-serif
Verdana, Geneva, sans-serif

211

21.5 Sans-serif vs Serif

21.6 Proportional vs Monospace

212

21.7 Fontes Carregadas

Carregamento do arquivo contendo uma fonte para uso na pgina HTML

Similar a qualquer arquivo externo (como uma imagem) aumenta o tempo


necessrio para carregamento da pgina

Garante a integridade visual da fonte

213

21.8 @font-face

Instruo CSS que define a fonte embutida

Permite ainda colocar qualquer nome para a fonte

Os tipos com maior suporte dos navegadores so:

WOFF - Web Open Font Format

TTF - True Type Fonts

OTF - OpenType Fonts

@font-face {
font-family: myCustomFontName;
src: url(satisfy.woff);
}

EP:

@font-face

1.

Abra o arquivo font_family.html

2.

Baixe a fonte SF Quartzite do endereo:


http://img.dafont.com/dl/?f=sf_quartzite

3.

Extraia os arquivos para seu projeto


a.

Copie o arquivo de nome SF Quartzite.ttf para a pasta que contm o


arquivo HTML

4.

Adicione a instruo CSS:


@font-face {
font-family: "SF Quartzite";
src: url("SF Quartzite.ttf");
}

5.

Salve e teste

214

215

Captulo 22:

Propriedades CSS

22.1 Unidades de Medida CSS


Unidade

Descrio

percentual

in

"inch"

cm

centmetro

mm

milmetro

em

"1em" igual ao tamanho atual da fonte, portanto "2em" o dobro de seu


tamanho atual

ex

"1ex" o valor "x-height" de uma fonte ("x-height" geralmente metade


"font-size")

pt

"1pt" um ponto ("1pt" equivale a "1/72 inch")

pc

"1pc" medida em "picas" ("1pc" equivale a "12 points")

px

"1px" medida em "pixels" (equivale a pontos na tela)

22.2 Propriedades CSS

Existem inmeras propriedades CSS

Geralmente modificam um atributo do elemento HTML

Existem ainda as que se referem ao navegador

Podem alterar alguma valor padro do navegador conforme seu "engine"

Lista completa pode ser encontrada no endereo:

http://www.w3schools.com/cssref/
216

22.3 Valor das Propriedades

Conceito de "chave" mais "valor"


div {
border-style:solid;
border-width:5px;
border-color:red;
}

22.4 Shorthand

Existe a opo de declarao "shorthand"

Utiliza-se a propriedade principal com mltiplos valores

A ordem e quantidade de valores influenciam na exibio

Cada propriedade tem uma ordenao

No caso de "border" temos "style", "width" e "color"

div {
border: 5px solid red;

}
Da mesma forma algumas propriedades podem definir seus valores por
mltiplas declaraes

Neste caso deve-se optar por qual usar

div {
border-style:solid;
border-width:5px;
border-color: red green blue yellow;
}

217

EP:

Propriedades CSS

1.

Crie o arquivo "properties.html"

2.

Adicione 3 elementos <div> vazios


a.

Utilize a instruo do EMMET: div#div$*3

Nota: o uso da nomenclatura div com o nmero no recomendada para verses de


produo do cdigo HTML, est sendo utilizada aqui apenas para facilitar e aumentar a
produtividade das aulas.

3.

Atribua o seguinte estilo para o elemento "div1":


border-style: solid;
border-width: 5px;
border-color: blue;

4.

Salve e teste

5.

Na sequncia, adicione o estilo para o elemento "div2":


border: 3px dotted red;

6.

Salve e teste
a.

7.

Perceba que os estilos so similares e foram criados de forma diferente

Adicione o estilo para div3:


border-style: solid;
border-color: green;

8.

Salve e teste
a.

9.

Perceba que os quatro lados da borda recebeu a mesma cor

Altere o estilo para o elemento "div3":


border-color: green red;

10.

Salve e teste
a.

Perceba os lados que receberam cor

218

11.

Mais uma vez, altere, salve e teste:


border-color: green red blue;

12.

Finalmente, altere para:


border-color: green red blue yellow;

13.

Salve e teste
a.

Perceba que as cores foram colocadas em cada lado seguindo o sentido


horrio (top, left, bottom e right)

22.5 overflow

Propriedade que controla a visualizao das barras de rolagem

Por padro o contedo no cortado e pode sair dos limites de seu parent
container, sem nenhuma barra de rolagem

Configuraes de largura e altura tem papel fundamental para definir se


as barras sero exibidas automaticamente ou no

Valor

Exibe Barras

Descrio

visible

No

Padro, contedo no cortado e pode sair dos limites do


continer pai, nenhuma barra adicionada

hidden

No

Similar ao visible, porm corta o contedo nos limites do


continer pai

auto

Quando
necessrio

scroll

Sim

Se o contedo necessitar, barras de rolagem sero


adicionadas automaticamente

Barras de rolagem sempre sero exibidas, independente


do tamanho do contedo

219

22.6 background

Define as propriedades de fundo de um elemento

Quase todas as derivaes de background (como background-color)


aceitam os valores CSS initial e inherit

Shorthand:
background: color position size repeat origin clip attachment image|initial|inherit;

Propriedade
background-color

background-clip

background-image

background-position

Descrio
Cor de fundo

Corte/limites da cor de fundo

Imagem de fundo

Posio da imagem de fundo

background-size

Tamanho da imagem de fundo

background-repeat

Repetio da imagem de fundo

background-attachment

background-origin

Como a imagem de fundo ser anexada

Similar background-clip, porm para imagem

220

22.6.1

background-color

Cor de fundo

Padro transparente

Aceita valores vlidos de cores CSS:

background-color: rgb(255, 0, 255);


background-color: red;
background-color: #FF0;

EP:

background-color

1.

Crie um novo arquivo de nome background.html

2.

Adicione uma <div> com a classe alpha, o elemento <h1> como elemento
filho, com o texto background-color
a.

Utilize a instruo do EMMET:


div.alpha>h1{background-color}

3.

Adicione o seguinte CSS:


div {
width: 300px;
height: 200px;
display: inline-block;
border: 15px dotted black;
margin: 30px;
text-align: center
}
h1{

line-height: 155px;

221

4.

Crie a classe CSS de nome alpha com a instruo:


background-color: rgba(0, 255, 255, .2);

5.

Salve e teste
a.

22.6.2

Altere o valor do alpha para perceber a diferena


background-clip

Corte/limites do fundo

Valores aceitos so:

border-box

padding-box

content-box

background-clip: content-box;

EP:

background-clip

1.

Abra o arquivo background.html

2.

Adicione mais uma <div> com a classe clip, o elemento <h1> com o texto
background-clip

3.

Crie a classe CSS clip com as seguintes instrues:


padding: 0px 20px;
background-color: salmon;
background-clip: padding-box;

4.

Salve e teste
a.

5.

Perceba a diferena do preenchimento do fundo entre as duas <div>

Altere o valor da propriedade background-clip para:


background-clip: content-box;

6.

Salve e teste

222

22.6.3

background-image

Propriedade que permite adicionar uma imagem de fundo

Possvel definir mais de uma imagem

Basta separar por vrgula as URLs

Necessrio combinar outras configuraes de background para ter seu


funcionamento correto

background-image: url('image.jpg');

EP:

background-image

1.

Abra o arquivo background.html

2.

Adicione mais uma <div> com a classe image, o elemento <h1> com o texto
background-image

3.

Crie a classe CSS image, salve e teste:


background-image:
url('http://www.lorempixel.com/37/37/cats/2');

22.6.4

background-repeat

Define a repetio da imagem

A repetio pode ocorrer nos eixos:

repeat-x

repeat-y

repeat

no-repeat

223

EP:
1.

2.

background-repeat
Abra o arquivo background.html
a.

Adicione mais uma <div> com a classe repeat

b.

Elemento <h1> com o texto background-repeat

Crie a classe CSS com o seguinte cdigo:


background-image:
url('http://www.lorempixel.com/37/37/cats/3');
background-repeat: no-repeat;

3.

Salve e teste

4.

Altere a classe:
a.

Adicione altura de 300px

b.

Teste (um por vez) os demais eixos de repetio (apenas X, apenas Y e


ambos)

22.6.5

background-position

Posicionamento da imagem de fundo

Valores aceitos so:

top

bottom

left

right

center

xpos

ypos

x%

y%

224

Combinao dos valores ocorre em pares no eixo horizontal e vertical:


background-position: left top;
background-position: right center;
background-position: center bottom;
background-position: 25% 75%;
background-position: 300px 550px;

225

EP:
1.

2.

background-position
Abra o arquivo background.html
a.

Adicione mais uma <div> com a classe position

b.

Elemento <h1> com o texto background-position

Crie a classe CSS com o seguinte cdigo:


height: 300px;
background-image:
url('http://www.lorempixel.com/37/37/cats/4');
background-repeat: no-repeat;
background-position: center top;

3.

Altere a classe combinando em pares as seguintes posies (teste uma


combinao por vez):

4.

a.

top

b.

bottom

c.

right

d.

left

e.

center

Novamente altere a classe, porm com valores usando percentuais e em pixels


(teste um por vez):
a.

0 50%

b.

50% 50%

c.

100% 100%

d.

350px 60px

e.

-20px 50px

226

5.

Adicione uma segunda imagem modificando apenas as propriedades:


background-image:
url('http://www.lorempixel.com/90/90/cats/4'),
url('http://www.lorempixel.com/90/90/cats/5');
background-position: top center, bottom right;

6.

Salve e teste

22.6.6

background-size

Permite controlar o tamanho da imagem de fundo

Idealmente a imagem deve vir sempre do tamanho adequado e evitar a


alterao de seu tamanho por CSS

Distores e serrilhamentos podem ocorrer na imagem

Os valores podem ser:

Pixels

Percentual

cover e contain

Permite controlar o tamanho da imagem de fundo

Idealmente a imagem deve vir sempre do tamanho adequado e evitar a


alterao de seu tamanho por CSS

Distores e serrilhamentos podem ocorrer na imagem

Os valores podem ser em pixels ou em percentual

O primeiro valo refere-se largura e o segundo altura

background-size: 100px 50px;

Tambm possvel utilizar os valores:

auto: padro

cover: aumenta o tamanho da imagem para cobrir toda a rea de fundo,


sendo que partes da imagem podem no ser mostradas

227

contain: similar a cover, porm at o limite que no corte a imagem

background-size: cover;

EP:
1.

2.

background-size
Abra o arquivo background.html
a.

Adicione mais uma <div> com a classe size

b.

Elemento <h1> com o texto background-size

Crie a classe CSS com o seguinte cdigo:


height: 300px;
background-image:
url('http://www.lorempixel.com/37/37/cats/7');
background-repeat: no-repeat;
background-size: 150px 150px;

3.

4.

Salve e teste
a.

Perceba a imagem distorcida

b.

Visualize a imagem colando a URL em outra aba do navegador

Altere a propriedade background-size para (teste um por vez):


a.

cover

b.

contain

228

22.6.7

background-attachment

Define o comportamento da imagem de fundo com relao ao scroll da pgina:

local: acompanha a rolagem do contedo do elemento

scroll: no acompanha a rolagem do elemento

fixed: no acompanha a rolagem da tela

background-attachment: fixed;

EP:
1.

background-attachment
Abra o arquivo background.html
a.

Adicione mais uma <div> com a classe attachment

b.

Elemento <h1> com o texto background-attachment

c.

Texto dentro da <div>:


p>span>lorem*5

2.

Crie a classe CSS com o seguinte cdigo:


width: 800px;
height: 300px;
background-image:
url(http://www.lorempixel.com/500/500/cats/8);
background-repeat: no-repeat;
background-attachment: scroll;
overflow: auto;

3.

Salve e teste
a.

Perceba a barra de rolagem da tela e da <div>

b.

Faa o scroll e verifique as diferenas

4.

Altere o valor de background-attachment para local

5.

Salve e teste novamente


229

a.

Perceba que a imagem de fundo acompanha o contedo da <div>

6.

Finalmente altere o valor de background-attachment para fixed

7.

Salve e teste
a.

Perceba que a imagem est escondida

b.

Diminua o tamanho da tela para menos da metade

c.

Utilize a barra de rolagem da tela

22.6.8

background-origin

Define os limites de fundo para a imagem

Similar a propriedade background-clip porm para imagem

Os valores aceitos so:

padding-box
border-box
content-box

22.7 border

Define as bordas de um elemento

Quase todas as derivaes de border aceitam os valores CSS initial e


inherit

Shorthand:
border: width style color;

As propriedades de border so (define para os 4 lados):

border-width

border-style

border-color

230

Porm possvel especificar para qual(is) lado(s):

border-top-width

border-left-style

border-bottom-color

Ou mesmo o shorthand de cada lado:


border-top: width style color;

22.7.1

Shorthand Border

Em CSS cada shorthand pode mudar a forma e sequncia de definio


conforme a propriedade

No caso de estilos quadrados (border, padding, etc) existe uma lgica de uso

Definio ocorre no sentido horrio, para os 4 cantos (TOP, RIGHT,


BOTTOM, LEFT)

Exemplo
border-style: solid;

border-color: red blue;

Lados
solid TOP + RIGHT+ BOTTOM + LEFT
red TOP + BOTTOM
blue LEFT + RIGHT
2px TOP

border-width: 2px 3px 4px;

3px LEFT + RIGHT


4px BOTTOM
red TOP

border-color: red blue green yellow;

blue RIGHT
green BOTTOM
yellow LEFT

231

22.7.2

border-style

Define o estilo da borda:


dotted

dashed

solid

double

groove

ridge

inset

outset

22.7.3

CSS3 Border

Existem novas propriedades de borda do CSS3:

border-radius: contorno da borda

border-shadow: sombra

border-image: imagem a ser usada como borda

Porm tem seu funcionamento apenas em navegadores mais atuais

border-image funciona a partir do IE 11

Muitos navegadores requerem o uso de vendor properties

232

EP:

border

1.

Crie um novo arquivo de nome border.html

2.

Adicione 8 <div> com as classes:

3.

a.

dotted

b.

dashed

c.

solid

d.

double

e.

groove

f.

ridge

g.

inset

h.

outset

Adicione o seguinte CSS:


div {
width: 200px;
height: 200px;
}

4.

Crie as classes CSS com os respectivos valores para a propriedade style,


salve e teste:
.dotted {
border: 5px dotted red;
}
.dashed {
border: 3px dashed blue;
}

6.

Crie mais uma <div> com a classe custom


233

7.

Adicione o seguinte CSS, salve e teste:


.custom {
border-top:

5px

border-left:

3px

dashed

border-bottom:

1px

border-right:

dotted

8px

blue;

solid

double

red;

green;

purple;

}
8.

Crie mais uma <div> com a classe sense

9.

Adicione o seguinte CSS, salve e teste:

.sense {
border-width: 5px
border-style:

10px;

solid

border-color: deeppink

dashed

double;

chocolate skyblue firebrick;

22.8 padding

Define o espaamento entre o contedo do elemento e sua borda

Shorthand especifica os lados com espaamento:


padding: 5px;
padding: 20% 30%;
padding: 2px 5px 3px;
padding: 2px 5px 3px 4px;

234

EP:

padding

1.

Crie um novo arquivo de nome padding.html

2.

Adicione <div> com <h2> e <p>:


div>h2{Title}+p>lorem*5

3.

Adicione o seguinte CSS, salve e teste:


div{
background-color: skyblue;
padding: 50px;
}

4.

Adicione padding para os elementos, salve e teste:


div h2 {
background-color: yellow;
padding: 10px 0;
}
div p {
background-color: lime;
padding: 20px 30px 40px;
}

22.9 margin

Define o espaamento entre elementos

Shorthand especifica os lados com margem:


margin: 10px;
margin: 5% 10%;
margin: 5px 10px 7px;
margin: 5px 10px 7px 3px;

235

EP:

margin

1.

Crie um novo arquivo de nome margin.html

2.

Adicione 2 <div> com <h2> e <p>:


a.

Perceba que foram criadas duas classes, uma para cada <div>

b.

Os ttulos tambm so diferentes para cada <div>

div.div$*2>h2{Div$}+p>lorem*5
3.

Adicione o seguinte estilo:


.div1 {
background-color: crimson;
margin: 20px;
}
.div2 {
background-color: cornsilk;
}

4.

Salve e teste
a.

5.

Perceba a diferena de posicionamentos

Adicione o CSS:
.div1 h2 {
margin-top: 50px;
}

6.

Salve e teste
a.

Perceba o posicionamento do elemento foi comprometido pela margin


de <h2>, deslocando <div> mais abaixo

236

7.

Altere o CSS:
.div1 h2 {
padding-top: 50px;
}

8.

Salve e teste
a.

Perceba o posicionamento do elemento <div> est em seu local original,


mas <h2> afastou-se do seu topo

b.
9.

Em ambos os casos a segunda <div> foi deslocada para baixo

(Opcional) Mantenha as duas instrues CSS e use o Chrome Developer Tools


para habilitar e desabilitar as propriedades:
.div1 h2 {
padding-top: 50px;
margin-top: 50px;
}

22.10 Texto
Propriedade

Valores

color

#F00
red
rgba(255,0,0,.5)

text-align

center
justify
right
left

Descrio

Altera a cor do texto

Alinha o texto

237

text-decoration

none
overline
line-through
underline

text-transform

uppercase
lowercase
capitalize

text-indent

10px

text-shadow

2px 2px #FF0

direction

ltr
rtl

letter-spacing

2px

Espaamento entre as letras

word-spacing

5px

Espaamento entre as palavras

word-wrap

break-word

vertical-align

baseline
middle
10px
sub
super
50%
top

font-size

18px
2em

font-family

times, sans-serif
serif

font-weight

bold
bolder
lighter
600

Linha de decorao do texto

Transforma o texto para caixa alta,


baixa ou primeira letra maiscula
Indentao do texto
Sombra abaixo do texto
Direo do texto

Quebra de linha

Alinhamento vertical do texto

Tamanho da fonte
Famlia da fonte

Peso (negrito) da fonte

238

22.10.1

CSS3 Text

Alm das mencionadas existem ainda:

hanging-punctuation

punctuation-trim

text-align-last

text-emphasis

text-justify

Porm o suporte estas bastante limitado

EP:

Mesmo os navegadores atuais no suportam muitas delas

Texto

1.

Crie um novo arquivo de nome text.html

2.

Adicine <h1> e 3 <p> com texto:

h1.title{Title}+a.link[href="#"]{Link $}*5+(p.paragraph$>lorem*3)*3

3.

4.

Salve e teste
a.

Identifique o contedo HTML no navegador

b.

Verifique as classes utilizadas no cdigo

Crie as classes necessrias


a.

5.

Adicione apenas com cores de fundo diferentes

Adicione o seguinte CSS para a classe de <h1>:


text-align: center;
text-decoration: overline;
font-size: 300%;

6.

Salve e teste

239

7.

Altere o estilo dos links:


text-decoration: none;
font-size: 2em;

8.

Salve e teste

9.

Altere o estilo do primeiro pargrafo:


text-align: justify;
font-size: 13pc;
text-indent: 100px;

10.

Salve e teste

11.

Adicione o seguinte CSS:


.paragraph1 > span:first-child{
text-decoration: line-through;
font-transform: uppercase;
}

12.

Salve e teste

13.

Altere o segundo pargrafo:


font-size: 20px;
text-align: right;
letter-spacing: 8px;
word-spacing: 30px;

14.

Salve e teste

15.

Altere o ltimo pargrafo:


font-size: 30pt;
text-shadow: 2px 2px yellow;

16.

Salve e teste
240

22.11

list-style

Estiliza os marcadores de lista de <ul> e <ol>

Shorthand:
list-style: list-style-type list-style-position list-style-image;

22.11.1

list-style-type

Define o estilo do marcador da lista

Tipo de marcador depende se a tag <ul> ou <ol>

Para <ul>:

disc

circle

square

none

Para <ol> existem diversas opes:

armenian

cjk-ideographic

decimal

decimal-leading-zero

georgian

hebrew

hiragana

hiragana-iroha

katakana

katakana-iroha

lower-alpha

lower-greek

lower-latin

lower-roman

241

upper-alpha

upper-latin

upper-roman

none

ol {
list-style-type: decimal;
}
ul {
list-style-type: square;
}
22.11.2

list-style-position

Os marcadores de lista podem ser posicionados dentro do continer que o


contm ou ainda fora deste:

inside

outside

ul {
list-style-position: outside;
}

242

22.11.3

list-style-image

Permite utilizar uma imagem como marcador


ul {
list-style-image: url(icon.png');
}

EP:

list-style

1.

Crie um novo arquivo de nome list.html

2.

Adicione <ul> e <ol> com alguns itens dentro de <div>:


ul>li{Unordered Item $}*5 <TAB>
ol>li{Ordered Item $}*5 <TAB>

3.

Salve e teste
a.

4.

Visualize os marcadores padres de <ul> e <ol>

Adicione o seguinte estilo:


li {
border: 2px solid;
margin: 5px;
}

5.

Salve e teste

6.

Altere o estilo de <ul> e <ol>:


ul { list-style: circle inside ; }
ol { list-style: upper-roman; }

7.

Salve e teste

243

8.

Altere <ul> para usar uma imagem:


ul {
list-style: circle inside
url('http://lorempixel.com/30/30/food/9/');
}

9.

(Opcional) Altere a propriedade list-style de <ol> para os demais valores


permitidos

22.12

Colunas
Existem algumas propriedade CSS3 que permite definir colunas

Por ser relativamente nova, seu uso deve ocorrer apenas com
navegadores modernos

Nem todas as propriedades so suportadas (Ex: column-fill)

Necessitam de vendor properties:

-moz-

-webkit-

Propriedade

Valor

column-count

column-gap

20px

column-rule

3px dotted red

column-width

100px

Descrio
Nmero de colunas
Espaamento entre colunas
Shorthand para exibir o separador
de colunas
Largura da coluna

244

EP:

Colunas

1.

Crie um novo arquivo de nome columns.html

2.

Adicione <div> com <p> e texto lorem ipsum:


div.columns>span>lorem*5

3.

Salve e teste
a.

4.

Verifique a disposio do texto

Adicione estilo para <div>:


div{
width: 1000px;
color: white
background-color: green;
padding: 20px;
margin: auto;
}

5.

Crie a classe para colunas:


.columns {
column-count:

8;

-moz-column-count:

8;

-webkit-column-count:

8;

}
6.

Salve e teste

245

7.

Adicione na classe columns:


column-gap:

30px;

-moz-column-gap:

30px;

-webkit-column-gap: 30px;
8.

Salve e teste

9.

Novamente, adicione na classe columns:


column-rule:

3px outset lime;

-moz-column-rule:

3px outset lime;

-webkit-column-rule:

3px outset lime;

10.

Salve e teste

11.

(Opcional) Altere a quantidade e o espaamento das colunas

246

247

Captulo 23:

At Rules

23.1 Sobre

Instruo CSS que se inicia com o caractere @ seguido pelo identificador

Pode ser encerrado pelo caractere ponto e vrgula ou do bloco CSS

Muitos ainda esto em desenvolvimento

Porm existem aqueles essenciais para um "layout" responsivo

23.2 Principais

At rule

Exemplo

Descrio

@charset

@charset "UTF-8"

Define o "encoding" usado pelo


arquivo CSS

@import

@import url("print.css") print;

Importa regras de estilos de um


arquivo CSS

@media

@media print {
body { font-size: 10pt }
}

Regra condicional aplicada se o


"device" possuir

@font-face

@font-face {
font-family:
myFirstFont;
src:
url('Sansation_Light.ttf'
),
}

Permite utilizar fontes adicionais

248

23.3 @charset

Define o encoding usado no arquivo CSS

Deve ser a primeira instruo no arquivo

No deve conter nem mesmo espao em branco antes dele

Recebe o valor entre aspas

Deve ser um valor vlido de conjunto de caracteres

@charset "UTF-8"

23.4 @import

Importa regras de estilos de arquivos CSS

Deve ser a primeira instruo do arquivo CSS

Exceto se usada "@charset"

Sintaxe contm a URL e opcionalmente a lista de "media queries" separadas por


vrgula
@import url("tv.css") tv, projection;

O cdigo importado adicionado ao arquivo CSS

Similar ao ato de copiar e colar o cdigo do arquivo importado para o


arquivo que o importa

Por ser a primeira tag o cdigo CSS sofre as regras de precedncia

O carregamento do cdigo CSS importado diferente do da pgina HTML

Em alguns casos pode ocorrer um atraso do carregamento do CSS


importado e a pgina HTML aparecer sem estilo

@import url("print.css") print;


@import url("tv.css") tv, projection;
@import 'custom.css';
@import url('landscape.css') screen and
(orientation:landscape);

249

/*fine.css*/
h1{ color: blue; }
-------------------/*default.css*/
@import url('fine.css')
h1{ color: red; }

/* Imported code will be like this at default.css:


h1{ color: blue; }
h1{ color: red; }
*/

EP:

@import

1.

Crie no projeto uma pasta de nome "import"

2.

Crie os arquivos HTML e CSS e vincule um ao outro

3.

4.

a.

No arquivo HTML adicione uma "tag" <h1> com valor "CSS Import"

b.

No arquivo CSS adicione o estilo "color" com valor "red" para <h1>

Crie um segundo arquivo CSS de nome "additional.css"


a.

No vincule este arquivo no HTML

b.

Adicione o estilo "color" com valor "blue" para <h1>

No arquivo CSS vinculado ao HTML adicione o cdigo abaixo como a primeira


instruo:
@import url("additional.css");

5.

Salve e teste
a.

Perceba que o estilo do arquivo importado no foi aplicado

b.

Abra o Chrome Developer Tools e inspecione o estilo do elemento, os


dois estilos estaro presentes, sendo que um deles foi sobrescrito
250

6.

Remova o estilo de cor de <h1> do arquivo import.css


a.

7.

Apenas o arquivo additional.css possuir o estilo de cor para <h1>

Salve e teste
a.

Sem o conflito, a cor foi aplicada do arquivo importado

23.5 @font-face

Permite carregar e utilizar uma fonte customizada

Devem ser configuradas as propriedades:

font-family nome da fonte

src URL com o caminho para o arquivo da fonte

No caso de uso das variaes de fonte (negrito, itlico, etc) estas tambm
devem ser carregadas para uso

No caso de uso das variaes de fonte (negrito, itlico, etc) estas tambm
devem ser carregadas para uso

O tamanho do arquivo da fonte influenciar no tempo de carregamento da


pgina

Similar a uma imagem, quanto mais pesado (kb) o arquivo maior ser o
tempo de carregamento

Quantidade de arquivos tambm influencia

@font-face {
font-family: myCustomFont;
src: url(sansation.woff);
}
body { font-family: myCustomFont; }
/* Adding font italic and bold */

251

@font-face {
font-family: myCustomFont;
src: url(sansation_italic.woff);
font-style: italic;
}
@font-face {
font-family: myCustomFont;
src: url(sansation_bold.woff);
font-weight: bold;
}

23.5.1

Suporte de Fontes

WOFF

OTF

TTF

SVG

EOT

IE

---

Firefox

3.6

3.5

3.5

---

---

Opera

11.1

10

10

10

---

Safari

5.1

3.1

3.1

3.1

---

Chrome

0.3

---

252

EP:

@font-face

1.

Crie um novo arquivo de nome font-face.html

2.

Baixe uma fonte da Internet

3.

a.

Para maior suporte procure um arquivo da extenso .ttf ou .otf

b.

Salve o arquivo na pasta adequada do seu projeto

c.

(Opcional) Baixe os arquivos itlico e negrito tambm

Adicione texto lorem ipsum:


p>lorem*50

4.

Adicione o seguinte CSS:


@font-face {
font-family: myCustomFont;
src: url(xxxxxxx.xxx);
}
body { font-family: myCustomFont; }

5.

Salve e teste

6.

(Opcional) Usando fonte em itlico ou negrito


a.

Crie outra instruo @font-face

b.

Mantenha o mesmo nome da fonte

c.

Aponte para o caminho correto

d.

Adicione propriedade na qual se refere

@font-face {
font-family: myCustomFont;
src: url(xxxxxxx_italic.xxx);
font-style: italic;
}

253

23.6 @media

Aninha instrues CSS com uma condio definida pela "media query"

"Media queries" definem o tipo de mdia na qual a declarao CSS


aninhada ser aplicada

Seu valor um "media type" e define a condio para que o bloco CSS
aninhado seja aplicado

Media Type

Descrio

all

Todos os "devices"

braille

Braille "devices"

embossed

Impressoras braille

handheld

So "devices" de mo, tipicamente de telas pequenas

print

Impressoras

projection

Projetores

screen

Telas de computadores

speech

Sintetizadores de voz

tty

Terminais, tele-texto

tv

Para "devices" do tipo TV

254

@media print {
body { font-size: 10pt }
}
@media screen {
body { font-size: 13px }
}
@media screen, print {
body { line-height: 1.2 }
}

EP:

@media

1.

Crie um arquivo de nome media.html

2.

Adicione texto lorem ipsum:


p>lorem*100

3.

Adicione o CSS:
@media print {
body { font-size: 5pt; }
}
@media screen {
body { font-size: 30px; }
}

4.

Salve e teste a impresso

255

256

Captulo 24: Box Model


24.1 Sobre

Todos os elementos HTML podem ser considerados caixas

Termo "box model" refere-se a caixa na qual os elementos esto inseridos

Essencial entender seu funcionamento para se definir a largura e altura de um


elemento

24.2 reas

4 reas retangulares

"margin"

"border"

Fundo

"padding"

Transparente

Recebe o fundo do contedo

"content"

Fundo

257

24.3 Espaamento do Contedo

Um contedo HTML respeita os tamanhos:

Margem

Borda

Espaamento entre contedo e borda

Prprio contedo

Assim um contedo composto pelos tamanhos:

contedo + padding + border + margin = actual size

O valor do espaamento pode variar conforme o navegador

Ideal usar CSS Reset

258

24.4 Largura e Altura

Para definir a largura e altura de um elemento basta utilizar as respectivas


propriedades

"width"

"height"

As propriedades referem-se apenas a "content area"

O tamanho total do elemento calculado com a somatria dos itens que


compem o "box model"

Clculo da largura:
Largura total do elemento =
width
+ left padding + right padding
+ left border + right border
+ left margin + right margin

Clculo da altura:
Altura total do elemento =
height
+ top padding + bottom padding
+ top border + bottom border
+ top margin + bottom margin

259

EP:
1.

Tamanho do Elemento
Calcule o tamanho do elemento conforme o CSS:
width: 250px;
padding: 10px;
border: 5px solid gray;
margin: 10px;

2.

Largura total ser 300 "pixels"


250px (width)
+
20px (left + right padding)
+
10px (left + right border)
+
20px (left + right margin)
=

3.

300px
Assumindo que voc tenha apenas 250 "pixels" de largura na tela, qual seriam
os valores corretos da instruo CSS inicial ?

4.

Resposta:
a.

Existem outras possibilidades de resposta

width: 220px;
padding: 10px;
border: 5px solid gray;
margin: 0px;

260

24.5 CSS Reset

Cada navegador pode definir bordas, espaamento, fontes de formas diferentes

Isso pode dificultar muito o posicionamento e layout em mais de um


navegador

So instrues CSS que eliminam os estilos padres definidos pelo navegador

Ex: cores, tamanhos de fonte, margens, efeitos, decoraes, etc

Basta vincular o arquivo CSS no documento HTML

Devido a precedncia CSS, deve ser sempre o primeiro arquivo CSS


vnculado ao HTML

Mais comuns so os arquivos do Eric Meyer e do Yahoo


http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/
http://yui.yahooapis.com/2.7.0/build/reset/reset-min.css

EP:
1.

CSS Reset
Baixe o arquivo CSS Reset do Eric Meyer
a.

Salve no projeto em uma pasta adequada

2.

Crie um novo arquivo de nome reset.html

3.

Vncule o arquivo CSS no HTML

4.

Crie uma "tag" <h1> com o valor "CSS Reset"

5.

Salve e teste
a.

Perceba que <h1> no tem a fonte grande em negrito

261

262

Captulo 25:

Posicionamento

25.1 Dimenses

Propriedades CSS que permitem controlar a altura e largura de um elemento

Tambm podem ser definidos valores mximos e mnimos de largura e altura

25.1.1

Valores das Dimenses

Propriedade

Descrio

auto

Navegador efetua os clculos para determinar a dimenso

none

Nenhum valor

length

Dimenso em "px", "cm", etc

inherit

Dimenso em percentual, limitado por seu "parent element"

Herda a dimenso do "parent element"

263

25.1.2

Propriedades de Dimenses

Propriedade

Caracterstica

auto

length

inherit

none

max-height

Altura mxima

---

max-width

Largura mxima

---

min-height

Altura mnima

---

---

min-width

Largura mnima

---

---

height

Altura

---

width

Largura

---

25.2 display

Os elementos HTML so adicionados na tela conforme sua forma de exibio

Em linha ("inline") ou em bloco ("block")

Este comportamento pode ser alterado atravs de CSS

A alterao pode comprometer a exibio dos elementos seguintes

comum o uso de <div> para layout do documento

Agrupa os itens que respeitaro a posio da "div"

Deve-se evitar o uso de tabelas

264

25.2.1

EP:

inline vs block

inline

Ocupam o espao necessrio para seu prprio contedo

Prximo contedo ser adicionado da sequncia

Ex: <a>, <label>, <span>, <small>, <strong>, <em>

block

Elementos de bloco ocupam toda a largura do documento

Prximo contedo ser adicionado na linha seguinte

Ex: <h1>, <p>, <div>, <ul>

inline vs block

1.

Crie um novo arquivo chamado display.html

2.

Adicione o seguinte cdigo HTML

h1{Title}+p>(span>lorem1000)+img[src=http://lorempixel.com/100/100/cats]+(span>lorem10
00)

3.

Salve, teste
a.

Verifique se as "tags" <h1>, <span> e <img> possuem exibio em linha


ou bloco

b.
4.

Use o Chrome Developer Tools, para verificar o tipo de exibio

Aps o final de </span>, adicione pargrafos


p*3>lorem100

5.

Utilize CSS e aplique fundos com cores diferentes para cada tipo de elemento

6.

Salve e teste
a.

Perceba quais os elementos que ocupam toda a tela

265

25.2.2

Modificando a Exibio

Possvel modificar um elemento com exibio "inline" para "block" e vice-versa

Propriedade "display" permite configurar a exibio com os valores:

"inline"

"block"

"none"

li {
display:inline;
}

EP:

Modificando a Exibio

1.

Crie um novo arquivo de nome display_change.html

2.

Adicione um menu utilizando <ul>


ul>li*5>a[href=#]{Link $}

3.

Salve e teste
a.

4.

Identifique o tipo de exibio da lista

Altere o tipo de exibio atravs do cdigo CSS:


li {
list-style: none;
display: inline;
}

5.

Salve e teste

266

6.

Adicione o seguinte cdigo:


<p>
Text inside &lt;p&gt; tag.
<span>First &lt;span&gt; tag.</span>
<span>Second &lt;span&gt; tag.</span>
<span>Third &lt;span&gt; tag.</span>
</p>

7.

Salve e teste
a.

8.

Perceba a exibio inline de <span>

Altere a exibio para "block" do elemento <span>


span {
display:block;
}

9.

Salve e teste

25.2.3

Removendo da Exibio

A exibio de um elemento definida pela propriedade "display"

Se o valor da propriedade for "none"

Elemento removido da tela

Seu espao ocupado pelo seguinte no fluxo do documento

display: none;

267

25.2.4

Visibilidade

A visibilidade de um elemento definida pela propriedade "visibility"

Se o valor da propriedade for "hidden"

Elemento ficar invisvel


Seu espao continua preservado na tela

visibility: hidden;

EP:
1.

Exibio vs Visibilidade
Abra o endereo abaixo no navegador:
http://codepen.io/pen/

2.

No campo escrito HTML, adicione o seguinte cdigo:


<h1>This is a visible heading</h1>
<h1>This &lt;h1&gt; will disappear</h1>
<p>
Notice that the hidden heading still takes up space.
</p>

3.

No campo escrito CSS, adicione o seguinte estilo:


h1 ~ h1 {
background-color: #f00;
}

4.

Perceba o espao ocupado por <h1>

268

5.

Modifique o CSS para:


h1 ~ h1 {
background-color: #f00;
display:none;
}

6.

Perceba que o espao ocupado por <h1> deixou de existir

7.

Modifique o CSS para:


a.

Comente a ltima instruo utilizando o atalho CTRL + /

h1 ~ h1 {
background-color: #f00;
/*display:none;*/
visibility: hidden;
8.

}
Perceba que o espao ocupado por <h1> foi mantido

9.

Salve o EP como arquivo display_background.html


a.

Clique no boto Save

b.

Clique no boto Share

c.

Clique no boto Export

25.3 position

Permite posicionar um elemento com base nas regras de posicionamento

Pode receber os seguintes valores:

static (padro)

relative

absolute

fixed

Quando alterada pode ser ideal para:

269

Animaes

Popups

Qualquer elemento que necessite sair do fluxo natural do documento

Posicionamento dos elementos ocorre com base nos valores das propriedades:

top

bottom

left

right

Propriedades "top", "bottom", "left" e "right" sero respeitadas apenas

Se o valor de position for diferente de static

Se as propriedades forem declaradas com algum valor

div {
position: relative;
top: 20px;
left: 50px;
}
25.3.1

static

Padro do navegador

Elemento renderizado na posio original, conforme o fluxo do documento

Coordenadas "top", "bottom", "left" e "right" no so respeitadas

270

EP:
1.

static
Abra o endereo abaixo:
http://jsfiddle.net/

2.

Identifique o campo com o nome HTML e adicione o seguinte cdigo:


div#div$*3

3.

Identifique o campo CSS e adicione:


div {
width: 200px;
height: 200px;
}
#div1 {
background: skyblue;
}
#div2 {
background: gold;
}
#div3 {
background: salmon;

4.

}
Clique no boto Run localizado na barra superior do lado direito

5.

Altere o CSS para:


#div2 {
background: gold;
position: static;
top: 100px;
}

271

6.

Clique no boto Run


a.

Perceba que nada ocorreu, a distncia definida pela propriedade top

7.

Altere o valor position de static para relative

8.

Rode novamente
a.

9.
10.

A div2 deslocou 100 pixels para baixo

Volte o valor para static


Salve o EP no arquivo static.html
a.

Clique no boto Save

b.

Adicione na URL o valor /show

c.

Clique em CTRL + S

d.

Modifique o nome do arquivo e salve na pasta position no projeto

e.

Guarde o endereo da URL do JSFiddle, uma vez salvo, com etse o


cdigo pode ser compartilhado e recuperado

25.3.2

relative

Elemento renderizado na posio original

O ponto inicial (0,0) a posio na qual o elemento est

Porm respeita os valores das propriedades

top

bottom

left

right

Se as coordenadas no forem declaradas nenhum efeito visual ocorrer

O espao ocupado inicialmente mantido

Elemento deslocado para a nova coordenada

Nova coordenada pode fazer com que o elemento sobreponha outro

272

EP:
1.

relative
Volte ao JSFiddle
a.

2.

3.

Utilize o cdigo URL salvo no EP anterior

Clique no boto Fork localizado na barra superior ao lado do boto Save


a.

Uma nova verso do cdigo criada

b.

A original ser mantida

c.

Ambas as verses podero ser acessadas pelas diferentes URLs

Altere o cdigo CSS de div2 para:


position:relative;
top: 20px;
left: 20px;

4.

5.

Rode o cdigo
a.

Veja o deslocamento da div2

b.

Perceba que o espao inicialmente ocupado pela div2 foi mantido

Salve o EP no arquivo de nome relative.html

25.3.3

absolute

Este posicionamento toma como referncia o primeiro parent container que


contiver o valor "position" diferente de "static"

O ponto inicial (0,0) a partir da posio do elemento diferente de static


encontrado

Caso no seja encontrado, ser usado o elemento <html>, ou seja, o


ponto incial (0,0) da pgina

No mantm o espao inicial do elemento

O prximo elemento ocupa o lugar do elemento posicionado com


absolute

273

EP:

absolute

1.

Abra o JSFiddle com o EP anterior e clique em Fork

2.

Altere o cdigo CSS de div2 para:


#div2 {
background: gold;
position: absolute;
top: 20px;
left: 20px;
}

4.

Rode o cdigo
a.

Perceba que no existe nenhum parent container com propriedade


position diferente de static (padro)

b.

O elemento posicionando utilizou como referncia o ponto inicial da


pgina (0,0)

c.

O espao inicialmente ocupado pela div2 foi utilizado pelo elemento na


sequncia (div3)

5.

Altere o cdigo HTML, envolvendo a div2 dentro de outra <div>:


<div id="divContainer">
<div id="div2"></div>
</div>

6.

Adicione a seguinte instruo CSS:


#divContainer {
background: lime;
}

7.

Rode e visualize os elementos


a.

<div> com posicionamento absoluto continua na mesma posio

274

8.

Altere o cdigo de divContainer acrescentando:


position: relative;

9.

Rode
a.

Perceba que div2 encontrou um parent container diferente de static e


utilizou sua posio como referncia inicial (0,0)

b.

J a divContainer permaneceu no mesmo local, pois nenhuma


propriedade com as coordenadas foi usada

10.

Altere o posicionamento da divContainer:


#divContainer {
background: lime;
position: relative;
top: 20px;
left: 20px;
}

11.

Rode
a.

Perceba que a divContainer se deslocou seguindo as regras do


posicionamento relativo

b.
12.

Altere o posicionamento de divContainer para absolute e rode


a.

13.

A posio da div2 baseada no ponto inicial da divContainer


Antes de rodar tente prever onde as <div> estaro

Salve o EP no arquivo absolute.html

275

25.3.4

fixed

Mantm uma posio fixa na tela mesmo quando for utilizada a barra de rolagem

Geralmente utilizada para menus ou marcadores laterais no site

Ponto inicial (0,0) para posicionamento ser o da pgina

Seu espao ser ocupado pelo prximo elemento

EP:

fixed

1.

Abra o JSFiddle do EP static ou absolute

2.

Remova todas as propriedades de posicionamento de div2

3.

Adicione texto aps o fechamento da ltima <div>


p>lorem1000

4.

Altere o posicionamento da div1 adicionando o CSS:


position: fixed;
top: 20px;

5.

left: 20px;
Rode
a.

6.

Faa scroll da pgina e perceba que div1 no se movimenta

Salve o EP no arquivo de nome fixed.html

276

25.3.5

z-index

Quando os elementos saem do fluxo padro da tela, elementos podem se


sobrepor

A propriedade "z-index" especifica a ordem do empilhamento

Valores podem ser positivos ou negativos

Positivo "envia para frente"

Negativo "envia para traz"

div {
position: absolute;
top: 10px;
left: 10px;
z-index: -1;
}

EP:

z-index

1.

Crie um novo arquivo de nome z-index.html

2.

Adicione o seguinte cdigo HTML:


div#div$*3+p>lorem1000

3.

Configure o CSS da seguinte maneira:


a.

Todas as <div> devem ter o tamanho de 200 pixels (largura e altura) e


posicionamento relativo

b.
4.

Cada uma delas deve ter uma cor de fundo diferente

Altere o posicionamento da div2:


top: 20px;
left: 20px;

277

5.

Salve e teste
a.

Perceba que div3 ficou sobre div2 por ter sido a ltima <div> com
posicionamento relativo adicionada na tela

6.

Altere o CSS de div3 adicionando a instruo:


z-index: -1;

7.

Salve e teste
a.

8.

Identifique a ordem dos elementos sobrepostos

Altere o posicionamento da div3 para relativo, afastando-se 100 pixels do topo


e da esquerda

9.

Salve e teste
a.

Devido ao valor de z-index ser negativo ela ficou atrs do texto

10.

Altere o valor de z-index para um valor positivo

11.

Salve e teste
a.

25.3.6

Perceba que div3 est na frente do texto

Ancorando Elementos

Utilizando-se posicionamento absoluto possvel ancorar elementos na pgina

Fixa cada cada um dos lados na posio definida

Sempre manter a posio, independente da redimenso da pgina

Esta tcnica permite definir:

largura: left e right

altura: top e bottom

278

EP:

Ancorando Elementos

1.

Crie um novo arquivo de nome anchored.html

2.

Vincule o arquivo com as instrues CSS Reset

3.

Adicione uma <div> com a classe anchored:


div#anchored

4.

5.

Configure a classe para:


a.

Ter uma cor de fundo

b.

Altura de 200 pixels

Adicione as seguintes instrues na classe criada:


position: absolute;
left: 20px;
right: 20px;

6.

7.

Salve e teste
a.

Perceba o distanciamento da esquerda e da direita de 20 pixels

b.

Redimensione a tela e observe que a distncia ser mantida

Faa o mesmo para altura


a.

8.

Configure para 20 pixels de distncia da parte superior e inferior

Salve e teste
a.

Novamente redimensione a janela, tanto para os lados como para cima e


para baixo
279

9.
10.

Altere os valores para 20%


Salve e teste
a.

11.

Perceba que a distncia muda conforme o clculo de largura da tela

(Opcional) Altere o posicionamento para relativo


a.

Verifique que no funciona adequadamente

b.

Volte para absoluto aps o teste

25.4 Flutuando Elementos

Permite que o elemento seja "flutuado" a esquerda ou a direita

Posicionado de forma que outros elementos fiquem "em volta" deste

Ex: texto envolvendo a imagem flutuada

Flutuao ocorre apenas no sentido horizontal

Elemento "flutuado" movido para o lado definido no ponto mximo possvel

Totalmente a direita ou totalmente a esquerda, desde que haja espao

Limitado pelo seu parent container

Todos os elementos aps o elemento "flutuado" tero seu fluxo em volta deste

25.4.1

No possvel flutuar para cima ou para baixo

Elementos anteriores ao "flutuado" no sofrem efeito do fluxo

float

Propriedade CSS que permite a "flutuao" de elementos

right

left

none

inherit

280

EP:

float

1.

Crie um novo arquivo de nome "float.html"

2.

Adicione 10 pargrafos, com a seguinte configurao:


p[title=$]*10>lorem100

3.

Antes do quinto pargrafo adicione uma imagem do seguinte endereo:


http://lorempixel.com/200/200

4.

Adicione o seguinte CSS:


p[title='4'] {
background-color: lime;
}
p[title='5'] {
background-color: yellow;
}
p[title='5'] ~ p {
background-color: skyblue;
}

5.

Salve e teste

6.

Flutue a imagem:
img {
float: right;
}

7.

Salve e teste
a.

So afetados com a flutuao todos os elementos aps a imagem

281

25.4.2

clear

Eventualmente ser necessrio interromper a flutuao de outros elementos

A propriedade "clear" especifica quais os lados devem ser suprimidos da


"flutuao"

Aplica-se ao elemento que est seguindo o fluxo de "flutuao", na mesma


direo

EP:

Ex: float: left clear: left;

Valores so:

"left" suprime o efeito da flutuao esquerda

"right" suprime o efeito da flutuao direita

"both" suprime o efeito da flutuao esquerda e direita

clear

1.

Abra novamente o arquivo "float.html"

2.

Pare a flutuao do sexto pargrafo com o CSS:


p[title='6'] {
clear: right;

3.

}
Salve e teste

25.4.3

Flutuao vs Proximidade

Se elementos forem flutuados um aps o outro, estes ficaro dispostos um ao


lado do outro

Caso o espao no seja suficiente a "flutuao" ocorre na prxima linha

Este comportamento o mesmo de elementos no flutuados

Por ser um comportamento esperado algo mais natural

Mas pode quebrar visualmente o layout do seu site

282

EP:

Flutuao vs Proximidade

1.

Crie um arquivo de nome "cats_gallery.html"

2.

Adicione 10 "tags" <img> com a seguinte configurao:


img.gallery[src=http://lorempixel.com/100/90/cats/$]*10

3.

Salve e teste
a.

Redimensione a janela e perceba que enquanto existe espao tudo fica


em uma nica linha

4.

Flutue as imagens a esquerda

5.

Salve e teste
a.

Redimensione a a janela novamente e perceba que o comportamento foi


mantido

6.

Adicione <h3> antes da primeira imagem


h3{Row 1}

7.

Adicione um segundo <h3> aps a quinta imagem:


<img src="http://lorempixel.com/100/90/cats/5"
class="gallery">
<h3>Row 2</h3>

8.

9.

<img src="http://lorempixel.com/100/90/cats/6"
class="gallery">
Salve e teste
a.

Perceba o alinhamento incorreto do segundo <h3>

b.

Corrija utilizando a propriedade clear

Possvel soluo:
h3:nth-of-type(2){
clear: left;

10.

}
Salve e teste
a.

Redimensione a tela para o tamanho mnimo possvel e perceba que o


layout pode estar comprometido
283

11.

Defina um tamanho mnimo para <body>:


body {
min-width: 1024px;
}

12.

Salve e teste
a.

25.4.4

Repita o teste anterior

Clearfix

Ocorre um problema quando o elemento "flutuado" est dentro de um "container


box"

Quando um elemento "flutuado" seu "pai" no mais o contm

O elemento no ajusta a altura do continer ao do elemento "flutuado"


A propriedade "float" remove o elemento do fluxo

Soluo para resolver o problema "zero height" do continer que possui o


elemento flutuado

Mais tradicional adicionar um "ponto" invisvel na tela para ocupar o


lugar do elemento "flutuado" e utilizar a propriedade "clear" com valor
"both"

Esta uma soluo que apesar de necessria tem sido


desencorajada

Muitas vezes possvel solucionar com a propriedade "display"


com valor "inline-block"

Dependendo do navegador esta tcnica pode no ser


efetiva

284

EP:

Clearfix

1.

Crie um arquivo de nome "clearfix.html"

2.

Adicione uma <div> com texto e imagem:


a.

Instruo do Emmet deve ser feita em uma nica linha

(div.container>(span>lorem1000)+img[src=http://lorempixel.com/80
0/900]+(span>lorem100))+div.footer>h3>lorem
3.

Salve e teste

4.

No CSS:
a.

Flutue a imagem direita

b.

Adicione uma cores de fundo diferentes para as classes .container e


.footer

c.

Tambm adicione uma cor de fundo (diferente das demais) para o


segundo elemento <span>, utilizando seletores avanados

5.

O segundo elemento do passo 4 <span> pode ser selecionado atravs do uso


de um dos seletores:

6.

a.

last-child

b.

last-of-type

c.

nth-of-type(2)

d.

nth-last-of-type(1)

e.

nth-last-child(1)

Salve e teste
a.

7.

Perceba que a imagem invade a rea do elemento .footer

Tente limpar a flutuao de .footer


clear: right;

8.

Salve e teste
a.

O problema no foi resolvido corretamente, pois a imagem continua


saindo para fora do seu parent container (est fora dos limites <div>)

9.

Apague a instruo clear: right de .footer

285

10.

Baixe e salve o cdigo ClearFix no projeto:


a.

Analise o cdigo CSS e tente interpret-lo

http://cssmatter.com/blog/css-clearfix/
11.

Vincule o arquivo pgina HTML

12.

Adicione a classe clearfix na <div>:


<div class="container clearfix">

13.

Salve e teste

a.

Perceba que a <div> conseguiu calcular corretamente o tamanho da


imagem e adequou seu tamanho a esta

b.

A imagem no mais interfere no elemento com a classe .footer

25.5 Alinhamento

Possvel alinhar os elementos usando algumas tcnicas CSS

Centralizar

Propriedade "margin" com valor "auto"

Esquerda e direita

Propriedade "position" com valor "absolute"

Usando a propriedade "float" com valores "left" e "right"

25.6 Centralizando

Ocorre sobre elementos em bloco

Como visto anteriormente, um elemento em bloco utiliza toda a largura


disponvel e possui uma quebra de linha antes e depois do elemento

286

A margem deve ser definida para a esquerda e direita como "auto" para
centralizar o elemento em bloco

Especifica que as margens devem ser divididas igualmente

Quando as margens possuem o mesmo valor do lado esquerdo e direito o


elemento ser centralizado

.center {
margin: 0 auto;
width:70%;
}

EP:

Centralizando

1.

Crie um novo arquivo HTML

2.

Adicione uma <div> com <span> e lorem ipsum:


div.center>span[title=$]*2>lorem

3.

Indente o cdigo de forma adequada leitura

4.

No arquivo CSS, adicione o estilo a seguir:


.center {
margin: auto;
width: 500px;
background-color: salmon;
}

5.

Salve e teste
a.

6.

Redimensione a janela e verifique se alguma mudana ocorre

Altere o valor da largura para "70%"

287

7.

Salve e teste
a.

8.

Finalmente altere o valor da largura para "100%"


a.

9.

Refaa o teste de redimensionamento


No existe margem disponvel para centralizar o contedo

Retorne o valor da largura para "70%"

10.

Remova o atributo "class" de <div> e atribua ao primeiro elemento <span>

11.

Salve e teste
a.

Perceba que a margem no pode ser calculada para elementos inline,


pois este automaticamente ocupa o espao necessrio para exibio de
seu contedo

12.

Na classe "center" altere a exibio de <span> de "inline" para "block"

13.

Salve e teste

25.7 Outras Tcnicas


http://designshack.net/articles/css/how-to-center-anything-with-css/
http://blog.themeforest.net/tutorials/vertical-centering-with-css/

EP:
1.

Outras Tcnicas
Crie diferentes layouts
a.

2.

Utilize cores e ou bordas para marcar cada layout

Redimensione a tela
a.

No deve haver sobreposio de contedo

b.

Estrutura base deve ser mantida

c.

Barras de rolagem devem ser criadas quando necessrias

d.

Opcionalmente pode aumentar quando redimensionado

288

3.

Layouts:

4.

Soluo:
http://www.primarycss.com/
289

290

Captulo 26: Tipos de Layout


26.1 Fixo

So aqueles nos quais o valores so definidos de forma fixa

Valor que no recalculado quando a janela redimensionada

Barras de rolagem so criadas quando o tamanho for inferior ao definido

width: 1280px;
height: 768px;

EP:

Fixo

1.

Crie um novo arquivo de nome layout_fixed.html

2.

Adicione 5 <div> com <h1>


a.

Instruo do Emmet deve ser feita em uma nica linha

(div.head>h1{Head})+(div.leftBar>h1{Left})+(div.content>h1{Conte
nt})+(div.rightBar>h1{Right})+(div.footer>h1{Footer})
3.

No CSS:
a.

Vincule o arquivo de CSS Reset

b.

Crie todas as classes necessrias

c.

Coloque uma cor de fundo diferente para cada classe

d.

Flutue a esquerda as classes .leftBar, .content e .rightBar

e.

Na classe .footer utilize a propriedade clear com valor left

f.

Centralize o contedo com margem automtica e 1280 pixels de largura

4.

Salve e teste

5.

Configure as seguintes alturas:


a.

Cabealho com 200 pixels de altura

b.

Rodap com 100 pixels de altura

c.

Barras e contedo com 600 pixels de altura

291

6.

Salve e teste

7.

Configure as seguintes larguras:

8.

a.

Barras com 256 pixels de largura

b.

Contedo com 768 pixels de largura

Salve e teste
a.

Redimensione a janela e perceba que no ocorre qualquer alterao nas


larguras e alturas dos elementos

b.

Barras de rolagem so criadas quando o tamanho da janela inferior aos


tamanhos estabelecidos

26.2 Lquido

Tambm chamado de flexvel, elstico, relativo

Os valores so definidos de forma que recalcule ou reposicione o elemento

Valores definidos em percentual

Utilizao da tcnica de ancoragem com posicionamento absoluto

html, body {
width: 100%;
height: 100%;
}
div {
left: 30px;
right: 10%;
}

292

EP:

Lquido

1.

Duplique o arquivo do EP anterior para o nome de liquid.html

2.

Apague todas as instrues CSS de largura, altura e margem existentes


a.

Mantenha as instrues que contiverem float e clear

3.

Salve e teste

4.

Adicione as seguintes larguras:

5.

a.

.leftBar e .rightBar com largura de 20%

b.

.content com largura de 60%

Salve e teste
a.

Perceba que .head e .footer no definem qualquer valor de largura e


por serem do tipo block ocupam toda a rea disponvel na tela

b.

Redimensione a tela e verifique se os tamanhos so alterados com base


no percentual de largura disponvel

6.

7.

Adicione altura aos elementos:


a.

Cabealho com 20% altura

b.

Barras e contedo com 70% de altura

c.

Rodap com 10% de altura

Salve e teste
a.

Perceba que os valores de altura no foram respeitados

b.

O navegador no consegue calcular sem a definio de tamanho para a


janela

8.

Adicione o seguinte CSS:


html, body {
width: 100%;
height: 100%;

9.

}
Salve e teste
a.

Redimensione a janela e o tamanho do elemento poder ficar muito


pequeno, o que pode comprometer o contedo destes

293

26.3 Hbrido

Combina as caractersticas do fixo com o lquido

Permite estabelecer valores mximos e ou mnimos de largura e altura

Barras de rolagem so criadas automaticamente quando o valor do limite


mnimo for atingido

Redimensionamento do elemento ocorre dentro dos limites estabelecidos


body {
min-width: 1280px;
min-height: 768px;
}
bars {
width: 20%;
}
content {
width: 60%;
}

EP:

Hbrido

1.

Duplique o arquivo do EP anterior para hybrid.html

2.

Adicione o seguinte CSS:


body {
min-width: 1280px;
min-height: 768px;
}

3.

Salve e teste
a.

Redimensione a tela e perceba a criao das barras de rolagem


294

26.4 Responsivo

Se reconfigura quando a janela redimensionada e a condio for satisfeita

Reconfigurao pode ser apenas dos valores, como pode mudar o layout
completamente

Ex: mudar de um layout na horizontal para vertical quando a janela


muito pequena

EP:
1.

Responsivo
Abra o endereo abaixo:
http://stephencaver.com/

2.

3.

Redimensione a tela e perceba as mudanas de :


a.

Posicionamento

b.

Layout

c.

Tamanhos

Clique em um dos itens e refaa o teste

295

296

Captulo 27: Layout Responsivo


27.1 Sobre

Permite criar diversos estilos conforme a condio estabelecida

Cria uma condio que deve ser satisfeita para o estilo ser aplicado

Definido atravs da instruo "media query"

27.2 Media Query

Utilizando "media query" possvel definir estilos diferentes para diferentes


mdias

Pode ser aplicado para as instrues "at rule":

@media

@import

Instruo pode ser composta por:

"at rule"

"media type"

"media feature"

"logical operator"

O CSS aninhado ser aplicado apenas se a condio for satisfeita


@media print {
body { font-size: 12px; }

}
Tambm possvel usar a "tag" <link> com o atributo "media"

O arquivo CSS da "tag" <link> ser baixado independente da condio


ser satisfeita ou no

A aplicao de seus estilos respeitam a condio

<link rel="stylesheet" media="print" href="print.css" />

297

27.2.3

Media Type

Valor opcional declarado logo aps a instruo "@media"

Caso nenhum valor seja especificado, ser aplicado a todos os tipos de mdia

Exceto se usados os operadores lgicos "not" ou "only"

@media {
body { font-size: 20px; }
}

Valores aceitos so:

all

braille

embossed

handheld

print

projection

screen

speech

tty

tv

@media screen {
body { font-size: 20px; }
}

@media tv {
body { font-size: 30px; }
}

298

Mltiplas condies podem ser criadas para um mesmo estilo

Basta separar as condies por vrgula

@media tv, projection {


body { font-size: 30px; }
}
27.2.4

Media Features

Maioria das caractersticas da mdia podem ser prefixadas com os valores "min-"
ou "max-"

Expresso menor igual ou maior igual

Caso nehuma seja especifica o valor ser sempre "true"

Exceto se o valor resultante for zero

https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Media_queries#Media_features

<link
rel="stylesheet"
media="(max-width: 800px)"
href="example.css"
/>
---------------------------------------<style>
@media (max-width: 800px) {
.hideSideBar {
display: none;
}
}
</style>

299

Existem muitas combinaes possveis

https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Media_queries#Media_features

Os valores mais usados so:

width | min-width | max-width

height | min-height | max-height

aspect-ratio | min-aspect-ratio | max-aspect-ratio

monochrome | min-monochrome | max-monochrome

resolution | min-resolution | max-resolution

Existem muitos valores possveis

https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Media_queries#Media_features

Os valores mais usados so:


Largura

width

min-width

max-width

Altura

height

min-height

max-height

Resoluo

resolution

min-resolution

max-resolution

Aspect Ratio

aspect-ratio

min-aspect-ratio

max-aspect-ratio

300

EP:
1.

Media Query
Baixe as imagens:
http://pastebin.com/UwQ3CLY9

2.

Crie a estrutura "responsive" no seu projeto com os arquivos HTML e CSS


vinculados

3.

Adicione as imagens a este projeto na estrutura adequada

4.

Crie um elemento <div> com classe simpsons:


div.simpsons

5.

Configure a classe simpsons para:


height: 768px;
width: 1024px;
margin: auto;
background-color: black;

6.

Salve e teste

7.

Adicione o seguinte cdigo CSS:


@media screen {
#simpsons { background-image: url(images/1.jpg); }
}
@media print {
#simpsons { background-image: url(images/6.jpg); }
}

8.

Salve e teste a impresso

301

27.3 Operadores Lgicos

Permitem criar condies mais complexas

O estilo ser aplicado apenas se toda a instruo for satisfeita

Diferente da separao por vrgula, na qual define mltiplas condies

O estilo ser aplicado mesmo se apenas uma da mltiplas instrues for


satisfeita

Usados com mltiplas "media features"

Condio pode utilizar operadores:

"and"

"not"

"only"

Os operadores lgicos podem ser combinados entre s

27.3.1

and

Combina mltiplas "media features"


Instruo aplicar o estilo apenas se a mdia tiver o mnimo de "700px" e
a orientao for "landscape

@media (min-width: 700px) and (orientation: landscape) {...}


Possvel combinar e tornar mais especfica
Mesma regra anterior, porm apenas se for TV
@media screen and (min-width: 1280px)

and (max-width: 1366px) { ... }


Ateno para valores separados por vrgula

O estilo ser aplicado se a mdia tiver o mnimo de "700px" e tambm se


for "handheld" em orientao "landscape"

@media (aspect-ratio: 16/9), (orientation: landscape) {...}

302

27.3.2

not

Cria uma negao na instruo

Estilo ser aplicado para qualquer mdia que no for "screen"

@media not screen { }

Sempre possvel efetuar combinaes

Aplicado para todos que no forem "screen" com tela colorida

@media not screen and (color) { }


27.3.3

only

Evita que navegadores antigos apliquem o estilo sem respeitar a "media query"
<link rel="stylesheet"
media="only screen and (color)"
href="example.css" />

27.4 Instruo Completa

303

EP:
1.

Operadores Lgicos
No mesmo arquivo do EP anterior
a.

2.

Comente ou remova apenas o cdigo CSS de "media query"

Adicione mais uma instruo CSS


@media screen and (min-width: 950px) {
#simpsons { background-image: url(images/1.jpg); }

3.

}
Salve e teste
a.

Redimensione a janela para menos de "950px"

b.

Utilize o Chrome Developer Tools e verifique a informao com o


tamanho da janela no canto superior direito, enquanto a redimensiona

c.

Perceba que a imagem mantida apena enquantoa condio da media


query for satisfeita, caso contrrio utilizar o CSS fora da instruo

4.

Crie as "media queries" para os seguintes tamanhos e imagens

5.

a. max-width: 950px com 2.jpg


b. max-width: 900px com 3.jpg
c. max-width: 850px com 4.jpg
d. max-width: 800px com 5.jpg
e. max-width: 750px com 6.jpg
Salve, teste e redimensione a janela

6.

Cdigo deve ficar similar ao trecho abaixo:


@media screen and (min-width: 950px) {
#simpsons { background-image: url(images/1.jpg); }
}
@media screen and (max-width: 950px) {
#simpsons { background-image: url(images/2.jpg); }
}
@media screen and (max-width: 900px) {
#simpsons { background-image: url(images/3.jpg); }
}

304

You might also like