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

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

Já tem uma conta?

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

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

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

Já tem uma conta?

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

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

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

Já tem uma conta?

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

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

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

Já tem uma conta?

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

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

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

Já tem uma conta?

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

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

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

Já tem uma conta?

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

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

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

Já tem uma conta?

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

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

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

Já tem uma conta?

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

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

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

Já tem uma conta?

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

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

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

Já tem uma conta?

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

Prévia do material em texto

Aprenda a construir com menos 
tempo e esforco layouts para web
Dedico este eBook a todos os Galuchos, 
forma carinhosa que uso para chamar 
os seguidores do Chief of Design. 
Por me inspirarem a fazer duas coisas 
que amo: criar e comunicar.
E também as pessoas que tem câncer e 
precisam de ajuda. Que esse pequeno 
gesto lhes ajude um pouco e que tam-
bém inspire outros a fazerem o mesmo.
HTML 5: a evolução! ���������������������������������������������������������������������������������������������������������������������������������������������������������������� 103
As diferenças entre o XHTML e o HTML5 �������������������������������������������������������������������������������������������������������������������������������� 107
<!DOCTYPE html> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������� 108
Definição das principais novas tags do HTML5 ���������������������������������������������������������������������������������������������������������������������� 112
Diferença entre Section e Article ������������������������������������������������������������������������������������������������������������������������������������������������ 114
O que é CSS? ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� 116
Folha de Estilos em Cascata ����������������������������������������������������������������������������������������������������������������������������������������������� 117
Como funciona o CSS? Parte 1 - Sintaxe ������������������������������������������������������������������������������������������������������������������������� 121
Como funciona o CSS? Parte 2 - Vinculando as folhas de estilos ao documento HTML ������������������������������������ 128
Inline ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� 128
Incorporadas ����������������������������������������������������������������������������������������������������������������������������������������������������������������� 129
Externas ������������������������������������������������������������������������������������������������������������������������������������������������������������������������� 130
Como funciona o CSS? Parte 3 - Tipos de seletores ���������������������������������������������������������������������������������������������������� 136
Como funciona o CSS? Parte 4 - Propriedades mais usadas ���������������������������������������������������������������������� 143
Background ������������������������������������������������������������������������������������������������������������������������������������������������������������������� 148
Formatando textos ��������������������������������������������������������������������������������������������������������������������������������������������������������������� 167
Color ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ 173
Font-family �������������������������������������������������������������������������������������������������������������������������������������������������������������������� 174
Font-weight ������������������������������������������������������������������������������������������������������������������������������������������������������������������ 178
Text-decoration������������������������������������������������������������������������������������������������������������������������������������������������������������ 185
Outras propriedades para estilizar textos ������������������������������������������������������������������������������������������������������������� 187
Sumário
Apresentação ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������10
Ferramentas necessárias para o desenvolvimento �����������������������������������������������������������������������������������������������������22
Afinal, o que é HTML? ����������������������������������������������������������������������������������������������������������������������������������������������������������������26
A evolução do HTML: ����������������������������������������������������������������������������������������������������������������������������������������������������29
W3C������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������29
Metas do W3C e Padrões Web (web standards) �����������������������������������������������������������������������������������������������������30
Tags HTML �����������������������������������������������������������������������������������������������������������������������������������������������������������������������30
Sintaxe HTML ������������������������������������������������������������������������������������������������������������������������������������������������������������������32
Sintaxe das tags em elementos nulos (vazios ou void) ����������������������������������������������������������������������������������������36
Tags entre Tags ���������������������������������������������������������������������������������������������������������������������������������������������������������������37
Conhecendo tags estruturais básicas em um arquivo HTML ������������������������������������������������������������������������������38
Uma forma inusitada de memorizar estas tags ������������������������������������������������������������������������������������������������������42
Indentação �����������������������������������������������������������������������������������������������������������������������������������������������������������������������44
Árvore do documento (hierarquia) �����������������������������������������������������������������������������������������������������������������������������44
Tags mais usadas em todos os HTMLs ������������������������������������������������������������������������������������������������������������������������������47
(Utilizando o Princípio 80/20) ������������������������������������������������������������������������������������������������������������������������������������������������47
<div> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������49
<p> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������52
<ol>, <ul> à <li> ����������������������������������������������������������������������������������������������������������������������������������������������������������������55
<img> ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������59
<span> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������71
<h1> à <h6> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������76
Codificação do site Galucho ������������������������������������������������������������������������������������������������������������������������������������������������ 348
7.1 - Montara estrutura HTML comum em todas as páginas do site dentro da página modelo ����������������������� 350
O corpo do site ������������������������������������������������������������������������������������������������������������������������������������������������������������� 350
O topo ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������� 351
O menu de navegação ������������������������������������������������������������������������������������������������������������������������������������������������ 353
A área que abriga o logo do site ����������������������������������������������������������������������������������������������������������������������������� 353
A área que abriga o slogan ���������������������������������������������������������������������������������������������������������������������������������������� 354
O Box de conteúdo ������������������������������������������������������������������������������������������������������������������������������������������������������ 354
O Rodapé ����������������������������������������������������������������������������������������������������������������������������������������������������������������������� 355
7.2 - Estilizar, com folhas de estilo, a estrutura padrão do site para resoluções menores que 480 pixels ����� 358
A “body” e o corpo do site ����������������������������������������������������������������������������������������������������������������������������������������� 359
O topo ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������� 363
O Box de conteúdo ������������������������������������������������������������������������������������������������������������������������������������������������������ 377
7.3 - Estilizar a estrutura para resoluções de no mínimo 480 pixels ������������������������������������������������������������������������ 384
O topo ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������� 392
7.4 - Estilizar a estrutura para resoluções de até no mínimo 767 pixels ����������������������������������������������������������������� 396
O topo ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������� 396
O rodapé ������������������������������������������������������������������������������������������������������������������������������������������������������������������������ 402
7.5 - Estilizar a estrutura para resoluções de até no mínimo 991 pixels ����������������������������������������������������������������� 404
Considerações importantes ������������������������������������������������������������������������������������������������������������������������������������������������ 189
Box Model �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� 205
Padding �������������������������������������������������������������������������������������������������������������������������������������������������������������������������� 216
Diferenças entre margin e padding ������������������������������������������������������������������������������������������������������������������������� 217
Border ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������� 219
Box-model (Exemplo completo) ������������������������������������������������������������������������������������������������������������������������������ 223
Como funciona o CSS? Parte 4.5 - Outras propriedades importantes ��������������������������������������������������������������������� 231
Position, top, right, bottom e left ����������������������������������������������������������������������������������������������������������������������������� 231
Z-index ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������� 245
List-style ������������������������������������������������������������������������������������������������������������������������������������������������������������������������ 251
Float �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� 259
Box-sizing �������������������������������������������������������������������������������������������������������������������������������������������������������������������� 270
Clear ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ 277
Display ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������� 281
Max-width, min-width, max-height e min-height ������������������������������������������������������������������������������������������������ 304
Box-shadow ������������������������������������������������������������������������������������������������������������������������������������������������������������������ 320
Text-shadow ����������������������������������������������������������������������������������������������������������������������������������������������������������������� 324
Introdução ao Design Responsivo ������������������������������������������������������������������������������������������������������������������������������������ 329
Proposta para a construção de site ��������������������������������������������������������������������������������������������������������������������������������� 341
Estrutura do site ��������������������������������������������������������������������������������������������������������������������������������������������������������� 343
Wireframe ��������������������������������������������������������������������������������������������������������������������������������������������������������������������� 344
7.6 - Salvar cópias do modelo para construção das Páginas Home e Portfólio ���������������������������������������������������� 406
7.7 - Completar o restante dos códigos HTML da Home Page ���������������������������������������������������������������������������������� 411
7.8 - Finalizar a estilização da Home Page para resoluções menores que 480 pixels ����������������������������������������� 415
Estilizando o slideshow���������������������������������������������������������������������������������������������������������������������������������������������� 416
Estilizando o texto da missão do site ��������������������������������������������������������������������������������������������������������������������� 421
Estilizando a galeria de imagens ����������������������������������������������������������������������������������������������������������������������������� 422
7.9 - Finalizar a estilização da Home Page para resoluções de até no mínimo 480 pixels ��������������������������������� 424
7.10 - Finalizar a estilização da Home Page para resoluções de até no mínimo 767 pixels ������������������������������ 426
7.11 - Finalizar a estilização da Home Page para resoluções de até no mínimo 991 pixels ������������������������������ 429
7.12 - Completar o restante dos códigos HTML da página de portfólio ������������������������������������������������������������������ 432
7.13- Finalizar a estilização da página de portfólio para resoluções menores que 480 pixels ������������������������� 438
7.14 - Finalizar a estilização da página de portfólio para resoluções de até no mínimo 481 pixels ����������������� 444
7.15 - Finalizar a estilização da página de portfólio para resoluções de até no mínimo 767 pixels ���������������� 445
7.16 - Finalizar a estilização da página de portfólio para resoluções de até no mínimo 991 pixels ����������������� 446
O mundo começa agora. Apenas começamos... ����������������������������������������������������������������������������������������������������������� 448
Referências Bibliográficas ��������������������������������������������������������������������������������������������������������������������������������������������������� 452
Agradecimentos ��������������������������������������������������������������������������������������������������������������������������������������������������������������������� 456
Arquivos e exercícioisutilizados no ebook ��������������������������������������������������������������������������������������������������������������������� 457
Sobre o Autores - David Arty ����������������������������������������������������������������������������������������������������������������������������������������������� 459
Sobre o Autores - Ed Francisco ������������������������������������������������������������������������������������������������������������������������������������������ 460
CLIQUE AQUI
ou acesse www.ebookhtmlcss.com/video
Conheça o nosso curso em vídeo de HTML & CSS 
avançado: CSS2, CSS3, CSS Flexbox e CSS Grid
http://www.ebookhtmlcss.com/video
http://www.ebookhtmlcss.com/video
10 11
Estamos no século da informação, da internet, da tecnologia.
Tudo no mundo muda muito rápido e tudo mudou principalmente nos últimos 20 anos. E a In-
ternet e a WEB propiciaram boa parte dessas mudanças em todos os aspectos. 
Tudo hoje em dia, praticamente, gira em torno da internet. Usamos a internet para tudo: comprar 
roupas, alimentos, falar com algum parente distante, pagar contas, chamar táxi e etc.
Essa mudança afetou todas as áreas inclusive, claro, a do trabalho. Novas profissões começaram 
a “bombar” e outras praticamente sumiram, principalmente quando se trata das áreas de comu-
nicação e informação. 
E hoje em dia falar de comunicação sem levar em conta a WEB é um sacrilégio.
 
Por isso a internet demanda muita mão de obra em todas as partes do processo: desde o design, 
até o atendimento de suporte. Eu comecei a trabalhar por causa dessa demanda. Eu nasci profis-
sionalmente, praticamente na web.
 
Essa demanda está há muito tempo aquecida e por isso muita gente quer entrar para surfar nessa 
onda. E é muito provável que você aí queira também, não é?
Então se você almeja ser um surfista profissional, surfando nas ondas da web, 
você pode trabalhar como Web Designer, Front-End, Desenvolvedor, etc. Porém 
para isso se tornar realidade uma coisa é certa: terás que saber como funciona a 
web. E a web nasceu, basicamente, com uma linguagem de marcação chamada 
HTML.
Claro que dependendo da profissão escolhida você precisará se especializar em HTML ou no mí-
nimo “saber como funciona”. Ao longo da minha carreira percebi grandes dificuldades das pesso-
as, principalmente, os oriundos do design gráfico, publicidade e criativos em geral, em aprender 
essa linguagem de marcação. Percebi essa dificuldade principalmente quando comecei a minis-
Apresentação
12 13
Por que ler este E-book?
Forneço-te o conhecimento necessário para você criar suas primeiras páginas de internet e in-
terpretar os códigos mais comumente usados.
Você será capaz de ver o que você planejou sendo renderizado nos navegadores e em diferentes 
dispositivos do que jeito que sempre quis. E ainda será capaz de executar a manutenção de sites 
já existentes.
 
E aí você me indaga: Mas como será isso? De que forma pretendes resolver meu problema? 
Qual o diferencial deste E-book?
 
Calma! Logo, logo lhe contarei isso, po-
rém antes quero que reflita algo sobre o 
comportamento humano em relação à 
aprendizagem e em relação à motivação.
Aprendizagem 
Desde que nascemos absorvermos infor-
mações do ambiente externo, muitas de-
las vindas dos nossos pais e pessoas que 
nos cercam.
Desde bebezinhos aprendemos aos pou-
cos a nos comunicar, com alguns erros, 
erros estes corrigidos com o tempo, até 
que chegamos à fase pré-escolar de for-
ma que já conseguimos nos fazer enten-
der.
trar aulas, aos 23 anos, de Web Design.
 
Após lançar o blog Chief of Design essa constatação só aumentou através do “feedback” de vários 
leitores do blog. Por causa disso eu sempre pensei em tentar ensinar HTML/CSS de um jeito di-
ferente do modo comum visto por aí, mas eu relutava em fazê-lo ora seja por questão de tempo, 
ora por pensar que minhas ideias eram ”muito loucas”, e por aí vai…
 
Eu sei que neste momento você pode estar um pouco desconfiado desse novo método, ressabia-
do se irá aprender HTML mesmo... 
 
Mas você gostaria de criar sites de forma mais fácil, né ?
 
Gostaria de ter mais independência para atuar como freelancer e até aumentar a sua renda 
com isso? 
Gostaria de aperfeiçoar o seu currículo e até trabalhar com isso?
Gostaria de não ficar “perdido” quando precisa fazer alguma alteração em um site?
Gostaria de construir seu próprio blog com mais embasamento?
 
Então, deixe essas desconfianças, pois eu trago para você, neste E-book a oportunidade de virar 
o jogo. 
Preparado? Então vamos nessa!
14 15
dade. E como já disse acima, constatei isso ao lecionar aulas em cursos de Web design, no dia a 
dia, no “feedback” do público do Chief através de pesquisas, e-mails e mensagens.
 
Entretanto, você, com a certeza de que o mundo inteiro aprende facilmente, gasta sua energia 
tentando uma, duas, três e mais algumas vezes sem sucesso e cai na armadilha da desmotivação. 
Daí para não se passar de “burro” é preferível arrumar uma desculpa e desistir, reforçando o mito 
que aprender HTML é fácil.
 
Primeiro é que não existe essa de “burro”. Segundo é que as pessoas não são iguais. Sendo assim 
o que é fácil para um, pode não ser para outros. E para encerrar, se você já teve contato alguma 
vez com HTML e CSS, é bem provável que você teve a falsa percepção que é tudo muito compli-
cado e o que você sentiu de verdade, na sua percepção, é que essas linguagens são um saco.
 
Só a verdade não é bem essa. Pelo contrário meu amigo, Galucho! Aprender HTML e CSS é muito 
legal, desde que a forma que for passada para você não seja tão somente uma receita de bolo 
mecânica e desmotivadora que ocupe sua memória, não te transmita significados e te canse a 
ponto de que no dia seguinte você não se lembre de nada.
 
Vou te mostrar que é possível enxergar e mesclar formas diferentes de entender questões.
Pense comigo: 
As pessoas podem ser motivadas ao aprendizado por métodos diferentes. 
Algumas aprendem linguagens apenas repetindo o que um tutor fornece e isso 
basta para que elas achem o conteúdo fácil. Já outras precisam de simbologias 
e significados que se relacionem com um conhecimento prévio para que o con-
teúdo seja absorvido facilmente.
 
Consegues enxergar isso?
 
Tendo explicado as questões sobre aprendizagem e motivação, chegou a hora de te falar o que 
este livro propõe e como a proposta se apresentará.
Lógico que nesta fase estamos longe da pronúncia perfei-
ta, porém já temos fluência e até então nos comunicamos 
facilmente sem sermos ainda apresentados à gramática, 
ou seja, para fazer-se entender você precisa ter fluência na 
Língua Portuguesa e não necessariamente ser um letrado. 
Então anota aí: 
Para aprender construir suas primeiras páginas 
de internet você precisará ter fluência nas lin-
guagens HTML e CSS. 
Mas a frente de explico como isso é possível.
Motivação
 
Sabemos que muitas pessoas tem facilidade em aprender 
linguagens para construção de sites. Isto é fato. 
O problema é que estatal “facilidade” já se tornou um mito 
na web que pode parecer absurdo questioná-la. Conse-
quentemente este mito já se impregnou na mente de mui-
tos através da comunidade web.
 
Isto é uma crença que cada vez mais pertence ao imagi-
nário coletivo de quem trabalha com isso. Basta digitar no 
Google “HTML é fácil” e temos 167 milhões de resultados. 
Fica difícil apostar que não. Concorda?
 
Só que na verdade muitas pessoas não tem essa tal facili-
1716
Isso quer dizer também que 80% das ações (a grande 
maioria) que você se mata executando te leva para me-
nor parte dos resultados. Que cansativo, né?
Essa relação 80/20 não é precisa, é algo aproximado.
Agora tente observar em nosso universo prático. Por 
exemplo, uma empresa de produtos de limpeza que tem 
uma gama enorme de produtos, certamente somente 
cerca de 20% destes produtos estão relacionados com os 
80% de lucro da empresa. Sacou?
 
A gente não quer que você, que está começando agora, 
fique se matando com 80% de sobrecarga de informação 
que só te trará 20% dos resultados.
Por isso este livro foca na melhor informação (os tais 
20%, se lembra?) para que você tenha mais tempo livre 
e mais resultados. Consequentemente com este tempo 
livre você pode descansar a mente e reempregar em ou-
tras atividades.
 
Reafirmo que uma das propostas do livro é focar nos fun-
damentos que trazem efetivamente a maior parte dos 
resultados, que já podem ser aplicados em poucos dias 
até que lhe traga a “fluência” necessária para assumir seus 
primeiros projetos. 
É um atalho para seu aprendizado. Ok?
 
Acredito que só de saber que você trabalhará com o 
que realmente trará resultados efetivos já é algo muito 
Neste livro proponho que você se jogue efetivamente no mundo prático e não fique aguardando 
conhecer todos os fundamentos, todas tags, toda a sintaxe e semântica das linguagens só para 
depois você ter a confiança de construir seus sites.
 
Não que não seja importante aprender todas as normas e regras que o HTML e CSS exigem, pelo 
contrário, mas o tempo que você levará para aprender algo que você usará poucas vezes, você 
pode investir nos conceitos mais utilizados. Isso te dará a “fluência” necessária.
 
Aos poucos, quando seus projetos exigirem outros elementos você vai incorporando-os em suas 
habilidades. Como uma criança que vai juntando o quebra cabeça da comunicação. Como o 
motorista, que já habilitado, vai aos poucos ganhando confiança no trânsito. Ele não tem como 
aprender tudo de uma vez, entretanto a cada novo trecho de pista que enfrenta com responsa-
bilidade , ele se tornar um motorista cada vez melhor.
 
Agora, habilitado, sentado no banco do motorista, com o carro na garagem, lendo a surrada 
apostilha de CFC (Centros de Formação de Condutores) pela enésima vez, ninguém chega à 
praia, não é? Isto é “overload” de informação com zero de prática.
 
Este livro te estimulará a não ficar esperando o momento certo para agir. Porque esperar causa 
paralisação e o momento certo nunca chega. 
Não deixe o medo de se sentir incompleto te paralisar! 
Agora vou te mostrar que não é preciso estar 100% pronto para por a mão na massa.
Você conhece o Principio 80/20 de Vilfredo Pareto?
Este princípio se demonstra mais ou menos assim: Cerca de 80% dos resultados que obtemos 
estão relacionados com 20% dos nossos esforços. E o que isso quer dizer? 
Quer dizer, que de todas as ações (100%) que você aplica em algo, 20% delas são responsáveis 
por 80% dos resultados. Que doido!!!
18 19
• Conforme as etapas anteriores forem cumpridas, partiremos para a aplicação prática. Cada 
elemento explicado no conteúdo, seguindo a ordem de apresentação, será demonstrado em 
um layout predefinido. Teremos aqui a oportunidade de praticar e automatizar nossas habili-
dades básicas e fundamentais (os 20%) enquanto trabalhamos em outras mais avançadas.
• Também forneceremos links para os exemplos e para arquivos, onde você poder baixar para 
seu computador e comparar com o que você fez.
• E por fim, pausa para descanso, Galucho! Isso mesmo, descanso. Sabe por quê? 
 Não adianta você passar horas em cima de uma assunto pensando que assim irá aprender mais 
 rápido. O cérebro satura, “a cabeça pesa”... Ele (o cérebro) tem pouca capacidade de absorver 
 novos conhecimentos em grandes períodos de tempo. Por isso precisamos fracionar os estu-
 dos para conseguirmos absorver melhor o conhecimento que adquirimos.
“Você precisa de motivação para aprender HTML/CSS, e não de paciência.”
A fim de melhorar o aprendizado e assimilação do conteúdo doE-book que, por vezes, é bastante 
técnico, inserimos no E-book certos símbolos e gráficos. 
A seguir segue uma descrição de cada um:
Este é o “Chefinho”. E ele está aqui para te ajudar na compreensão do ebook. 
Portanto o nosso chefinho aparecerá em exemplos, dicas e observações im-
portantes. Fique ligado e sempre que ele aparecer e preste atenção. 
motivador, não é mesmo? Mas talvez para alguns ainda não seja o suficiente.
 
Então o que mais proponho apresentar para manter sua motivação em alta durante seus estudos?
Não tem jeito! Em algum momento deste livro você terá que repetir códigos como em uma recei-
ta de bolo. Isto é necessário para que você adquira conhecimentos prévios que te ajudarão nos 
exercícios mais avançados. Porém, sempre que possível, deixaremos esta tarefa mais agradável.
Sabemos que quanto mais repetimos uma tarefa mais ficamos bons nela. A repetição nos serve 
para ganhar um nível mínimo de competência. Mas, fala sério... Ficar repetindo exercícios muitas 
vezes é muito chato. 
Portanto, para não cair no mar de lama da desmotivação que é a grande responsável pelas desis-
tências e pelas desculpas que reforçam o mito que aprender HTML e CSS é fácil (mas pode ser), 
iremos apresentar o conteúdo deste livro da seguinte forma:
• Apresentação da sintaxe para construção dos elementos das linguagens HTML e CSS.
• Sempre que aplicada a sintaxe ela virá acompanhada de uma explicação semântica dos ele-
mentos.
• Sempre que possível, usaremos uma apresentação lúdica dos elementos. 
O cérebro retém informação com mais facilidade enquanto você se diverte, sente algum tipo 
de prazer ou emoção.
• Repetição mecânica dos exemplos. Porém com pouca carga para não cair na armadilha da 
desmotivação (lembra-se?)
• Sempre que possível apresentar os exemplos embutindo as habilidades já adquiridas e soman-
do a experiências, conhecimentos prévios e a outros tipos de associações. Isso faz com que 
nosso cérebro experimente outros contextos de aprendizagem.
20 21
Bom, agora que você já sabe um pouco mais sobre o E-book , espero que tenha uma agradável 
leitura e um aprendizado efetivo. Como reforço eu te peço disciplina e dedicação, OK?
Então, vamos começar a aprendizagem!!!
Seja bem-vindo. :D
Este retângulo trajeado indica que existem informações, notas, links, dicas e 
observações importantes que devem ser lidos dentro do contexto e de imedia-
to para que sejam compreendidos corretamente. Este tipo de retângulo pode 
aparecer tanto na cor vermelha, branca ou azul e com a companhia ou não do 
“Chefinho”. Então, fique atento!
Você pode (deve) reportar possíveis erros que encontrar aqui nesta obra.
Para isso basta mandar um email para contato@chiefofdesign.com.br.
Todos os arquivos usados nos exemplos, de todas as partes, estarão disponíveis 
para você na internet, para que você possa baixá-los e compará-los (sem co-
piar, hein!) com os arquivos que você criou aí na sua máquina. 
Você encontrará esses links ao longo do ebook (nos encerramentos de certos 
tópicos) e também no final, na página de referências.
Ao longo do ebook você pode encontrar alguns links inseridos dentro dos 
conteúdos. Estes links são conteúdos complentares, ao assunto que está sen-
do tratado, para que você possa acessar depois.
Fique atento quando algum código aparecer diretamente nas páginas. 
Dentro dos próprios exemplos, ao invés de conteúdo fictício, podem estar di-
cas que te ajudarãono seu percurso.
<tag>
 <outraTag> 
 DICAS 
 </outraTag> 
</tag>
Um dos pontos fundamentais do ebook é a pausa para o descanso.
Não adiantar ficar horas a fio estudando. Seu cérebro não armazenará tudo 
de uma vez. Estude , mas reserve um tempinho para o desncaso também.
22 23
Antes de começar a colocar a mão na massa, você precisará equipar-se de ferramentas que irão 
auxiliar-te no desenvolvimento dos exercícios, no entendimento dos mesmos e também do con-
teúdo como um todo.
Basicamente precisaremos de um computador (óbvio), um navegador e um editor de texto.
Navegador
Para conferirmos nosso HTML precisaremos fundamentalmente de um navegador (browser) mo-
derno. Não importa o sistema operacional nem o dispositivo.
Mas recomendo que você baixe, pelo menos, os principais navegadores na sua máquina: 
Google Chrome, Mozila Firefox e Internet explorer. 
Ainda podemos também baixar o Opera, o Safari da Apple... 
Mas a escolha é sua. Normalmente o Google Chrome, por usar webkit (motor de renderização) 
assim como o Opera e o Safari, por si só já nos dá um resultado satisfatório.
O mais importante é ter em mente que sempre ao desenvolvemos, precisaremos testar nossos 
sites e aplicações em vários navegadores. Precisamos que nossos projetos suporte os principais 
e/ou ao máximo de navegadores possíveis. Isso se chama “Cross-Browser”.
Ferramentas necessárias 
para o desenvolvimento
24 25
Existem vários softwares com esse fim: 
Dreamweaver, NetBeans, Eclipse, WebStorm, etc. 
Você pode usar qual preferir, qual se sentir mais à vontade.
 
Nos exemplos deste livro usarei o Sublime Text. O Sublime Text é gratuito, leve, tem vários plu-
gins e tem um visual bem agradável. 
Você pode baixá-lo, se quiser, no site:
 
www.sublimetext.com.
Como o principal objetivo é primeiro fazer você ganhar fluência, deixaremos para outra oportu-
nidade o uso de outros softwares de testes e de edição mais avançados.
Com essas ferramentas, citadas acima, em mãos já podemos partir para a próxima fase. 
Vamos lá? :)
Para desenvolver os projetos normalmente uso o Google Chrome e o Firefox, mas isso varia. Eu 
recomendo que usemos, nos exemplos, o Chrome porque já vem com um depurador embutido, e 
vamos precisar de um depurador para nos ajudar, e também por ser um dos mais populares nave-
gadores.
Editor de texto.
Para criar documentos HTML e 
CSS precisamos de um editor de 
texto sem formatação ou algum 
ambiente de desenvolvimento in-
tegrado (IDE). 
IDE são softwares que geralmente 
contém um editor de texto, mais 
um depurador e um gama de re-
cursos e plugins, que podem ser 
WYSIWYG ou não. IDE ajudam, e 
muito, no nosso cotidiano de de-
senvolvimento.
WYSIWYG é uma sigla em inglês 
que significa “What You See Is 
What You Get” ou “O que você vê 
é o que você obtém”. Esse termo é usado para definir softwares onde você já vê o resultado, ou algo 
muito similar, enquanto cria.
Então, podemos usar até o “Bloco de Notas“ se quisermos, todavia é mais interessante usar algum 
editor software específico para isso e que nos ajudará mais no entendimento da matéria, na orga-
nização e otimização dos processos.
26 27
HTML = “HyperText Markup 
Language”
 
OU
Linguagem de 
Marcação de Hipertexto
Afinal, o que é HTML?
28 29
A evolução do HTML:
• 1991 - HTML;
• 1994 - HTML 2;
• 1996 - Surgimento do CSS 1 + JavaScript (veremos mais para frente o que é CSS);
• 1997 - HTML 4;
• 1998 - CSS 2;
• 2000 - XHTML 1;
• 2002 - Tableless;
• 2009 - HTML 5 (Em 2004 surgiu um grupo o WHATWG, em 2011 este junta-se à W3C para con-
solidar o HTML5);
• 2014 - HTML5 (em 28 de outubro de 2014 HTML5 se tornou uma recomendação oficial do 
W3C).
W3C
Fundado em 1994, por Tim Berners-Lee, o W3C (World Wide Web Consortium) é uma organização 
sem fins lucrativos composta por cerca de 400 membros cuja missão é levar a World Wide Web 
ao seu potencial máximo, desenvolvendo protocolos e diretrizes que garantam o crescimento a 
longo prazo da Web.
HTML é uma linguagem de marcação que foi inventada na década de 1990 por um cientista cha-
mado Tim Berners-Lee. 
A finalidade inicial era tornar possível o acesso e a troca de informações, de documentações e de 
pesquisas, entre cientistas de diferentes universidades. 
O projeto inicial tornou-se um sucesso jamais imaginado por Tim Berners-Lee. Ao inventar o 
HTML ele lançou as fundações da Internet tal como a conhecemos atualmente.
O HTML se popularizou através do primeiro browser da história: O Mosaic.
Mosaic - browser desenvolvido por Marc Andreessen na década de 1990. Desde então vários de-
senvolvedores e fabricantes de browsers surgiram utilizando o HTML como base.
O HTML é uma linguagem universal na internet para distribuir informação e conteúdo. Ele é ba-
seado no conceito de Hipertexto, ou seja, ligações/conexões entre elementos como imagens, 
documentos, vídeos, áudios, palavras, etc.
 
O hipertexto é uma forma não linear de distribuir e dispor os conteúdos no meio digital.
Aquilo que você vê quando abre uma página na Internet é a interpretação que seu navegador faz 
do HTML. 
O HTML é a linguagem que usamos para publicarmos conteúdo (texto, imagem, vídeo, áudio e 
etc) na Web.
30 31
vídeo, são inseridos através de tags.
 
Por exemplo, um parágrafo que você encontra em um texto na web é, ou deveria ser, marcado 
com uma tag que faça o navegador identificar o elemento como um parágrafo. Para isso será ne-
cessário de uma tag específica denominada “p”.
Mas chega de teoria e vamos à prática. O que você quer saber mesmo é como é que se faz para 
mostrar o conteúdo nas páginas, certo? Então vamos ao que chamamos de sintaxe, ou seja, a 
forma de montar o código HTML. 
Para isso vamos primeiro entender como se “mexe” com as tags e depois como montar uma es-
trutura HTML básica. Ok?
 
Vamos nessa!
Metas do W3C
• Web para todos.
• Web em qualquer dispositivo.
• Web como uma base de conhecimento.
• Web confiável e segura.
Padrões Web (web standards)
Os Padrões Web são as recomendações do W3C (World Wide Web Consortium), as quais são des-
tinadas a orientar os desenvolvedores para o uso de boas práticas a fim de tornar a web acessível 
para todos.
“Não faça seu site de qualquer jeito Faça certo!!! Utilize os padrões Web.”
Tags HTML
Todo documento HTML é feito a partir de elementos de marcações e estes são formados através 
de tags. Estas marcações definem o tipo de conteúdo e informam ao navegador como ele deve 
ser apresentado na página.
Tags são marcas específicas que marcam delimitando o conteúdo e informando ao navegador 
sobre que tipo de informação se trata (um título, um parágrafo, uma lista). Toda tag contém um 
nome (nome da marca) e este também dá designação ao elemento HTML.
Todo elemento visual que você identifica em uma página web, desde um texto, uma foto ou um 
32 33
Para constituir o elemento HTML precisamos de dois tipos de tags mais o conteúdo. Os dois tipos 
de tags são:
• A tag de abertura que marca o início do elemento: <tag>.
• E a tag de fechamento que marca o fim do elemento: </tag>.
A diferença entre elas é que na tag de fechamento existe uma barra “/”. 
Tudo que estiver contido entre uma tag de abertura e uma tag de fechamento representa o 
conteúdo. E este será processado segundo o comando contido na tag.
Para exemplificar vamos usar o elemento HTML que marca parágrafos.
 
Começamos com a tag de abertura: 
Sintaxe HTML
Já sabemos que todo elemento HTML é formados por tags. As tags tem o seguinte formato:
Começam com um sinal de menor “<”, terminam com um sinal de maior “>” e entre esses sinais 
vai o nome da tag do elemento que queremos inserir em nosso documento.
34 35
E as tags não podem ter espaços entre os sinais de maior para o comando. Ex: < tag>.
As tags podem ser escritas tanto em maiúsculo quanto minúsculo, entretanto por questões de 
estética e também por indicação dos padrões web e boas práticas, recomenda-se todo o uso 
em minúsculo. Exemplo:
<TAG> - válido, mas é não é uma boa prática.<tag> - boa prática.
Resumindo:
Basicamente o código para inserir um elemento HTML segue a lógica apresentada acima, mas 
como toda a regra existe exceções, com as tags não seria diferente! 
 
É o que vamos ver a seguir ao conhecermos os “elementos nulos”. 
<tag>Conteúdo a ser visualizado na página web</tag>
Primeiro inserimos o sinal de menor, em seguida o nome da tag do elemento “parágrafo”. E para 
finalizar, inserimos o o sinal de maior.
Resultado:
Simples assim!
Posteriormente colocamos o conteúdo textual que desejamos apareça no parágrafo. 
Resultado:
E para finalizar colocamos a tag de fechamento. Resultado:
Meu primeiro parágrafo!
Meu primeiro parágrafo!
36 37
Estas são as tags de elementos nulos:
• area,
• base,
• br,
• col,
• hr,
• img,
• input,
• link,
• meta,
• param.
Com o advento do HTML5
foram adicionadas, nesta lista, as tags:
• command,
• keygen,
• source.
Não é preciso que você se preocupe em memorizá-las, Galucho. Foque em saber que elas exis-
tem e como funciona a forma de escrever a sintaxe do código, ok?
Tags entre Tags
Um elemento HTML pode conter outra tag entre suas tags, e quantas forem necessárias. 
Isso define uma hierarquia entre os elementos: o elemento externo pode ser definido como ele-
mento pai e a interno como elemento filho. 
Vejo exemplo:
Sintaxe das tags em elementos nulos (vazios ou void)
Elementos nulos são marcações que só possuem tag de abertura. Elas têm um fechamento 
automático. 
Essas tags não podem conter texto ou elementos aninhados dentro deles, já que não possuem 
tags de fechamento.
Exemplo:
 
<input/> texto - Errado .
<input> texto </input> - Errado.
<input/> - Certo.
Em arquivos XHTML estas tags possuem auto-fechamento, ou seja, a barra (/). 
Já para especificação W3C em HTML5 não necessita de auto-fechamento, apesar de não trazer 
efeito algum ao elemento seu uso. Vamos ver como fica a sintaxe?
Em XHTML: <tag/>
Em HTML: <tag>
38 39
 
Este é o elemento “html” que dá início a estrutura. Você pode notar a presença do sinal de menor 
e maior mais o nome do elemento que forma a tag de abertura. E notar no fechamento que re-
petimos a mesma regra, porém adicionando uma barra antes do nome do elemento.
Agora iremos aplicar o que vimos sobre tags dentro de tags. O elemento “html” englobará todas 
as demais tags que formam um documento HTML. Entenda-se documento HTML como o arqui-
vo que será interpretado pelos navegadores para formar uma página web.
Você digitará entre as tags de abertura e fechamento do elemento HTML as tags de um elemento 
chamado “head”. Ficará da seguinte forma:
Como você já sabe muito bem as tags seguem o modelo de abertura e fechamento. O elemento 
“head” está contido dentro do elemento “html”. Eles são elementos filho e pai respectivamente. 
Esta hierarquia, consideramos como árvore do documento ( assunto que ainda será abordado).
Dando prosseguimento... Agora vamos colocar o terceiro elemento básico que é o “title” entre as 
tags do elemento “head”. E ficará assim:
Vou exemplificar melhor sobre hierarquia depois, 
porque antes precisamos entender uma estrutu-
ra básica de HTML, no tópico a seguir.
 
Conhecendo tags estruturais básicas em um arquivo HTML
Finalmente você mexerá no Sublime Text (ou se preferir outro editor de texto). Agora vamos fazer 
nosso primeiro código. E nele vamos inserir tags HTML fundamentais. Então, abra o Sublime Text 
( ou o seu editor favorito) e vamos começar!
Em qualquer página de internet de qualidade que se preze você encontrará está uma estrutura 
básica de tags. Portanto abra seu editor de texto e inicie um novo arquivo. Iremos usar todos os 
conceitos para construção de tags que vimos anteriormente. Começaremos pela tag raiz de todo 
e qualquer página HTML. Digite:
<tag>
 <outraTag> 
 Conteúdo
 </outraTag> 
</tag>
40 41
Veja a seguir:
Significado das tags usadas:
<html></html>: São tags que delimitam o documento HTML. É a raiz deste documento.
<head></head>: São tags que delimitam o cabeçalho. É onde se encontra outros elementos de 
cabeçalho.
<title></title>: Correspondem ao título que você vê na parte superior do seu navegador (barra 
de ferramentas). São tags contidas dentro do elemento “head” (<head></head>) e que dá o nome 
da página. Além disso elas fornecem um título para a página quando ela é adicionada aos favo-
ritos e para visualização nos resultados de buscas.
<body></body>: Estas tags são responsáveis por mostrar todo o conteúdo de uma página. É o 
“corpo da página”. E é dentro delas que ficam outras tags específicas para inserção de conteúdo 
e de divisão de seções. 
Em seguida entre as tags de abertura e fechamento do elemento “title” coloque um título que 
você deseja para a sua página. Por exemplo: “Minha primeira página web”.
 
E para encerrar a estrutura básica colocaremos um elemento de suma importância em um docu-
mento HTML. Falo do elemento “body”. Ele ficará sempre entre as tags do elemento “html”. 
Entretanto a sua tag de abertura sempre virá após a tag de fechamento do elemento “head”. 
42 43
enquanto você se diverte. E com certeza você não terá que cansar de repetir várias vezes para 
memorizar estas tags, basta se lembrar desta imagem ao lado.
Esta obra de vanguarda (hehe) procura associar os nomes, em inglês, de elementos HTML às 
particularidades que vemos em um indivíduo comum. (associação que outros autores já fizeram 
também, diga-se de passagem.)
Brincando com os elementos ,da forma mais estranha possível, você facilita a fixação. 
Isto vai de encontro com a aprendizagem significativa de David (não, eu!), o Ausubel (grande psi-
cólogo de educação americano). Onde os novos conhecimentos que se adquirem relacionam-se 
com o conhecimento prévio que a pessoa já possui. 
Você pode até não ser ainda “expert” em HTML, porém você sabe o que é um corpo. Esse seu co-
nhecimento prévio que agora, propositalmente, uso para te ajudar.
Fica até mais fácil de você lembrar o elemento “head”, que literalmente significa cabeça, a uma 
cabeça. Tão obvio! Para associar tag body (corpo) usei o restante do corpo do indivíduo. O ele-
mento “title” está dento de head, da cabeça. Associasse então o individuo da imagem verbalizan-
do um título com um balão.
Lógico que isto não se aplica a todo mundo. Uns memorizam repetindo um exemplo, outros as-
sociando a algo já experimentado. 
Quando você estiver definitivamente escrevendo esses códigos não precisará lembrar-se desta 
imagem. Será algo automático e você estará em outro nível onde usará este seu conhecimento 
para associar e absorver conhecimentos mais avançados.
Bom... Você já deve estar entendendo como a montagem do código HTML funciona. Entretanto 
ele está muito bagunçado. No tópico a seguir você vai aprender como a deixá-lo organizado. 
Uma forma inusi-
tada de memorizar 
estas tags
O uso dos elementos: html, 
head, title e body é pratica-
mente “mandatório” para o 
bom andamento do seu códi-
go. Isso quer dizer que sempre 
você estará usando-os. Talvez 
você memorize-os logo de 
cara.
Entretanto pode ser que al-
guns não tenham essa facilida-
de. Para isso nada melhor que 
uma imagem lúdica, somada a 
um pouco de imaginação, para 
fixar o conceito na memória. 
É... Este carinha é quem você 
está imaginando mesmo. (o 
que não faço para te ajudar, 
hein? :D)
Como já disse, na introdução 
deste livro, o cérebro retém in-
formação com mais facilidade 
44 45
Através da indentação fica 
mais fácil identificar um ele-
mento aninhado em outro e 
também a forma como eles 
se relacionam.
 
Para compreendermos este 
relacionamento devemos en-
tender o conceito de árvore 
do documento.
Um conhecimento que é 
absorvido, pela maioria das 
pessoas, é sobre a árvore ge-
nealógica de uma família. 
Usaremos esse conhecimen-
to prévio para explicar o fun-
cionamento da árvore de um 
documento.
Em qualquer família existe o 
grau de parentesco que de-
termina a relação entre seus 
integrantes. 
De forma similar, na árvore 
do documento, os elementos 
da marcaçãose relacionam 
entre si como se relacionam 
os integrantes de uma família.
 
Indentação
Indentação é o ato de indentar. Ele consiste em organizar seu código para que ele fique estetica-
mente agradável e principalmente legível. 
Isto é muito importante para que possamos encontrar determinada informação ou código, quan-
do estamos criando um site ou fazendo sua manutenção. E como fazemos isso?
Basta criar espaços em branco ou usar a tecla “TAB” em nosso código HTML. Precisamente antes 
da tags de aberturas.
Veja no exemplo abaixo:
Árvore do documento (hierarquia)
Como você pode ver, nos exemplos encontrados nos tópicos anteriores, existem elementos den-
tro de outros elementos. Isso é possível através de tags de um elemento que ficam entre as tags 
de abertura e de fechamento de outro elemento. Esse processo de inserir um elemento dentro de 
outro chamamos de “aninhamento.
SEM Indentação COM Indentação
4746
Tags mais usadas em todos os HTMLs 
(Utilizando o Princípio 80/20)
Como já dito neste livro, quando Tim Berners-Lee criou o HTML, a finalidade inicial era trocar 
informações e acessar documentação de pesquisa entre cientistas de diferentes universidades. 
Até então o aspecto das páginas era bastante simples.
Antes disto, toda a informação para leitura era concentrada na mídia impressa. Para um trabalho 
escolar era normal frequentar bibliotecas a procura de livros, revistas, etc.”
Conforme a web foi evoluindo surgiram os primeiros navegadores, portais de notícias, provedo-
res de acesso e serviços de buscas.
 
Com o tempo surgiram outras versões de HTML. Os hardwares e a conexão na internet também 
avançaram. O custo de acesso baixou o que estimulou o crescimento do número de usuários.
 
Sites institucionais eram criados aos montes. E finalmente, no ponto onde eu queria chegar, a 
mídia impressa começou a migrar uma parte de seus esforços ao universo digital para angariar 
seguidores. 
E você deve estar se perguntando: “O que isso tem a ver com as tags mais usadas?”
E eu te digo: Tudo!!! 
Porque as tags mais usadas são aquelas que dão significados a linguagens visuais que encontra-
mos no meio impresso. Hoje em dia uma página web é como fosse um espelho digital de uma 
Tags mais Usadas(20%) = Site HTML(80%)
Para entender, usamos os elementos HTML que já conhecemos até o momento. Existem elemen-
tos HTML pai, filho, irmãos, ancestrais, descendentes, entre outros.
A imagem anterior, que representa a árvore do documento, nos possibilita identificar o relacio-
namento de hierarquia entre os elementos.
Segue o que podemos identificar na nossa árvore:
• O elemento “html” é pai dos elementos “head” e “body”.
• O elemento “title” é filho do elemento “head”. E o inverso, obviamente, “head” é pai de “title”.
• Os elementos “html” e “head” são ancestrais de “title”.
• O elemento title é descendente do elemento “html”.
Depois que estamos acostumados com HTML é possível presumir a hierarquia entre os elemen-
tos simplesmente observando um bloco de notícias com textos, imagens e outros elementos 
visuais em uma página web.
 
Porém, para confirmar, deve sempre conferir o código fonte.
Outra coisa que podemos notar é que além de existir elementos dentro de outros elementos, 
existem aqueles que estão no mesmo nível de hierarquia. Observando os códigos anteriores no-
tamos este nível de hierarquia entre os elementos “head” e “body”.
48 49
E a partir daí você pode ter certeza: Você terá agora duas estratégias poderosas em seu poder 
para construir suas primeiras páginas de internet! São eles:
• O conhecimento prévio sobre a sintaxe de tags HTML;
• O conhecimento prévio sobre as tags estruturais fundamentais, já vistas neste livro, somadas 
as tags mais usadas em páginas web, que iremos apresentar a seguir.
E essas duas estratégias juntas é que proporcionarão os 20% de esforços que resultarão nos 80% 
de resultados. Então o que falta agora é apresentar as tags mais usadas no HTML. 
Você vai se impressionar ao saber como os elementos desses “códigos aterrorizantes”, a primei-
ra vista, são bastante familiares aos elementos visuais que você costuma ver em uma revista ou 
jornal.
Vamos então às tags:
 
<div>
São tags que delimitam blocos de conteúdo. Este bloco serve de contêiner e pode agrupar e ani-
nhar outros elementos (filhos) como; parágrafos, imagens, listas, entre outros. Como também 
estar dentro de outro bloco “div” (elemento pai).
Apesar de não existir representação se-
mântica para esse elemento ele é muito 
usado para dividir seções em uma página 
web.
 
Exemplo:
página de revista. Lógico que não em sua totalidade, o usuário é passivo diante de uma revista 
gráfica. Mas sim, em comparação com uma época jurássica na timeline da web, onde as tags já 
existiam, porém os sites eram abarrotados de frames e layouts estruturados em tabelas, também 
de elementos, navegações e menus em flash ou em javascript, como protagonistas.
Devemos agradecer as empresas de comunicação, as revistas, os jornais, as editoras por aderi-
rem à internet. Isso com certeza não foi o fator mais importante, mas contribuiu para o desenvol-
vimento de tecnologias para produção de conteúdo dinâmico sem espaço para firulas.
Agradecemos também aos pioneiros do HTML por desenvolver elementos que representam ana-
logicamente tudo o que sempre foi usado no meio impresso agora também para web. E a W3C 
por criar os padrões web. 
Agora...Você já notou quais os elementos visuais mais comuns em uma página de revista? 
Só para citar alguns:
• Blocos;
• Parágrafos;
• Listas;
• Imagens;
• Títulos e Subtítulos; 
E é este o conhecimento prévio sobre os elementos visuais que desde a época das primeiras lei-
turas você adquiriu. 
Você lembra quando a sua professora do ginásio dizia: “Pula uma linha, parágrafo…” ( eu espero 
não parecer um “velhaco” relembrando tal passagem).
De lá para cá, você adquiriu esse conhecimento com a escrita, a leitura e até com a diagramação, 
caso trabalhe com isso. E não é por coincidência que esses elementos visuais se encontram e 
estão entre os mais usados do HTML junto com as tags estruturais apresentadas neste livro.
 
50 51
Agora um exemplo prático 
encontrado no Blog Chief of 
Design.
Na imagem ao lado temos 
a seção de um artigo sobre 
User Experience (Recomendo 
que leia depois!). 
Como se trata de uma seção, 
o bloco que agrupa os conte-
údos visuais deste artigo está 
usando o elemento “div”. 
O código foi gerado por um 
Gerenciador de conteúdo 
chamado “Wordpress” que 
inseriu mais 2 Divs aninha-
das (elementos filhos) dentro 
da seção.
DIV (elemento pai): contêiner 
da seção que agrupa todos 
os elementos (títulos, textos, 
imagem).
DIV (descendente): contêiner 
da seção que mostra o nome 
do autor do artigo.
DIV (descendente): contêiner 
da seção que agrupa os ele-
<html>
 <head>
 <title>
 Minha primeira página web
 </title>
 </head>
 <body>
 <div>Bloco 1</div>
 <div>Bloco 2</div>
 </body>
</html>
Abra seu editor e digite estas linhas de código acima, salve como o nome minha-primeira-pagi-
na-web.html e depois abra o 
arquivo em seu 
navegador. 
Agora será possível ver algo 
na página, como na imagem 
abaixo:
Nota: O aspecto visual de alguns elementos HTML 
só são definidos através de estilos CSS que, para fins 
didáticos, não está sendo aplicado neste exemplo.
http://chiefofdesign.com.br/user-experience/
http://chiefofdesign.com.br/user-experience/
52 53
Agora salve, veja no navegador e…
...Decepção total! Que zica é essa?
 
De onde surgiram estes caracteres estranhos?
Pois bem! Sem motivo para pânico caso isso tenha acontecido com você. Se não aconteceu, 
ótimo. Entretanto é bom saber com agir nesses casos. Vamos tomar duas ações:
Primeira ação:
Existe uma tag denominada “meta”(meta tags). Ela fornece informações importantes sobre o 
documento HTML. 
Trataremos dela de forma mais completa em outro tópico. Por enquanto é importante que você 
saiba que ela também é responsável por informar o formato de codificaçãode caracteres. 
Portanto para deixar a codificação do nossa página do jeito que queremos você deve inserir logo 
após a tag de abertura do elemento “head” o seguinte código:
mentos HTML que geram os parágrafos do texto do artigo e a imagem.
<p>
Estas tags já foram apresentadas a você, elas delimitam parágrafos, elementos em abundância 
tanto na web quanto na mídia impressa.
Vamos aproveitar incrementando um pouco mais o código do arquivo minha-primeira-pagina-
-web.html. Insira um parágrafo entre as tags dos dois elementos “div”, como a seguir:
<html>
 <head>
 <title>Minha primeira página web</title>
 </head>
 <body>
 <div>
 <p>Este é um parágrafo que está inserido dentro do elemento HTML “div” 
 (primeiro bloco desta página). 
 Este parágrafo é descendente do elementos “div”, “body” e “html”.</p>
 </div>
 <div>
 <p>Este é um paragráfo do segundo bloco da página. 
 Nele eu posso colocar um texto que complemente o assunto
 tratado no bloco anterior.</p>
 </div>
 </body>
</html>
OBS: Leia os textos em todos os códigos
de exemplos, pois possuem dicas!
54 55
Agora que a codificação está OK, podemos prosseguir.
 
Enquanto houver a necessidade de incluir textos e consequentemente incluir mais parágrafos 
basta usar o elemento HTML “p”. Veja no exemplo anterior como existem mais de um parágrafo.
Para continuar com as tags mais usadas falaremos de agora não só de um elemento HTML e sim 
de um grupo que trabalhando juntos formam as famosas listas. 
<ol>, <ul> e <li>
Este conjunto de tags são usadas para marcar conteúdo em listas. 
Todo o conteúdo em que você precisa exibir, uma sequência, um procedimento, ou uma relação 
de elementos de um tema comum podem ser consideradas listas.
Exemplos:
• Sequência de preparo de uma receita;
• Lista de planetas do sistema solar;
O código da página , agora, então ficará assim:
<html>
 <head>
 <meta charset=”UTF-8”>
 <title>Minha primeira página web</title>
 </head>
 <body>
 <div>
 <p>Este é um parágrafo que está inserido dentro do elemento HTML “div” 
 (primeiro bloco desta página). Este parágrafo é descendente do
 elementos “div”, “body” e “html”.</p>
 </div>
 <div>
 <p>Este é um paragráfo do segundo bloco da página. Nele eu posso colocar um 
 texto que complemente o assunto tratado no bloco anterior.</p>
 </div>
 </body>
</html> 
Segunda ação:
Antes ou, dependendo do seu editor HTML preferido, na hora de salvar seu documento, é bom 
se certificar que ele esteja configurado para codificação UTF-8. No editor que sugerimos (Subli-
me Text) basta na hora de salvar escolher a opção “Save with Encoding” e em seguida escolher a 
opção “UTF-8”. Vamos ver o resultado?
<meta charset=”UTF-8”>
56 57
Listas não ordenadas:
São poucos os sites que não possuem uma lista não ordenada, pois se trata de um elemento 
importante para construção de menus e outros tipos de navegação que falaremos mais à frente. 
Mas está é uma função que é executada com outros elementos HTML. A grande função das listas 
não ordenadas é listar itens de forma mais livre, sem o rigor de ordenamento encontrado nas 
listas ordenadas.
As tags para determinar este tipo de lista são <ul></ul>. O elemento HTML “ul” vem do inglês 
Unordered list (lista não ordenada). Para entendermos melhor a diferença entre o elemento HTML 
“ul” e o “ol” basta imaginar a descrição de uma receita de bolo, por exemplo. 
Para apresentar os ingredientes não precisa de ordem então usamos “ul”, já para apresentar o 
preparo do bolo é indicado usar “ol”, pois é preciso seguirmos uma sequência lógica. Não que 
você seja obrigado, com uma faca no pescoço a seguir esta lógica. No dia a dia com certeza você 
usará mais “UL” do que “OL”.
E existem sites que só usam de forma livre “ul” onde poderia ser “ol”. Porém entenda quando é 
semanticamente mais apropriado usar um ou outro. Assim como o elemento HTML “ol”, o “ul” 
necessita de trabalhar em conjunto com as tags filhas <li></li> para surtir efeito.
 
• Lista de com tipos de programas para editar imagens.
• Lista de itens de navegação do seu site.
E essass listas podem ser ordenadas ou não ordenadas.
Vamos conferir?
Listas ordenadas: 
As listas ordenadas enumeram, ou dispõem em ordem, os elementos apresentados, e são 
marcados pelas tags <ol></ol>. O elemento HTML “ol” vem do inglês ordered list (lista orde-
nada). E é apropriada para aplicar as listas com elementos que apresentam uma sequência a 
seguir, como um procedimento, por exemplo. Por isso o motivo de enumerar os elementos. 
Porém esta tag só define o tipo de lista e não tem efeito algum se não trabalhar em conjunto com 
as tags filhas <li></li>.
O elemento HTML “li” (list item) é o responsável por apresentar cada elemento, ou se preferir cha-
mar de outro jeito, item da lista. Vamos exemplificar adicionando mais códigos a nossa página 
minha-primeira-pagina-web.html:
<ol>
 <li>Eu sou o primeiro item desta lista ordenada e posso ser usada como o primeiro item a
 seguir de um sequência. Por exemplo, o primeiro ingrediente a usar em uma receita 
 culinária;</li>
 <li>Eu sou o segundo item a seguir desta lista ordenada;</li>
 <li>Eu sou o terceiro e último item a seguir desta lista ordenada.</li>
</ol>
Agora ao visualizar no navegador veja que o os itens foram organizados numericamente.
Você não precisa fazer esta tarefa de forma manual. Veja abaixo:
58 59
<img>
Este é um elemento nulo. Você lembra do conceito? (Senão lembra volte na página 36).
O <img> é responsável por marcar imagens e através de alguns atributos adicionais informar ao 
navegador em que caminho se encontra a imagem, em que tamanho ele deve ser inserido na pá-
gina, especificar um título e também um texto alternativo para ser exibido quando a imagem não 
for encontrada no caminho especificado ou para os deficientes visuais que usam leitores de tela. 
Muita informação, não é? Calma, Galucho, que já vamos explicar cada detalhe.
Primeiro vamos a sintaxe, por partes.
Caminho da imagem:
Antes de qualquer coisa é importante saber que as extensões de arquivos de imagens comuns 
em páginas web são o jpg, o png e o gif. E outro conceito importante, a saber, é que elementos 
HTML podem possuir atributos.
Atributos são comandos extras a um elemento. Cada atributo possui um nome e um valor e são 
inseridos dentro da tag de abertura. Uma tag pode ter um ou mais atributos. No caso da tag 
<img> podem ser usados mais que um atributo.
Simulando uma tag com atributos temos:
Voltando a nossa tag <img>, o caminho da imagem é o endereço (URL = Localizador uniforme de 
recursos) indicado pelo atributo “src” do elemento HTML “img” onde o navegador deve localizar 
o arquivo de imagem. Para isso são necessários os seguintes itens:
<tag nome-do-atributo=”valor-do-atributo”></tag>
Então siga o mesmo procedimento anterior, mas ao invés de <ol> utilize <ul>. 
Vamos ver como fica?
Se você usa o editor de texto Microsoft Word ou similar (conhecimento prévio), nele você tem 
a opção de definir as listas ordenadas resultando em “bullets”, esses símbolos na frente de cada 
ítem da lista. Com o HTML isso ocorre automaticamente. Entretanto existem listas que não apa-
recem estes símbolos, como em muitos menus por exemplos.
Quando você perceber isso saiba que é devido a uma escolha do desenvolvedor do site que atra-
vés de um código de estilo CSS, optou por ocultá-los.
Existem outras tags usadas para listas de definição, todavia como elas não estão entre as mais 
usadas partiremos para outro elemento. 
Desta vez falaremos sobre o elemento responsável por inserir imagens em sites.
Sigam-me os bons! :D
60 61
Observações importantes:
• Em arquivos XHTML o auto-fechamento é feito na tag de abertura (uso da barra):
 <img src=”arquivos/imagens/pato.jpg” />
• É imprescindível que não existam erros de digitação no caminho da imagem, pois isso acarre-
tará no que é chamadode “link quebrado”. E a imagem não aparecerá.
• Da mesma forma o caminho da imagem deve estar correto para imagem aparecer no site.
Caso seu arquivo de imagem esteja dentro de um diretório que não for o mesmo do arquivo 
HTML deve-se colocar o caminho, com os diretórios internos no atributo “src”, até a imagem.
• img : é o nome da tag do elemento;
• src= : significa search (localizar). Indica a url (endereço-caminho) onde está o arquivo 
 de imagem;
• “ “ : contém o endereço da imagem. O que estiver entre aspas é nome do caminho da imagem. 
Este caminho pode ser formado só pelo nome do arquivo + a extensão do arquivo de imagem 
(jpg, png, gif). Tipo:
 “nome-do-arquivo.jpg”;
 Ou em conjunto com um diretório, por ex: “pasta-de-imagens/nome-do-arquivo.jpg”;
 Ou com conjunto de diretórios, por ex: 
 “arquivos-do-site/pasta-de-imagens/nome-do-arquivo.jpg”;
Analisando todo caminho da imagem conclui-se que:
<img src=”caminho onde se encontra o arquivo de imagem 
(nome(s) do(s) diretório(s) e/ou nome do arquivo) + um ponto 
+ extensão do arquivo de imagem”>
Exemplo de inserção de uma imagem:
<img src=”arquivos/imagens/pato.jpg”>
Veja como fica o resultado no navegador.
62 63
Exemplo 3:
Existirá momentos que a imagem que você quer inserir, não sei o porquê, está em um diretório 
um nível acima da onde se encontra o arquivo HTML e você quer chamá-lo via código. 
Então, como proceder?
Quando você começar a criar seus projetos aconselho que organize, na medida do possível, suas 
pastas e arquivos de seus sites no mesmo diretório ou em diretórios em níveis abaixo de onde 
se encontra seus arquivos HTML, porque isso facilita seu trabalho. Porém quando não tiver jeito 
proceda da seguinte forma: insira no atributo “src” dois pontos e uma barra antes do arquivo de 
imagem.
Segue o comando:
<img src=”../arquivo-de-imagem.jpg” >
Entendendo a sintaxe: os dois 
pontos seguidos pela barra 
significam que o arquivo de 
imagem não está no mesmo 
diretório que o arquivo HTML 
e nem em seus subdiretórios. 
A imagem, está sim, em um 
diretório de nível acima em 
relação ao arquivo HTML. 
Veja a figura ao lado para en-
tender:
Os exemplos a seguir mostram o endereço da imagem relativo ao arquivo HTML 
minha-primeira-página-web.html.
Exemplo 1:
Imagem no mesmo diretório 
do arquivo HTML.
Exemplo 2: 
Imagem localizada em dire-
tório dois níveis abaixo (sub-
diretórios) do diretório onde 
se encontra o arquivo HTML.
Se você usa, ou já usou o sis-
tema Windows, possui co-
nhecimento prévio para en-
tender a lógica dos caminhos 
de um arquivo. Isso porque é 
similar a árvore de diretórios 
usada no Windows que você 
manipula quando clica nas 
pastas até chegar no arquivo 
desejado. A diferença é que 
no atributo “src” em vez de 
cliques você digita barras se-
parando cada pasta até che-
gar ao arquivo da imagem. 
64 65
Note que tanto a imagem (pato.jpg) quanto o arquivo HTML (minha-primeira-página-web.html) 
estão em caminhos diferentes:
• Imagem: arquivos/imagens/pato.jpg.
• Arquivo HTML: paginas-html/minha-primeira-página-web.html.
Como já citado, todos os endereços de imagens usados até agora são “relativos” ao arquivo HTML 
minha-primeira-página-web.html. 
Existe também uma forma onde o endereço é considerado “absoluto”, ou seja, completo. Isso 
acontece quando inserimos uma imagem hospedada em outro site ou até mesmo em nosso site. 
Para isso basta colocar o endereço completo da imagem. Tomamos como exemplo o logo do 
Blog Chief of Design. Ele se encontra no seguinte endereço:
http://chiefofdesign.com.br/wp-content/themes/optimizePressTheme/themes/3/images/
chief-of-design.png
Você achou longo, não é mesmo? Para entendê-lo vamos “desmembrá-lo” em três partes:
• http://chiefofdesign.com.br/ - Este é o endereço principal do site, onde fica o diretório raiz;
• wp-content/themes/optimizePressTheme/themes/3/images/ - Aqui estão os sub-diretórios. 
Eles são compostos, neste caso, por seis pastas (veja a separação por barras);
• chief-of-design.png - E finalmente o arquivo de imagem do logo.
Para inserir a imagem basta colocar o endereço (url) no atributo “src”.
<img src=”http://chiefofdesign.com.br/wp-content/themes/optimizePressTheme/themes/3/ima-
ges/chief-of-design.png” >
Com isso, obtemos o resultado:
<img src=”../pato.jpg” >
E quanto mais níveis acima um arquivo de imagem estiver, mais será necessária a inclusão dos 
“dois pontos seguido pela barra”.
<img src=”../../pato.jpg” > 
(../../ ) = Dois níveis acima. 
<img src=”../../../pato.jpg” > 
 (../../../ ) = Três níveis acima.
Exemplo 4:
Pode acontecer também de a imagem 
que você quer inserir esteja em um 
subdiretório que pertence a um dire-
tório de nível acima ao arquivo HTML 
que você está trabalhando.
 
Veja o comando abaixo:
<img src=”../sub-diretorio/sub-di-
retorio/arquivo-de-imagem.jpg” >
Resultado:
<img src=”../arquivos/imagens /pato.
jpg” >
66 67
Visualmente não ficou um primor. Porém não era este o objetivo.
Encerramos por aqui este tópico sobre inserção de imagem. Mas o assunto imagem continua. 
Agora iremos falar sobre dimensões das imagens.
Dimensões das imagens
Se considerarmos os exemplos de inserção de imagens em uma página web exibidos até agora 
notamos que não especificamos os tamanhos das imagens e isso não as impediu de aparecer no 
navegador no tamanho correto. Porém é indicado você usar os atributos de dimensão de ima-
gens para o navegador reservar a área em que a imagem deverá aparecer.
Os atributos usados são o “width” para largura e “height” para altura, e o valor adotado para medi-
da é o pixel(px). A imagem do pato que estamos usando na página minha-primeira-página-web.
html tem 300px de largura e 169px de altura. Vamos ver agora como atribuir estes valores na tag 
“img”.
<img src=”arquivos/imagens/pato.jpg” width=”300” height=”169” >
Simples assim. Sabendo as dimensões das imagens basta colocar seus valores nos seus respecti-
vos atributos. 
Você pode também manipular os valores para mais ou para menos, mas isso se constitui em 
um mau uso dos atributos, resultando em deformação da 
imagem ou diminuição da performance. Saiba o porquê:
Originalmente sabemos que a imagem do pato tem 300 
por 169 pixels. (confira a imagem ao lado).
Entretanto você gostaria que ela fosse maior e decide au-
Já sei! 
Você gostaria de ver esse logo dentro do arquivo minha-primeira-página-web.html que estamos 
usando, certo? 
Então vamos lá? 
Agora veja o resultado no navegador:
68 69
Esta imagem foi definida com tama-
nho 50% menor que o arquivo (pato.
jpg). Apesar de aparentemente me-
nor quando visualizada no navega-
dor, ele continua sendo o mesmo ar-
quivo, com o mesmo tamanho (300 
por 169) e com o mesmo peso. Olhe a 
próxima imagem e veja como ela se 
apresenta menor e sem deformações 
aos nossos olhos.
Porém o peso da imagem continua o 
mesmo. Agora imagine uma página 
com dezenas de imagens redimensionadas através do HTML sendo que os arquivos de imagens 
encontrados nos subdiretórios são bem maiores? 
O quão rápido este site poderia ser, e não é? Isso é um erro primário que você não deve cometer.
Existem sistemas que automatizam as imagens através de programação. Fora isso, procure redi-
mensionar as imagens, em seu editor de imagem preferido, com as medidas exatas as encontra-
das nos atributos “width” e “height” antes de subi-las ao diretório de destino.
Texto alternativo:
Eis aqui um atributo importante para questões de acessibilidade. O atributo “alt” coloca um texto 
alternativo a imagem, isto é, quando, por algum motivo a imagem não aparecer, um texto que 
representa a imagem aparecerá sem seu lugar. 
Mas a importância deste atributo vai além disto. Este texto alternativo é lido por leitores de telas, 
o que facilita o uso de sua página por pessoas com algum tipo de deficiência visual. O leitor de 
tela possibilita o usuário ouvir a descrição da imagem.
mentá-la através dos atribu-
tos do elemento HTML “img”.
Conforme você aumenta 
duas, três, “n”vezes, a ima-
gem fica “pixelizada” perden-
do sua qualidade e definição 
(veja a imagem ao lado).
A deformação visual ocorrerá 
também quando você alterar 
somente uma das dimen-
sões, tanto para mais quanto 
para menos. 
Veja o exemplo abaixo: 
Mas a pior alteração de todas não resulta em deformidade visual perceptível, e sim na perda de 
performance da página. 
Logo, seu site demora preciosos segundo para carregar devido a possuir imagens de dimensões 
maiores que aqueles valores atribuídos na tag “img”. 
Entenda o código abaixo:
<img src=”arquivos/imagens/pato.jpg” width=”150” height=”85” >
70 71
digital. Apesar de aparente complexidade, com um pouco de prática você verá que não tem mis-
tério seu uso com HTML. 
Segue a sintaxe final do nosso exemplo com a a imagem do pato:
O código HTML e os arquivos usados até 
esta etapa se encontram neste link para download. 
<span>
“span” é um elemento neutro para renderização de texto. Apesar de não adicionar nenhuma 
semântica ao documento ele pode ser usado para alterar estilos visuais, através do CSS, de um 
trecho de texto de outro elemento HTML. 
Por exemplo: Você tem um texto de um parágrafo na cor preta e dentro deste texto você quer 
enfatizar um trecho importante com outra cor. 
Em revistas é comum ver pequenos trechos destacados de forma visual diferenciada para desta-
car algo importante na reportagem. No HTML existem vários elementos com esta função mais o 
“span” é um dos mais utilizados.
Veja como seria a aplicação:
<p>Estou digitando um parágrafo com o texto na cor preta. 
 Porém <span>este trecho quero enfatizá-lo com a cor vermelha</span>. 
 Faço isso porque considero importante destacá-lo.</p>
<img src=”arquivos/imagens/pato.jpg” width=”300” height=”169” alt=”Imagem de um pato” title=”Pato”>
Como um profissional web você deve atender as necessidades dos usuários e este atributo é algo 
de fácil implementação. Basta adicionar o “alt” seguido de um sinal de igual (=) e um texto curto, 
que descreve de forma sucinta a imagem, entre aspas. Veja só:
<img src=”arquivos/imagens/pato.jpg” width=”300” height=”169” alt=”Imagem de um pato”>
E ainda existe outra vantagem de usar este atributo. Os buscadores usam o uso destes textos para 
identificar as imagens nos sites e classificá-las nos resultados de buscas. Portanto é um desper-
dício omitir o uso deste atributo.
Título da imagem:
E para finalizar agora falaremos sobre o atributo “title”. Esse atributo coloca um título para sua 
imagem. Não é um atributo essencial para o elemento HTML “img”, e é até usado em outros ele-
mentos. 
Pode até ser que o título que você decida colocar seja o mesmo texto encontrado no atributo 
“alt”, mas não necessariamente. O “alt” descreve a imagem, e o “title” dá um título. Veja a sintaxe:
<img src=”arquivos/imagens/pato.jpg” width=”300” height=”169” alt=”Imagem de um pato” 
title=”Pato”>
Quando o usuário repousa o mouse sobre imagem que usa o “title” ele vê tipo uma legenda com 
o título da imagem. 
Caminho completo com os atributos básicos:
Ufa! Quanta coisa falamos sobre imagens. 
Estas são encontradas aos montes para informar e embelezar tanto na mídia impressa como na 
http://ebookhtmlcss.com/arquivos/capitulo-2/arquivos-para-download-1.zip
http://ebookhtmlcss.com/arquivos/capitulo-2/arquivos-para-download-1.zip
72 73
<br>
Ele é um elemento nulo muito usado também em construção de páginas. 
Em arquivos XHTML o auto-fechamento é feito na tag de abertura (uso da barra), assim: <br/>.
 
E em HTML usa-se a versão sem barra: <br>
Sua função é inserir uma quebra de linha em textos. Só que ele é tão prático de usar, que é 
comum cair na tentação de usá-lo para fazer coisas fora de sua função. Vamos entender agora:
Imagine a descrição de um endereço residencial. Seus dados são comumente separados por 
linhas, porém sem fugir da ideia central, que é informar o endereço. Este é um caso positivo de 
aplicação do elemento “br”.
Para exemplificá-lo vamos usar o endereço do MASP - Museu de Arte de São Paulo Assis Chate-
aubriand:
Avenida Paulista, 1578 - Cerqueira César.
São Paulo - SP.
CEP: 01310-200.
Aplicaremos agora o código:
<p>Avenida Paulista, 1578 - Cerqueira César<br>
São Paulo - SP<br>
CEP: 01310-200</p>
Note que o texto foi quebrado duas 
vezes e continuou nas linhas seguintes.
Note que o simples fato de colocar as tags “span” 
não surti efeito algum visualmente. 
Isto ocorre porque se faz necessário um códi-
go CSS específico aplicado ao elemento HTML 
“span”, como você pode ver a seguir: 
<p> Estou digitando um parágrafo com o texto na cor preta. Porém <span style=”color:#f00”>es-
te trecho quero enfatizá-lo com a cor vermelha</span>. Faço isso porque considero importante 
destacá-lo.</p>
Não se preocupe com o código adicional na tag de abertura do elemento “span”. Ele será aborda-
do no assunto CSS. Estamos usando aqui só para efeito de demonstração. 
Vamos ver o resultado:
Agora é possível ver o trecho enfatizado na cor vermelha.
74 75
Veja que na forma correta não se usa tag <br>, porque ela não foi feita para isso. Você pode ques-
tionar: “Ah! Eu testei aqui é deu certo! Consegui o espaçamento que queria entre as duas ‘DIVs’.
Entretanto não podemos esquecer que o HTML é uma linguagem de marcação. Para a tarefa de 
estilizar usamos o CSS. Para espaçamento existem propriedades específicas no CSS. Ok?
Outro exemplo de bom uso da tag <br> são poemas. Em poemas é muita comum a quebra de 
linha. Após cada verso, se inseri a quebra de linha. Exemplo com o poema de Luís de Camões, 
“Amor é fogo que arde sem se ver”:
<p>Amor é fogo que arde sem se ver;<br> 
É ferida que dói, e não se sente;<br> 
É um contentamento descontente;<br> 
É dor que desatina sem doer. </p>
E em caso de existência de estrofes (conjunto de versos) é indicado a separação em 
parágrafos. Entáo a continuação desse poema viria dentro de outra tag <p>.
<p>É um não querer mais que bem querer;<br> 
É um andar solitário entre a gente;<br> 
É nunca contentar-se de contente;<br> 
É um cuidar que se ganha em se perder. </p>
 
O código HTML e os arquivos usados até esta etapa 
se encontram neste link para download.
O que acontece é que pela facilidade de aplicação usa-se as quebras em situações não indica-
das. Segue dois exemplos:
1. Usar a tag <br> para simular parágrafos:
Este é o primeiro parágrafo de um assunto qualquer. <br><br>
Este é o segundo parágrafo. <br><br>
Forma correta:
<p>Este é o primeiro parágrafo de um assunto qualquer. </p>
<p>Este é o segundo parágrafo</p>
2. Forçar espaçamentos:
<div><p>Quero que este bloco fique com certa distância do bloco a seguir. </div><br><br>
<br><br>
<div><p>Consegui isso abarrotando meu código com quebras de linha. </div>
Forma correta:
<div><p>Quero que este bloco fique com certa distância do bloco a seguir. </p></div>
<div><p>Consegui isso através do CSS.</p></div>
OBS: Às vezes alguns gerenciadores de conteúdo (CMS), geram 
algumas tags <br> de forma automática e em locais indesejados 
em sua página. Fique atento!
http://ebookhtmlcss.com/arquivos/capitulo-2/arquivos-para-download-2.zip
http://ebookhtmlcss.com/arquivos/capitulo-2/arquivos-para-download-2.zip
76 77
Os três primeiros cabeçalhos ( h1, h2 e h3) são os que a gente vê mais com frequência nos có-
digos de sites. Eles representam chamadas de maior atenção em um artigo de blog ou em uma 
notícia publicada em um portal, da mesma forma que costumamos ver em jornais no mundo 
off-line. E é associando a manchetes de jornais que explicaremos como funciona a hierarquia das 
heading tags.
Quando você compra um jornal existe sempre aquela manchete estampada na capa que é sobre 
a notícia principal do dia. Em alguns jornais geralmente ela fica até destacada com tamanho gi-
gante e na parte superior do topo, tipo:
“Designers estão entre os profissionais mais bem-sucedidos, bem remunerados e felizes 
do mercado.” (só que não :/)
Nos blocos posteriores ou laterais da capa são mostrados assuntos também importantes, sóque 
em segundo plano. Estes assuntos estão um nível abaixo de importância na hierarquia da infor-
mação em relação à manchete principal. 
A gente percebe até o nível de importância pelo tamanho da fonte usada no título. E quanto me-
nor o bloco de notícia, menor o tamanho do título e o nível de importância.
Para exemplificar melhor vamos localizar alguns títulos em uma capa de um jornal de grande 
circulação no Brasil.
<h1> à <h6>
Chegamos a um grupo de elementos fundamentais, principalmente para atrair a atenção dos 
usuários, as Heading tags. Na mídia impressa seriam similares aos títulos e subtítulos.
Estes elementos devem ser usados como indicadores de títulos das seções e subseções dentro de 
um documento HTML. São denominados também como cabeçalhos ou títulos de uma seção de 
documento. Podem ser usados para marcação de títulos, subtítulos, legendas, títulos alternativos 
e slogans. 
As tags de cabeçalhos são classificadas em seis tipos, sendo <h1></h1> (cabeçalho nível 1) usadas 
para os títulos de seção mais importantes e <h6></h6> (cabeçalho nível 6) o menos importante. 
Veja a diferença entre os seis elementos:
<h1>Este é o cabeçalho 1</h1>
<h2>Este é o cabeçalho 2</h2>
<h3>Este é o cabeçalho 3</h3>
<h4>Este é o cabeçalho 4</h4>
<h5>Este é o cabeçalho 5</h5>
<h6>Este é o cabeçalho 6</h6>
Crie um novo arquivo HTML com a es-
trutura básica já vista e insira o código 
acima. Salve o arquivo com o nome de 
“heading-tags.html”. Agora veja como 
ficou no navegador (figura ao lado).
Perceba na imagem que o nível de im-
portância se destaca até visualmente 
pelo tamanho da fonte entre as tags.
Nota: Como neste tópico o assunto é cabeçalho ignoraremos outros elementos, 
como imagens e parágrafos, por exemplo, que não contribuem neste contexto. Nesta 
capa peço para você ignorar o logo do jornal e foque no restante das seções. 
78 79
A outra seção fica logo abaixo, possui dimensão e tamanho da fonte menor. Apesar do título bem 
destacado, ele é ligeiramente menor que a manchete principal. Sendo assim, dentro do contexto 
do Box Principal, optamos por deixá-lo em segundo nível de importância com a cor roxa.
Tendo identificado os elementos do Box Principal, a pergunta é? Caro Galucho, como você usaria 
a hierarquia de títulos encontrada no jornal para transpor o conteúdo da capa para uma página 
web usando os códigos HTML?
Você já sabe qual título é o mais importante e também quais os menos importantes neste Box 
Principal da capa. Você também já sabe quais “heading tags” representam mais ou menos impor-
tância em um documento HTML. Basta agora associar o que você enxerga no papel e aplicar no 
digital. Vamos começar?
Para esses exercícios podemos usar “divs” para separar as seções no código assim como são se-
paradas no jornal. Para iniciar inserimos no documento as tags fundamentais. Você se lembra?
<html>
 <head>
 <meta charset=”UTF-8”>
 <title></title>
 </head>
 <body>
 <div>
 </div>
 </body>
</html>
Primeiramente coloque entre as tags “title” o seguinte título do documento: “Trabalhando com 
Heading Tags”. Em seguida abra e feche tags “div” para criar um bloco. Este bloco representará a 
área que delimita a capa do jornal. Você como desenvolvedor deve enxergar a necessidade de 
delimitar a área do seu site. E quando você olha esta capa de jornal qual é área que a delimita?
Consideraremos a dimensão total da capa como área limite. Então abra um novo documento em 
Temos dois grandes boxes:
• Um na centro-direita,
maior na dimensão, ocu-
pando grande parte da 
capa onde se destacam as 
notícias mais importantes; 
• Outro menor, localizado 
a esquerda onde tem as 
chamadas para notícias 
secundárias. 
Eles estão separados por uma 
borda vertical e um espaça-
mento. Começaremos nossa 
análise no box maior. Vamos 
identificá-lo como Box Prin-
cipal.
Notamos que neste box vemos 
duas seções. Uma seção maior 
onde destacamos a manchete 
principal da edição com a cor 
rosa (nível 1), sendo que den-
tro desta seção tem um box 
menor, com assunto (“PT, de 
donos das ruas a coadjuvan-
te”) complementar a manche-
te principal, cujo título desta-
camos com a cor roxa (nível 2). 
Nível de importância dos títulos 
em ordem decrescente:
Nível 1.
Nível 2.
Nível 3. 
80 81
Para continuar é preciso verificar se existem ainda elementos dentro do bloco principal. Qual-
quer elemento encontrado será irmão, e virá depois de “h1”, obedecendo a sequência de conteú-
do apresentado no Bloco principal.
Como não estamos ainda considerando imagens e parágrafos temos então uma pequena seção 
na região inferior direita e dentro dela possui o título “PT, de donos das ruas a coadjuvante”. Por-
tanto esta pequena seção pode ser considerada um bloco com marcação do elemento “div” e 
com um elemento filho “h2” para abrigar o título desta seção.
Você deve se perguntar. Por que o título da seção não é “h1”? Simples! Este é um título de um 
assunto complementar a manchete principal, convém então aplicá-lo o nível 2 de importância. 
Vamos ao código?
<html>
 <head>
 <meta charset=”UTF-8”>
 <title>Trabalhando com Heading Tags</title>
 </head>
 <body>
 <div>
 <div>
 <h1>Novos protestos fecham estradas e ruas pelo país</h1>
 </div>
 <div>
 <h2>PT, de donos das ruas a coadjuvante</h2> 
 </div>
 </div>
 </body>
</htm>
Não estamos trabalhando com imagens neste tópico, entretanto para a página ficar com um as-
pecto visual melhor vamos colocar trechos iniciais dos parágrafos das manchetes em suas devi-
das seções para melhorar a compreensão.
seu editor, digite o código a seguir e salve o arquivo como “heading-tags.html”.
<html>
 <head>
 <meta charset=”UTF-8”>
 <title>Trabalhando com Heading Tags</title>
 </head>
 <body>
 <div>
 </div>
 </body>
</html>
Iremos construir agora o bloco que nomeamos de Box Principal. Como se trata de um bloco o 
colocaremos aninhado na “div” existente. Dentro do box principal devemos inserir as informa-
ções de forma hierárquica. 
E o que notamos logo de cara em nível de importância? 
Notamos a manchete principal. E como ela está como maior destaque deve ser marcada com o 
elemento de maior importância das tags de cabeçalho, o h1. Veja como fica a marcação:
<html>
 <head>
 <meta charset=”UTF-8”>
 <title>Trabalhando com Heading Tags</title>
 </head>
 <body>
 <div>
 <div>
 <h1>Novos protestos fecham estradas e ruas pelo país</h1>
 </div>
 </div>
 </body>
</html>
82 83
O que importa aqui é entender que através da sintaxe que usamos para marcar os cabeçalhos, 
conseguimos transmitir a hierarquia das informações e a semântica aos elementos, em uma tela 
digital da mesma forma que transmitimos na mídia impressa.
Veja como visualmente tanto a manchete principal do meio impresso quanto a do digital se des-
tacam frente aos outros elementos visuais. 
E se quiséssemos continuar com essa associação poderíamos até ir além e relacionar o impresso 
ao digital, e dependendo do layout e grid usado, com títulos de menos destaque através de ele-
mentos “h3, h4, h5, h6”. 
Nota: Por causa da tradução do elemento HTML “title”, que também é título, talvez 
traga um pouco de confusão. Portanto saiba que apesar de ambos serem “títulos”, o 
elemento “title” não está relacionado ao cabeçalho no sentido da palavra. Sem contar 
que este é um elemento único e indispensável dentro do documento HTML.
Outro fator de confusão é que por muitas vezes, os responsá-
veis pelos conteúdos de sites colocam os textos entre as tags 
“title” também entre as tags de cabeçalho do elemento “h1”. 
Isso porque estas tags contribuem para a otimização do site 
para os motores de buscas (SEO) e acredita-se que a inserção 
de palavras chaves nos dois elementos é um fator importante 
na classificação dos resultados no Google e outros buscado-
res. 
Então é mais prático usar o mesmo texto (Não é uma regra). 
Mas o assunto aqui é HTML, não SEO.
<html>
 <head>
 <meta charset=”UTF-8”>
 <title>Trabalhando com Heading Tags</title>
 </head>
 <body>
 <div>
 <div>
 <h1>Novosprotestos fecham estradas e ruas pelo país</h1>
 <p> Atos de Centrais mobilizaram menos que manifestações...</p>
 </div>
 <div>
 <h2>PT, de donos das ruas a coadjuvante</h2>
 <p> Sem as camisas e bandeiras vermelhas do partido...</p> 
 </div>
 </div>
 </body>
</htm>
Confira o Resultado no código e no navegador:
Lógico que o resultado visu-
almente não é o mesmo que 
a capa do Jornal. Nem deve-
ria. 
Não estamos usando CSS, a 
tipografia é diferente, os tex-
tos estão incompletos, não 
tem imagens e nem está “dia-
gramado”. 
84 85
pronta e no navegador a página precisa unir os arquivos necessários que se apresentarão na tela.
Portanto toda vez que você olhar um índice de uma revista ou chamada de jornal poderá associ-
á-los a um hiperlink.
Mas focando, agora, no universo web, o elemento HTML “a” permite efetuar hiperligações com 
outras páginas de outros sites, com páginas de um mesmo site, linkar para um endereço de 
e-mail, como também para uma parte específica dentro de uma mesma página. 
Uma coisa importante a saber, antes de entender como efetuar a construção de links, é a relação 
entre o documento de origem e de destino que estão sendo vinculados. Para isso vamos conhe-
cer os três diferentes tipos de caminhos que usamos para vincular páginas.
Caminhos absolutos e relativos a documentos 
Você se lembra de quando falamos sobre caminho da imagem no tópico sobre o elemento HTML 
“img”? Iremos agora potencializar seus conhecimentos sobre caminhos que é aplicado tanto para 
construção de links, quanto para imagens e outros tipos de elementos que precisam referenciar 
caminhos para documentos e arquivos.
Caminhos absolutos:
Quando você pretende vincular (linkar) outra página ou arquivo 
utilizando um caminho absoluto você precisa colocar o endereço 
completo desta página. 
Geralmente ele é formado por:
1. Um protocolo HTTP ou HTTPS;
<a></a>
Chegamos a um elemento que desde o surgimento das primeiras páginas web é responsável pelo 
o processo de navegar por um mundo de informações através dos cliques. O elemento HTML “a” 
é responsável pela construção de hiperlinks. E com certeza não deveria de ficar de fora da lista 
de elementos mais usados página web.
Você pode usá-lo tanto dentro de parágrafos, como em uma navegação formada por listas “li”. 
Você pode embuti-los dentro de títulos “h1”, transformar imagens em elementos clicáveis, para 
que em segundos (ou menos) acesse qualquer documento em outro servidor.
Eles possibilitam tornar a sua leitura aleatória. E talvez esteja aí a grande diferença entre o meio 
digital e o meio impresso. Em uma revista não existe uma forma para que quase simultaneamen-
te você consiga acessar outro documento em outra revista. Mas de qualquer forma existe uma 
pequena semelhança entre os meios.
Analogicamente você sempre “nave-
gou” entre páginas de uma revista ao 
perceber uma matéria interessante no 
índice. Você folheou até chegar a pá-
gina do assunto desejado. Isso é muito 
semelhante ao processo de linkar para 
uma parte específica de uma página ou 
para outra página do mesmo site. 
Só que em uma revista a página já está 
O código HTML e os arquivos usados até 
esta etapa se encontram neste link para download.
http://ebookhtmlcss.com/arquivos/capitulo-2/arquivos-para-download-3.zip
http://ebookhtmlcss.com/arquivos/capitulo-2/arquivos-para-download-3.zip
86 87
Mas também podemos usar quando queremos vincular uma página de um site, para outra página 
do mesmo site. Não que seu uso seja um erro, porém é o menos indicado, porque, por exemplo, 
caso um dia precise mudar o site de servidor terá que mudar todos os links também.
Caminhos relativos
O caminho relativo passa a informação da localização do arquivo de destino em relação à pági-
na atual, ou seja, a localização do arquivo destino é em relação à posição da página HTML onde 
você faz a vinculação. É o tipo de vinculação que você fez no tópico sobre o elemento “img”. 
O caminho relativo é possível apenas quando o documento no qual você está trabalhando e o 
destino do link estão no mesmo espaço do servidor em que o domínio está localizado.
Por exemplo, você quer linkar a página da url http://seusite.com/servicos.html, a página http://
seusite.com/minha-empresa/contato.html . Aqui é possível porque elas pertencem ao mesmo 
domínio http://seusite.com/. 
O arquivo da página “Serviço” fica no diretório raiz do domínio: servicos.html .
2. Um domínio, exemplo:
 
• seusite.com
• seusite.com.br
3. E um sistema de arquivos contando ou não com diretórios (pastas), por exemplo:
• servicos.html
• minha-empresa/contato.html.
E juntando todos esses elementos chegamos ao caminho absoluto. Veja abaixo exemplos:
http://seusite.com/servicos.html
http://seusite.com/minha-empresa/contato.html
Geralmente usamos o caminho absoluto quando queremos vincular um documento/página ex-
terna, de outro servidor, em relação ao nosso site.
Meu Site Site do 
Fulano
88 89
Tipos de ligação. 
1 - Ligação para outros sites:
É com este tipo de ligação que te apresentamos a sintaxe básica para construção de hiperlinks. 
Este tipo de ligação ocorre quando a url de destino se encontra em um domínio diferente em 
relação ao seu site. Para isso devemos utilizar um caminho absoluto.
Digamos que você quer apontar uma página sua para a página inicial do portal UOL. 
Confira o resultado:
Para entender vamos por partes:
O elemento “a” necessita de uma tag de abertura e a de fechamento. Portanto usamos <a></a>;
Entre as tags será colocado o texto, ou imagem, que quando clicados fará com que o navegador 
acesse a página de destino. Veja: 
<a>texto ou imagem</a> (no exemplo anterior o texto é “UOL”.)
Só que somente é possível acessar alguma página quando dentro da tag de abertura colocamos 
o atributo “href” com a url de destino pretendida. Somente assim o texto ou imagem entre as tags 
se tornarão hiperlinks capazes de acionar o comando de acesso à outra página através de um 
clique. Simples assim:
<a href=”url de destino”>texto ou imagem</a>
<a href=”url-de-destino”>texto ou imagem</a>
Agora imagine um outro caso: o arqui-
vo da página “Contato” fica em um dire-
tório que está um nível abaixo em rela-
ção ao arquivo “servicos.html”. Dentro 
da pasta “minha-empresa”.
Portanto para linkar a página “Contato” 
relativamente a página serviços, bas-
ta inserir o caminho “minha-empresa/
contato.html”.
Caso você queira linkar a página “Servi-
ços” a página “Contato” o caminho re-
lativo se apresenta inversamente. 
A página “servicos.html” está um nível 
acima então, assim como você apren-
deu no tópico sobre o elemento “img”, 
você deve inserir dois pontos seguidos 
por uma barra (../) para indicar o cami-
nho relativo.
Resultado: ../servicos.html
Agora que você já conheceu e reforçou seu conhecimento sobre caminhos de documentos, está 
na hora de codificar o elemento html “a”. Faremos isso enquanto aprendemos os tipos de liga-
ções.
<a href=”http://www.uol.com.br/”>UOL</a>
90 91
<html>
 <head>
 <meta charset=”UTF-8”>
 <title>Trabalhando com links</title>
 </head>
 <body>
 <div> 
 <h1>Exemplos de links</h1>
 <p>Neste página aplicaremos diversos
 tipos de linkagem. Confira a seguir.</p>
 <div>
 <h2>Ligação para site externo</h2>
 <p><a href=”http://www.uol.com.br/”>UOL</a></p>
 <p><a href=”http://www.uol.com.br/”>www.uol.com.br</a></p>
 <p><a href=”http://www.uol.com.br/”>
 Coloco aqui o texto que bem entender</a></p>
 <p><a href=”http://www.uol.com.br/”>
 <img src=”arquivos/imagens/pato.jpg” 
 width=”300” height=”169” alt=”Imagem de um pato”></a></p>
 </div> 
 </div>
 </body>
</html>
Veja o resultado na imagem ao lado:
Ao clicar em qualquer link ou na imagem o usuário será 
direcionado para página do UOL. Isso porque quem de-
termina o destino é a url inserida do atributo “href” inde-
pendente do texto usado entre as tags. Porém,Galucho, é 
importante que texto, ou imagem, reflita o conteúdo que 
o usuário irá encontrar na página de destino (óbvio!).
Novamente o resultado:
<a href=”http://www.uol.com.br/”>UOL</a>
Você pode colocar o texto que quiser entre as tags de abertura e fechamento que o resultado será 
o mesmo:
<a href=”http://www.uol.com.br/”>www.uol.com.br</a>
<a href=”http://www.uol.com.br/”>Coloco aqui o texto que bem entender</a>
Você já está habilitado para trabalhar com imagens. Agora você pode torná-las clicáveis, basta 
colocá-las entre dentro do elemento “a”:
<a href=”http://www.uol.com.br/”>
 <img src=”arquivos/imagens/pato.jpg” width=”300” height=”169” alt=”Imagem de um pato”>
</a>
Lógico que o ideal seria a imagem do logo do UOL, mas para fins didáticos entenda que qualquer 
imagem clicável pode dire-
cionar o usuário para onde 
você quiser.
Agora pegaremos todos es-
tes exemplos e juntaremos 
dentro de uma nova página 
HTML. 
Abra um novo documento 
em seu editor, digite o código 
abaixo e salve como “exem-
plos-de-link.html”:
92 93
Agora salve o documento como “home.html” e abra-o no navegador.
E vamos ver algumas informações importantes.
Conceitualmente em informática, barra de menu é uma região encontrada em softwares, aplica-
tivos, sites, entre outros, onde se apresentam menus para funções diversas. 
No caso de sites, acessar páginas ou parte de páginas. Porém vamos deixar, por enquanto a fun-
ção dele um pouco de lado, 
para atentar ao fato que cada 
menu é um item. E todos os 
itens juntos formam uma lis-
ta de itens.
Portanto, uma barra de menu 
nada mais é que uma lista de 
itens cuja função é ligar pá-
ginas ou partes de uma pági-
na que podem ser acessadas 
com cliques. 
Isso justifica o uso dos ele-
mentos “ul” e “li” como ascen-
dentes do elemento HTML “a”.
ul - Determina a barra do 
 menu como uma lista 
 não ordenada; 
li - Marca cada menu como 
 um item de uma lista;
a - Atribui a função de link 
 para cada item do menu.
2 - Ligações entre páginas de um mesmo site:
Pensar nestas ligações é uma das ações mais importantes na hora de projetar um layout. Elas são 
elementos da navegabilidade e de toda linkagem interna de um site. Quando você aponta um 
link para outra página de um mesmo site você dá oportunidade para o usuário conhecer conte-
údos relacionados e o mantém por mais tempo dentro do site. 
Você identifica este tipo de ligação facilmente nas barras de navegação superior e de rodapé, e 
em barras verticais de navegação. É comum encontrar também links dentro do corpo de conte-
údos que apontam para outros conteúdos do mesmo site. 
Para entender vamos a mais um exemplo. Crie um novo arquivo chamado “home.html”. 
O bom deste exemplo, é que além de aplicar novos conhecimentos sobre o elemento HTML “a”, 
é que reforçamos os conhecimentos adquiridos sobre listas, parágrafos e Heading tags. 
Então digite a seguinte código:
<html>
 <head>
 <meta charset=”UTF-8”>
 <title>Home - Página inicial do meu site</title>
 </head>
 <body>
 <div>
 <ul>
 <li><a href=”home.html”>Home</a></li>
 <li><a href=”sobre.html”>Sobre</a></li>
 <li><a href=”servicos.html”>Serviços</a></li>
 <li><a href=”contato.html”>Contato</a></li>
 </ul>
 <h1>Home</h1>
 <p>Bem-vindo ao meu site</p> 
 </div>
 </body>
</html>
94 95
Nota importante: 
Para a página “Serviços” não use o “c com cedilha (ç)”. Em urls é indicado o uso de palavras sem 
caracteres que tenham acentos, cedilhas, til (~) ou espaços. Isto devido ao fato de pessoas de 
outros países não possuírem teclados que atendam estes caracteres, ou alguns navegadores que 
também não suportam.
Outro detalhe: usamos urls com extensão do arquivo .html, entretanto as urls sendo caminhos 
para arquivos, se conclui que podem apontar para arquivos de diversas extensões que apresen-
tam desde páginas, passando por imagens, vídeos, animações, entre outras. Em relação a pági-
nas web as extensões mais usadas são: .html, .htm, .php, .asp. 
Também é comum você encontrar urls que não apresentam 
extensão. Essas são chamadas de urls amigáveis. Exemplo:
http://seusite.com.br/contato ou http://seusite.com.br/contato/ 
(com barra no final)
Na verdade os arquivos destas páginas possuem uma extensão 
que é alterada no servidor, através de certas regras, mudando 
como seu caminho deve ser apresentado. Mas este assunto foge 
do escopo deste livro. Citamos somente para seu conhecimen-
to, porque certamente você fará uma ligação com este tipo de 
url em projetos futuros.
Tendo esclarecido esse conceito, você pode agora clicar em cada item do menu, porém nada 
acontecerá. Nenhuma página se abrirá. E o motivo é simples: faltam construir as páginas de des-
tino “Sobre”, “Serviços” e “Contato”.
Esta missão eu deixo para você, meu amigo Galucho. Portanto pare a leitura e tente fazer sozinho. 
Tudo o que você deve fazer é criar mais 3 arquivos com a mesma estrutura do arquivo “home.
html”. Para cada um deles você deve alterar o texto do cabeçalho “h1” e o texto entre as tags “title”, 
conforme o nome que você irá salvar a página. 
O menu não sofrerá alterações, ou seja, para a página “sobre.html”, o texto do cabeçalho será “So-
bre”. O texto entre as tags “title” pode ser algo do tipo “Sobre meu site” (use sua imaginação, mas 
sempre coloque a palavra chave que você usa para salvar a página. No caso a palavra “sobre”). 
Quanto ao texto do parágrafo você pode usar um conteúdo qualquer relacionado com o tema. 
E para encerrar, obviamente, salve o arquivo como “sobre.html”. Repita o processo em todos os 
arquivos.
Depois de encerrado este exercício, corretamente, você será capaz de navegar entre as 4 páginas. 
Por aqui, neste livro, construiremos as mesmas páginas só que incrementando novos conheci-
mentos sobre hiperlinks.
96 97
Sendo assim, ao clicarmos no link temos o seguinte resultado:
Você também pode marcar o envio para mais que um e-mail, basta separá-los por vírgulas.
<a href=”emailqualquer@exemplo.com,outroemail@exemplo.com”>Envie-nos um e-mail</a>
É possível também utilizar o recurso com cópia (cc) e com cópia oculta (bcc).
<a href=”emailqualquer@exemplo.com?cc=outroemail@exemplo.com&bcc=emaildousuariol@
exemplo.com&subject=Um assunto qualquer”>Envie-nos um e-mail</a>
3 - Ligação para um endereço de e-mail 
Este tipo de ligação faz com que um software de e-mail seja aberto quando clicamos no link, 
desde que instalado na máquina do usuário. O bacana é que o endereço de e-mail que você co-
loca no atributo “href” aparece automaticamente no campo “para” do formulário de criação do 
e-mail. O que resta ao usuário é preencher os campos que faltam e enviar a mensagem. Vamos 
ver a sintaxe desta ligação que é bem simples.
<a href=”mailto:emailqualuqer@exemplo.com”>Envie-nos um e-mail</a>
A diferença para os outros tipo de ligação é o uso de um endereço de email e o parâmetro “mail-
to:” que o precede.
Para praticar vá até o arquivo contato.html que você criou no tópico sobre “Ligações entre pági-
nas de um mesmo site” e inclua a código do link acima no corpo da página, abaixo da nossa lista, 
confome o exemplo as seguir:
 <ul>
 <li><a href=”home.html”>Home</a></li>
 <li><a href=”sobre.html”>Sobre</a></li>
 <li><a href=”servicos.html”>Serviços</a></li>
 <li><a href=”contato.html”>Contato</a></li>
 </ul>
 <h1>Contato</h1>
 <p>Para esclarecer suas dúvidas 
 <a href=”mailto:emailqualuqer@exemplo.com”>
 envie-nos um e-mail
 </a>
 </p> 
98 99
<div>
 <h2 id=”destino”>Posição onde o navegador direcionará o usuário</h2>
 <p>Conteúdo que quero que o usuário leia ao clicar no link...</p>
</div>
Note que onde se encontra o “id” denominado “destino” será exatamente o ponto onde o nave-
gador vai direcionar o usuário ao clicar no link. O quefalta agora é definir o ponto de partida, o 
link. Vamos a ele:
<a href=”#destino”>Me leve para o conteúdo que quero que o usuário leia.</a>
PLIM! Esta feita a mágica. Basta colocar o nome do “id” precedido pelo símbolo “#” dentro do 
atributo “href”.
Para praticar peço que abra o arquivo “servicos.html” no endereço que fornecemos a seguir e 
substitua o antigo arquivo “servicos.html” construído por você e que encontra em seu computa-
dor. (http://ebookhtmlcss.com/arquivos/capitulo-2/arquivos-para-download-4.zip)
Neste arquivo você terá uma navegação extra sobre os tipos de serviços oferecidos. 
O código é o seguinte:
<p>Abaixo segue relação de nossos serviços:</p>
 
<ul>
 <li><a href=”#servico01”>Serviço 1</a></li>
 <li><a href=”#servico02”>Serviço 2</a></li>
 <li><a href=”#servico03”>Serviço 3</a></li>
</ul>
Você deve ter notado que os “ids” que os links levarão serão respectivamente id=”servico01”, id=”-
servico02” e id=”servico03”. Veja a seguir:
4 - Ligação para uma parte específica dentro de uma mesma página
Opa, Galucho! Estamos agora no quarto tipo de ligação utilizando o elemento HTML “a” e bem 
próximos de finalizar o tópico sobre as tags mais usadas em códigos HTML. Você está cada vez 
mais habilitado a desenvolver coisas corriqueiras somente com essa pequena lista de códigos. É 
o princípio dos 80% de resultados com apenas 20% do conhecimento padrão.
Agora vamos te mostrar um recurso bacana que você pode utilizar para direcionar o usuário para 
um conteúdo interessante só que dentro da mesma página. Isto é bastante utilizado em algo que 
chamamos de “One Pages”. 
Você já deve ter interagido com uma “One Page”. Estes são sites de página única onde cada clique 
no menu direciona para uma seção na mesma página. Uma grande parte dos portfólios que você 
encontra na web é feita utilizando este tipo de ligação. Inclusive o meu também é. Pelo menos 
até a data que escrevo este livro.
Geralmente você vê este direcionamento sendo executado de forma suave, deslizando. Isso é 
devido a um script específico. Mas como o assunto aqui é HTML você verá que este movimento 
será abrupto, porém funcional.
Este tipo de ligação também se aplica em conteúdos longos em que a página rola bastante e 
você quer dar uma possibilidade do usuário pular trechos do conteúdo. Vamos entender o que é 
necessário para isso:
Primeiro você vai precisar definir o ponto de destino, ou seja, o lugar que você quer levar o usu-
ário quando ele clicar no link. Obviamente este ponto não se encontra em uma página externa 
(alguns casos sim). Quando você definir o ponto encontre a tag de abertura mais próxima, não 
importa qual. Nela você vai colocar um atributo a qual chamamos de “id”. 
Exemplo de aplicação em um título de cabeçalho “h2”:
http://ebookhtmlcss.com/arquivos/capitulo-2/arquivos-para-download-4.zip
100 101
Observações importante: 
• Você pode usar o caminho de forma mais completa que também obterá resultado:
<li><a href=”serviço.html#servico01”>Serviço 1</a></li>
• Você também pode linkar para outras partes específicas de outras páginas. Por exemplo, linkar 
da página contato.html para o trecho na página de serviços que fala sobre o “Serviço 3”:
<li><a href=”contato.html#servico03”>Serviço 1</a></li>
• Existe outra forma de fazer esta ligação com uma parte especifica dentro do site. Utiliza-se o 
elemento HTML “a” tanto no ponto de partida quando no destino, ou seja, é necessário dois 
links. Diferentemente do método visto onde qualquer outro elemento pode ser destino. 
O link de destino deste outro método recebe o atributo “name” no lugar do “id” e não possui o 
atributo “href”. Optamos por não aprofundar sobre ele por ser menos utilizado atualmente e por 
não ser válido no HTML5. Caso queira conhecê-lo melhor visite a documentação W3C neste 
link: http://www.w3.org/TR/REC-html40/struct/links.html#h-12.2.1
• O atributo “id” pode ser usado em praticamente todos os elemen-
tos HTML. Só que o nome escolhido para ele não pode ser repeti-
do dentro de um arquivo HTML. Ele deve ser único.
Algumas regras para nomes de “id”:
1. Deve conter pelo menos um caractere;
2. Não deve conter quaisquer caracteres de espaço;
3. Todos os valores são w. 
 (tanto faz letras maiúsculas, quanto minúsculas.)
<div id=”servico01”>
 <h2>Serviço 1</h2>
 <p>Lorem ipsum dolor sit amet, consec-
tetuer adipiscing elit, sed diam nonummy nibh 
euismod tincidunt ut laoreet dolore magna ali-
quam erat volutpat. Ut wisi enim ad…</p>
</div>
Aqui colocamos somente um trecho do códi-
go. Em seu arquivo estará completo. 
Note que desta vez o “id” está no elemento 
HTML “div”, poderia também estar em “h2”, pois 
ambos estão posicionados no começo do con-
teúdo sobre o “Serviço 1”. 
O mesmo ocorre com “Serviço 2” e “Serviço 3”.
O texto usando entre as tags <p></p> é o fa-
moso Lorem ipsum utilizado para preencher o 
espaço de texto enquanto ainda não se tem o 
conteúdo final. Desconsidere-o.
Ao clicar nos links dos serviços o usuário é di-
recionado a parte específica da página cujo 
conteúdo é dedicado.
Veja ao lado o resultado no navegador.
http://www.w3.org/TR/REC-html40/struct/links.html#h-12.2.1
102 103
HTML 5: a evolução!
Parabéns!!! 
Se sinta orgulhoso pelo que aprendeu e celebre sua evolução!
Com os conhecimentos adquiridos até aqui você já é capaz de desenvolver o HTML de um sim-
ples site institucional com informações básicas sobre a empresa, algumas imagens, informações 
de contato e navegação entre as páginas. 
E com isso encerramos aqui o tópico sobre as 
tags mais usadas no HTML. 
Depois de tanto estudo e dedicação, sugiro que 
você dê uma pausa para descansar. 
Esse é um dos itens do sistema 80/20, você se 
lembra? 
Descanse um pouco e depois desse intervalo 
volte a praticar tudo o que você viu até agora, 
bele?
E se prepare porque nos próximos capítulos ire-
mos continuar a nossa grande jornada.
O código HTML e os arquivos usados 
até esta etapa se encontram 
neste link para download.
http://ebookhtmlcss.com/arquivos/capitulo-2/arquivos-para-download-full.zip
http://ebookhtmlcss.com/arquivos/capitulo-2/arquivos-para-download-full.zip
http://ebookhtmlcss.com/arquivos/capitulo-2/arquivos-para-download-full.zip
http://ebookhtmlcss.com/arquivos/capitulo-2/arquivos-para-download-full.zip
104 105
Semântica
 
Dar sentido à estrutura. A semântica é o principal pilar do HTML5. Um conjun-
to de tags mais poderoso, juntamente com RDFa, microdados, microformatos, 
que permitem um reconhecimento mais claro, fluente e organizado da infor-
mação.
Armazenamento local
Mais rápido e eficiente, uma aplicação não precisa mais de uma conexão con-
tínua para armazenar dados. Podemos trabalhar mesmo se não houver cone-
xão com a internet, graças o HTML5. Agora temos a possibilidade de armaze-
namento Local, IndexDB e outras APIs para arquivos.
3D, Gráficos e Efeitos
Com SVG, Canvas, WebGL e CSS3 com recursos 3D, pode-se utilizar efeitos 
visuais fantásticos nativos, presentes nos modernos navegadores.
Performance e Integração
Aplicativos Web com conteúdo dinâmico mais rápido e com uma variedade 
de técnicas e tecnologias. Com isso o site fica mais leve e o tempo de carre-
gamento do site fica menor.
Abaixo veremos um poucos sobre essas novas possibilidades e tecnologias que o HTML5 nos 
trouxe:
Já sabemos que o HTML apresenta o 
conteúdo e usa url para vincular ar-
quivos externos como imagens, víde-
os, páginas, etc. 
Agora vamos um pouco mais adiante 
e falaremos do HTML5.
Provavelmente você deve ter lido 
e/ou ouvido falar dele.
O HTML 5 vem sendo desenvolvido e 
planejado há bastante tempo, prati-
camente desde 2004 quando come-
çaram os primeiros testes.
O HTML5 é a nova e atual versão do 
HTML reconhecida pelo W3C. Ele pro-
porcionou inúmeras possibilidades e 
novas e melhores definições. 
Somado ao CSS 3 mais JavaScript, 
essa nova linguagem possibilitou a 
criação de coisas que antes só pode-
ríamos fazer com outras linguagens 
ou métodos.
Novas tags surgiram, novosatributos 
e a possibilidade de páginas mais in-
terativas, leves, acessíveis e semânti-
cas.
106 107
As diferenças entre o XHTML e o HTML5
A versão que antecedeu o HTML 5 é o XHTML ( EXtensible HyperText Markup Language ou em 
Português Linguagem Extensível para Marcação de Hipertexto. ).
O XHTML combinava as tags de marcação HTML com regras da XML a fim de melhorar acessibi-
lidade, semântica e etc. Ela foi recomendada pelo W3C até a oficialização da nova linguagem o 
nosso amado HTML5.
Essa nova versão do HTML veio para atualizar o código com novas tags, eliminando algumas e 
modificando outras.
Veremos agora as principais diferenças e as novidades que o HTML 5 nos proporcionou.
Antiga Estrutura:
 
Uma das maiores diferenças no HTML5 para as antigas versões é a ausência da referência de 
DTD ( Document Type Definition ou Definição de Tipo de Documento). Essa informação era pas-
sada através da declaração <! DOCTYPE> que vem no início de cada página HTML.
O <! DOCTYPE> é uma declaração (não é uma tag), que serve como um indicador para os na-
vegadores sobre qual versão do HTML a página foi escrita.
Então, antigamente no XHTML tínhamos 3 tipos de DOCTYPE:
PS: Mais a frente, nos próximos capítulos, iremos destrinchar o que é CSS. Por enquanto, não 
se preocupe muito se você ainda não sabe o que é ou como usar porque logo você saberá.
Acesso aos dispositivos
Com o HTML5 não precisamos mais do Adobe Flash, ou outros aplicativos para 
acessarmos Câmera, Microfone, sensor de movimento e gravidade, Geo loca-
lização. Pode-se requerer determinado dispositivo para usarmos em eventos, 
com integração com contatos, por exemplo. 
Conectividade
Conectividade mais eficiente com possibilidades de mais chats em tempo 
real, jogos mais rápidos e melhor comunicação. Através de WebSockets e 
Server-Sent Events a conexão entre cliente e servidor ficou mais eficiente .
 
Multimídia
Áudio e vídeo nativos sem a necessidade de plugins externos. Essas novas 
funções ainda não são renderizadas de forma homogenia entre os navega-
dores, mas já podemos usá-las sem medo de ser feliz.
Performance e Integração
CSS3 oferece uma ampla gama de estilização com mais efeitos, reforçando e 
melhorando a aplicação da web sem prejudicar a sua estrutura semântica e/
ou o seu desempenho. Além disso, o Web Open Font Format (WOFF) oferece 
flexibilidade e controle tipográfico muito além de qualquer coisa que a web 
já tenha oferecido.
108 109
Um dos casos dessa simplificação é a meta tag CHARSET que é usada para indicar o formato de 
codificação de caracteres usados no documento. Antigamente era assim:
<meta http-equiv = “Content-Type” content = “text / html; charset = utf-8”>
Com o HTML5 ficou assim:
<meta charset = “UTF-8”>
Bem mais fácil, não é?
A estrutura do corpo do HTML também ficou mais simples e ganhou mais semântica.
Para mostrar essas mudanças iremos usar um “wireframe” simples de um site com um topo, uma 
seção com conteúdo, uma parte lateral e um rodapé. 
Veja, na próxima página, como era:
OBS: O UTF-8 serve para além dos 128 caracteres básicos, os símbolos gráficos, também 
sejam codificados da maneira correta, como caracteres acentuados do português, por exemplo.
• Para documentos tipo Strict: 
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/
DTD/xhtml1-strict.dtd”> 
• Para documentos tipo Transitional: 
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xht-
ml1/DTD/xhtml1-transitional.dtd”> 
• Para documentos tipo Frameset:
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Frameset/ >
No HTML5 essa declaração ficou bem mais simples e fácil:
 
<!DOCTYPE html>
Essa simplificação se repete também nas metas tags , como veremos a seguir.
Meta Tags
Meta tags são tags de dados. São tags que fornecem informações (metadados) sobre o docu-
mento HTML. As tags <meta> não serão exibidos na página para o usuário. 
Elas são tags específicas para os robôs dos navegadores e buscadores (Google, por exemplo).
As metas tags são usadas para especificar a descrição da página, palavras-chaves, autor do docu-
mento, quando foi modificada pela última vez, entre outros. Elas sempre devem estar dentro da 
tag <head> do documento HTML.
110 111
Já com o HTML5, através das tags, dizemos aos robôs o tipo de conteúdo que será exibido. Ga-
nhamos tags semânticas, ou seja, damos significado ao conteúdo pelas tags. 
Confira como ficou mais semântico com o HTML5:
Antigamente usávamos muitas divs para estruturar um site. Usávamos “ids e class” (não se pre-
ocupe com isso agora, iremos ver mais a frente. Mas saiba que elas servem para dar identidade 
a uma tag.) para diferenciar e para estilizarmos essa divs, mas semanticamente elas não diziam 
nada para o navegador. Não informavam a importância e nem a hierarquia das tags no docu-
mento HTML.
112 113
Nav:
A nav, como você é um Galucho esperto e já deve imaginar, serve para a navegação. Ela é usada 
para os principais blocos de navegação do site, seja a condução dentro de seções da própria pá-
gina ou para navegação que nos levas a outras páginas.
Quando colocamos a navegação do nosso site dentro da tag <nav>, dizemos aos leitores de tela, 
para deficientes visuais, e robôs do Google que essa é uma navegação importante do site.
Aside:
A tag aside serve para conter conteúdos relacionados ao conteúdo principal, por exemplo: barras 
laterais, citações destacadas, propagandas, links de navegação para redes sociais, enfim, qualquer 
conteúdo que possa ser entendido como à parte do conteúdo principal da página. Pense assim, 
Galucho: basicamente umm conteúdo que se você tirar da página não prejudicará o sentido do 
conteúdo principal.
Apesar do nome, o aside não é somente e necessariamente para ser usado na barra lateral do site. 
Você pode inserir um aside dentro de um footer ou dentro de um article, por exemplo.
Footer:
O elemento footer é o rodapé (apesar de não precisarem necessariamente estar no final da página 
ou de um artigo, mas normalmente estão). Ele serve para agrupar conteúdos que normalmente 
colocamos no rodapé, como por exemplo, informações de direitos autorais, dados de quem es-
creveu o conteúdo, links para documentos relacionados, etc.
Assim como o header, podemos ter mais de um footer numa mesma página e dentro de outros 
elementos.
Definição das principais novas tags do HTML5
Section:
A section representa uma seção genérica de um documento. Serve para agrupar conteúdos do 
documento e de acordo com o tema. Mas cuidado, ele tem valor semântico, logo se pretendes 
usar um contêiner, ou bloco, de conteúdo genérico e/ou só para estilização use a tag div, que não 
possui valor semântico.
Article:
O elemento article é semelhante à section, entretanto ele tem significado mais específico para 
conteúdo. Ele funciona para marcarmos um conteúdo do tipo artigo de um blog ou uma matéria 
de jornal que pode ser lido e ter sentindo independentemente do site em que é encontrado. Cabe 
a você decidir usar a tag article baseando-se no conteúdo apresentado no seu site. 
Uma forma de saber se devemos ou não usar e, que muitos indicam, é se perguntar: esse conte-
údo é apropriado para se publicar em um feed RSS? 
E também: Esse conteúdo faz sentido independentemente da página em que está publicado? 
Independentemente do contexto no qual foi incluído?
Header:
O header serve para agrupar o cabeçalho de uma seção. Tudo que componha um cabeçalho 
pode ser agrupado por ele: navegação, títulos e subtítulos, ajudas introdutórias, sumário de se-
ção, formulário de pesquisa, logotipo que fica no topo do site, etc.
Podem existir vários “header” dentro de uma página e também dentro de outros elementos. 
Por exemplo: o header principal que agrupa os elementos do topo do site (logotipo, navegação, 
etc), um header de uma section (com um “breadcrumb” e botões de compartilhamento para re-
des sociais) e um para o article (com o título e um olho de matéria).
 115114Parabéns!!!
Agora você já sabe o que é, de onde vem e as principais características do HTML 5, além das pos-
sibilidades que ele nos fornece. Em breve colocaremos em prática tudo o que aprendemos!
Diferença entre Section e Article
Existe certa confusão sobre quando usar article ou section e vice e versa. No início do HTML5 
essa questão era bem mais frequente. Hoje em dia essa questão está mais amena e melhor 
compreendida, mas mesmo assim ainda existem dúvidas, principalmente nos novatos.
O importante é ter em mente que section serve para as separamos as seções do documento. 
Usa-se section para dividir o conteúdo em diferentes sessões e ele pode conter ou até mesmo 
estar dentro de um article, de outras tags e até mesmo de outro section. 
O elemento é menos especifico que o article e até que outras das novidades do HTML5.
 
Mas ele ainda assim tem valor semântico, en-
tão não devemos usar section apenas para fins 
de estilização. Caso precise de um elemento 
somente por questões de design e estilização, 
deve-se usar um elemento mais genérico, no 
caso a velha e conhecida div (<div>).
Já a tag article serve para o conteúdo princi-
pal do seu site. Usa-se article para o conteúdo 
mais relevante do documento. É o que o seu 
leitor entrou pra ler e que ele gostaria de ter 
em seu feed. E um article também pode ser 
aninhado dentro de um section, dentro de 
outros elementos e até de outro igual.
Então lembre-se que section é mais genérico 
e divide o conteúdo em seções enquanto que 
article é um elemento mais específico e que 
serve para colocar os principais conteúdos 
do documento.
116 117
CSS = “Cascading Style 
Sheets”
 
OU
Folha de 
Estilos em Cascata
O que é CSS?
118 119
Já com o CSS você executaria tal tarefa em um minuto.
Então, no nosso caso fictício, com CSS você mudaria as cores dos subtítulos de azul para verme-
lho, sem fazer nenhuma alteração no HTML, alterando apenas o arquivo CSS de forma rápida e 
simples (desde que o site tenha sido codificado corretamente utilizando um arquivo CSS exter-
no).
Usar elementos HTML para fins de apresentação é algo obsoleto e nada inteligente. Portanto, por 
mais que tais tags ainda possam funcionar, não as utilize. Sempre que a questão for de design, 
estética e apresentação, use CSS.
Como citado, no exemplo anterior, o CSS é escrito em um novo documento, entretanto existem 
outras opções de aplicação. Iremos ver como usamos essa linguagem na prática, mas antes va-
mos entender como ela funciona.
O que é o efeito cascata do CSS?
O CSS usa o efeito cascata. 
“Efeito cascata é o método pelo qual é aplicada uma regra CSS em função do peso (importância, 
prioridade) da regra CSS. Quando a um elemento HTML aplica-se mais de uma regra CSS, diz-se 
que há um conflito de regras e será aplicada aquela que tiver maior peso (importância, priorida-
de) determinada pela ordem do efeito cascata.” Fonte: Maujor 
E a ordem do efeito cascata do CSS é: Herança, Especificidade e Importância
Herança
Sabe herança familiar? Quando um filho herda do pai características genéticas e/ou os bens que 
ele tinha?
CSS é uma linguagem de estilos que define o layout de documentos escritos com linguagem de 
marcação, no caso o nosso HTML.
Ele adiciona um estilo a uma página e altera a forma visual de como ela é apresentada.
 O CSS foi uma revolução no design para web. Ele executa:
• controle do layout de vários documentos a partir de uma simples folha de estilos; 
• controle preciso do layout;
• aplicação de diferentes layouts para diferentes mídias (tela, impressora, celular, etc.); 
• avançadas técnicas de desenvolvimento;
• separa a estrutura do design - agilidade e performance.
O CSS é o responsável pelo visual de um site. Através dele aplicamos as cores, determinamos os 
tamanhos, os pesos (no caso de fontes), bordas, imagens, etc. Com isso, separa-se a linguagem 
de marcação (HTML) da camada de apresentação (estética, design) do site.
E essa alteração aparecerá em todo o site. E isso independentemente se o meu site tem 1 ou 100 
documentos HTML.
Em versões anteriores do HTML existiam elementos que eram específicos para apresentação, 
como por exemplo, <b>, <i>, <font>, <center>, <big>, etc. Eles eram utilizados para adicionar 
certas características visuais ao documento.
Mas imagine que você tem uma tarefa de criar uma página com 50 subtítulos. E lhe foi deter-
minado aplicar a cor azul a todos eles. Logo, para deixá-los com a cor azul você usa <font co-
lor=”blue”>, aplicando manualmente, em todos os subtítulos da página. 
Porém na manhã seguinte seu chefe pede para que você mude todos os subtítulos para a cor 
vermelha. Sem opção, (claro que você poderia pedir demissão, hehehe) você teria refazer tudo 
novamente, perdendo bastante tempo nessa refação indo em cada tag para mudar a cor.
121120
Como funciona o CSS? Parte 1 - Sintaxe
O CSS tem a sua própria sintaxe e estrutura. Uma regra CSS é composta por um seletor, uma pro-
priedade e um valor. Vamos conhecê-la? 
Logo, para criar uma declaração CSS, seguimos os seguintes passos: Apontamos o seletor; 
• Abrimos e fechamos chaves {};
• Dentro de chaves determinamos a propriedade e o valor;
• E caso precise aplicar mais de uma declaração ( propriedade + valor) utilizamos ponto e vírgula 
(;) ao final da declaração (após o valor), para separá-las.
Seletor : é o elemento HTML identificado por seu nome, classe, ID, etc; 
e para o qual a regra será aplicada (por exemplo: p, h1, form, .minhaclasse, :hover, etc.). 
O seletor funciona como se fosse um “alvo”. Eu aponto para o CSS qual tag ele aplicará o estilo 
que determinei, na regra CSS.
Propriedade : é a característica que será estilizada, de um elemento HTML , no CSS. 
Existem inúmeras propriedades CSS, por exemplo: font, color, background, etc.
Valor : é a aparência que será assumida pela propriedade CSS . Então, a propriedade 
define o que iremos estilizar enquanto que o valor define como ou quanto será estilizado.
Por exemplo: Eu quero determinar que o tamanho de um subtítulo, do meu documento HTML, 
será 14px. A propriedade para mudar o tamanho da fonte é font-size e o valor da propriedade 
seria 14px. Com isso teríamos o seguinte resultado:
seletor { propriedade: valor; }
O CSS tem esse sistema, portanto os elementos filhos herdam as declarações do elemento pai, 
simples assim. Por padrão ele já herda os estilos dos elementos pai, mas caso isso não ocorra e 
você queira forçar, você pode usar o valor ”inherit“ no css.
Especificidade
É quando você diz ao CSS qual elemento você quer que ele formate. Você faz isso através do 
seletor. O seletor seria a identificação de um elemento HTML. Iremos ver mais a frente como 
funciona os seletores.
Importância
A importância é uma exceção da regra. Usamos a declaração “!important” para aplicá-la. Essa 
declaração torna a especificidade do elemento que a contém maior do que qualquer declaração 
dentro do CSS.
Nota: Não devemos usar o !important toda vez que as declarações, 
por algum motivo, não estiverem funcionando. 
O !important é indicado apenas para situações extremas. Como 
como exemplo, quando você não fez o código, ele chegou até você 
todo mal estruturado, sujo, e você precisa urgentemente corrigir um 
“bug” (erro) crítico no site.
Caso contrário, devemos usar o princípio nativo do CSS de especi-
ficidade e herança, evitando ao máximo “sujeiras” no nosso código.
122 123
Agora para potencializar seu entendimento vamos associar os elementos que formam um bolo, 
e suas características, com os elementos que formam uma página (elementos do HTML) e suas 
características visuais (estilos CSS).
Você deve estar se perguntando: “Bolo? Mas eu não sei fazer bolo!”. Para nossa associação basta 
gostar de bolo, ou pelo menos conhecer um bolo.
Você já sabe que um documento HTML dispõe de tags para formar uma página. Imaginemos 
agora os principais elementos que formam um bolo como se fosse elementos HTML e atribuire-
mos o formato de tags para estes elementos.
Esqueça osingredientes. Quando você olha um bolo, quais são os principais elementos que po-
demos listar? Olhando de fora para dentro temos: 
• Cobertura;
• Dependendo do bolo, algumas camadas da massa assada (no nosso exemplo duas camadas: 
superior e inferior.);
• Recheio.
Agora imaginemos no formato de tags. Como a cobertura é o elemento externo em relação aos 
outros, classificaremos como uma tag que engloba as outras tags. Então teremos:
<cobertura>
 <camada superior do bolo> 
 </camada superior do bolo>
 <recheio>
 </recheio>
 <camada inferior do bolo> 
 </camada inferior do bolo>
</cobertura>
h2 { font-size: 14px; }
No exemplo assim acima informo que todo elemento “h2” encontrado no documento HTML terá 
um tamanho de fonte (font-size) de 14 pixel.
Conforme a sintaxe, utilizamos primeiro o seletor para dizer ao nosso navegador:
“Ei navegador, selecione todos os 
elementos h2 presentes neste 
documento HTML.”
Agora navegador se prepare para 
receber um valor para o tamanho 
de fonte de todos os elementos h2 
presentes no documento.”
“Navegador, atribua o valor 14px 
ao tamanho de fonte para que to-
dos os elementos h2 selecionados 
recebam este valor.”
h2 { font-size: 14px; }
h2 { font-size: 14px; }
Depois alertamos o navegador sobre uma propriedade comum a todos elementos de textos como o 
h2:
O navegador já está ciente que trabalhará com a propriedade “font-size” então damos o 
comando: 
h2 { font-size: 14px; }
Na sintaxe CSS, o conjunto de propriedades e valores que encontramos entre as chaves {} é cha-
mado de declaração e o seletor funciona como uma ligação entre o HTML e a esta declaração.
 
124 125
“Elemento HTML” 
do bolo Seletor Propriedades Valores
Cobertura Cobertura
• Sabor
• Cor
• Chocolate
• Marrom
Camada superior 
do bolo
Camada superior 
do bolo
• Largura
• Altura
• Comprimento
• Sabor
• Cor
• 30 cm
• 5 cm
• 50 cm
• Chocolate
• Marrom
Recheio Recheio
• Sabor
• Cor
• Prestígio
• Branco
Camada inferior 
do bolo
Camada inferior 
do bolo
• Largura
• Altura
• Comprimento
• Sabor
• Cor
• 30 cm
• 5 cm
• 50 cm
• Chocolate
• Marrom
AVISO: Reforçando que algumas propriedades citadas nesta aplicação não exis-
tem em CSS, como por exemplo, “sabor”. Esta é uma característica do bolo que 
usamos agora somente para associar com propriedades CSS.
Nosso código CSS ainda não está completo para estilizar a cobertura do bolo. Não adianta saber-
mos que a cobertura tem como propriedades sabor e cor se não definimos qual sabor e qual a 
cor. Portanto agora vamos dar valores para estas propriedades.
Como você é o “desenvolvedor” (confeiteiro) deste bolo você verificou no “Briefing” que o cliente 
precisa que o bolo tenha sabor de chocolate. Portanto você define que a cobertura tem sabor 
de chocolate e cor marrom. Agora basta colocar estes valores no campo destinado a valores na 
estrutura CSS. Vamos ver como fica?
cobertura { sabor: chocolate;
 cor: marrom;}
Agora sim temos uma cobertura “estilizada”. Podemos dizer que a cobertura que antes não era 
nada, agora tem sabor chocolate e cor marrom (poderia ser branco se o bolo fosse de chocolate 
branco, por exemplo).
E você pode replicar os conceitos para os outros três elementos restantes do bolo. Quando você 
pensa em folhas de estilo, você pensa em que tipos de características (propriedade) um elemen-
to possui e como vai selecioná-lo (seletor) para que você possa atribuir a qualidade (valor) para 
cada tipo de característica identificada.
Olhe os elementos do bolo e suas propriedades na tabela a seguir:
126 127
Preferi adotar um recheio diferente com sabor e cor diferente da cobertura. Não sei se você no-
tou que tanto a camada superior do bolo quanto a inferior possui os mesmos valores. E quando 
isso acontece você pode adotar uma versão da sintaxe CSS que possibilita juntar dois seletores 
que possuem propriedades iguais. 
 
Veja a sintaxe:
seletor 1 , seletor 2 { propriedade: valor;}
Você pode ter “N” seletores separados por vírgulas. Com isso você diminui o tamanho do arquivo 
CSS e fica mais organizado. Confira como o código ficou reduzido:
cobertura {
 sabor: chocolate;
 cor: marrom;
}
camada superior do bolo , camada inferior do bolo { 
 largura: 30cm;
 altura: 5cm;
 comprimento: 50cm;
 sabor: chocolate;
 cor: marrom;
 }
recheio {
 sabor: prestígio;
 cor: branco;
}
Com isso terminamos de estilizar o bolo. Usamos o seu conhecimento prévio sobre “bolos” para 
compreender como funciona a sintaxe básica CSS. :) Mais a frente vamos trazer essa nova expe-
riência associativa para o campo de batalha real com verdadeiros códigos CSS e HTML.
A partir desta tabela vamos completar o CSS dos elementos restantes:
cobertura {
 sabor: chocolate;
 cor: marrom;
}
camada superior do bolo { 
 largura: 30cm;
 altura: 5cm;
 comprimento: 50cm;
 sabor: chocolate;
 cor: marrom;
}
recheio {
 sabor: prestígio;
 cor: branco;
}
camada inferior do bolo { 
 largura: 30cm;
 altura: 5cm;
 comprimento: 50cm;
 sabor: chocolate;
 cor: marrom;
}
128 129
Incorporadas
É considerada incorporada quando as regras de uma folha de estilo são declaradas na seção head 
do documento HTML dentro do elemento HTML “style”. Este elemento é dedicado especialmente 
para abrigar informações sobre estilos para o documento. Veja sintaxe:
<!DOCTYPE html>
<html>
 <head>
 <meta charset=”UTF-8”>
 <style type=”text/css”>
 h2 { font-size:18px;}
 </style>
 <title>Exemplo de folha de estilo incorporada</title>
 </head>
 <body>
 <h2>Este título possui 18 pixels de tamanho. Valor declarado na regra CSS incorporada 
 no documento entre as tags “style”</h2>
 </body>
</html>
Você pode usar folhas de estilos incorporadas quando o estilo for aplicado somente para uma 
página. Qualquer tipo de alteração nas regras CSS só serão aplicadas no documento onde a folha 
de estilo esteja incorporada. Para que uma regra seja aplicada em todas as páginas de um site o 
ideal é trabalhar com folhas de estilos externas.
Nota: Na tag de abertura do elemento “style”, temos o atributo “type” cujo valor é “text/css”. 
O atributo “type” indica que tipo de conteúdo será utilizado no elemento “style”. O valor 
“text/css” diz que o conteúdo é CSS, portanto, estamos especificando o tipo de folha de esti-
lo utilizada no documento. Porém no HTML5, não é obrigatório especificar. Sendo assim, no 
HTML5, podemos utilizar apenas <style>.
Como funciona o CSS? Parte 2 - Vinculando as fo-
lhas de estilos ao documento HTML
Brincando com associações desenvolvemos a sintaxe das folhas de estilos, mas ainda está tudo 
meio solto. Você não sabe como vincular o CSS aos documentos HTML e é isso que veremos 
agora.
Basicamente existem três formas de vincular. Estas formas determinam a localização das folhas 
de estilos e as classificam em três tipos:
• Inline;
• Incorporadas;
• Externas.
Inline
Este tipo faz com que as regras CSS sejam declaradas dentro de uma tag de abertura usando o 
atributo “style”. Veja a sintaxe abaixo:
<h2 style=”font-size: 18px”>Este título possui 18 pixels de tamanho</h2>
Não indicamos que se faça o uso do tipo inline indiscriminadamente, pois ele mistura a marcação 
HTML com a apresentação, que de certa forma é um retrocesso a uma época que o HTML também 
tinha a função de estilizar. Este método nos priva de todas as vantagens das folhas de estilos e 
só deve ser usada em casos excepcionais quando seu uso for mais imprescindível que os outros 
tipos que iremos mostrar.
130 131
• rel=”stylesheet” - O atributo “rel” descreve o conteúdo do arquivo de destino. Neste caso, o 
conteúdo se trata de uma folha de estilo.
• href=”estilo.css” - O atributo “href” já é um velho conhecido nosso. Neste caso ele especifica 
a localização do arquivo CSS. Reforçando que assim como as imagens, arquivos CSS podem 
se localizar no mesmo diretório do documento HTML, em outros níveis de diretórios e até em 
outros servidores.
Agora veja a sintaxe aplicadano arquivo HTML e no arquivo CSS:
1. Arquivo HTML:
<!DOCTYPE html>
<html>
 <head>
 <meta charset=”UTF-8”>
 <title>Exemplo de folha de estilo externa linkada</title>
 <link rel=”stylesheet” href=”estilo.css”>
 </head>
 <body>
 <h2>Este título possui 18 pixels de tamanho. Valor declarado na regra CSS dentro do 
 arquivo “estilo.css” 
 </h2>
 </body>
</html>
Externas
Uma folha de estilo externa é quando as regras CSS são declaradas em um arquivo separado do 
arquivo HTML que você trabalha. Um arquivo de folha de estilo tem a extensão .css. 
Exemplos: estilo.css, style.css, qualquer-nome.css.
É muita vantajoso trabalhar com arquivos CSS pois além de separar a marcação (HTML) da 
apresentação (CSS), você pode alterar um estilo de um site inteiro com uma simples edição nas 
regras definidas nesta folha de estilos externa (arquivo CSS).
Mas como vincular este arquivo CSS ao documento HTML? Existem duas formas de se fazer isso: a 
primeira e mais comum é “linkando” o arquivo da folha de estilo externa. A segunda é importando. 
Primeiro vamos mostra a sintaxe da “linkagem” externa. Para isso é hora de conhecer melhor 
o elemento HTML “link”.
Esta é a sintaxe que você deve usar para vincular um arquivo externo ao documento HTML. Note 
que você não precisa do elemento “style”. O elemento “link” é suficiente. Observe que ele é um 
elemento nulo e deve estar localizado entre as tags <head></head>
Ele pode possuir mais alguns atributos, mas os que mostraremos abaixo é basicamente o que 
você precisa para linkar o seu CSS.
Nota: Essa “linkagem” não é executa pelo elemento HTML “a” e sim pelo elemento “link”. O ele-
mento “a” estabelece uma relação com o arquivo de destino (abre outro arquivo ou página). Já 
o elemento ‘link” estabelece uma relação entre o documento HTML e o conteúdo do documen-
to de destino. No caso “stylesheet” (folha de estilo).
<link rel=”stylesheet” href=”estilo.css”>
132 133
Como resultado teremos uma página com fundo amarelo e um título com 18 pixels de tamanho. 
Confira: 
Bom... Agora vamos mostrar como importar um arquivo CSS.
Um exemplo de importação que podemos imaginar é quando você quer separar as seções do site 
em arquivos CSS diferentes, para que você possa encontrar mais facilmente um item que você 
precisa alterar em uma manutenção no futuro.
2. Arquivo CSS:
Crie um novo arquivo no seu editor e insira o seguinte código na sua folha de estilos:
h2 { font-size:18px;}
Simples assim. Note que como só estilizamos o elemento H2, o arquivo CSS contém somente 
estes dados que você inseriu. E também não precisa estar entre as tags <style></style>. Podemos 
,se assim acharmos melhor, também estilizar o elemento body, por exemplo, colocando uma cor 
de fundo (background-color) amarela. 
Veja como fica:
body {background-color: yellow}
h2 { font-size:18px;}
Para que a aparência seja alterada é preciso que salve as modificações no arquivo “estilo.css”. 
Certifique-se que seu editor salve diferentes extensões de arquivos para web. 
Geralmente basta definir o nome do se arquivo e escolher a extensão .css dentre as 
opções lá existentes.
134 135
<!DOCTYPE html>
<html>
 <head>
 <meta charset=”UTF-8”>
 <title>Exemplo de folha de estilo externa importada</title>
 <style type=”text/css”>
 @import url(“estilo.css”);
 </style>
 </head>
 <body>
 <h2>Este título possui 18 pixels de tamanho. 
 Valor declarado na regra CSS dentro do arquivo “estilo.css”</h2>
 </body>
</html>
Se atente a sintaxe:
<style type=”text/css”>
 @import url(“estilo.css”);
</style>
Perceba que é necessário abrir e fechar as tags do elemento HTML “style”. Dentro delas temos a 
regra @import responsável por importar todas as regras do arquivo “estilo.css”. O url(“”) representa 
a localização do arquivo CSS a ser importado. O caminho pode ser relativo ou absoluto.
Visualmente o resultado será o mesmo que obtemos na página web do tópico sobre 
linkagem externa.
Um site comum possui um topo, um menu, uma coluna lateral (sidebar), uma coluna de largura 
maior e um rodapé. 
No nosso exemplo, a gente criaria arquivos CSS separados para estilizar essas regiões do site 
separadamente. Ficaria algo do tipo: “topo.css”, “menu.css” e assim por diante. E estes arquivos 
seriam importados através da regra @import. 
Vamos agora a sintaxe:
1. Arquivo CSS:
body {background-color: yellow}
h2 { font-size:18px;}
Usaremos as mesmas regras do exemplo usado na linkagem externa. Nada muda. Podemos salvar 
o arquivo com o mesmo o nome (“estilos.css”).
2. Arquivo HTML:
O arquivo HTML é similar ao do exemplo usado na linkagem. A alteração importante está entre 
as tags do elemento HTML “head”. Confira:
Nota: O exemplo descrito acima é para fins didáticos. Deve-se sempre levar em conta, em seu 
planejamento, se o uso deste recurso pode afetar o desempenho do seu site. O emprego dele 
em um site muito grande e com muito acesso talvez não se justifique porque o carregamento 
total da página pode ser considerado “pesado”.
136 137
• O seletor de tipo;
• O seletor de id;
• O seletor de classe;
• O seletor pseudo-classe para links com mouse sobre eles;
• E o seletor universal.
Seletor de tipo
Este tipo de seletor é usado para selecionar elementos HTML de um mesmo tipo. Usamos em 
exemplos anteriores com o elemento “body” e o “h2”. É aplicado quando você quer estilizar todas 
as marcações de um elemento específico em todo um site independente de quantas vezes ele 
aparece. Por exemplo, se temos 10 parágrafos em um documento e uso o seletor de tipo para 
que o elemento “p” fique em negrito, todos os 10 parágrafos assim ficarão (isso se nenhum outro 
seletor especifico sobrescrever a regra). 
p { font-size:12px;}
Por falar em seletor específico... Vamos ao seletor de id!
Seletor de id
Ele serve para selecionar um elemento HTML que tenha o atributo “id” nomeado com o nome 
do seletor. Na regra CSS o seletor id é identificado pelo símbolo “#” seguido pelo nome que você 
especificou (ou especificará) no atributo do elemento HTML. 
Para entender melhor, veja os códigos abaixo.
HTML: <h2 id=”um”>Este título possui 18 pixels de tamanho.</h2>
CSS: #um { font-size:18px;}
O código HTML e os arquivos usados até esta etapa 
se encontram neste link para download.
Como funciona o CSS? 
Parte 3 - Tipos de seletores
Existe uma diferença fundamental entre nosso exemplo do bolo (lembra?) e os códigos que 
estamos aprendendo neste E-book. No exemplo do bolo ficamos livres para criar tags imaginárias 
e principalmente propriedades CSS. 
Com certeza isso serviu para você entender a sintaxe. Entretanto, para estilizarmos um site, temos 
que seguir um padrão específico que determina os tipos de propriedades que usaremos para 
cada tipo de elementos. Esse padrão deve seguir as recomendações da W3C.
Não é a proposta deste E-book destrinchar toda as recomendações W3C. Você se lembra do 
esquema 80/20? Você agora precisa de fluência, por isso focaremos nos tipos de seletores e 
propriedades mais usadas para que você consiga aplicar tranquilamente em um site. 
Começaremos com os tipo de seletores mais usados. A lista de tipos é imensa e você pode conferir 
neste link (http://www.w3.org/TR/selectors/). Porém, eu recomendo você não clicar neste link 
tão cedo. 
Aguarde que seus conhecimentos iniciais se solidifiquem antes de você avançar neste caminho.
Com 5 seletores que mostraremos você já será capaz de estilizar um site com tranquilidade.
São eles:
http://ebookhtmlcss.com/arquivos/capitulo-3/arquivos-para-download-5.zip
http://ebookhtmlcss.com/arquivos/capitulo-3/arquivos-para-download-5.zip
http://www.w3.org/TR/selectors/
138 139
Note que o uso dos atributos “class” é similar ao “id”. O nome usado em “class” deverá ser usado 
no seletor da folha de estilo precedido por um ponto (.um).
Outra coisa que percebemos é que repetimos a “class” em dois momentos no código, no elemento 
“h2” e no “p”. Isto é permitido, fazendo dele um tipo de seletor bastante flexível.
 
Você pode aplicaruma mesma regra para diversos elementos dentro de um mesmo documento 
HTML. É uma das formas mais utilizadas para dar aparência aos elementos de interfaces.
Seletor de tipo “a” + pseudo-classe “hover” 
O “a:hover” é usado em hiperlinks para aplicar um estilo quando o usuário passa o mouse sobre 
o elemento, como por exemplo, mudar a cor do texto do link. Você encontra este tipo de efeito 
em vários sites por aí. 
Vamos a um exemplo:
HTML:
<a href=”pagina-de-destino.html”>Página de destino</a>
CSS:
a {color: blue; }
a:hover {color: red;}
Veja que o seletor “a” deixa o link azul. Mas quando se coloca o mouse sobre o link ele ficará 
vermelho. Assim que se retira o mouse ele volta a ficar azul.
Detalhe importante: Cada “id” especificada é única e não deve existir repetição dentro 
de um mesmo documento HTML. Você pode repetir o atributo “id”, porém com nomes diferentes.
<h2 id=”um”>Aqui estou usando o id como nome “um”</h2>
<p id=”um”>Estou repetindo o mesmo id (ERRONEAMENTE) em um 
mesmo documento dentro deste parágrafo”</p>
Seletor de classe
Ele serve para selecionar um elemento HTML que tenha o atributo “class” nomeada com o nome 
do seletor. Na regra CSS o seletor class é identificado por um ponto (.) seguido pelo nome que 
você especificou (especificará) no atributo do elemento HTML. 
Para entender veja os códigos abaixo:
HTML:
<h2 class=”um”>Este título possui 18 pixels de tamanho.</h2>
<p class=”um”>Estou repetindo o mesmo id em um mesmo documento dentro deste parágrafo”.</p>
CSS:
.um { font-size:18px;}
140 141
Seletor universal
Ele é representado pelo caractere “*” e se aplica a todos elementos de uma página. Ele é geral-
mente usado para “resetar” propriedades aplicadas automaticamente pelos navegadores. Cada 
navegador tem seu jeito próprio de aplicar seus padrões de estilos. Ao “resetar” esses estilos atra-
vés do seletor universal, você “zera” qualquer estilo pré-definido e tem a liberdade de definir as 
regras CSS sem a interferência dos navegadores.
Para você ter uma ideia existem duas propriedades CSS muitas usadas e que já vem pré-definidas 
em alguns navegadores e que influenciam na aparência de certos elementos HTML. São elas as 
propriedades “margin” e “padding” (explicarei a utilização delas mais a frente). Para impedir que 
isso acontece basta aplicar a sintaxe a seguir atribuindo o valor zero nas duas propriedades. Veja:
* {
 margin: 0
 padding: 0;
}
Com isso todos elementos da página web terão propriedades “resetadas” deixando você livre para 
atribuir o valor que você bem entender para os elementos que queira aplicar essas propriedades.
Mas agora você pode estar se perguntando: “Quais propriedades eu devo utilizar no reset?” 
Você pode adotar nas primeiras páginas o seguinte código em sua folha de estilo:
* {
 margin:0;
 padding:0;
 list-style:none;
 vertical-align:baseline;
 border: none;
}
Este efeito também acontecerá quando você preferir usar “id” ou “class” no lugar do seletor do 
tipo “a”. Veja:
HTML usando atributo “id”:
<a href=”pagina-de-destino.html” id=”link_id”>Página de destino</a>
CSS:
#link_id {color: blue;}
#link_id:hover {color: red;}
E HTML usando atributo “class”:
<a href=”pagina-de-destino.html” class=”link_class”>Página de destino</a>
CSS:
.link_class {color: blue; }
.link_class:hover {color: red;}
Uma “pseudo-classe” é parecida com uma “class”, mas não são definidos por quem está 
desenvolvendo e tem a função de adicionar efeitos em seletores, ou em parte deles.
Você pode conferir, depois, mais sobre pseudo-classe visitando o site da W3C no link:
 
http://www.w3.org/TR/selectors
http://www.w3.org/TR/selectors/
143142
Como funciona o CSS? 
Parte 4 - Propriedades mais usadas
Existe uma infinidade de propriedades. Algumas são usadas com muita frequência e outras com 
frequência menor, em casos específicos.
Em vez de apresentar uma lista extensa e tediosa com todas as propriedades, optamos por apre-
sentar e explicar as propriedades de uso mais frequente. Agora é para valer!!!
Começaremos montando a estrutura básica do HTML que você já conhece, e com um box entre 
as tags “body”. Também colocaremos um “algo a mais” que explicaremos logo, logo:
<!DOCTYPE html>
<html>
 <head>
 <meta charset=”utf-8”>
 <title></title>
 </head>
 <body>
 <!-- Invólucro para abrigar os box internos -->
 <div class=”wrapper”>
 </div> 
 <!-- Fim do invólucro -->
 </body>
</html>
Você encontrará os principais tipos de regras CSS neste site: http://www.cssreset.com/
Ou em uma pesquisa rápido no Google. 
 
Com o tempo e o ganho de experiência você conseguirá criar o seu próprio reset.
Enfim chegamos em um dos fundamentos principais do CSS.
Quando damos valores às propriedades CSS, os elementos HTML selecionados tomam formas, 
cores, ganham posicionamentos nas telas e até podem ser animados.
Então, agora vamos a prática , utilizando o método 80/20, para aprender as propriedades mais 
usadas do CSS. 
http://cssreset.com/
144 145
Agora que já sabe o que é e como criar um comentário se atente ao comentário do código da 
nossa página. O texto dentro do comentário “Invólucro para abrigar os box internos” quer dizer 
que um box maior irá abrigar internamente outros box (elementos filhos). “Wrapper” é o nome do 
atributo class da div que abrigará todos os elementos, e significa invólucro. Poderíamos, e você 
pode, usar outro nome. Optamos por “wrapper” por que é um nome comum em diversos sites 
principalmente em gerenciadores de conteúdo.
Próximo passo agora é aplicar estilos aos elementos apresentados até agora.
Inicialmente colocaremos os estilos iniciais dentro do elemento HTML “style” entre as tags “head”.
Usaremos o seletor universal para “resetar” as margins e padding e iremos estilizar os elementos 
dentro de “body”, começando por ele mesmo:
<!DOCTYPE html>
<html>
 <head>
 <meta charset=”utf-8”>
 <title></title>
 <style type=”text/css”>
 * {
 margin:0;
 padding:0;
 }
 body {
 font-family: Tahoma, Arial, sans-serif;
 font-size: 16px;
 line-height: 16px;
 background: #a8c8ca url(img/bg.png);
 color: #444444;
 }
Salvaremos este documento como “estrutura.html”. 
Agora vamos interpretar a estrutura criada:
• Vemos que o código não possui ainda nada de CSS;
• É opcional colocar um título entre as tags “title” já que se trata apenas de uma página de mo-
delo. Optamos por não colocar;
• Existe uma novidade. São dois textos entre estes símbolos: <!-- e -->. Estes símbolos são cha-
mados de comentários. 
Comentários servem para organizar e identificar trechos de códigos. São uma mão na roda que 
facilitam a manutenção, pois você pode usar para explicar algo importante no código. 
Detalhe: os comentários não são exibidos no navegador. 
Compreenda a sintaxe:
1. Você abre o bloco de comentários com um sinal de < (menor que), um ponto de ! (exclama-
ção), seguido por -- (dois hifens):
<!--
2. Depois você coloca o comentário que deseja.
3. Para fechar o bloco de comentários você utiliza -- (dois hifens), seguido pelo sinal de > (maior 
que):
-->
Exemplo: 
<!-- Isto é um comentário -->
 </style>
 </head>
 <body>
 <!-- Invólucro para abrigar os 
 box internos -->
 <div class=”wrapper”>
 </div> 
 <!-- Fim do invólucro -->
 </body>
<html>
146 147
Sabemos que o seletor universal aplica estilos a todos elementos HTML. Você se lembra dos có-
digos do bolo? Para o elemento “cobertura” determinamos duas características que ela possui 
como propriedades: sabor e cor. 
cobertura { sabor: chocolate;
 cor: marrom; }
Assim como também para os elementos representados pelo seletor universal atribuímos carac-
terísticas necessárias para o projeto, no caso as propriedades “margin” e “padding”. E determina-
mos o valor zero. Aguarde só mais um pouco que mais a frente aprofundarei sobre essas proprie-
dades. Agora é hora de aprender com estilizar os “fundos” de sites.
Você deve se lembrar da sintaxe CSS do exemplo do bolo e chocolate,certo? Só que agora temos 
propriedades, valores e seletores reais! Esta sintaxe vai ser responsável para atribuir valores de 
propriedades para os elementos HTML setados pelos seletores.
Começamos pelo seletor universal *. No nosso código CSS ele determina que as propriedades 
“margin” e “padding” têm valor zero. 
Caso tenha dificuldade em identificar quem é seletor, quem é propriedade e quem é valor, veja o 
gráfico a seguir para refrescar sua memória.
148 149
O que você vê é uma página sem conteúdo, logicamente porque no HTML só inserimos tags sem 
conteúdo. E você também vê um fundo de cor azul coberto por quadriláteros. Para entender como 
obtemos este fundo vamos avaliar a sintaxe aplicada ao exemplo. O elemento HTML “body” recebeu 
a seguinte sintaxe:
background: #a8c8ca url(img/bg.png);
Meu amigo Galucho, você deve achar agora o valor desta propriedade visualmente um pouco com-
plexo. Entretanto não tem grande mistério. O segredo é que existem dois valores separados por um 
espaço. O valor “#a8c8ca” e o valor “url(img/bg.png)”. Estes valores representam duas propriedades 
que foram unificadas dentro da propriedade background. À isso chamamos de “declaração única”.
Background-color e Background-image
Se existem dois valores que foram unificados dentro de uma declaração, seria possível existir pro-
priedades específicas para estes valores? A resposta é sim. A propriedade “background” possui va-
riantes. Veja a seguir as declarações separadas com suas respectivas propriedades:
background-color: #a8c8ca;
background-image: url(img/bg.png);
Vendo assim separado fica mais fácil de entender, né? Background-color é uma propriedade que 
determina a cor do fundo. Já background-image determina uma imagem de fundo.
Os caracteres #a8c8ca são uma representação do sistema hexadecimal para apresentação de cores 
para web. É uma recomendação da W3C que você use este sistema para garantir que as cores se 
apresentem corretamente nos navegadores.
Para definir uma cor através de um código hexadecimal ele deve seguir algumas regras. 
Veja:
Como funciona o CSS? Parte 4.1 - Background
Seguindo a sequência ,da formatação da página modelo, o próximo elemento a avaliarmos sobre 
o estilo é o “body”. E com este elemento que conheceremos uma propriedade bastante utilizada 
que é o “background”.
Ela serve para definir as características de fundos dos elementos HTML. É responsável por atribuir 
valores de cor, posicionamento, imagens para fundos, entre outros. Para dar prosseguimento va-
mos recordar nosso código CSS:
body {
 background: #a8c8ca url(img/bg.png); 
 color: #444444;
 font-family: Tahoma, Arial, sans-serif;
 font-size: 16px;
 line-height: 16px
}
Veja que com isso uma sim-
ples página em branco apre-
senta finalmente um visual 
colorido através do CSS. 
E só para antecipar este fun-
do será utilizado em uma 
proposta montagem de site 
que você verá ainda neste 
E-book. :D
150 151
Lógico que leva um certo tempo para 
quem é iniciante entender todo esse 
funcionamento. Porém, para o bem 
geral da nação, os editores de ima-
gem fornecem esses valores. 
Quando você projeta seu layout no 
Photoshop ou Fireworks você pode 
através da ferramenta “conta-gotas” 
selecionar a cor de um elemento e 
obter o código hexadecimal da cor 
no painel “ Color Picker”.
Daí é só colocar no código CSS.
Você chegou a ver neste livro decla-
rações de cores usando nomes em 
inglês, tipo {color: blue}. Entretanto 
para fins práticos indicamos o siste-
ma hexadecimal que é muito usado. 
Você vai encontrar outros sistemas 
de cor em códigos CSS. É possível, 
que no futuro, alguns deles possam 
até ser mais aplicados que o hexade-
cimal, por causa da possibilidade de 
se mexer com a opacidade de cores. 
Segue abaixo alguns sistemas existentes que podemos usar no CSS:
• Sistema RGB
• Sistema RGBA
• Sistema HSL
• Sistema HSLA
• Ele pode ter seis dígitos e deve começar com o símbolo #. 
 
Exemplo:
 #FFFFFF - Este código possui os seis dígitos e determina a cor branca.
• Os seis dígitos devem estar entre 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E a F. 
Sendo F o maior valor.
E esses grupos são divididos em 3 grupo de dois caracteres. Veja a seguir:
#FF0000 
Este código possui três pares; FF, 00, 00. Juntos eles determinam a cor vermelha.
A ordem dos pares, da esquerda para direita, representa o sistema de cores RGB (Red, Green, Blue) 
reproduzindo as cores através da “mistura” das cores aditivas Vermelha, Verde e Azul. Sendo que 
o primeiro par corresponde a quantidade de cor vermelha, o segundo corresponde a cor verde e 
o terceiro a cor azul.
Os dígitos no sistema hexadecimal representados por números têm valores mais baixos compa-
rados as letras, indicando cores mais escuras. Isso explica o porquê o código #000000 é a cor 
preta, pois indica ausência total de cor. Cada par 00 representa 0% de uma das cores do sistema 
RGB. Portanto a cor preta tem 0% de vermelho, 0% de verde e 0% de azul.
Ao contrário o código #FFFFFF que é cor branca indica a presença total de cores, isto é, 100% de 
vermelho, 100% de verde e 100% de azul. Tudo porque cada par FF indica 100% de cor. A mistura 
de das cores primárias aditivas a 100% resulta em branco. 
Para fixar melhor vamos a cor vermelha (#FF0000):
Da esquerda para direita temos o símbolo #. Depois 100% de vermelho indicado pelo par FF. Se-
guindo por 0% de verde indicado pelo par 00. E para finalizar 0% de azul indicado pelo par 00.
152 153
A imagem que usamos como background tem somente 18 por 18 pixels que através de uma de-
claração CSS é repetida, tanto na vertical, quanto na horizontal, quantas vezes forem necessárias. 
Ela traz a ilusão que é uma imagem criada em editor através de linhas em plano de fundo azul. 
Só que na verdade é uma pequena imagem construída com traços negros, formando um “quase 
quadrilátero, sem fundo algum e salvo como PNG transparente.
Mas porque tudo isso? (Você deve se perguntar). Essa “manobra” faz que o site carregue sensivel-
mente mais rápido do que colocar uma imagem de fundo de grandes dimensões para conseguir 
o mesmo efeito visual. 
Para continuar na nossa proposta 80/20 nós não aprofundaremos nesses sistemas. Pedimos que, 
neste primeiro momento, você foque no hexadecimal até ficar bem seguro na sua aplicação.
Para consulta posterior visite este link onde se encontra uma ótima fonte sobre todos os sistemas 
de cores: http://tableless.com.br/sobre-cor-e-webdesign/
Voltando ao nosso exemplo, caso aplicássemos esta declaração: {background-color: #a8c8ca;} 
E excluíssemos esta: {background-image: url(img/bg.png);}. Veríamos somente a cor de fundo:
Talvez você imaginasse que 
aquele fundo azul com li-
nhas em diagonais cruza-
das fosse algo feito em um 
editor visual. Em parte sim, 
mas sem usar nada da cor 
azul. Vou explicar:
Você já deve ter visto ima-
gens de fundo, principal-
mente em topos de sites, 
onde a imagem é uma fo-
tografia que praticamente 
cobre a largura do navega-
dor. Entretanto em alguns 
casos, como o do exem-
plo, não justifica este tipo 
de uso. É nesta hora que 
o profissional Designer ou 
Desenvolvedor se diferen-
cia dos ditos “sobrinhos”. 
Você deve “usar menos para 
conseguir mais”. 
http://tableless.com.br/sobre-cor-e-webdesign/
154 155
horizontal, vertical ou em ambas continue uniforme. Veja no gráfico a seguir:
O primeiro exemplo possibilita a repetição, lado a lado(de um pequeno trecho extraído do design, 
projetado e salvo como imagem, tanto verticalmente como horizontalmente) via CSS. Veja que o 
resultado no navegador será conforme projetado, sem deformações. Isso diminuirá o tempo de 
carregamento dessa imagem muitas vezes em relação ao uso da arte completa. 
Já no segundo exemplo você até pode inserir um pequeno trecho, porém o resultado não será o 
mesmo do projetado devido ao design ter muitos detalhes. Isso impossibilita a extração de algum 
trecho mínimo da imagem, que repetido lado a lado, forme um design completo e sem deforma-
Agora veja o inverso. A imagemde fundo gerada através da declaração “background-image: url 
(img/bg.png)” sem a declaração de cor “background-color: #a8c8ca”.
Desvendamos a mágica por trás das cortinas! O background com CSS pode ser formado com 
cores e imagens. Mas também nada impediria da imagem de 18 por 18 pixels não ter fundo trans-
parente. Isso depende de o quanto de performance o site conseguirá.
Porém essa técnica só é possível com uma imagem que repetida diversas vezes, seja na posição 
156 157
Veja a declaração única: com o “repeat”:
background: #a8c8ca url(img/bg.png) repeat;
Bom... Mas se “repeat” é padrão e não precisa ser declarado, isso quer dizer que existem outros 
valores, com outras funções, e que precisam de declaração. Vamos a eles?
• background-repeat: repeat-x;
Usamos “repeat-x” quando queremos que a imagem de fundo se repita no sentido horizontal. 
Veja a seguir a versão ampliada resultado da sintaxe:
 
body {background: #a8c8ca url(img/bg.png) repeat-x;}
• background-repeat: repeat-y;
Quando queremos que uma imagem de fundo se repita no sentido vertical, usamos “repeat-y”. 
Veja a seguir a versão ampliada resultado da sintaxe:
 
body {background: #a8c8ca url(img/bg.png) repeat-y;}
ção. O resultado se torna insatisfatório. 
Neste caso é indicado a inserção via CSS da imagem projetada inteira, o que levará ao um au-
mento no tempo de carregamento do site. O que nem sempre pode ser considerado um proble-
ma. Existem muitos sites que utilizam uma imagem gigante de background. A percepção de velo-
cidade de um site pode variar em cada público alvo e em cada dispositivo usado para acessá-lo.
Agora você já sabe como o fundo do nosso exemplo foi construído, entretanto um detalhe ficou 
oculto no código: não existe uma propriedade ou valor que diga que a imagem de fundo (bg.
png) deva repetir. Vamos entender porque a seguir.
Background-repeat
A declaração única que usamos para o fundo do site é:
background: #a8c8ca url(img/bg.png);
Que é a junção das declarações abaixo:
• background-color: #a8c8ca;
• background-image: url(img/bg.png);
• background-repeat: repeat;
Temos uma propriedade nova para seu conhecimento: o “background-repeat”, cujo valor é “re-
peat”. Mas por que o valor repeat não aparece na declaração única?
O valor “repeat” indica que uma imagem deve repetir tanto na horizontal, quanto na vertical. E 
ele não está na declaração única porque tanto faz. É um padrão do CSS que indica que a imagem 
vai repetir no eixo X (horizontal) e no eixo Y (vertical). 
Então as ações de indicar ou não o valor “repeat” estão ambas corretas. 
158 159
Com isso podemos falar sobre uma propriedade CSS que posiciona a imagem de fundo em dife-
rentes pontos de um bloco, a propriedade “background-position”.
Background-position
Apesar de não ser usada no elemento “body” do nosso exemplo, passaremos os princípios básicos 
por acreditarmos que é uma propriedade muito usada.
Na figura anterior, a imagem ficou no topo e na extremidade esquerda no elemento body. Não 
declaramos o “background-position” pois este é o padrão CSS. Porém dentro de um bloco você 
pode deslocar a imagem de fundo para diferentes posições. Digamos que você quer deslocar a 
imagem para o canto superior direito do bloco estilizado. 
Logo, você deve incluir nos valores para onde você quer a imagem fique posicionada. Para isto 
você pode usar a seguinte sintaxe: 
nome-do-seletor {
 background: url(endereço-da-imagem.jpg) no-repeat top right;
}
Neste exemplo usamos a 
propriedade “background” 
para adicionar as posições 
que queremos. Este é um 
jeito simplificado de posi-
cionar a imagem. 
Mas se preferirmos pode-
mos também usar a pro-
• background-repeat: no-repeat;
O valor “no-repeat” é usado quando não queremos que uma imagem se repita. Portanto ela apa-
recerá somente uma vez. Veja a seguir a sintaxe:
body {background: #a8c8ca url(img/bg.png) no-repeat;}
Note que a nossa imagem não se repetiu e ficou no canto esquerdo superior do navegador. 
160 161
• Exemplo 1:
nome-do-seletor {background: url(endereço-da-imagem.jpg) no-repeat 200px 300px;}
Neste exemplo você está posicionando a imagem de fundo em 200 pixels à esquerda em relação 
a borda do bloco e a 300 pixels do topo.
Clique aqui e veja na prática o resultado.
• Exemplo 2:
 
nome-do-seletor {background: url(endereço-da-imagem.jpg) no-repeat 50% 70%;}
Neste exemplo você está posicionando a imagem de fundo 50% a sua esquerda em relação a 
borda do bloco e a 70% do topo.
Clique aqui e veja na prática o resultado.
Background-attachment
Para encerramos o assunto sobre background falaremos sobre a propriedade “background-at-
tachment”. Ela serve para fixar uma imagem de background na tela, mesmo quando “rolamos” a 
tela, quando usamos o valor “fixed”. E quando usamos o valor “scroll” o fundo acompanha a rola-
gem. Este é o comportamento padrão. Veja a seguir como funciona na prática.
• background-attachment: fixed;
nome-do-seletor {background: url(endereço-da-imagem.jpg) no-repeat 300px 100px fixed;}
Clique aqui e veja na prática o resultado. (Role a tela e perceba que o logo fica fixo.)
priedade específica do background-position (caso já tenha especificado uma de imagem com 
“background” ou “background-image” ). Como veremos a seguir.
Valores de posições para o topo:
• background-position: top left;
• background-position: top center;
• background-position: top right;
Valores de posições para o centro:
• background-position: center left;
• background-position: center center;
• background-position: center right;
Valores de posições para a região inferior do bloco:
• background-position: bottom left;
• background-position: bottom center;
• background-position: bottom right;
Agora pratique desenvolvendo com uma imagem de seu computador. 
Use o código fonte dos exemplos anteriores como guia. 
Esses são posicionamentos básicos. Mas você também pode usar coordenadas para posicionar 
uma imagem de fundo. Para isso você definirá primeiro um valor à esquerda em relação ao bloco 
e depois com um a valor em relação ao topo. 
Você pode usar os valores com pixels, porcentagens ou outro tipo de unidade aplicada a web. 
Veja exemplos a seguir.
http://ebookhtmlcss.com/arquivos/capitulo-4.1/background-position-200-300.html
http://ebookhtmlcss.com/arquivos/capitulo-4.1/background-position-200-300.html
http://ebookhtmlcss.com/arquivos/capitulo-4.1/background-position-50-70.html
http://ebookhtmlcss.com/arquivos/capitulo-4.1/background-position-fixed.html
162 163
Nota importante: 
Seguindo a proposta do livro, algumas propriedades avançadas não foram apresentadas, entretan-
to deixaremos uma fonte de pesquisa para você consultar assim que você já estiver dominando as 
propriedades mostradas neste tópico, ok?
CSS3 – Propriedade background 
 
 http://tableless.com.br/css-3-propriedade-background/
Neste artigo você conhecerá como colocar múltiplos backgrounds 
com CSS, além de conhecer as propriedades background-origin, 
background-size e background-clip.
Como usar linear-gradient em CSS de forma consciente?
http://tableless.com.br/como-usar-gradient-no-css-de-forma-consciente/
Neste outro artigo você conhecerá como através da propriedade 
“background-image” você pode criar fundos degrades entre cores 
we sem uso de imagens.
• background-attachment: scroll;
Para que a imagem de fundo “role” tanto faz a declaração ou não do valor “scroll”. 
Compare exemplos abaixo:
nome-do-seletor {background: url(endereço-da-imagem.jpg) no-repeat 200px 300px scroll;}
nome-do-seletor {background: url(endereço-da-imagem.jpg) no-repeat 200px 300px;}
 
Clique aqui e veja na prática o resultado.
O código HTML e os arquivos usados até esta 
etapa se encontram neste link para download.
http://tableless.com.br/css-3-propriedade-background/
http://tableless.com.br/como-usar-gradient-no-css-de-forma-consciente/
http://ebookhtmlcss.com/arquivos/capitulo-4.1/background-position-scroll.html
http://ebookhtmlcss.com/arquivos/capitulo-4.1/arquivos-para-download-6.zip
http://ebookhtmlcss.com/arquivos/capitulo-4.1/arquivos-para-download-6.zip164 165
body { 
 background-color: #a8c8ca;
 background-image: url(img/bg.png);
 background-repeat: repeat;
 background-position: top left;
 background-fixed: scroll;
}
Ou usando, preferencialmente, a declaração única (Note que não é necessário declarar as pro-
priedades background-repeat, background-position e background-fixed, pois estão com valores 
padrão).
body { 
 background: #a8c8ca url(img/bg.png);
}
Resumo do tópico
Este tópico sobre background foi tão intenso que merece até um resumo para uma consulta rá-
pida. 
Você agora é capaz, através do CSS, de inserir imagens de fundo em um site com diferentes pro-
priedades. E não somente em um fundo de site, como também em qualquer elemento HTML que 
você deseje. Você pode fazer isso listando as propriedades na declaração:
nome-do-seletor {
 background-image: url(endereço-da-imagem.jpg);
 background-color: #ffff00;
 background-repeat: no-repeat;
 background-position: top right;
 background-fixed: fixed;
}
Ou usando, preferencialmente, a declaração única com menos código e de mais fácil manuten-
ção:
nome-do-seletor {
 background: url(endereço-da-imagem.jpg) #ffff00 no-repeat 
 top right fixed;
}
Já para o fundo do elemento “body” do exemplo utilizado neste tópico podemos também listar 
as propriedades (não indicado):
167166
Como funciona o CSS? 
Parte 4.2 - Formatando textos 
Encerramos o assunto background. Entretanto, você pode ter notado, no código CSS do exemplo 
principal (primeiro) desse assunto que encerramos, que existiam propriedades extras que não 
influenciaram em nada na apresentação visual do elemento “body”. Para recordar vamos rever o 
código a seguir com as propriedades destacadas:
body {
 background: #a8c8ca url(img/bg.png); 
 color: #444444;
 font-family: Tahoma, Arial, sans-serif;
 font-size: 16px;
 line-height: 16px; 
}
Você deve estar se perguntando: Se não influenciou em nada porque foram usadas? Por que elas 
estão dentro da declaração?
Para explicar isso vamos falar mais profundamente agora sobre herança. E uma boa forma de 
explicar herança é usando as propriedades de textos CSS, isto é, aprenderemos dois assuntos im-
portantes dentro de um tópico só. :D
Herança
Como já citado neste E-book, os elementos filhos herdam as declarações do elemento pai. Isso é 
herança. E quando colocamos uma declaração que não será usada diretamente em um elemento 
é porque intencionalmente queremos que ela seja herdada pelos elementos filhos.
Parabéns!!!
Encerramos por aqui o tópico sobre background CSS. Propomos novamente que você dê uma 
pausa para descansar. É o esquema 80/20, lembra-se?
Você obteve muitas informações até aqui, então celebre muito que o você aprendeu com uma pausa! 
Volte depois e pratique todas as propriedades mostradas, pois você as verá com bastante frequ-
ência tudo isso que aprendeu.
O código HTML e os arquivos usados até esta etapa se
encontram neste link para download.
http://ebookhtmlcss.com/arquivos/capitulo-4.1/arquivos-para-download-6.zip
http://ebookhtmlcss.com/arquivos/capitulo-4.1/arquivos-para-download-6.zip
168 169
 #bloco_um, #bloco_dois {
 font-family: arial, sans-serif;
 }
 </style>
 </head>
 <body>
 <div id=”bloco_um”>
 <h1>Todos os elementos dentro
 desta “div” herdam a cor vermelha 
 de “body”</h1>
 <p>Eu sou vermelho.</p>
 <p>O espaço entre linhas neste bloco é de 20 pixels, herdado de “body”.</p>
 </div>
 <div id=”bloco_dois”>
 <h1>Assim como o bloco anterior, todos os elementos dentro desta “div” 
 herdam a cor vermelha de “body”</h1>
 <p>Eu sou também vermelho.</p>
 <p>O espaço entre linhas neste bloco é de 20 pixels, herdado de “body”.</p>
 </div> 
 </body>
</html>
Nota: Reforçando um conceito que vimos lá no exemplo do bolo, quando você tem 
propriedades e valores comuns entre dois ou mais seletores é indicado uni-los em uma 
só declaração. Isto faz que se economize código, tempo e melhore a performance do site. 
No exemplo acima, na declaração onde o “#bloco_um” e o “#bloco_dois” possui o mesmo 
tipo de fonte (font-family: arial, sans-serif;). Então basta que se coloque uma vírgula 
entre os seletores para que eles recebam a mesma declaração.
seletor1, seletor2, seletor3, seletor1400 {propriedade: valor}
Visualmente o elemento “body” já está pronto com o background que colocamos no tópico an-
terior. Isso porque ele não contém conteúdo de forma direta. Porém os elementos descendentes 
dele contêm. E é aí que surgi a herança CSS, ou seja, os elementos que existem dentro de body 
(filhos, netos, etc.) podem receber estas propriedades automaticamente. E o bom disso é que não 
precisamos digitar as mesmas propriedades toda vez que criamos um elemento novo, basta que 
ele herde as características declaradas no elemento pai “body”. Sacou?
E principalmente porquê fica mais fácil de fazer alterações no site todo modificando poucas li-
nhas de código e sem perder tempo caçando propriedades em tudo que é elemento.
Mas atenção! Existem propriedades que não são herdadas. São elas:
background, border clip, content, counter, clue, display, float, height, left, margin, outline, over-
flow, padding, page-break, pause, play-during, position, right, table-layout, text-decoration, top, 
unicode-bidi, vertical-align, width, z-index. 
Dessas citadas a cima, você já conhece o background. 
Agora, iremos criar um pequeno exemplo para você entender a herança de forma prática. 
E como prometido, Galucho, de quebra já apresentaremos algumas propriedades CSS para textos.
<!DOCTYPE html>
<html>
 <head>
 <meta charset=”utf-8”>
 <title>Formatando textos</title>
 <style type=”text/css”>
 body {
 color: #ff0000;
 line-height: 20px;
 }
170 171
Quando você quer que herde, você simplesmente omite uma declaração fazendo prevalecer a 
declaração existente no elemento pai, certo? Então para que não exista nenhuma herança deve-
-se fazer o contrário.
Coloque uma nova declaração atribuindo valor diferente para a propriedade do elemento que 
você quer diferenciar. Esse novo estilo irá se sobrepor em relação ao estilo declarado no elemen-
to pai. Vamos ver na prática fazendo uma pequena alteração no código anterior.
<!DOCTYPE html>
<html>
 <head>
 <meta charset=”utf-8”>
 <title>Formatando textos 2</title>
 <style type=”text/css”>
 body {
 color: #ff0000;
 line-height: 20px;
 }
 #bloco_um, #bloco_dois {
 font-family: arial, sans-serif;
 }
 #bloco_dois {
 color: #007f39;
 line-height: 60px;
 }
 </style>
 </head>
 <body>
 <div id=”bloco_um”>
 <h1>Todos os elementos dentro desta “div” herdam a cor vermelha de “body”</h1>
 <p>Eu sou vermelho.</p>
 <p>O espaço entre linhas neste bloco é de 20 pixels, herdado de “body”.</p>
 </div>
 <div id=”bloco_dois”>
 <h1>Diferentemente do bloco anterior, todos os elementos dentro desta “div” não herdam a cor vermelha 
 de “body”. Somos verdes.</h1>
 <p>Eu sou verde.</p>
 <p>O espaço entre linhas neste bloco é de 60 pixels, diferente do bloco anterior que herdou 20 pixels 
 de “body”.</p>
 </div> 
 </body>
</html>
Agora veja o resultado. Os elementos internos das “divs” bloco_um e bloco_dois herdam a cor 
vermelha (color:#ff0000) e o espaço entre linhas (line-height: 20px) declaradas no elemento 
“body”. 
Mas e quando não queremos que uma propriedade seja herdada?
172 173
Color 
Só com os exemplos anteriores que você viu creio que você já sacou que esta propriedade é res-
ponsável por atribuir cor a textos.
Para usá-la basta que você atribua um valor a propriedade de forma similar ao que você já viu 
quando falamos sobre background-color, lembra?
Neste E-book focaremos em usar como valor o sistema hexadecimal. Porém, assim como em ba-
ckground-color você também pode adotar outros os sistemas RGB, RGBA e HSL.
A sintaxe para a propriedade color:
seletor_qualquer {color: valor da cor; } (valor #FFF, por exemplo)
Line-height
É uma propriedade de dimensionamento que permite estipular espaçamento entre linhas.
Os valores usadospara esta propriedade podem ser de diferentes unidades de medidas CSS como 
px, cm, em, %, etc. E também um número (1, 2, 3).
Quando falamos sobre herança mostramos dois exemplos sobre o uso desta propriedade utili-
zando como unidade o pixel. 
Você deve ter percebido também que valores maiores determinam espaçamentos maiores, inde-
pendente da unidade de medida que você escolher.
Esta propriedade é algo que você pode ter total domínio rapidamente. Sugerimos que você faça 
testes com valores fixos em pixels, também com porcentagens e com valores em números.
Resultado: 
Com as modificações no código, so-
mente a família da fonte (font-family: 
arial, sans-serif) permaneceu a mes-
ma. Mudamos a cor do bloco dois e o 
espaço entre linhas.
E com isso encerramos o assunto he-
rança por aqui!
Você deve ter percebido que usamos 
três propriedades que dão estilos para 
textos. “Color”, “line-height” e “font-
-family”. 
Aprofundaremos mais sobre elas e 
apresentaremos outras mais. Come-
çaremos com a propriedade “color”.
174 175
seletorqualquer {
 font-family: nome da fonte da família 1, 
 nome da fonte da família 2, 
 nome genérico; 
}
E agora um exemplo prático (para os exemplos usaremos o seletor ID, mas poderia ser class, ou 
até mesmo de tipo.): 
#nome-do-seletor { font-family: “Times New Roman”, Palatino, serif; }
Note que neste exemplo usamos dois nomes de fontes de família e o nome da família genérica 
“serif”. Primeiro o navegador procurará pela por Times New Roman, caso não encontre procurará 
por Palatino, e na ausência desta procurará por uma fonte semelhante da família genérica serif. 
As famílias de fontes são definidas pelo nome (Times New Roman, Palatino). Você pode notar 
também que para nomes derivados de família deve-se usar aspas. 
Exemplo: “Times New Roman”, “Palatino Linotype”, “Book Antiqua”.
E o nome da família genérica pelo nome genérico (serif). 
Os tipos de famílias genéricas que podemos definir são:
• serif (por exemplo, Times)
• sans-serif (por exemplo, Helvetica)
• cursive (por exemplo, Zapf Chancery)
• fantasy (por exemplo, Western)
• monospace (por exemplo, Courier)
A sintaxe para a propriedade line-height é a seguinte:
seletor_qualquer {line-height: valor da propriedade com a unidade escolhida por você;}
Veja um exemplo prático:
p {
 line-height: 20px;
}
Font-family
É a propriedade que define o tipo de fonte que será aplicada ao elemento textual. Existem dois 
tipos de valores: o primeiro é o nome da fonte da família (Tahoma, Arial, Helvética, etc) e o se-
gundo é o nome da família genérica (serif, sans-serif, cursive, monospace e fantasy).
Para entender mais sobre classificações de tipografia é indicado que depois você leia estes dois 
artigos do blog Chief of Design: http://chiefofdesign.com.br/guia-tipografia-parte-01/ e http://
chiefofdesign.com.br/guia-tipografia-parte-02/ .
Na sintaxe CSS você pode usar mais que um nome da família de fontes, o que é indicado. E mais 
indicado ainda é usar no final um nome da família genérica. Isto porque o navegador irá procurar 
pelas fontes indicadas por você até encontrar alguma e caso elas não estejam disponíveis ele terá 
a liberdade para escolher uma fonte semelhante na família genérica.
Na declaração CSS as fontes são listadas e separadas por vírgulas. Isso indica, diferentemente da 
sintaxe que vimos na propriedade background, que cada valor é uma alternativa, e que somente 
um valor será escolhido. Esse valor escolhido geralmente é o primeiro valor declarado que o na-
vegador encontrar disponível. 
Agora, vamos entender a sintaxe?
http://chiefofdesign.com.br/guia-tipografia-parte-01/
http://chiefofdesign.com.br/guia-tipografia-parte-02/
http://chiefofdesign.com.br/guia-tipografia-parte-02/
176 177
E os valores que podemos definir estão dentro da classificação a seguir:
• CSS Absolute-size: xx-small, x-small, small, medium, large, x-large, xx-large. ‘Medium é o valor 
padrão.
• CSS Relative-size: larger (maior), smaller (menor). Eles diminuem ou aumentam o valor da 
fonte baseados no valor definido na fonte-pai.
• Lenght: Especifica um tamanho absoluto da fonte. Entre as unidades você pode usar px (pi-
xels), cm (centímetros), pt (points), etc.
Você perceberá que a unidade pixels é amplamente utilizada. E a usaremos na nossa proposta 
de projeto. Será sempre indicado unidades relativas (“porcentagem”, “em”, “rem”), porém quando 
você decidir usar uma unidade fixa indicamos usar pixels.
• Percentagem: Uma porcentagem que especifica um tamanho de fonte absoluto em relação ao 
tamanho da fonte do elemento pai (Nota rápida: Também usamos porcentagem para atribuir 
valores de dimensões de blocos, assunto a ser tratado mais a frente). 
• Unidades relativas “em” e “rem”: Estas unidades funcionam semelhantes as porcentagens, e 
muitos a consideram “ideais” pra o desenvolvimento web por contribuírem na construção de 
sites responsivos. Porém elas exigem que se efetuem pequenos cálculos matemáticos para 
conversão do valor em pixels .
A seguir, confira um exemplo prático:
body {
 font-size: 16px;
}
Indicamos que você foque seu aprendizado na unidade pixel, porque você encontrará muito 
desta unidade por aí em manutenções de site. Lembrando que ela, além de ser usada em fontes, 
Uso de fontes seguras
Hoje em dia, com o avanço do CSS, temos a opção de usar diferentes fontes através do @font-
-face. Você já deve ter visto por aí sites usando diferentes fontes e eu posso até tentar adivinhar 
que, após ter visto o quanto que elas são bacanas, você vai querer usá-las em seus projetos. Po-
rém vamos focar no nosso compromisso do 20/80, lembra-se?
Por enquanto foque em fontes comuns que sabemos que todo usuário possui em suas máquinas. 
E quando você se sentir seguro, aí sim, comece a projetar com fontes diferentes. Mas sem preju-
dicar a legibilidade e leiturabilidade do conteúdo do site, ok?
Para trabalhar com fontes mais complexas você precisará de mais recursos que não cobriremos 
neste E-book , para não fugir ao nosso objetivo. 
Você pode consultar mais sobre o assunto nesses links: 
• http://www.w3.org/TR/CSS21/fonts.html#font-family-prop;
• http://tableless.com.br/um-guia-completo-de-tipografia-para-a-web/ e 
• http://tableless.com.br/font-face-fonts-externas-na-web/.
A seguir vamos falar sobre a propriedade que mexe com o tamanho das fontes.
Font-size 
Esta é a propriedade que determina o tamanho da fonte de um texto, como você dever ter perce-
bido nos exemplos que até aqui usamos. Seu uso é bastante simples bastando apenas que após 
declarar esta propriedade, defina-se os valores em uma determinada unidade de tamanho. 
A sintaxe para a propriedade font-size é a seguinte:
seletor_qualquer { font-size: valor da propriedade com a unidade escolhida por você;}
http://www.w3.org/TR/CSS21/fonts.html%23font-family-prop
http://tableless.com.br/um-guia-completo-de-tipografia-para-a-web/
http://tableless.com.br/font-face-fonts-externas-na-web/
178 179
lares aos valores normal e bold.
A sintaxe para essa propriedade é bem simples. Veja:
seletor_qualquer {
 font-weight: valor da propriedade com a unidade escolhida por você;
}
Exemplo prático:
p {
 font-weight: bold;
}
Font-style
Você pode usar esta propriedade para valores “normal”, “oblique” ou “italic”. 
Normal é o valor padrão. O valor oblique (oblíquo) representa a uma versão inclinada a direita da 
forma normal. Já italic (itálico) representa uma forma cursiva com inclinação a direita. 
Dependendo da fonte escolhida praticamente é imperceptível a diferença entre os valores obli-
que e italic. O valor italic é o mais encontrado quando esta propriedade é declarada.
também é usada para determinar tamanho de blocos (veremos a mais a frente). Como o uso de 
unidades relativas como “%”, “em” e “rem” exigem um tempo maior para assimilação, deixaremos 
uma fonte para consulta posterior. Assim que você já estiver dominando o uso de tamanhos de 
fonte em pixels, estude as unidades relativas ( http://tableless.com.br/unidade-pixels-em-rem/).
Font-weight 
Esta propriedade serve para determinar o peso da fonte. É uma propriedade que você usará bas-
tante em textos na web, principalmente por causa de um valor que é capaz de “negritar” um texto 
selecionado. O valor que proporciona este negrito é o “bold”.
Quando não declaramos esta propriedade o texto recebe o valor padrão que é “normal”. 
Segue uma relação de pesos que você pode testar e aplicar em seus projetos, Sendo que o valor 
maior representa maior peso:
• 100 
• 200 
• 300 
• 400 
• 500 
• 600 
• 700 
• 800 
• 900 
E aqui outros valores possí-
veis:
normal, bold, bolder, lighter.
Os valores 400, 700, são simi-
http://tableless.com.br/unidade-pixels-em-rem/%20
180 181
Veja que no resultado que o texto que recebeu o valor 
“small-caps” apesar das letras estarem como maiúsculas 
o tamanho não é o mesmo de um texto normal digitado 
com letras maiúsculas. Claro que também dependendo 
da fonte utilizada mais ou menos variações podem existir.
Font 
É isso aí, Galucho! Cobrimos bastante coisas importantes sobre fonte. Aliás, sobre propriedades 
variantes que englobam a propriedade “font”. Digo isso porque existem outras propriedades para 
formatação de texto que ainda serão apresentadas a seguir.
O intuito agora é, assim como vimos em background, juntar todas as propriedades vistas até aqui 
em uma declaração única usando a propriedade “font”. Vamos nessa?
A decisão é sua de declarar todas ou algumas propriedades, só que os valores para “size” e “fa-
mily” são obrigatórios e devem ser declarados nesta ordem respectiva. Quando um valor de uma 
propriedade for ocultado assume-se o valor padrão, ou valor herdado do elemento pai. 
A sintaxe para essa propriedade também é bem simples. Veja:
seletor_qualquer {font-style: valor da propriedade com a unidade escolhida por você;}
Exemplo prático:
p {
 font-style: italic;
}
Font-variant
Esta propriedade converte todas as letras minúsculas em letras maiúsculas. No entanto, as letras 
convertidas aparecem em um tamanho de fonte menor do que as letras maiúsculas originais. 
Entenda no código a seguir:
<!DOCTYPE html> 
<html>
 <head>
 <meta charset=”utf-8”>
 <title>Font variant</title>
 <style type=”text/css”>
 #um , #tres {font-variant:normal;}
 #dois {font-variant:small-caps;}
 </style>
 </head>
 <body>
 <p id=”um”>Texto digitado com letras minúsculas e font-variant:normal.</p>
 <p id=”dois”>Texto digitado com letras minúsculas e font-variant:small-caps.</p>
 <p id=”tres”>TEXTO DIGITADO COM LETRAS MAIÚSCULAS E FONT-VARIANT: NORMAL.</p>
 </body>
</html>
182 183
Divirta-se com a propriedade “font”. :D
Importante: neste capítulo também falamos sobre como mudar a cor da fonte. 
Você lembra? Valores para a propriedade “color” não entram na declaração única 
da propriedade “font”. Para mudar cor você deve declarar a parte como a seguir:
p {
 font: bold italic small-caps 14px/28px arial, sans-serif;
 color: #ff0000;
}
Fique atento a isso. 
Outra coisa! Se decidir declarar o valor de “line-height” ele deve sempre vir depois de “font-size” 
e seguido de uma barra. Exemplo:
seletor_qualquer {
 font: 24px/2 “Times New Roman”;
}
A seguir usaremos um exemplo com algumas das propriedades vistas em uma declaração única.
<!DOCTYPE html> 
<html>
 <head>
 <meta charset=”utf-8”>
 <title>Font - Declaração única</title>
 <style type=”text/css”>
 p {font: bold italic small-caps 14px/28px arial, sans-serif;}
 </style>
 </head>
 <body>
 <p>Este parágrafo contém a fonte Arial, possui um tamanho de 14 pixels, está em negrito e 
 em itálico, e os caracteres estão em maiúsculo devido o valor small-caps declarado na 
 folha de estilo.</p>
 <p>Este parágrafo contém as mesmas características do parágrafo acima.</p>
 </body>
</html>
Perceba que o código é bem auto explicativo. Como você já foi apresentado as propriedades e 
seus possíveis valores, faça testes! Vá na folha de estilos e apague alguns valores, mude o tama-
nho de fonte e de entrelinhas, altere suas unidades. 
184 185
O resultado fala por si só. 
Veja como ficou:
Text-decoration
Esta propriedade descreve “decorações” que são adicionadas ao texto de um elemento. Ela pos-
sui 5 tipos de valores:
• none: produz nenhuma decoração;
• underline: coloca sublinhado no texto;
• overline: coloca um sobrelinhado no texto;
• line-through: coloca uma linha no meio do texto;
• blink: faz o texto piscar.
Entretanto quando falamos em uso o valor “none” é a que se destaca e a que queremos focar. 
As outras propriedades não são de comum aplicação, somente em casos que o projeto exige. 
Portanto fica como tarefa de casa que você as teste, bele?
Voltando a falar sobre “none”, ele é bastante usado quando o Designer estipula que os itens de 
menu não tenham sublinhado em seus textos. Isso porque a maioria dos navegadores deixam 
Text-align
Esta é a propriedade usada para determinar o tipo de alinhamento que um texto possuirá. Quem 
utiliza um editor de texto como o “Word”, ou até ferramentas para edição gráfica está familiarizado 
com os tipos mais comuns. São eles: alinhamento à esquerda, direita, centralizado, e justificado. 
Levando isso para linguagem CSS temos:
• text-align: left;
• text-align: right;
• text-align: center;
• text-align: justify.
Vamos ver na prática?
<!DOCTYPE html>
<html>
 <head>
 <meta charset=”utf-8”>
 <title>Text-align</title>
 <style type=”text/css”> 
 h1 {
 text-align: left; 
 }
 h2 {
 text-align: center; 
 }
 h3 {
 text-align: right; 
 }
 h4 {
 text-align: justify; 
 }
 </style>
 </head>
 <body>
 <h1>Texto alinhado 
 à esquerda</h1> 
 <h2>Texto centralizado</h2>
 <h3>Texto alinhado 
 à direita</h3>
 
 <h4>Este é um texto justificado. 
Isso ocorre quando um texto está alinhado 
com ambas as bordas. 
 O efeito da declaração “text-de-
coration: justify” força o texto a estender-se 
de uma extremidade à outra.
 Você pode perceber este efeito na 
linha anterior.</h4>
 </body>
</html>
186 187
Podemos notar que para um link fique sem sublinhado, basta colocar a declaração
 “text-decoration: none”. Esta é a declaração que uso no menu principal do Chief of Design. 
Outras propriedades para estilizar textos
Existem outras propriedades de uso não tão frequente e entre elas algumas que podem até for-
necer resultados incomuns. Seu uso depende muito das características e necessidades do proje-
to. Portanto, para não fugir do nosso esquema 80/20, descreverei brevemente sobre. Vou deixar 
como tarefa de casa para que você pesquise posteriormente sobre elas. Mas só faça isso depois 
que você dominar as propriedades apresentadas neste E-book, ou em caso de necessidade.
• text-transform: Propriedade utilizada para capitalização de textos. Com ela você 
 atribui valores que permitem deixar um texto com o primeiro caractere
 de cada palavra em maiúscula, com todos os caracteres de cada palavra 
 em maiúscula, ou também com todos os caracteres das palavra em 
 minúscula, ou ainda sem nenhum efeito de capitalização.
• letter-spacing: Esta é uma propriedade que eventualmente você usará. 
 Ela serve para definir espaços entre os caracteres de um texto.
• word-spacing: Ela estipula o espaçamento entre as palavras.
• text-indent: Esta propriedade especifica o recuo da primeira linha de texto. 
 Já foi muito utilizada como auxiliar em substituição de textos 
 (melhor dizendo, esconder textos) por imagens.
• white-spacing: Declara como um espaço em branco dentro de um 
 elemento deve ser tratado.
• direction: Para definir direção de um texto - da direita para esquerda ou 
 da esquerda para direita.
como padrão dos links (elemento HTML “a”), um sublinhado. 
Veja o exemplo de dois links: um setado com o valor “underline” pelo navegador e outro com o 
valor “none” pelo nosso CSS.
<!DOCTYPE html>
<html>
 <head>
 <meta charset=”utf-8”>
 <title>Text-decoration:none</title>
 <style type=”text/css”> 
 #sem-sublinhado {
 text-decoration: none; 
 }
 </style>
 </head>
 <body>
 <p><a href=”http://chiefofdesign.com.br/”>Texto sublinhado padrão do navegador
 </a></p>
 <p><a id=”sem-sublinhado” href=”http://chiefofdesign.com.br/”>Texto sem decoração 
 atribuído pelo seletor “#sem-sublinhado”</a></p> 
 </body>
</html>
Agora o resultado:
188 189
Parabéns por chegar até aqui!!!!!!
Acabamos de encerrar o tópico sobre formatação de textos com CSS. E você já deve imaginar o 
que vamos propor para você agora. Dê uma pausa para descansar. 
Comemore o que absorveu neste tópico com uma pausa para outras atividades. 
Volte depois e pratique todas as propriedades mostradas até aqui.
O código HTML e os arquivos usados até esta 
etapa se encontram neste link para download.
Como funciona o CSS? 
Parte 4.3 - Considerações importantes
Chegamos a um momento crucial do E-book. Espero que esteja animado porque agora você 
entenderá o porquê de todos os criativos que querem trabalhar com web devem pelo menos 
entender HTML e CSS. Você compreenderá porque algumas decisões durante a criação no editor 
visual podem ou não dificultar o desenvolvimento na hora de codificar.
Você terá, neste tópico, contato com propriedades CSS fundamentais para disposição e apresen-
tação de elementos numa interface digital.
Entretanto, antes você deve saber algumas informações:
1. Todo layout que você constrói no Editor gráfico de sua preferência deve ser 
recortado (dividi-lo em retângulos) para depois ser unido com HTML e CSS. 
Isso é necessário para:
 
• Formar blocos de conteúdos semânticos com o uso da tags;
• Que os navegadores consigam interpretar e apresentar a versão para web;
• Que funcionalidades básicas de um site se apresentem.
 
2. Exportar uma imagem inteira dentro de um HTML? Nem pensar. 
Mesmo depois de recortado não é indicado. Primeiro que o HTML gerado não foi gerado pelas 
suas mãos Galucho, você que já está com a mente preparada para seguir padrões WEB. E se-
gundo, mesmo após seu layout recortado, nem todas as imagens resultantes desta divisão serão 
usadas. 
E por quê?
http://ebookhtmlcss.com/arquivos/capitulo-4.2/arquivos-para-download-7.zip
http://ebookhtmlcss.com/arquivos/capitulo-4.2/arquivos-para-download-7.zip
190 191
(background-color), com propriedades que insere e repete uma versão minúscula de imagem. 
Só este exemplo já justifica o porquê que um Designer que pretende trabalhar com Web deve 
aprender HTML e CSS.
E tem mais! Existem propriedades que criam bordas, arredondam cantos, colocam sombras em 
textos e blocos, entre outras coisas bacanas... Sem contar algumas que fazem animações.
3. Se você nunca desconfiou saiba que tudo o que você enxergar em uma pági-
na web, seja ele redondo, triangular, ou uma forma livre qualquer, na verdade são, 
do ponto de vista de posicionamento visual, retângulos. 
Uma página web é um conjunto de retângulos que servem de suporte para mídias estáticas, 
como textos, fotografia entre outros elementos gráficos, e também para mídias dinâmicas, como 
áudios, vídeos e animações.
O resultado final de um site pode fazer um usuário comum enxergar ou não retângulos nas pá-
ginas. Porém de uma forma geral ele pode apenas se ater ao todo, ou algum elemento que tenha 
um formato livre, como um logo, por exemplo. 
Mas você pode criar a forma que bem entender para um logo e salvar como png transparente 
para evidenciar a forma projetada, porém este arquivo tem altura e largura, e é com estas pro-
priedades dimensionais que ele será inserido no HTML. No final, acabará sendo um retângulo.
Talvez possa ser que você não esteja habituado com editores gráficos como o Fireworks, Pho-
toshop, entre outros, e precisa de outra forma de demonstração. Então lançaremos mão da ajuda 
do navegador para exemplificar melhor. 
Primeiro veja esta página na figura a seguir:
Caso não saiba, o peso de uma imagem pode representar bytes a mais que pioram a performance 
de um site. Você deve sempre levar em conta o quanto o uso delas podem influenciar no tempo 
de carregamento de um site. Por isso, em grande parte do tempo, você deve projetar seu layout 
pensando em uma forma de usar propriedades CSS que possam substituir imagens.
Hoje em dia aquele botão estilizado com gradiente que você criou no Fireworks ou Photoshop 
pode ser feito com algumas propriedades CSS. Isso deixará seu site levinho. Portanto na hora que 
você for recortar seu layout você deverá identificar, como prioridade, o que pode ser usado como 
CSS e depois, se não tiver jeito, o que será inserido como imagem, geralmente via background.
Por falar em background... Você se lembra dessa imagem abaixo?
Você bem sabe, caso não tenha pulado a parte sobre background (hehehe), que este fundo não 
foi obtido através de uma imagem gigante extraída de um editor visual. Este é um exemplo 
clássico da união de uma propriedade CSS que gera cor ao fundo sem a necessidade de imagens 
192 193
exemplo, também cumprem bem a missão. Optei pelo Firefox por uma questão de hábito e por 
acreditar que a interface é mais amigável para a ferramenta que iremos utilizar. No caso a ferra-
mentas do desenvolvedor web.
Existem três formas de acessá-la: uma é pelo teclado pressionando as teclas Ctrl+Shift+I; outra é 
clicando em algum elemento da página web com o botão direito para escolher a opção “inspe-
cionar elemento” na janela que se abrirá, e por último abrindo o menu do Firefox e escolhendo 
a opção “Desenvolvedor” (enquanto este é E-ebook é desenvolvido a versão do Firefox utilizado 
dispõe o menu do navegador no canto superior direito).
Com a ferramenta iremos trabalhar com a aba “inspecionar”. Com isso teremos acesso ao código 
HTML do site. 
E caso você não conheça esta ferramenta ainda, olha que bacana. Ao posicionar o mouse sobre 
uma linha de código a ferramenta destaca na página web o elemento HTML selecionado. E o que 
você verá? Um retângulo com os valores de suas dimensões. 
Usaremos a ferramenta no exemplo anterior, OK?
 
Vamos aos resultados? 
Quantos elementos nós temos nesta página?
Depende do contexto. Acredito que os usuários comuns podem dizer que a resposta é quatro. 
Sendo três elementos geométricos e um logo do Chief of Design. Outros podem achar que são 
seis, se considerarmos também o título da página e o texto que vem debaixo das figuras.
Mas do ponto de vista de desenvolvimento, a somatória de todos os elementos que estão dentro 
do elemento HTML “body”, inclusive ele mesmo, resultam no número de elementos que a página 
possui. E todos eles são retângulos.
Bom, visualmente eu até arriscaria dizer, então, que somando as três figuras geométricas, mais o 
logo, mais os dois textos, com o elemento body, temos sete elementos. Só que não, hehehe!
Visualmente dá para ter uma ideia. Mas quem garante que as figuras geométricas não são na 
verdade uma imagem só? Quem garante que não temos alguns elementos extras que não enxer-
gamos na interface? Está na hora de chamar o nosso novo aliado, o navegador.
O navegador em questão é o Mozilla Firefox. Outros navegadores, como o Google Chrome, por 
194 195
Na imagem vemos que o título, destacado com um fundo azul claro, é suportado por um retângulo 
de 1200 por 30 pixels.
Na imagens seguintes vemos que tanto as figuras geométricas, quanto o logo são suportados por 
uma área retangular de 300 por 300 pixels. 
196 197
Após as imagens o próximo elemento é o parágrafo:
 
O “body” corresponde ao elemento ancestral maior que pode ser visualizado no seu navegador 
também como retângulo. Veja a seguir: 
198 199
Pode parecer que encerramos por aqui, mas existe outro elemento que não é possível ver no 
layout, mas que está presente. É uma “div” que vem após o “body” agrupando e posicionando a 
página no centro do navegador. 
Veja a seguir:
Comparado com o “body” este elemento é menor. Não o vemos sem a ajuda da ferramenta de 
inspeção, porque ele não possui conteúdo direto e nenhumaspecto visual, como um background, 
por exemplo. Porém é comum usarmos elementos HTML que não possuem caraterísticas visuais 
que o fazem ser notados. Eles estão lá ou para dar valor semântico a um bloco de conteúdo, ou 
para separar blocos.
Este elemento “invisível” abre com esta tag ‘<div id=”corpo”>’.
Segue o código utilizado no exemplo:
200 201
<!DOCTYPE html>
<html>
 <head>
 <meta charset=”utf-8”>
 <title>Identificando retângulos em uma página web</title>
 <style type=”text/css”> 
 * {
 margin: 0;
 padding: 0;
 }
 #corpo {
 width: 1200px;
 margin: 0 auto;
 }
 img {
 float: left;
 }
 p {
 font-size: 20px;
 padding: 0;
 clear: both;
 }
 </style>
 </head>
 <body>
 <div id=”corpo”>
 <h1>O que vemos aqui?</h2>
 <img src=”poligono.png” width=”300” heigh=”300” alt=”polígono”> 
 <img src=”circulo.png” width=”300” heigh=”300” alt=”círculo”>
 <img src=”triangulo.png” width=”300” heigh=”300” alt=”triângulo”>
 <img src=”chief-of-design-retangulo.png” width=”300” heigh=”300” alt=”Logo Chief of 
Design”>
 <p>Temos quatro elementos com formatos diferentes?</p> 
 </div> 
 </body>
</html>
Obs: existem algumas novas propriedades neste código acima que serão explicadas mais adiante.
Você deve ter percebido que focamos em demostrar que uma página web é formada por um 
conjunto de retângulos. Pela natureza desta figura geométrica ela se mostra mais fácil de manusear 
que outras figuras. 
Objetos retangulares, quadrados, cubos ou cubos retangulares, que vemos no dia a dia, são mais 
fáceis de posicionar, alinhar, dispor lado a lado, depositar, do que objetos redondos, circulares ou 
cilíndricos. Isso devido suas arestas e faces planas.
Esta maior facilidade ocorre também com os retângulos da página web que partir de agora 
chamaremos de box (em português, caixa).
202 203
Agora que você consegue enxergar que a estrutural visual de uma página web é formada por estes 
boxes ficará mais fácil também de posicioná-los na interface com comandos CSS. Você será capaz 
de posicionar um box para direita, para esquerda, distanciá-lo de outro box em qualquer direção, 
colocar lado a lado, entre outras possibilidades. Será como se brincássemos com coordenadas.
E você poderá até organizar os boxes dentro de um grid. E como não poderia deixar de ser para 
fazer tudo isso que citamos, da mesma forma que existem propriedades que formatam textos, 
existe aquelas que estilizam boxes. E este assunto será tratado adiante quando falarmos sobre 
box model.
4. Uma página HTML é um plano bidimensional. Só que a forma que seus ele-
mentos se posicionam exige um empilhamento em um eixo a qual podemos ima-
giná-lo atravessando o monitor (profundidade).
Simplificando, queremos dizer que os boxes podem estar empilhados uns em cima de outros, 
como se fossem camadas, sendo que os últimos elementos descendentes seriam camadas mais 
próximas, no eixo imaginário, em relação ao usuário. Consideremos este tipo de posicionamento 
como a ordem de empilhamento dos elementos.
Veja o exemplo a seguir na próxima página.
Nota: A raiz desse contexto de empilhamento é o elemento “html” 
e vai construindo este empilhamento, passando por body e até che-
gar aos últimos elementos filhos. Porém existem declarações feitas a 
partir de uma propriedade CSS “z-index” capazes de interferir neste 
empilhamento. 
Mas para não sairmos dos trilhos, seguiremos nosso raciocínio sem 
focar nesta propriedade agora.
O layout a esquerda mostra a percepção visual do usuário. Ele enxerga como um todo. O todo é 
maior do que a soma das partes que o constituem. Conforme o que ele procura ele acabará fo-
cando na seção de interesse.
Agora, você Galucho, que está se acostumando com as linguagens HTML e CSS poderá “enxer-
gar” e pensar em páginas fragmentadas em boxes e camadas enquanto projeta o layout em seu 
editor gráfico, wireframe ou folha de papel.
Ao definir a hierarquia HTML você praticamente já define o nível de empilhamento. Enquanto 
monta as folhas de estilos já dimensiona e posiciona os boxes.
Olhe para o layout fragmentado a direita da figura anterior. Podemos ver como boxes da interfa-
ce podem ser separados e empilhados como se fossem camadas. 
A sobreposição de camadas tem certa similaridade com a sobreposição de camadas organizadas 
205204
no Photoshop. As diferenças é que aqui a distribuição dos elementos é via códigos, e que um box 
além de sobreposto está contido em outro box (elemento pai).
Na figura temos boxes (elementos filhos) que sobrepõe em profundidades outros boxes (elementos 
pais) até chegar à última camada visual na cor laranja que corresponde à estilização do elemento 
HTML “body”.
Agora que você já sabe que os elementos que formam uma página são formas retangulares, 
denominadas boxes, e que estes boxes estão contidos e sobrepostos em outras camadas, está na 
hora de saber as propriedades CSS para construir um Box. 
Para isso eu lhe apresento o box-model! Vamos conhecê-lo?
Obs: O conceito de camadas em CSS é amplamente atribuído na web ao uso 
da propriedade CSS z-index em blocos posicionados. Usamos aqui essa denomi-
nação somente para exemplificar o conceito de nível de empilhamento que tem 
similaridade visual as camadas no Photoshop.
Como funciona o CSS? Parte 4.4 (Box Model)
 
Como explicamos no tópico anterior os elementos HTML são representados por figuras retangu-
lares que denominamos de Box. Você também já sabe que um box pode conter outros boxes. Mas 
o que apresentaremos agora são composições internas que formam um box. 
Essas composições são divididas por quatro áreas. 
Essas áreas delimitam colocando fronteiras entre elas. 
Olhe para o box na imagem do navegador abaixo:
206 207
Como ele mesmo diz, é um box comum. E quais são as quatro áreas?
 
• Conteúdo: conteúdo é área delimitada pelo tipo de mídia apresentada, desde textos, imagens, 
vídeos, entre outros. A área é composta por um comprimento e uma largura. Estes, respectiva-
mente, são apresentados em CSS através das propriedades “width” e “height” que ainda trata-
remos neste tópico.
 
• Espaçamento (preenchimento): é o espaço entre o conteúdo e a borda. Você também en-
contrará o termo preenchimento pela web. Ele é obtido pela propriedade “padding” ou pela 
composição de suas variantes que correspondem aos lados do Boxe. São elas: “padding-top”, 
“padding-right”, “padding-bottom” e “padding-left”. Por padrão ele é transparente e recebe va-
lor 0 de espessura. Quando especificamos valores para “padding” ele recebe a cor de fundo 
do elemento estilizado. O espaçamento é uma área sem conteúdo usado muito como área de 
respiro dentro do box.
 
• Borda: a fronteira que gira em torno do espaçamento e/ou conteúdo. Bordas são linhas de-
corativas. Ela é obtida pela propriedade CSS “border” ou pela composição de suas variantes 
que correspondem aos lados do Boxe. São elas: “border-top”, “border-right”, “border-bottom” 
e “border-left”. Você é que determina em que lado terá borda. Por padrão ele é transparente 
e recebe valor 0 de espessura. Quando especificados valores para “border” ele pode receber 
cores, estilos e tamanho de espessura.
 
• Margem: é a distância que separa um box de outro. Ela serve como área de respiro entre bo-
xes e seções. Quando você separa um elemento do outro através das propriedades CSS com 
margem você também está posicionando elementos no layout. Ela é obtida pela propriedade 
“margin” ou pela composição de suas variantes que correspondem aos lados do Boxe. São elas: 
“margin-top”, “margin-right”, “margin-bottom” e “margin-left”. Por padrãoela é transparente e 
deveria receber o valor 0 de espessura, porém alguns fabricantes de navegadores adotam val-
para “margin”. E ele, ao contrário de padding, não recebe a cor de fundo do elemento estilizado. 
Ele pode receber a cor de algum elemento ancestral mais próximo que tenha recebido a cor.
Lembra-se da ferramenta do desenvolvedor web que usamos no tópico anterior para inspecionar 
boxes? Com auxílio dela criamos um gráfico que mostra a figura anterior do “box comum” com 
as quatro áreas do box model demarcadas.
Agora você já é capaz de identificar cada área do box-model. No gráfico a seguir você entenderá 
a posição de cada propriedade CSS aplicada no box-model. 
208 209
Na figura anterior vimos de dentro para fora todas as áreas e propriedades CSS. Ele sempre segui-
rá esta ordem: conteúdo, espaçamentos, bordas e margens. 
Quando um elemento não for percebido ou é porque ele não foi declarado no CSS ou está rece-
bendo na propriedade o valor zero (seja por padrão ou porque assim foi setado).
É possível também que um box model não tenha conteúdo, nem elementos filhos com conteúdo. 
Como princípio consideramos que todo Box tenha conteúdo, porém por uma opção do projeto, 
um desenvolvedor pode criar um box vazio, especificar largura e altura, colocar um background 
e usar para outro fim, como uma animação por exemplo.
 
Na figura a seguir, mostra de forma tri-dimensional, que as áreas do box model também seguem 
níveis de empilhamento entre as quatros áreas similar ao que vimos sobre as sobreposições de 
elementos HTML do tópico anterior. Neste empilhamento também existe sobreposição de back-
grounds quando fundos são inseridos. 
Veja a ordem:
210 211
Esta teoria todo foi importante para você poder aplicar de forma consciente na prática. E prática 
é tudo o que você quer agora, não é mesmo?
Então vamos conhecer a sintaxe para montar cada propriedade de cada área do box model. Co-
meçando pelo conteúdo com “width” e “height”.
Width
 
Especifica a largura da área de conteúdo de um box.
 
Podemos especificar a largura atribuindo valores em pixels ou outras unidades de medida de 
comprimento para CSS. Exemplo:
 
div {width: 500px;}
 
A largura também pode ser especificada com porcentagem. Exemplo:
 
div {width: 80%;}
 
Quando usamos porcentagem o valor é referente a largura do elemento ancestral que tenha es-
pecificado um valor para width. No exemplo acima, se o elemento pai tem largura de 100 pixels 
a “div” terá 80 pixels.
 
Um valor muito usado também é o “auto”:
 
div {width: auto;}
 
O auto é o valor “default” do width. Este valor é calculado levando em consideração as proprie-
dades “margin”, “border”, “padding” e a área do conteúdo. O que faz com que elementos filhos 
se ajustem dentro do box pai, ou seja, este ajuste decorre do valor de “witdh” do elemento pai 
menos a somatória dos valores de espessuras laterais das propriedades citadas acima. 
Resumindo:
valor de width (auto) = valor de width de box pai – (valor de padding-right + valor de padding-
-left + valor de margin-right + valor de magin-left + valor de border-right + valor de border-left)
 
Recado importante: NÃO SE APEGUE A ESTA FÓRMULA ACIMA!
 
Isso é só para entender que o valor de width quando não especificado com uma unidade de 
comprimento CSS ele se ajustará automaticamente dentro do elemento.
 
Exemplo:
#box-pai {background: #fff000; width: 400px, height; auto;}
p { background: #ff0000; width: auto; margin: 15px; padding: 30px; border: 5px solid #000000; }
 
<div id=”box-pai”>
 <p>Este conteúdo ira se ajustar</p>
</div>
 
Aplicando a fórmula:
 
valor de width (auto) = 400px – (15px + 15px + 30px + 30px + 5 + 5)
valor de width (auto) = 300px
 
Todo este cálculo é para te mostrar que usar “width: 300px” ou “width: auto”, tanto faz. Só que ao 
declarar “width: auto” você não precisa fazer conta. 
 
Depende do objetivo, mas o valor “auto” é declarado quando você quer que a área de conteúdo 
leve em conta o espaço deixado pelo elemento pai. Já quando usamos unidades de comprimen-
to de CSS temos a intenção de dimensionar uma área. É bastante indicado para criar seções, co-
lunas e seguir grids.
212 213
 Height
 
Especifica a altura da área de conteúdo de um box.
 
Podemos especificar a altura atribuindo valores em pixels ou outras unidades de medida de com-
primento para CSS. Isso é usado em casos específicos onde se deseja que altura de um bloco não 
varie. Exemplo:
 
div {height: 900px;}
 
A altura também pode ser especificada com porcentagem. Exemplo:
 
div {height: 50%;}
 
Parecido com “width” quando usamos porcentagem em “height” o valor é referente à altura do 
elemento ancestral que tenha especificado um valor para “height”.
 
Muito mais usado que os valores acima é o valor “auto”. Auto corresponde à altura necessária 
para acomodar verticalmente o conteúdo. Ele é o valor padrão do “height”. 
 
div {height: auto;}
 
 
Margin
 
A propriedade “margin” determina o valor da espessura entre a margem de um elemento HTML e 
seu entorno. O entorno pode ser as extremidades do navegador ou os elementos vizinhos.
 
O valor da espessura determina a distância entre um elemento e outro. Isso cria uma área de res-
piro “vazia” entre os elementos, porém útil dando equilíbrio ao projeto, dividindo e diferenciando 
os blocos. E você pode determinar esta distância para os lados direito e esquerdo, para cima e 
para baixo, com as variações da propriedade a seguir:
• margin-top - distância da margem superior do elemento em relação ao entorno;
• margin-right - distância da margem direita do elemento em relação ao entorno;
• margin-bottom - distância da margem inferior do elemento em relação ao entorno;
• margin-left - distância da margem esquerda do elemento em relação ao entorno;
 
Quando você deseja que todas as margens tenham valores iguais você simplesmente usa a pro-
priedade “margin”. Com isso você já dever ter concluído que no seletor universal, que usamos o 
valor zero lá no tópico sobre seletores (margin: 0), recebeu este valor porque, obviamente, todas 
os lados possuem valor zero, ou seja, a distância entre a margin e o entorno não existe. Equivale a 
usar esta sintaxe mais longa e desnecessária:
 
p {
 margin-top: 0;
 margin-right: 0; 
 margin-bottom: 0; 
 margin-left: 0; 
}
 
Também equivale a usar uma versão um pouco mais simplificada:
 
p {margin: 0 0 0 0;}
 
Esta versão acima é bastante usada quando você precisa declarar todas as variantes da proprieda-
de e os seus valores não são iguais. Quando são iguais, todos os lados têm distâncias da proprie-
dade “margin” iguais, você não precisa repetir os valores quatros vezes. Usamos então a versão 
abreviada. 
Exemplos:
 
p {margin: 15px;}
div {margin: 30px;}
* {margin: 0;}
214 215
Então como interpretar os quatro valores de margens diferentes em uma declaração? 
Confira o exemplo:
 
p {margin: 10px 20px 50px 15px;}
 
O primeiro valor corresponde à margem superior (magin-top: 10px).
O segundo valor corresponde à margem direita (magin-right: 20px).
O terceiro valor corresponde à margem inferior (magin-bottom: 50px).
O quarto valor corresponde à margem esquerda (magin-left: 15px).
 
Você pode imaginar algo assim:
 
#seletor_qualquer {top right bottom left}
 
Lembro-me que no inicio foi “dose” memorizar esta sequência. Sugiro o seguinte:
Imagine um relógio! Considere que o ponteiro apontando para o topo e para baixo (12 e 6 horas) 
corresponda a “margin-top” e “margin-bottom” e que apontando para as laterais (3 e 9 horas) cor-
responda a “margin-left” e “margin-right”. Como ele gira no sentido horário seguirá a sequência:
• top (Doze, ou melhor, 0 horas);
• right (3 horas);
• bottom( 6 horas);
• left (9 horas).
 
Lembrando-se disso você
sabe o que vem primeiro e
será capaz de seguir a ordem 
para expor os valores na de-
claração.
Existem ainda mais duas formas de abreviar ainda mais a declaração para “margin”. 
A primeira forma você já viu anteriormente:
 
p {margin: 10px;}
 
A segundaforma é quando os valores da dupla “margin-top” e “margin-bottom” têm valores 
iguais e a outra dupla “margin-right” e “margin-left” também têm valores iguais, só que os valores 
entre as duplas são diferentes. Veja a declaração com as variações de “margin”:
 
p {
 margin-top: 10px;
 margin-right: 20px; 
 margin-bottom: 10px; 
 margin-left: 20px; 
}
 
Melhorando temos:
 
p {margin: 10px 20px;}
 
E a terceira e última forma é quando somente a dupla “margin-right” e “margin-left” tem valores 
iguais. Veja abaixo:
 
p {margin: 0 40px 20px;}
 
Na declaração acima temos o primeiro valor de margin-top igual 0. O segundo valor, 40 pixels, 
representa a dupla “margin-right” e “margin-left”. E para encerrar margin-bottom recebe 20 pi-
xels. 
OBS: Quando um valor for igual à zero, ele não recebe nenhum tipo de unidade.
216 217
Padding
 
A propriedade “padding” determina o valor da espessura entre o conteúdo e a extremidade do blo-
co. Entenda-se extremidade do bloco como a área que delimita o elemento HTML.
A espessura é um preenchimento dentro do elemento HTML. Quando você determina um valor 
para “padding” você distancia o conteúdo da borda elemento. Este comportamento permite que 
se crie uma área de respiro dentro próprio Box. Isso ajuda a identificar o elemento como uma uni-
dade e facilita a leitura, pois o conteúdo não fica “grudado” na extremidade do bloco. E da mesma 
forma que a propriedade “margin”, o “padding” também possui suas variações:
 
• padding-top - distância entre o conteúdo e a borda superior do elemento;
• padding-right - distância entre o conteúdo e a borda direita do elemento;
• padding-bottom - distância entre o conteúdo e a borda inferior do elemento;
• padding-left - distância entre o conteúdo e a borda esquerda do elemento;
 
E obviamente quando queremos determinar um valor igual para todos os lados usamos somente 
a propriedade “padding”, assim como fizemos no seletor universal (padding:0).
 
E assim como na propriedade “margin” quando precisamos declarar todas as variações da proprie-
dade “padding” e elas têm valores diferentes é indicado usar a simplificação:
 
p {padding: 0 20px 15px 10px;}
 
Os tipos de abreviações e a ordem de expor os valores são os mesmos vistos no 
tópico sobre margin. 
Nota importante: Cuidado! Quando você determina um valor de padding maior que zero 
para um elemento ele aumenta de tamanho. Imagine um bloco com 100 pixels. Ao atribuir 
um “padding-left: 20px” o bloco aumenta para 120. Se quiser manter o bloco com 100 pixels 
você terá que diminuir a largura para 80 através da propriedade “width”.
Diferenças entre margin e padding
 
Quando estamos aprendendo a desenvolver é normal confundirmos estas duas propriedades. 
Porém com o tempo você verá que são muito diferentes. Para diferenciar tente se lembrar que 
para afastar boxes vizinhos você aplica margin. E para afastar o conteúdo seja texto, imagem, ou 
outro, da extremidade do Box, use padding.
A propriedade “margin” faz um Box se distanciar de blocos vizinhos e também da extremidade 
do navegador.
218 219
Enquanto que a propriedade “padding” faz o conteúdo dentro do bloco se distanciar da sua ex-
tremidade. 
Nota: Quando utilizamos o valor zero para as propriedades margin e padding 
no seletor universal (*) estamos “limpando” os valores em elementos que já vem 
padronizados pelos navegadores. 
E fazemos isso, pois “resetando” podemos estabelecer os valores da forma que a 
gente bem entender sem entrar em conflito com valores criados pelos navega-
dores, sacou?
Border
A propriedade “border” é responsável por especificar a espessura, o estilo e a cor 
da borda do Box.
 
Existem várias propriedades e, consequentemente, valores para “border” que você pode usar. 
Eles oferecem um grande leque de possibilidades. Isso por um lado é bom, porém pode ser uma 
porta de entrada para um “mistureba” de estilos e poluições de todo tipo. 
Lembre-se, menos é mais.
 
Border-style
 
Especifica o estilo da borda. E os valores para esta propriedade são:
 
• none;
• hidden;
• dotted;
• dashed;
• solid;
• double;
• groove;
• ridge;
• inset;
• outset.
 
Vamos deixar para você descobrir a aparência desses valores. Alguns são bacanas, outros nem 
tanto. O mais usado, sem dúvida, e o “solid”. Ele deixa uma borda continua. Repare bem que a 
maioria dos sites usa este valor.
 
Outros valores interessantes são o “dotted” que cria uma borda pontilhada e “dashed” que cria 
uma linha tracejada. E em algumas circunstâncias usamos o valor “none” que não deixa borda 
alguma.
220 221
Border-width
 
Especifica a espessura da borda. E os valores para esta propriedade são:
 
• thin: borda de espessura fina;
• medium: borda de espessura média;
• thick: borda de espessura grossa;
• length: uma medida reconhecida pelas folhas de estilo. Neste E-book usaremos pixels.
 
Esta propriedade não funciona sozinha. Você deve declarar o estilo da borda primeiro com
 “border-style”. Veja no código abaixo:
 
div {
 border-style: solid;
 border-width: 2px;
}
Border-color
 
Especifica a cor da borda. Assim como na propriedade “color”, você pode determinar valores 
através do nome da cor (em inglês) e até outros sistemas de cor. Neste E-book usaremos exem-
plos com o sistema hexadecimal.
 
Esta propriedade não funciona sozinha. Você deve declarar o estilo da borda primeiro com “bor-
der-style”. Veja no código abaixo:
 
div {
 border-style: solid;
 border-color: #000000;
}
Essas três variações da propriedade “border” coloca a borda nos quatros lados de um “Box”. 
Mas ainda é possível colocar borda somente no lado que te interessa ou estilos, cores e espes-
suras diferentes, que podem ser aplicadas individualmente para cada lado do Box (Lembre-se do 
mais é menos, hein!). Para isso acontecer existem também variações para essas três propriedades 
apresentadas. Vamos a elas!
Para o estilo:
 
border-top-style, border-right-style, border-bottom-style e border-left-style.
 
 
Para a espessura:
 
border-top-width, border-right-width, border-bottom-width e border-left-width.
 
 
Para a cor:
 
border-top-color, border-right-color, border-bottom-color e border-left-color.
Nota: para cada lado que você especifica uma cor ou uma espessura, deve-se também 
especificar um estilo de borda para que funcione. Veja código:
 
div {
 border-top-style: dotted; /* Para que a espessura da borda declarada abaixo 
 funcione foi preciso declarar também um estilo para seu lado correspondente */
 border-top-width: 10px;
 border-bottom-style: solid; /* Para que a cor da borda declarada abaixo 
 funcione foi preciso declarar também um estilo para seu lado correspondente */
 border-bottom-color: #ff0000;
}
222 223
Muito provavelmente você precisará usar algumas dessas propriedades, variantes de “border”, 
apresentadas até aqui, em seus projetos. Apresentamos todas elas para que sirva de base e você 
compreenda melhor o que vem a seguir. E o que vem é o 80/20 no que se refere à utilização de 
estilos para borda. 
E consideramos mais prático, fácil de usar e com menos chances de cometer atrocidades visuais.
 
Tudo consiste em você escrever a forma abreviada que engloba as regras para as propriedades 
da borda, ou seja, uma declaração única. Segue exemplo:
 
div {border: 2px solid #000000;}
 
Veja que com a abreviação você consegue juntar o valor da espessura (2px) o estilo da borda (so-
lid) e a cor (#000000) tudo em uma declaração. E ainda ele fornece variações de propriedades 
para você aplicar os três valores individualmente a cada lado:
 
• border-top;
• border-right;
• border-bottom;
• border-left.
 
A declaração abreviada e as variações de cada lado de um Box são as formas mais encontradas 
em sites. Vamos ver como aplicá-las em um exemplo prático. Entretanto, além das bordas, vere-
mos todas a propriedades usadas no box-model em um exemplo completo.
Box-model (Exemplo completo)
 
O código a seguir é autoexplicativo. Disponibilizaremos em arquivo para que você possa alterar 
e fazer experiênciasdiversas com as propriedades do box-model. Logo abaixo teremos algumas 
outras observações.
<!DOCTYPE html>
<html>
 <head>
 <meta charset=”utf-8”>
 <title>Box-model (Exemplo completo)</title>
 <style type=”text/css”> 
 * { 
 margin: 0; padding: 0;
 }
 body {
 background-color: #ffe6a4; 
 }
 #corpo {
 background-color: #a8c8ca; width: 910px; height: auto; margin: 0 auto; padding: 0 25px; 
 border-left: 2px solid #f4b200; border-right: 2px solid #f4b200; overflow: hidden;
 }
 p {
 width: auto; height:125px; padding: 25px 30px; font-size: 20px; text-align: justify; 
 }
 .borda_quatro_lados { 
 background: #ddf0f1; border: 1px solid #000000; margin-top: 20px; 
 }
 .borda_dois_lados { 
 background: #ffda78 url(bg2.png); border-top: 1px dotted #000000; 
 border-bottom: 1px dotted #000000; margin: 20px 0;
 }
 .borda_tres_lados {
 background: url(bg2.png); border: 1px solid #000000; border-top: none; 
 margin: 0 0 20px 0; height: auto;
 }
 </style>
224 225
Resultado:
Nota rápida: Você pode também colocar as declarações tudo em uma mesma linha em 
vez de cada uma em linha própria. Foi o que fizemos com as folhas de estilo do exemplo 
a seguir. A vantagem disso é que o arquivo fica mais leve e carregará mais rápido. A des-
vantagem é que demora um pouco para você procurar elementos no código.
 </head>
 <body>
 <div id=”corpo”>
 <p class=”borda_quatro_lados”>Este é um Box comum. Ele possui quatro áreas que compõe o box mo-
del. Possui especificada uma altura de 125 pixels, porém sua altura total é de 177 pixels quando somamos o 
valor de height, mais os valores de padding-top e padding-bottom, e de border-top e border-bottom. Através 
do “width:auto” ele se ajusta dentro da largura do elemento pai. E recebe em seu entorno uma borda sólida de 
cor preta de 2 pixels de espessura. Não usamos imagem, somente uma cor de background.</p>
 <p class=”borda_dois_lados”>As dimensões e características deste bloco são similares ao anterior. As 
diferenças é que ele só recebe borda no topo e na base, sendo que a borda é pontilhada, e que ele possui pro-
priedades de background que insere uma imagem repetitiva, mais uma cor no fundo.</p>
 <p class=”borda_tres_lados”>Este é um Box um pouco diferente em relação ao demais. Primeiro porque 
não tem especificado uma altura fixa. Sua altura é influenciada pela área que o conteúdo ocupa por causa da 
declaração “height:auto”. Segundo é que ele possui todos os quatro lados declarados com uma borda sólida, 
porém só aparece três. Isso porque existe uma declaração “border-top:none” que impede a inserção de uma 
borda no topo do Box. Mais atenção! Para isso dar certo, esta declaração tem que ser após a declaração que 
insere as bordas. E por último é que, apesar de aparentar, este box não tem cor de fundo, e sim, somente uma 
imagem tranparente repetida várias vezes. O azul que você vê é o fundo da div de ID “corpo”.</p>
 </div>
 </body>
</html>
226 227
Observações em relação à propriedade “width” aplicada no exemplo
 
A propriedade “width” foi utilizada em duas situações: a primeira para determinar uma largura 
total de 910 pixels para o box central exercer a função de contêiner. A outra é quando ele recebe 
o valor “auto” para que os três blocos filhos do contêiner se ajustem dentro da área delimitada 
por ele, levando em consideração também outras propriedades CSS.
Observações em relação à propriedade “height” aplicada no exemplo
 
Para os dois primeiros blocos de conteúdo (azul claro, e laranja) foram estipulados valores iguais 
de “height” (125 pixels). A não ser que você saiba o que está fazendo, nem sempre estipular um 
valor fixo para esta propriedade é uma boa ideia, pois caso o conteúdo sobressaia à altura do 
bloco teremos problemas no layout. 
Quando for projetar um site onde o usuário é o responsável pela atualização do conteúdo é indi-
cado o uso da declaração “height: auto” no bloco onde aparecerá o conteúdo. O valor “auto” fará 
que o bloco expanda automaticamente conforme a área do conteúdo cresça verticalmente.
 
O valor “auto” foi usado no contêiner e principalmente no terceiro Box filho onde visivelmente a 
área de conteúdo é maior verticalmente que seus irmãos acima, ou seja, 125 pixels não seriam 
suficientes.
 
Observações em relação à propriedade “margin” aplicada no exemplo
 
• Observação 1
 
A figura anterior mostra uma página com um box contêiner (ID “corpo”) de fundo azul e dentro 
dele três boxes filhos. Ele serve para deixarmos um posicionamento do conteúdo centralizado, 
muito comum em muitos sites.
Para que esta centralização ocorra você deve pegar o primeiro elemento HTML após “body” que 
incorpora todos outros elementos e aplicar a declaração “margin: 0 auto” e uma largura. No nos-
so exemplo a largura é de 910 pixels.
 
Nesta declaração o que importa mesmo é o valor “auto”, que significa que o box alinha automa-
ticamente à margem da direita e da esquerda de “body”. 
Existem outras formas de centralizar o bloco, porém esta é a mais simples e comum. Geralmente 
os elementos HTML que servem de container são a “div” e o “section”.
 
• Observação 2
 
Foram usados quatros tipos de declaração da propriedade margin. Sendo:
 
• Uma variante de “margin” (margin-top: 20px);
• Uma que reúne todas as variantes de “margin” (margin: 0 0 20px 0);
• E duas abreviadas (margin: 0 auto) e (margin: 20px 0).
Observações em relação à propriedade “padding” aplicada no exemplo
 
• Observação 1
 
“Padding” foi usado como área de respiro para que os blocos internos não “grudassem” lateral-
mente na borda do box contêiner. Veja a declaração usada:
 padding: 0 25px;
 
O valor zero indica que não houve a mesma preocupação com o topo e a base. Isso porque os 
blocos internos criaram área de respiro nesta região através das propriedades “margin-top” e 
“margin-bottom”.
228 229
• Observação 2
 
A propriedade “padding” também foi usada como área de respiro para que o conteúdo dos três 
boxes internos não “grudassem” em suas extremidades, e resultasse em um aspecto visual inade-
quado. Veja a declaração usada:
 
padding: 25px 30px;
 
• Observação 3
 
As declarações usadas também foram abreviadas.
Observações em relação à propriedade “border” aplicada no exemplo
• Observação 1
 
A forma mais comumente usada na web é quando aplicamos a borda nos quatro cantos de um 
Box. Conseguimos isso perfeitamente com a declaração única. Dois boxes receberam esta de-
claração única, o primeiro e último:
 
border: 1px solid #000000;
 
A diferença é que o último box só recebeu borda em três lados. Seu topo ficou sem borda. Para 
que isso ocorra é preciso que após a declaração anterior de “border” você coloque outra decla-
ração indicando o lado que você não quer que apareça borda, usando o valor “none”. 
Foi o que fizemos no exemplo:
 
border: 1px solid #000000;
border-top: none; 
 
• Observação 2
 
O uso de variações de “border” para os lados também foram usados. No box contêiner usamos 
bordas na laterais. Veja o código:
 
border-left: 2px solid #f4b200;
border-right: 2px solid #f4b200;
 
E no segundo box filho também aplicamos variações, só que desta vez, aplicamos no topo e na 
base. E o estilo da borda também é diferente. Ela é pontilhada. Segue o código:
 
border-top: 1px dotted #000000;
border-bottom: 1px dotted #000000;
231230
Parabéns!!! Considere-se um campeão!!!
Estes dois últimos tópicos foram muito puxados, porém fundamentais para construção de 
interfaces. É partir dos conceitos que foram apresentados nele que você terá a base para construir 
blocos de conteúdo. 
Sugiro que você reveja tudo que foi apresentado nestes dois tópicos e brinque com o arquivo 
que deixaremos disponível. Mas antes que tal dar uma pausa para descansar?Celebre o que está conquistando, Galucho!!!
O código HTML e os arquivos usados até esta 
etapa se encontram neste link para download.
Como funciona o CSS? Parte 4.5 - Outras proprie-
dades importantes
Com as propriedades que apresentadas você já possui bons recursos para estilizar grande parte 
de elementos de um documento HTML, entretanto ainda é preciso apresentar-te outras proprie-
dades importantes que virá e mexe temos que aplicá-las. Então este tópico é dedicado a elas.
Começaremos com as propriedadades de posicionamento.
Position, top, right, bottom e left
“Position” é uma propriedade que permite posicionar elementos e , em alguns casos, até colocar 
um elemento atrás de outro. Geralmente ele pode contar com as propriedades “top”, “right”, “bot-
tom” e “left” para deslocar os elementos.
Iremos usar a propriedade “left”, como exemplo. Se atribuirmos um valor de 20 pixels para “left”, 
ele usará este valor para deslocar um elemento da esquerda para direita.
Também podemos usar valores negativos, como, por exemplo, -20 pixels. Isso permite um des-
locamento inverso ao anterior.
Imagine um sistema de coordenadas x e y dentro do seu navegador para posicionar os elemen-
tos.
Suponha agora que você quer posicionar um box em relação ao canto superior esquerdo do na-
vegador. Esse canto será o ponto da coordendada (0,0), ou seja, “left:0” e “top:0”. 
Seu box ficará a 150 pixels da esquerda e 100 do topo que corresponde o ponto da coordernada 
(150,100), resultando em um deslocamento CSS “left:150px” e “top:”100”. Isso reflete em um des-
locamento do bloco para direita e para baixo. 
http://ebookhtmlcss.com/arquivos/capitulo-4.3-4.4/arquivos-para-download-8.zip
http://ebookhtmlcss.com/arquivos/capitulo-4.3-4.4/arquivos-para-download-8.zip
232 233
Tudo que o que descrevemos você pode ver no BLOCO 1 da figura acima.
Na mesma imagem temos o BLOCO 2. Ele se posiciona em relação ao seu elemento pai BLOCO 
1. Então, imagine as coordenadas agora dentro do BLOCO 1. 
O canto superior esquerdo deste bloco será o ponto da coordendada (0,0), ou seja, “left:0” e 
“top:0”. Queremos que o BLOCO 2 fique a 250 pixels da esquerda e a 100 pixels do topo em rela-
ção a este ponto, portanto o ponto da coordenada é (250,100). Isso resulta em um deslocamento 
CSS “left:250px” e “top:”100”.
É importante saber que esse grid com coordenadas é só para demonstrar como se comporta o 
deslocamento, no caso, para as propriedades “left” e “top” e usando a declaração “position:ab-
solute” que falaremos mais a frente. Se usássemos as propriedades “right” e “bottom”, o grid se 
inverteria e o ponto da coordenada (0,0) seria no canto inferior direito, com deslocamento posi-
tivos para esquerda e para cima. 
 
Portanto quando colocamos valores positivos para as propriedades o elemento se desloca para o 
sentido contrário do nome da propriedade. Veja:
• top: 20px - desloca um elemento 20 pixels para baixo;
• right: 20px - desloca um elemento 20 pixels para esquerda;
• bottom: 20px - desloca um elemento 20 pixels para cima;
• left: 20px - desloca um elemento 20 pixels para direita.
Voltando a propriedade “position”, saiba que ela possui quatro valores: static, absolute, fixed e 
relative. Vamos falar sobre cada uma delas.
Posicionamento estático
Por padrão os elementos HTML já são posicionados de forma estática. Este posicionamento faz 
que cada elemento siga o fluxo normal do documento. Segue exemplo de regra:
seletor_qualquer {
 position: static;
}
Com ele não adianta declarar as propriedades “top”, “right”, “bottom” e “left” que não existirá des-
locamento. Veja a imagem a seguir:
234 235
A tela da imagem anterior mostra blocos que demostram exemplos dos tipo de valores da pro-
priedade “position”. Neste momento peço que foque somente no BLOCO 1 que está destacado 
com a cor mais escura.
Neste bloco declaramos que ele deveria se deslocar 200 pixels do topo para baixo e também da 
esquerda para direita. Porém o bloco não se moveu, ou seja, quando você declara “position:sta-
tic” ou quando você não declara nenhum dos outros tipos de valores, desta propriedade, nada 
acontece.
Veja o código usado no Box:
#static {
 position: static;
 background-color: #272822;
 width: auto;
 height: auto;
 padding: 20px;
 top:200px;
 left: 200px;
 border: 4px solid #ffa200;
 margin-bottom: 20px;
}
Foi inútil declarar “top” e “left”.
Importante observar é que se a intenção é manter um elemento estático não há necessidade de 
declarar essa propriedade. Como já vimos antes, “static” é um valor padrão.
Posicionamento absoluto - Situação 1
Dentro do código do BLOCO 1 tem como elemento filho o BLOCO 2. Veja nessa versão resumida:
<div id=”static”>
 <h2>BLOCO 1 - position: static</h2>
 ...
 <div id=”absolute”>
 <h2>BLOCO 2 - position: absolute</h2>
 ...
 </div>
</div>
236 237
O posicionamento absoluto faz que um elemento se posicione em relação ao elemento pai. Isso 
faz o bloco fique dentro do elemento ancestral. No caso BLOCO 2 dentro de BLOCO 1. Entretanto 
acontece algo interessante nesta primeira situação. Veja a figura a seguir (foque no bloco escuro): 
Veja que o BLOCO 2 não está dentro do BLOCO 1 como esperado. 
O código indica que o elemento deva estar a zero em relação a direita e a base inferior do ele-
mento pai (canto inferior direito), mas o que vemos é que o BLOCO 2 está a zero em relação ao 
navegador. Por que isso acontece? 
Primeiro, vamos ver código:
#static #absolute {
 position: absolute;
 background-color: #272822;
 width: 500px;
 height: auto;
 padding: 20px;
 bottom: 0;
 right: 0;
 border: 4px solid #ff4163;
}
O próprio seletor CSS “#static #absolute” indica que o BLOCO 1 (#static) é o elemento pai do 
BLOCO 2 (#absolute). 
Só que o motivo pelo BLOCO 2 “escapar” do fluxo HTML é exatamente por culpa do elemento pai. 
Estando o elemento pai (#static) posicionado de forma estática, faz com que o elemento filho 
(#absolute) posicionado como absoluto, ignore o tipo de posicionamento do pai como referência.
Quando o elemento ancestral mais próximo estiver posicionado de forma estática ele procura-
rá o próximo ancestral que não esteja posicionado desta forma. E quando não existir este ele-
mento ele se posicionará em relação ao “viewport” representado pelo elemento raiz “HTML”. 
Viewport é a parte visível do seu site em um dispositivo.
A sintaxe “seletor 1+ espaço + seletor 2” , indica hierarquia entre os elementos, onde o “seletor 1” 
é o pai e o “seletor 2” é o filho. A regra CSS a seguir se aplica somente ao filho (seletor 2). 
Essa é uma forma de sermos ainda mais específicos ao estilizar um elemento.
238 239
Posicionamento absoluto - Situação 2
Já sabemos que posicionamento absoluto faz que um elemento se posicione em relação ao 
elemento pai. Porém isso somente ocorre quando o elemento pai não tiver um posicionamento 
estático. No próximo exemplo mostraremos uma situação em que o elemento pai tem um posi-
cionamento diferente de estático:
Vemos na imagem que diferentemente da situação anterior o BLOCO 3 não “escapou” do fluxo 
HTML e se posiciona dentro de seu elemento pai, o BLOCO 6. Isso ocorre porque o BLOCO 6 tem 
um posicionamento relativo (falaremos mais a frente).
Veja o código:
#relative_com_deslocamento #absolute3 {
 position: absolute;
 background-color: #272822;
 width: 450px;
 height: auto;
 padding: 20px;
 bottom: 0;
 right: 0;
 border: 4px solid #ff4163;
}
O seletor CSS “#relative_com_deslocamento #absolute3” indica que o BLOCO 6 (#relative_com_
deslocamento) é o elemento pai do BLOCO 3 (#absolute3).
As propriedades right e bottom usando o valor zero faz com que o BLOCO 3 se posicione no can-
to inferior direito em relação ao BLOCO 6. 
Uma das situações mais frequentes de uso (80/20) da propriedade “position” é quando usamos 
o valor “absolute” em um bloco filho cujo bloco pai tenho o valor “relative”. Situação exposta no 
exemplo deste subtópico.
Um elemento com posicionamento absoluto não deixa espaço vazio onde ele seria inserindo 
normalmenteno documento.
Posicionamento fixo
Quando você pretende fixar um objeto na tela que independente da rolagem na página não saia 
da posição, você deve usar este tipo de posicionamento.
240 241
O posicionamento “fixo” faz o elemento se posicionar em relação ao viewport. E também usa as 
propriedades “top”, “right”, “bottom” e “left” para efetuar o posicionamento.
Um elemento com posicionamento fixo não deixa espaço vazio onde ele seria inserindo normal-
mente no documento.
Veja um exemplo de um elemento fixo (BLOCO 4) antes de efetuarmos uma rolagem na página:
Note que todos os blocos seguiram a rolagem mas o BLOCO 4 ficou lá na dele, “paradão”.
Segue o código usado nesse exemplo:
#fixed {
 position: fixed;
 background-color: #272822;
 width: 580px;
 height: auto;
 padding: 20px;
 top: 185px;
 right: 0;
 border: 4px solid #acff00;
}
Posicionamento relativo - Situação 1
Um elemento com posicionamento relativo pode ser movido para diferentes posições assim 
como nos casos de “fixed” e “absolute”. Só que ele é posicionado em relação à sua posição normal 
no fluxo da página. E a principal diferença é que sua posição original na página fica preservada 
sem nenhum outro objeto ocupar seu lugar no fluxo.
Essa primeira situação mostra o posicionamento relativo com comportamento estático. Isso por-
que não foi declarado em conjunto com as propriedades de deslocamento “top”, “right”, “bottom” 
e “left”.
Veja o código:
242 243
#relative_sem_deslocamento {
 position: relative;
 background-color: #272822!important;
 width: 620px;
 height: auto;
 padding: 20px 20px 100px;
 border: 4px solid #05f0ff;
}
Como não há deslocamento ele mantém sua posição normal que é praticamente um posiciona-
mento estático. Na imagem abaixo, o código anterior gerou o BLOCO 5.
Mesmo este bloco se comportando estaticamente é válido usar a declaração “position: relative” 
,mesmo sem deslocamentos, quando o objetivo é posicionar elementos filhos com “position: ab-
solute”. Situação esta bastante comum e vista no exemplo com o bloco 3.
Posicionamento relativo - Situação 2
Agora aqui, na situação 2, efetivamente o posicionamento cumpre a função de fazer um elemen-
to se posicionar em relação a ele mesmo. Isso porque usamos as propriedades “left” e “top”. 
Veja o código a seguir que representa o BLOCO 6:
#relative_com_deslocamento {
 position: relative;
 background-color: #272822;
 width: 620px;
 height: 400px;
 padding: 20px;
 top: -90px;
 left: 30px;
 border: 4px solid #05f0ff;
}
Temos algumas observações interessantes:
Usando “position: relative” e as declarações “top: -90px” e “left: 30px” o elemento se posiciona em 
relação a sua colocação normal (posição sem estas declarações) e não em relação a um elemen-
to pai ou ao “viewport” como acontece com o posicionamento absoluto.
A declaração “top: -90px” faz que o BLOCO 6 tenha um deslocamento negativo para o topo em 
relação sua posição normal. Este comportamento faz com que este bloco sobreponha o BLOCO 
5 como você pode ver na imagem logo a seguir.
244 245
O fato de o BLOCO 6 ter um posicionamento relativo possibilitou que seu elemento filho, BLO-
CO 3, que possui posicionamento absoluto, não “escapasse” para se posicionar em relação ao 
viewport, mantendo-o dentro do fluxo normal.
A seguir iremos aprender uma propriedade que também tem relação com posicionamentos.
ATENÇÃO: Trabalhar com a propriedade “position” requer planejamento, principalmente 
quando desenvolvemos sites para dispositivos menores.
Z-index
Você já viu neste ebook que um elemento HTML possui uma hierarquia interna referente ao Bo-
x-model como composições internas que transmitem a sensação de sobreposições, ou podemos 
dizer, empilhamentos das camadas internas no eixo Z.
Lembra-se desta imagem?
Existe um recurso CSS que possibilita sobreposições, só que agora de elementos HTML no eixo Z 
(como camadas), que é a propriedade “z-index”.
De uma forma geral nos vimos, no subtópico anterior sobre posicionamentos, algumas sobrepo-
sições. Observe:
246 247
• Um elemento filho mesmo dentro de um componente ancestral está sobreposto visualmente 
ao elemento pai;
• Um elemento não estático pode sobrepor um elemento com posicionamento estático;
• Elementos posicionados de forma não estática podem sobrepor um elemento que venha an-
teriormente a ele no documento HTML, independente do tipo de posicionamento.
E é nesta terceira observação que quero focar agora.
 
Se você criar três elementos com cor de fundos diferentes, porém com tamanhos iguais e posi-
cioná-los absolutamente no mesmo local o que irá acontecer? Veja o código:
<!DOCTYPE html>
<html>
 <head>
 <meta charset=”utf-8”>
 <title>Z-index</title>
 <style type=”text/css”>
 #bloco1 , #bloco2 , #bloco3 { 
 position: absolute; 
 width: 200px; 
 height: 200px; 
 font: 36px/5 sans-serif;
 text-align: center;
 color: #ffffff; 
 } 
 #bloco1 { 
 background-color: #0000ff; 
 top: 0;
 left: 0;
 } 
 #bloco2 { 
 background-color: #00ff00; 
 top: 0;
 left: 0;
 } 
 #bloco3 { 
 background-color: #ff0000; 
 top: 0;
 left: 0;
 } 
 </style>
 </head>
 </body>
 <div id=”bloco1”>BLOCO 1</div>
 <div id=”bloco2”>BLOCO 2</div>
 <div id=”bloco3”>BLOCO 3</div>
 </body>
</html>
Notamos na imagem ao lado 
somente um bloco. Só que na 
verdade sabemos que exis-
tem três blocos. 
Vemos só um porque, como 
foi dito na terceira observa-
ção, o elemento não estático 
se sobrepõe ao elemento que 
vem anterior no código. 
E como todos estão na mesma posição visualizamos, então, somente o último elemento do fluxo 
HTML que corresponde ao BLOCO 3.
248 249
Para temos certeza que todos três blocos estão na página vamos colocar no nosso código css 
alguns deslocamentos. 
Veja o código:
#bloco1 , #bloco2 , #bloco3 { 
 position: absolute; 
 width: 200px; 
 height: 200px; 
 font: 36px/5 sans-serif;
 text-align: center;
 color: #ffffff; 
 
} 
#bloco1 { 
 background-color: #0000ff; 
 top: 0;
 left: 0;
} 
#bloco2 { 
 background-color: #00ff00; 
 top: 100px;
 left: 100px;
} 
#bloco3 { 
 background-color: #ff0000; 
 top: 200px;
 left: 200px;
} 
Veja agora o resultado:
Conseguimos notar 
a sobreposição que 
ocorre e também que 
o ultimo elemento 
pode sobrepor os an-
teriores.
O que acontece é que 
naturalmente os ele-
mentos posicionados 
recebem um valor de 
“z-ndex” mesmo sem 
declararmos.
 
Então o BLOCO 1, recebe “z-index: 1”, o BLOCO 2 “z-index: 2” e o BLOCO 3 “z-index: 3”.
Só que em algum momento você pode ter a necessidade de alterar essa ordem e é aí que entra 
a propriedade “z-index”. 
No código anterior não declaramos esta propriedade,pois foi aplicada naturalmente pela ordem 
dos blocos no HTML. Mas... Que tal interferir nesta ordem? 
Então, ao inverter a ordem, os que apareceram primeiro no fluxo HTML e ficaram atrás, vão agora 
sobrepor os que apareceram por ultimo no fluxo.
Veja o código (continua na próxima página):
#bloco1 , #bloco2 , #bloco3 { 
 position: absolute; 
 width: 200px; 
 height: 200px; 
250 251
 font: 36px/5 sans-serif;
 text-align: center;
 color: #ffffff; 
} 
#bloco1 { 
 background-color: #0000ff; 
 top: 0;
 left: 0;
 z-index: 3;
} 
#bloco2 { 
 background-color: #00ff00; 
 top: 100px;
 left: 100px;
 z-index: 2;
} 
#bloco3 { 
 background-color: #ff0000; 
 top: 200px;
 left: 200px;
 z-index: 1;
} 
Agora o resultado:
O “z-index” traz essa possibilidade de 
manipular os blocos como camadas 
que se sobrepõe definindo quem ficará 
na posição “mais alta” no eixo z. Vimos 
como uma simples inversão, nos valores 
das regras, fez com que o z-index igno-
rasse a ordem do fluxo HTML referente 
a sobreposição.
Imagine quando você estiver alterando 
o valor de uma camada com “z-index” 
como se estivesse reposicionandocamadas (layers) no Phostoshop. O comportamento é similar.
E assim encerramos por aqui este assunto. 
A seguir vamos falar de estilos de listas.
List-style
Quando fazemos uma lista ordenada (ol) ou não ordenada (ul), em um documento HTML, ela 
resulta em marcadores na frente de cada item da lista. Lista ordenadas possuem uma ordem se-
quencial. E as não ordenadas podem gerar, dependendo do navegador ou dispositivos, listas com 
marcadores quadrados, em formato de disco ou em círculos.
Através do CSS é possível dar mais vida a esses estilos ou até, como é normal em menus supe-
riores de navegação, eliminá-los. Isso tudo é possível através da propriedade “list-style” que é a 
forma abreviada para as seguintes propriedades de listas:
• list-style-image – Que usa imagem como marcador da lista;
• list-style-position – Que indica onde o marcador da lista será posicionado, se junto ao texto ou 
separado com uma indentação. As opções de valores são “inside” ou “outside”.
• list-style-type – Além do tipo do marcador da lista já citados ele mostra outras opções tanto 
para ordenadas como para não ordenadas.
O uso de imagens no lugar do marcador, se sua preocupação com desempenho do site for gran-
de, pode não ser indicado.
Veja a sintaxe:
ul {
 list-style-image: url(“seta.gif”);
}
252 253
Se o projeto exigir você pode usar imagens. Mas pense primeiro em uma solução usando um re-
curso que não precise delas.
Quanto ao “list-style-type” você pode optar por algum dentre uma pequena lista de valores. 
Vamos focar naquelas com mais chances de você usar. Caso queira conhecer mais visite esta pá-
gina: http://www.w3schools.com/cssref/playit.asp?filename=playcss_ol_list=-style-type&preval-
katakana-iroha
Agora veja este código para listas não ordenadas:
<!DOCTYPE html>
<html>
 <head>
 <meta charset=”utf-8”>
 <title>List-style 1</title>
 <style type=”text/css”>
 .none {
 list-style-type: none;
 }
 .disc {
 list-style-type: disc;
 }
 .circle {
 list-style-type: circle;
 }
 .square {
 list-style-type: square;
 }
 li {
 font-size: 18px;
 }
 </style>
 </head>
 <body>
 <div>
 <h1>Listas não ordenadas</h1>
 <ul class=”none”>
 <li>Lista sem marcador</li>
 <li>Lista sem marcador</li>
 </ul>
 <ul class=”disc”>
 <li>Marcador “disc”</li>
 <li>Marcador “disc”</li> 
 </ul>
 <ul class=”circle”>
 <li>Marcador “circle”</li>
 <li>Marcador “circle”</li>
 </ul>
 <ul class=”square”>
 <li>Marcador “square”</li>
 <li>Marcador “square”</li>
 </ul>
 </div> 
 </body>
</html>
http://www.w3schools.com/cssref/playit.asp?filename=playcss_ol_list-style-type&preval=katakana-iroha
http://www.w3schools.com/cssref/playit.asp?filename=playcss_ol_list-style-type&preval=katakana-iroha
254 255
Veja o resultado:
Agora alguns exemplos de listas ordenadas:
<!DOCTYPE html>
<html>
 <head>
 <meta charset=”utf-8”>
 <title>List-style 2</title>
 <style type=”text/css”>
 .decimal { 
 list-style-type: decimal;
 }
 .decimal-leading-zero { 
 list-style-type: decimal-leading-zero;
 }
 .lower-roman {
 list-style-type: lower-roman;
 } 
 .upper-roman { 
 list-style-type: upper-roman;
 }
 . .lower-alpha {
 list-style-type: lower-alpha;
 }
 .upper-alpha { 
 list-style-type: upper-alpha;
 }
 li { 
 font-size: 18px;
 }
 </style>
 </head>
 <body>
 <div>
 <h1>Listas ordenadas</h1>
 <h2>Lista com decimal</h2>
 <ol class=”decimal”>
 <li>Item 1</li>
 <li>Item 2</li>
 <li>Item 2</li>
 </ol>
 <h2>Lista com decimal-leading-zero</h2>
 <ol class=”decimal-leading-zero”>
 <li>Item 1</li>
 <li>Item 2</li>
 <li>Item 2</li>
 </ol>
 <h2>Lista com lower-roman</h2>
 <ol class=”lower-roman”>
 <li>Item 1</li>
 <li>Item 2</li>
 <li>Item 2</li>
 </ol>
256 257
 <h2>Lista com upper-roman</h2>
 <ol class=”upper-roman”>
 <li>Item 1</li>
 <li>Item 2</li>
 <li>Item 2</li>
 </ol>
 <h2>Lista com lower-alpha</h2>
 <ol class=”lower-alpha”>
 <li>Item 1</li>
 <li>Item 2</li>
 <li>Item 2</li>
 </ol>
 <h2>Lista com upper-alpha</h2>
 <ol class=”upper-alpha”>
 <li>Item 1</li>
 <li>Item 2</li>
 <li>Item 2</li>
 </ol>
 </div> 
 </body>
</html>
Veja o resultado:
258 259
Mas se tratando de listas você usará muito (muito mesmo) em menus. E geralmente o que vemos 
por aí são listas sem marcadores. Isso se obtém da forma mais simples veja: 
<!DOCTYPE html>
<html>
 <head>
 <meta charset=”utf-8”>
 <title>List-style 3</title>
 <style type=”text/css”>
 #menu_principal ul {
 list-style: none;
 font-size: 18px;
 }
 </style>
 </head>
 <body>
 <nav id=”menu_principal”>
 <ul>
 <li><a href=”#”>Home</a></li>
 <li><a href=”#”>Portfólio</a></li>
 <li><a href=”#”>Contato</a></li>
 </ul>
 </nav> 
 </body>
</html>
Veja o resultado:
No caso usamos a declaração “list-style: none;” para retirar os marcadores. A versão abreviada 
“list-style” basta para essa função.
Falaremos agora da propriedade “float” e usaremos este código do menu para dar prosseguimen-
to, bele?
Float
A propriedade “float” especifica se uma elemento deve flutuar à esquerda, à direita ou não flutuar. 
Os valores usados são “left”, “right” e “none”. Veja a sintaxe:
260 261
Seletor_qualquer {
 float: left;
}
E o que seria este “flutuar”?
Flutuar consiste em empurrar um elemento para esquerda ou para a direita, permitindo que os 
outros elementos possam organizar em torno dele. Entretanto aplica-se apenas aos elementos 
que não estão posicionados de forma absoluta.
• Valor “left” - O box é empurrado para a esquerda. O conteúdo flui no lado direito, começando 
no topo.
• Valor “right” - O box é empurrado para a direita. O conteúdo flui no lado esquerdo, começando 
no topo.
• Valor “none” - O box não flutua para lado algum.
Usaremos o código do menu - que usamos no subtópico sobre List Style - com algumas altera-
ções. Incluiremos um “box” para telefone e outro com um link para o Facebook. Todos sem apli-
cação de float para podemos ver a situação antes e depois da flutuação. 
Confira:
<!DOCTYPE html>
<html>
 <head>
 <meta charset=”utf-8”>
 <title>Float left 1</title>
 <style type=”text/css”>
 body {
 margin: 0;
 padding: 0;
 }
 #corpo {
 width: 760px;
 }
 header {
 display: block;
 width: auto; 
 font-size: 18px;
 }
 #menu_principal ul {
 list-style: none;
 }
 #menu_principal li {
 margin-right: 10px;
 }
 #bloco1 {
 background-color: #c8c8c8;
 }
 #bloco2 {
 background-color: #f56e6e;
 }
 </style>
 </head>
 <body> 
 <div id=”corpo”>
 <header>
 <div id=”bloco1”>
 <nav id=”menu_principal”>
 <ul>
 <li><a href=”#”>Home</a></li>
 <li><a href=”#”>Portfólio</a></li>
 <li><a href=”#”>Contato</a></li>
262 263
 </ul> 
 </nav> 
 <p class=”fone”>Telefone: XXXX-XXXX<p>
 </div>
 <div id=”bloco2”> 
 <p class=”social”><a href=”#”>Facebook</a></p>
 </div> 
 </header>
 </div> 
 </body>
</html>
Veja o resultado:
Adicionamos o menu dentro de um “Box” cinza. Porém vemos, em questão de posicionamento, 
que o menu continua da mesma forma e seguido logo abaixo pelo texto do telefone. Temos ainda 
um “Box” vermelho com o link para a rede social.
Pois bem. O intuito agora é aplicar flutuações a direita e a esquerda. Usaremos três situações cor-
riqueiras:
Flutuando à esquerda [float-left]
Nosso menu está na posição vertical. Geralmente este tipo de posição é usada para navegação na 
lateral de sites. Como queremos o menu no topo ficará mais adequado que cada item fique lado 
a lado. Aplicando a declaração “float:left” os três itens da lista flutuam a esquerda se posicionando 
lateralmente um após o outro. Caso você não queira que eles fiquem totalmente colados você po-
dem aplicar uma margem à direita. Foi o que fizemos:
#menu_principalli {
 float: left;
 margin-right: 10px;
}
Agora veja no navegador:
264 265
Flutuando à direita [float-right]
Agora o objetivo é deixar o texto do telefone à direita do menu. Como o menu, que está dentro 
do elemento “nav”, recebe a declaração “float:left”, naturalmente o parágrafo que abriga o telefone 
flutuou ao lado do menu. Ele está a direita do menu, porém ainda não é o que queremos. O que 
queremos é que ele fique na extremidade direita do “box” cinza por efeito do “float:right” e não 
empurrado à direita por consequência do “float:left”. Confira:
.fone {
 float: right;
 margin: 0;
}
Na imagem abaixo conseguimos colocar o texto do telefone à direita com “float:right”.
Posicionado um bloco a direita sem “float:right” [float-left + margin-left]
Por fim, você pode abdicar de posicionar um bloco o máximo possível para a extremidade direi-
ta usando “float:right”. Para isso basta que um bloco flutue à esquerda e você use a propriedade 
“margin-left” com um valor que distancie o máximo possível o bloco flutuado em relação ao blo-
co à esquerda até atingir a extremidade direita do elemento pai. Foi o que fizemos com o “bloco 
2” em relação ao ”bloco 1”. 
Veja os códigos:
266 267
#bloco1 , #bloco2 {
 float: left; 
}
 #bloco1 {
 background-color: #c8c8c8;
 width: 65%;
 }
 #bloco2 {
 background-color: #f56e6e;
 margin-left: 177px;
 }
Esses blocos estão dentro de “header” que possui 760 pixels de largura. O “bloco 1” (que possui o 
menu e o bloco do telefone) possui 50% deste valor. O que equilave a 380 pixels. A área do “bloco 
2 “ (que possui o link para o Facebook) possui arrendondado 70 pixels. 
Somando os valores das larguras dos blocos e subtraindo do valor de “header” obtemos o valor 
total de quanto o “bloco 2” deve estar distante do “bloco 1”, que é 196 pixels, ou seja, “margin-left: 
196px”. Confira:
Flutuações realizadas veja o código completo:
<!DOCTYPE html>
<html>
 <head>
 <meta charset=”utf-8”>
 <title>Float 2</title>
 <style type=”text/css”>
 body {
 margin: 0;
 padding: 0;
 }
 #corpo {
 width: 760px;
 }
268 269
 header {
 display: block;
 width: auto; 
 font-size: 18px;
 }
 #menu_principal {
 display: block;
 float:left;
 }
 #menu_principal ul {
 list-style: none;
 margin: 0;
 }
 #menu_principal li {
 float: left;
 margin-right: 10px;
 }
 .fone {
 float: right;
 margin: 0;
 }
 #bloco1,#bloco2 {
 float: left; 
 }
 #bloco1 {
 background-color: #c8c8c8;
 width: 65%;
 }
 #bloco2 {
 background-color: #f56e6e;
 margin-left: 177px;
 }
 </style>
 </head>
 <body>
 <div id=”corpo”>
 <header>
 <div id=”bloco1”>
 <nav id=”menu_principal”>
 <ul>
 <li>
 <a href=”#”>Home</a>
 </li>
 <li>
 <a href=”#”>Portfólio</a>
 </li>
 <li>
 <a href=”#”>Contato</a>
 </li>
 </ul>
 </nav>
 <p class=”fone”>Telefone: XXXX-XXXX</p>
 </div>
 <div id=”bloco2”>
 <p class=”social”>
 <a href=”#”>Facebook</a>
 </p>
 </div>
 </header>
 </div>
 </body>
</html> 
Observação: Esse exemplo que vimos anteriormente no menu foca bastante em estruturar 
blocos. De forma similar é comum vermos a propriedade “float” para estruturar layouts. Ele trou-
xe a possibilidade de substituir o método ultrapassado de estruturar layouts através de tabe-
las HTML. Contudo ele foi designado para 
fazer o conteúdo fluir para o lado inverso 
do elemento flutuante, ou seja, o conteú-
do flui para o lado direito de um “box” com 
“float:left” e para o lado esquerdo de um 
“box” com “float:right”, semelhante as dia-
gramações que vemos em revistas e jor-
nais, por exemplo. Por isso o float não é 
considerado uma solução definitiva para 
estruturar layouts e novas possibilidades 
ainda estão sendo pesquisadas e criadas 
pelos desenvolvedores.
270 271
Box-sizing 
Você aprendeu na parte 4.4 que um box é formado por quatro composições que geram o box-
-model. Você já sabe também que todas essas composições podem ser controlados por nós atra-
vés das propriedades width, height, padding, margin, border e as variantes destas propriedades.
Quando você estipula um valor de 100px de largura para uma área de conteúdo a largura total 
do box terá alteração devido a inserção de valores nas propriedades padding e border que serão 
computados. Olhe o exemplo a seguir:
div { 
 width: 100px;
 padding: 10px;
 border: 10px solid #000;
}
Para esta div o valor da borda esquerda e direita e dos preenchimentos laterais serão computa-
dos fazendo a largura total ser de 140 pixels. E se não é exatamente isso que você quer? Você 
será obrigado a fazer um cálculo compensatório onde retire, do valor de width, os 40 pixels das 
bordas e dos preenchimentos laterais. Sendo assim a regra fica da seguinte maneira para atender 
o esperado:
div { 
 width: 60px;
 padding: 10px;
 border: 10px solid #000;
}
Agora imagine a seguinte situação: dentro de uma div pai você tem dois elementos filhos que 
você quer posicionar lado a lado utilizando float. Ambos tem 50%. E detalhe: eles possuem um 
border e padding de 10 pixels. Vamos exemplificar com o seguinte código:
<!DOCTYPE html>
<html>
 <head>
 <meta charset=”utf-8”>
 <title>Verificando largura total do box-model</title>
 <style type=”text/css”> 
 #container {
 background-color:#E9E9E9;
 width: 600px;
 overflow: auto;
 margin: 20px auto;
 }
 .left {
 background-color: aquamarine;
 }
 .right {
 background-color: tomato;
 }
 .left, .right {
 width: 50%;
 padding: 30px;
 float: left;
 }
 </style>
 </head>
 <body>
 <div id=”container”> 
 <div class=”left”>
 Box esquerdo
 </div>
 <div class=”right”>
 Box direito
 </div>
 </div> 
 </body>
</html>
272 273
Quando você está em dando os seus primeiros passos com CSS e deseja que dois elementos te-
nham 50% de tamanho do elemento pai, colocar um padding pode significar um respiro entre o 
conteúdo e borda. Mas você consegue muito mais que isso, porque a largura total dos elementos 
aumenta e não existe espaço disponível para que as caixas flutuem e fiquem lado a lado. 
Segue o resultado da nossa codificação:
Foi estabelecida uma área total de 600 pixels para o contêiner pai. Como cada elemento filho 
recebeu 50% de largura referente a pai, isso significa 300 pixels.
O problema que surge é a soma das larguras de padding referentes as laterais dos blocos, que 
correspondem a 60 pixels, é adicionada a largura total de cada elemento resultando em 360 px. 
Esse valor é maior que a metade da largura do elemento pai o que impede do box direito de flu-
tuar e se posicionar ao lado do box esquerdo.
Ao inspecionar com a ferramenta de desenvolvimento o box direito, nota-se que a largura total é 
360 pixels decorrente das larguras de padding computadas, e que obviamente o espaço que sobra 
é de 240 pixels, o que não é suficiente para posicioná-lo ao lado do box esquerdo.
274 275
Logicamente que você pode resolver este problema redimensionando cada box ao diminuir o 
valor de width para 240 pixels. Com isso, ao somar a nova largura com as larguras das laterais de 
padding, chega-se a 300 px de largura e permitindo que os boxes se ajustem perfeitamente.
Mas você não tem que fazer cálculo algum (só se quiser mesmo!). Para você não ter trabalho existe 
a propriedade box-sizing.
A propriedade box-sizing
Box-sizing é uma propriedade de dimensionamento que pode alterar a propriedade padrãodo box 
model. Ela efetua cálculos para largura e altura caso preenchimento e espessura da borda forem 
incluídas à dimensão total do elemento.
Você pode utilizar os valores content-box e border-box.
O content-box é o valor padrão e traduz o comportamento que expusemos anteriormente.
O border-box é o valor que executa a mágica para que você não precise efetuar cálculos para 
ajuste da largura total.
Com o border-box a largura e a altura do conteúdo são calculadas subtraindo as larguras das 
bordas e preenchimentos dos respectivos lados onde o valor da dimensão foi especificado.
Lembra daquele exemplo onde estipulamos o valor de 100px para uma área de conteúdo? Vamos 
agora entender o comportamento dele usando box-sizing com o valor border-box.
div { 
 width: 100px;
 padding: 10px;
 border: 10px solid #000;
 box-sizing: border-box;
}
Como já falamos, o valor border-box calcula a largura do box subtraindo as larguras das bordas 
e paddings laterais, fazendo com que a largura total seja o valor de 100 pixels. Se esta é a largura 
total esperada para seu projeto, independente da presença de bordas ou preenchimentos, foi o 
valor border-box que possibilitou isso.
Agora vamos recapitular aquela situação onde dois elementos devem ficar posicionados lado a 
lado dentro do elemento pai.
Não vou o repetir aqui o código completo. Para seus estudos o arquivo HTML ficará disponível e 
tudo que você tem que fazer é incluir a propriedade box-sizing com valor border-box na regra a 
seguir.
.left, .right {
 width: 50%;
 padding: 30px;
 float: left;
 box-sizing: border-box
}
276 277
Desta vez os boxes esquerdo e direito que recebem 50% da largura do elemento pai e que resultam 
em 300 pixels não tiveram valor da largura total acrescida devido aos valores de border e pad-
ding, porque esses valores foram subtraídos da largura do conteúdo. Com isso os boxes ficaram 
perfeitamente, lado a lado, dentro do contêiner pai.
A grande vantagem é que nós não precisamos pensar nesse cálculo, pois o valor border-box “pen-
sou” nisso para gente.
Ao inspecionar com a ferramenta de desenvolvimento o box direito nota-se que a largura total 
agora é de 300 pixels. A largura do conteúdo ficou pixels em 240 porque houve e subtração das 
larguras das bordas e preenchimentos laterais.
Clear 
A propriedade clear serve para controlar o comportamento de elementos flutuantes. Ele pode 
“limpar” um flutuação e até eliminar comportamentos inconvenientes. O valores usados para 
esta propriedade são “left”, “right” e “both”. O valor “both” aplica a propriedade simultaneamente 
para o lado direito e esquerdo.
Vamos usar ,ainda, o menu anterior com o código alterado para esta situação.
<!DOCTYPE html>
<html>
 <head>
 <meta charset=”utf-8”>
 <title>Clear 1</title>
 <style type=”text/css”>
 body {
 margin: 0; padding: 0;
 }
 #corpo {
 width: 760px; height: auto;
 }
 header {
 display: block; width: auto; font-size: 18px;
 }
 #menu_principal {
 display: block; height: auto; 
 }
 #menu_principal ul {
 list-style: none; margin: 0;
 }
 #menu_principal li {
278 279
 float: left; margin-right: 10px;
 }
 h1 {
 background-color: #cfadbf;
 }
 </style>
 </head>
 <body>
 <div id=”corpo”>
 <header>
 <nav id=”menu_principal”>
 <ul>
 <li>
 <a href=”#”>Home</a>
 </li>
 <li>
 <a href=”#”>Portfólio</a>
 </li>
 <li>
 <a href=”#”>Contato</a>
 </li>
 </ul>
 </nav>
 </header>
 <h1>Home Page</h1>
 <p>Esta é a home page</p>
 </div>
 </body>
</html>
Veja o resultado:
Ao aplicar a regra do seletor “#menu_principal li”, para lista do menu, o conteúdo subsequente, 
que é um título “h1”, deveria somente fluir ao lado direito. O conteúdo textual até está a direita, 
porém se você olhar a cor de fundo que foi declarada no título dá para perceber que o “H1” envol-
veu o menu. E tem mais além de não querermos este comportamento inconveniente queremos 
menos ainda o título ao lado do menu. Projetamos pensando no título logo abaixo do menu. E 
como resolver essa parada?
Simples! Usaremos a propriedade “clear” com valor “left” para “limpar” esta flutuação.
 Veja o código:
h1 {
 background-color: #cfadbf;
 clear: left;
}
280 281
Incluímos somente uma pequena linha dentro da regra. Agora vamos ao resultado:
Com isso se estabelece a ordem, porém devemos ficar atentos a sites que incluem conteúdos 
dinamicamente. Nesses sites, se usássemos este exemplo e embutíssemos algum elemento antes 
do título, o problema voltaria, só que neste novo elemento. Uma solução que alguns desenvol-
vedores utilizam é colocar um “div” vazia logo após aos blocos que contém dentro elementos 
flutuantes. E nesse “div” um seletor para uma regra que contenha a declaração “clear: both”.
Seria algo do tipo:
• CSS:
 .limpar {
 clear: both;
 }
• HTML:
 <div class=”limpar”></div>
Display 
A propriedade “display” especifica o tipo de caixa de renderização usada por um elemento ou até 
desativar a exibição de um elemento. Esta propriedade dispõe de diversos valores para diferentes 
finalidades. Uns são usados com bastante frequência, outras não. Vamos focar nos que atendem 
nosso esquema 80/20, mas antes precisamos entender como os elementos se comportam en-
quanto Box por padrão.
A maioria dos elementos HTML se dividem em dois tipos: elementos em bloco e elementos em 
linha.
Elementos em bloco:
Elementos em bloco ocupam todo o espaço horizontal disponível e iniciam uma nova linha no 
documento. Este tipo cria uma divisão que separa visualmente o elemento anterior do próximo. 
Veja o exemplo abaixo:
282 283
 
O trecho “por causa da presença de um elemento em bloco” isolou-se em um bloco próprio se 
dividindo do resto do texto e tomando toda a largura disponível, como percebemos através do 
“background” amarelo.
 
Isso acontece porque colocamos um elemento “p”, que é um elemento em bloco, no meio da 
frase (<p> por causa da presença de um elemento em bloco</p>).
Alguns elementos em blocos são indicados para estruturar layouts, como por exemplo:
• div;
• section;
• aside;
• article;
• nav;
• footer;
• header.
Outros elementos em blocos que se destacam são:
• h1 até h6;
• ol;
• ul.
• p
Elementos em linha:
Ao contrário dos elementos em blocos, os em linha não ocupam todo o espaço horizontal dispo-
nível e não iniciam uma nova linha no documento. Como sugere o nome, esses elementos ficam 
na mesma linha. Veja um exemplo:
284 285
Veja o que o elemento strong (<strong>um elemento em linha dentro de mim</strong>), por ser 
inline, não inicia uma nova linha e somente ocupa a largura suficiente para expor o conteúdo , 
como percebemos através do “background” amarelo.
Alguns dos elementos em linhas mais usados são:
• span;
• a;
• strong;
• img;
Bom... Acabamos de conhecer os comportamentos de caixas padrão do HTML que definem ele-
mentos em bloco ou em linha. Mas se quisermos, a gente poderia mudar este comportamento 
padrão? 
Claro! Você pode Galucho!!!
E por isso que fizemos esta pequena introdução: para que você saiba que o CSS pode meter o 
bedelho neste comportamento dos elementos HTML e que isso pode ser feito através da proprie-
dade “display”.
Para consulta posterior deixamos uma leitura complementar que relata o funcionamento de to-
dos os valores desta propriedade, neste link: http://www.maujor.com/tutorial/propriedade-css-
-display.php
Aqui iremos focar nos valores “inline”, “block”, “inline-block” e “none”. Começaremos com “inline”.
display:inline
Usamos o valor “inline” quando temos oobjetivo de deixar um elemento em linha.
Como exemplo vamos alterar o comportamento de bloco padrão de cabeçalhos atribuindo-lhes 
o valor “inline”.
<!DOCTYPE html>
<html>
 <head>
 <meta charset=”utf-8”>
 <title>Display 3</title>
 <style type=”text/css”>
 #bloco h1 , #bloco h2, #bloco h3 {
 background-color: #f2ff60;
 }
 #linha h1 , #linha h2, #linha h3 {
 background-color: #f2ff60;
 display: inline;
 }
http://www.maujor.com/tutorial/propriedade-css-display.php
http://www.maujor.com/tutorial/propriedade-css-display.php
286 287
 div {
 margin-bottom: 60px;
 }
 </style>
 </head>
 <body>
 <div id=”bloco”>
 <h1>Nós permanecemos</h1>
 <h2>como elementos</h2>
 <h3>em bloco</h3>
 </div>
 <div id=”linha”>
 <h1>Nosso comportamento</h1>
 <h2> foi alterado para</h2>
 <h3> elemento em linha</h3>
 </div>
 </body>
</html>
Na primeira “div” mantemos os cabeça-
lhos com sua característica padrão. Já 
no segundo, mudamos todos eles para 
elementos em linha através da declara-
ção “display: inline”. 
Vamos ver o resultado?
Os três primeiros cabeçalhos seguiram utilizando-se da maior largura disponível. Já nos 3 últi-
mos até parecem ser um só elemento, se não fosse o fato do tamanho da fonte ser diferente. Não 
existe inicialização de nova linha após cada cabeçalho. Todos ficaram na mesma linha e tudo isso 
graças ao “display: inline”.
display:block
Usamos o valor “block” quando temos o objetivo de deixar um elemento em bloco. 
Um exemplo de utilidade é quando precisamos usar links com uma área clicável maior do que 
eles oferecem normalmente.
 
Entenda esta DICA MASTER: todo elemento inline não suporta width e também height. Eles igno-
ram estas propriedades. Para atendê-las só transformando os elementos em bloco.
288 289
Imagine que você precisa colocar uma chamada de ação bem chamativa, com um link tipo botão 
e que ela deve ter a largura total da área disponível. Então para isso você precisará usar “display: 
block”. 
Achou complexo? Calma...Na prática é mais simples de entender. Veja a seguir:
<!DOCTYPE html>
<html>
 <head>
 <meta charset=”utf-8”>
 <title>Display 4</title>
 <style type=”text/css”>
 a {
 display: block;
 background-color: #ff0000;
 with: 70%;
 padding: 10px;
 color: #ffffff;
 font-size: 36px;
 text-align: center;
 text-decoration: none;
 border-radius: 20px;
 }
 </style>
 </head>
 <body>
 <a href=”#”>Clique aqui para baixar seu e-book</a>
 </body>
</html>
Veja o resultado:
Exagerado não é? Eu sei... Mas é apenas um exemplo. :D
O importante é que ao se tornar um bloco, o link, conseguiu ocupar todo o espaço horizontal 
disponível , que foi estabelecido pela declaração “width: 70%;”. No caso 70% em relação a “body”. 
display:inline-block
Usamos o valor “inline-block” para criar elementos inline, mas preservando as características de 
blocos, como a definição de largura e altura, margens superior e inferior, preenchimentos, etc. 
É muito útil para colocar elementos lado a lado como em uma linha, só que com características 
internas de bloco.
E como se mesclássemos uma sequência de “span” que naturalmente gera um conteúdo em li-
nha (<span></span><span></span><span></span>), porém com a possibilidade de, simultanea-
mente, definir largura, altura e outras características de elementos em bloco.
O valor inline-block possibilita colocar elementos lado a lado, por causa desta faceta inline, sem 
290 291
precisarmos usar “float” e seus problemas, e nem precisar limpar nada com “clear”. Isso parece ser 
muito bom.
Então agora proponho usarmos como exemplo o menu que utilizamos no subtópico sobre a pro-
priedade “clear”. Nele aplicaremos “display: inline-block” no elemento “li” em vez de “float: left;”. 
Aproveitaremos também para deixar o menu com uma cara mais bacana.
Segue o código:
<!DOCTYPE html>
<html>
 <head>
 <meta charset=”utf-8”>
 <title>Display 5</title>
 <style type=”text/css”>
 body {
 margin: 0; padding: 0;
 }
 #corpo {
 margin: 0 auto; width: 760px; height: auto;
 }
 header {
 display: block; width: auto; font-size: 18px;
 }
 #menu_principal {
 display: block; height: auto; 
 }
 #menu_principal ul {
 list-style: none; 
 }
 #menu_principal li {
 display: inline-block; 
 }
 #menu_principal li a {
 background-color: #332E28;
 padding: 10px 20px;
 border: 1px solid #5E544A;
 color: #C4B09C;
 text-decoration: none;
 }
 .current , #menu_principal li a:hover {
 background: #484037;
 color: #E6D4C3;
 }
 #corpo section {
 padding: 20px;
 }
 </style>
 </head>
 <body>
 <div id=”corpo”>
 <header>
 <nav id=”menu_principal”>
 <ul>
 <li>
 <a href=”#”>Home</a>
 </li>
 <li>
 <a href=”#”>Portfólio</a>
 </li>
 <li>
 <a href=”#”>Contato</a>
 </li>
 </ul>
 </nav>
 </header>
 <section>
 <h1>Home Page</h1>
 <p>Esta é a home page</p>
 </section>
 </div>
 </body>
 </html>
292 293
Veja o resultado:
Não se atentando ao aspecto visual e focando no objetivo, vemos que foi cumprido a proposta 
com o uso da declaração “display:inline-block” no lugar de “float:left”. E ainda economizamos 
código ao retirar “clear: left” do elemento “h1”.
Cabe a você avaliar qual o melhor momento de usar “float” ou “display:inline”, testando em seu 
layout e nos navegadores, pois cada um tem vantagens e desvantagens.
 
display:none
O valor “none” é usado quando você quer que um elemento não apareça no layout. Ele afeta 
todos os elementos descendentes. É um valor muito usado para diferentes objetivos, como por 
exemplo, esconder um elemento somente para uma resolução de tela, ou quando um evento 
aciona uma função javascript para esconder um elemento. Seu uso é bem simples. 
Veja um código de exemplo:
<!DOCTYPE html>
<html>
 <head>
 <meta charset=”utf-8”>
 <title>Display 6</title>
 <style type=”text/css”>
 div {
 display: none;
 }
 </style>
 </head>
 <body>
 <h1>Você pode me ver!</h1>
 <div>
 <p>Você não pode me ver e nem ao meu elemento pai.
 Isso por que ele recebeu a propriedade “display:none”.</p>
 <div>
 </body>
</html>
Resultado:
294 295
Você pode ver o título e só. O parágrafo que vem após não é possível, porque ele está envolvido 
por uma “div” que recebe a declaração “display:none” e não adianta colocar “display:block” no 
parágrafo.. :)
Overflow
Traduzindo ao pé da letra o termo em inglês “overflow” temos como resultados o verbo “trans-
bordar” ou o substantivo “transbordamento”. E é assim mesmo que mais ou menos isso que 
acontece algumas vezes com o conteúdo em um site. Ele pode “transbordar”, em elemento de 
nível em bloco, não cabendo dentro de um box. E a propriedade “overflow” controla este “trans-
bordamento”.
Para você, Galucho, entender segue um exemplo de código:
 
<!DOCTYPE html>
<html>
 <head>
 <meta charset=”utf-8”>
 <title>Overflow 1</title>
 <style type=”text/css”>
 div {
 background-color: #E6D4C3;
 margin-left: 20px;
 float: left;
 width: 400px;
 height: 200px;
 padding: 20px;
 font: 16px ‘sans-serif’;
 text-align: justify;
 }
 </style>
 </head>
 <body>
 <div class=”visible”>
 <h2>Visible (padrão)</h2><p>Lorem ipsum dolor sit amet, ...
 ...usus legentis in iis qui facit 
 eorum claritatem....(continua)</p>
 </div>
 </body>
</html> 
296 297
Veja o resultado: 
Quando estipulamos, por algum motivo, uma altura fixa com a propriedade “height” estamos su-
jeitos a alguns problemas caso não tenha sido causado de modo proposital. 
Na imagem acima vemos que o bloco possui uma altura delimitada pela área com cor, só que o 
conteúdo transborda além da caixa, isto é, o valor de 200 pixels que foi estipulado para o box é 
menor que área altura total da área de conteúdo.
Este transbordamento é algo visível. Estamos vendo e podemos dizer que o fato do navegador 
possibilitar que possamos ver é que se trata de um comportamento padrão. E no CSS este com-
portamento padrão, declarado ou não, corresponde a declaração “overflow: visible”. 
Visible é de visível e, no caso, deixa o transbordamento visível. 
Para confirmar este comportamento padrão veja, no código anterior, que nem precisamos decla-
rar a propriedade “overflow”. É importante saber também que este padrão independe do conte-
údo caber ou não em uma caixa, porém fica mais fácil compreendê-lo com um exemplo onde o 
conteúdo transborda.
Além do valor “visible”, o “overflow” possui outros valores para controlar o transbordamento do 
conteúdo. São eles:
• overflow hidden: 
 
Este valor indica que a área dos conteúdos que ultrapassarem o tamanho do box devem ser 
ocultados. No caso a área que transbordou conteúdo não será vista.
• overflow: scroll: 
 
Este valor indica que se devem mostrar barras de rolagem, para mover o conteúdo do Box 
dentro de seu espaço. As barras de rolagem sempre aparecerão independente se a largura ou 
altura da área de conteúdo for maior ou menor que a área do box.
• overflow: auto: 
 
Com este valor, caso altura ou largura do bloco de conteúdo forem maiores que a do box, o 
conteúdo fica oculto, porém com acesso para exibição via barras de rolagem, na vertical ou 
na horizontal, que surgem automaticamente somente nestas condições. Caso o conteúdo 
não ultrapasse de tamanho em alguma direção as barras de rolagem não aparecem.
Agora para entendermos melhor cada valor , vamos adaptar o ultimo exemplo exibido. 
298 299
Replicaremos o código do box algumas vezes e adicionamos algumas regras CSS extras para 
compreendermos todos os valores de “overflow”. Veja:
<!DOCTYPE html>
<html>
 <head>
 <meta charset=”utf-8”>
 <title>Overflow 2</title>
 <style type=”text/css”>
 div {
 background-color: #E6D4C3;
 margin-left: 20px;
 float: left;
 width: 200px;
 height: 400px;
 padding: 20px;
 font: 16px ‘sans-serif’;
 text-align: justify;
 }
 .visible {
 overflow: visible;
 } 
 .hidden {
 overflow: hidden;
 }
 .scroll {
 overflow: scroll;
 }
 .auto {
 overflow: auto;
 } 
 .scroll p , .altura p {
 width: 250px;
 } 
 .altura { 
 height: auto;
 } 
 </style>
 </head>
 <body>
 <div class=”visible”>
 <h2>Visible (padrão)</h2>
 <p>Lorem ipsum dolor sit amet, ...
 ...usus legentis in iis qui facit eorum claritatem.</p>
 </div>
 <div class=”hidden”>
 <h2>Hidden</h2>
 <p>Lorem ipsum dolor sit amet, ...
 ...usus legentis in iis qui facit eorum claritatem.</p>
 </div>
 <div class=”scroll”>
 <h2>Scroll</h2>
 <p>Lorem ipsum dolor sit amet, ...
 ...usus legentis in iis qui facit eorum claritatem.</p>
 </div>
 <div class=”auto”>
 <h2>Auto</h2>
 <p>Lorem ipsum dolor sit amet, ...
 ...usus legentis in iis qui facit eorum claritatem.</p>
 </div>
 <div class=”auto altura”>
 <h2>Auto</h2>
 <p>Lorem ipsum dolor sit amet, ...
 ...usus legentis in iis qui 
 facit eorum 
 claritatem.</p>
 </div>
 </body>
</html>
 
Veja o resultado:
300 301
Agora vemos cinco caixas: 
A primeira, da esquerda para direita, percebemos que a área de conteúdo é maior que a área do 
Box, portanto o conteúdo transbordou. Concluímos que foi usado aí, “overflow: visible”.
Na segunda caixa o conteúdo foi “cortado” na vertical. Isso porque usamos “overflow: hidden” 
que impediu que o conteúdo transbordado na altura fosse exibido.
Na terceira caixa o conteúdo transborda tanto na horizontal como na vertical, mas mesmo que 
não transbordasse o box continuaria exibindo as barras de rolagens graças ao “overflow:scroll”. E 
é através delas que neste exemplo acessamos o conteúdo oculto. 
Você pode usar propositalmente, dependendo do projeto, “overflow:scroll” junto com um a va-
lor fixo de altura para exibir conteúdo através de rolagem. E com isso ao invés do usuário usar a 
barra de rolagem do navegador ele usará a rolagem do Box.
Na quarta caixa vemos que temos uma barra de rolagem verticalmente. Isso ocorre por causa de 
duas condições: a primeira é que usamos a declaração “overflow: auto” e a segunda é que o área 
de conteúdo é maior que a do box e precisamos da barra de rolagem para acessar o conteúdo 
oculto.
Na quinta caixa acontece o mesmo que na caixa anterior. O que muda é que o conteúdo trans-
borda na largura e a barra de rolagem surge na horizontal.
Com isso encerramos a explicação sobre todas funções da propriedade “overflow”, porém não 
poderia deixar de lado um comportamento de “overflow: hidden” que não sei o motivo (peço por 
favor que me mandem e-mail quem souber) recupera layouts quebrados.
Eis o problema: Quando usamos elementos flutuantes com a propriedade “float” o contêiner an-
cestral não consegue abrigar esses rebeldes o que resulta em uma aspecto estranho no layout. 
Para demostrar melhor, pegamos o código usado no exemplo sobre “display:inline-block”, demos 
uma caprichada visual nele e substituímos a declaração “display:inline-block” por “float: left” para 
expor o problema.
Você verá na imagem a seguir que na área do menu existe um fundo marrom que não cobre 
totalmente os itens do menu. Isso porque no elemento usamos “float”. O mesmo ocorre com os 
dois blocos de textos lado a lado após o título “Home Page”. Usamos o “float” nele e o box de cor 
lilás que os deveria abrigar, não foi capaz. 
302 303
Note que na área do menu existe um fundo marrom que não cobre totalmente os itens do menu. 
Isso porque no elemento usamos “float”. O mesmo ocorre com os dois blocos de textos lado a lado 
após o título “Home Page”. Usamos o “float” nele e o box de cor lilás que os deveria abrigar, não foi 
capaz (para ter acesso a página clique neste link).
Certo! Mas onde é que a declaração “overflow:hidden” entra nesta história? 
Poderia ser também “overflow: auto”, mas isso está sujeito a causar barras de rolagens indesejadas 
se tiver algum problema no layout, então aplicamos “hidden” por ser mais garantido. 
Portanto basta colocar a declaração “overflow:hidden” nos elementos que abrigam esses boxes 
flutuantes. No caso, #corpo e #menu_principal. 
Veja agora após a alteração:
Não é essa a função exata da propriedade “overflow”, mas que resolve este problema frequente, 
isso resolve.
Então, se um dia você “trombar” com esse problema, você já sabe o que fazer! :D
Para ter acesso a página completa clique neste link. 
http://ebookhtmlcss.com/arquivos/capitulo-4.5/overflow-3.html
http://ebookhtmlcss.com/arquivos/capitulo-4.5/overflow-4.html
304 305
Max-width, min-width, max-height e min-height
Estas quatros propriedades servem para restringir largura e altura em um determinado intervalo.
A seguir iremos ver como cada uma funciona. 
max-width 
Especifica uma largura máxima para o elemento. O valor pode ser fixo, tipo em pixels, ou relativo, 
como em porcentagem.
<!DOCTYPE html>
<html>
 <head>
 <meta charset=”utf-8”>
 <title>Max-width</title><style type=”text/css”>
 #um {
 background-color: #5e544a;
 margin: 0 auto;
 width: 100%;
 height: auto;
 padding: 20px 0;
 }
 #dois {
 background-color: #e6d4c3;
 margin: 0 auto;
 width: auto;
 max-width: 900px;
 height: 200px; 
 
 }
 </style>
 </head>
 <body>
 <div id=”um”>
 <div id=”dois”></div>
 </div>
 </body>
</html>
Veja o resultado:
Temos um bloco “div” dentro de outro. O box pai (bloco escuro) possui 100% de largura em rela-
ção a “body” o que corresponde a 1308 pixels, no dispositivo usado para a construção do exem-
plo.
O bloco de cor clara tem declarado “width:auto” o que indica que ele automaticamente teria 
também a largura de 1308 pixels. Porém a declaração “max-width: 900px” não permite que isso 
aconteça, limitando a largura a 900 pixels, máximo valor este que a propriedade permite.
Se retirarmos a declaração “max-width: 900px” automaticamente o bloco claro assumirá a largu-
ra de 1308 pixels. Veja a seguir como o bloco claro assumiu toda a largura.
306 307
min-width 
Especifica uma largura mínima para o elemento. Veja um exemplo: 
<!DOCTYPE html>
<html>
 <head>
 <meta charset=”utf-8”>
 <title>Min-width</title>
 <style type=”text/css”>
 #um {
 background-color: 
 #5e544a;
 margin: 0 auto;
 width: 810px;
 height: auto;
 padding: 20px 0;
 }
 #dois {
 background-color: #e6d4c3;
 margin: 0 auto;
 width: auto;
 min-width: 900px;
 height: 200px; 
 }
 </style>
 </head>
 <body>
 <div id=”um”>
 <div id=”dois”></div>
 </div>
 </body>
</html>
Resultado:
Aqui o bloco escuro tem 810 pixels de largura. Como o bloco claro tem declarado “min-width: 
900px” , ou seja, que ele deve possuir no mínimo 900 pixels de lagura, ele ignora os 810 pixels.
Se retiramos a declaração “min-width: 900px” automaticamente o bloco claro seguirá a declara-
ção “width: auto” e assumirá a largura de 810 pixels. Veja:
308 309
max-height
Especifica uma altura máxima para o elemento.
Veja um exemplo:
<!DOCTYPE html>
<html>
<head>
 <meta charset=”utf-8”>
 <title>Max-height</title>
 <style type=”text/css”>
 #um {
 background-color: #5e544a;
 margin: 0 auto;
 width: 70%;
 height: 500px;
 padding: 20px;
 }
 #dois {
 background-color: #e6d4c3;
 margin: 0 auto;
 width: auto;
 height: inherit; 
 max-height: 400px; 
 
 }
 </style>
 </head>
 <body>
 <div id=”um”>
 <div id=”dois”></div>
 </div>
 </body>
</html>
Resultado:
Existe um valor em CSS denominado “inherit”. Quando uma propriedade usa “inherit” significa 
que ela deve herdar o valor do seu elemento pai. 
Neste nosso exemplo o bloco escuro tem 500 pixels de altura. Já o seu filho, bloco claro, deveria 
herdar os mesmos 500 pixels porque declaramos “height:inherit”. Porém a declaração “max-hei-
ght: 400px” limita o bloco a 400 pixels de altura.
310 311
Se retiramos a declaração 
“max-height: 400px” o bloco 
claro herdará o valor de “hei-
ght” do elemento pai e assu-
mirá os 400 pixels de altura. 
Conforme podemos ver na 
imagem ao lado
min-height 
Especifica uma altura mínima para o elemento. Veja um exemplo:
<!DOCTYPE html>
<html>
 <head>
 <meta charset=”utf-8”>
 <title>Min-height</title>
 <style type=”text/css”>
 #um {
 background-color: #5e544a;
 margin: 0 auto;
 width: 70%;
 height: 400px;
 padding: 20px;
 }
 #dois {
 background-color: #e6d4c3;
 margin: 0 auto;
 width: auto;
 height: inherit; 
 min-height: 500px; 
 }
 </style>
 </head>
 <body>
 <div id=”um”>
 <div id=”dois”></div>
 </div>
 </body>
 </html>
Resultado: 
312 313
Neste caso o bloco escuro tem 400 pixels de altura. O bloco claro, deveria herdar os mesmos 400 
pixels porque declaramos “height:inherit”. Porém a declaração “min-height: 500px” faz com que 
o bloco ultrapasse a altura em 100 pixels, assumindo assim 500 pixels.
Se retiramos a declaração “min-height: 500px” o bloco claro assumirá a altura de 400 pixels. 
Veja:
O uso desta propriedades é geralmente indicada quando trabalhamos com sites que se adaptam 
a diferentes resoluções de tela e dispositivos. É o que chamamos de design responsivo, assunto 
este, que trataremos mais a frente neste e-book. :)
Border-radius
É uma propriedade usada para definir “bordas arrendondadas” e dar forma a cada canto de um 
elemento. E para isso é preciso do valor de comprimento do raio horizontal e do raio vertical de 
um quarto de elipse. 
Detalhes importantes:
• Caso um dos valores é omi-
tido os dois recebem o mes-
mo valor. 
• Se qualquer comprimento 
é zero o canto é quadrado.
 
• O background do elemento 
também é arredondado mes-
mo que não seja declarado a 
propriedade “border”.
Veja a seguir algumas sintaxes possíveis:
314 315
Quando os valores do comprimento do raio, tanto na horizontal, quanto na vertical são 
iguais e aplicados igualmente em todos os cantos de um elemento.
seletor_qualquer {
 border-radius: 100px;
 width: 500px;
 height: 200px
 background-color: #ff0000;
}
Essa primeira situação é amplamente usada. Isso porque gera um box simples, útil e com cantos 
arrendondados igualmente. Efeito muito encontrado na web.
Agora uma curiosidade. Se todos os cantos tiverem o mesmo valor, e se este valor for igual ou 
maior a largura e a altura (altura e lagura com mesmos valores) de um elemento, obtemos um 
círculo. Veja uma regra para isso:
seletor_qualquer {
 border-radius: 300px;
 width: 300px;
 height: 300px
 background-color: #ff0000;
}
Que tal vermos isso na prática? Segue um exemplo:
<!DOCTYPE html>
<html>
 <head>
 <meta charset=”utf-8”>
 <title>Border-radius 1</title>
 <style type=”text/css”>
 #quadrado {background-color: #ff0000;}
 #bordas-arredondadas {
 border-radius: 50px; 
 background-color: #fff000;
 }
 #circulo {
 border-radius: 300px;
 background-color: #0000ff;
 }
 div {
 width: 300px;
 height: 300px;
 display: inline-block;
 margin-left: 30px;
 border: 3px solid #000000;
 }
 </style>
 </head>
 <body>
 <div id=”quadrado”></div>
 <div id=”bordas-arredondadas”></div>
 <div id=”circulo”></div>
 </body> 
</html>
316 317
Veja o resultado:
As três figuras da imagem acima possuem altura e largura iguais (300 pixels). 
Na figura vermelha não foi declarado valor de “border-radius” por isso ela manteve as caracterís-
ticas de um quadrado. Já a figura amarela recebeu 50 pixels em cada canto do elemento o que 
visualmente retorna os cantos arredondados. E como prometido vemos que na figura azul, por 
usarmos valores de altura e largura iguais ao valor de “border-radius”, obtemos o círculo.
A regra para obter círculos é muito usada em conjunto com imagens de fundo quando quere-
mos, por exemplo, que uma foto nossa fique redonda.
Agora vamos continuar com mais situações e suas sintaxes.
Quando os valores do comprimento do raio na horizontal e na vertical são iguais, porém 
diferentes nos quatros cantos.
seletor_qualquer {
 border-radius: 40px 80px;
}
Canto superior esquerdo
 e inferior direito = 40px.
Cantos superior direito 
e inferior esquerdo = 80px.
Quando os valores do comprimento do raio na horizontal e na vertical são iguais, porém 
diferentes em todos os cantos.
seletor_qualquer {
 border-radius : 60px 0 90px 40px;
}
318 319
Quando os valores do comprimento do raio na horizontal e na vertical são diferentes,mas 
aplicados igualmente em todos os cantos.
seletor_qualquer { 
 border-radius: 60px / 90px;
 }
A regra anterior equivale a esta abaixo:
seletor_qualquer{
 border-top-left-radius: 60px 90px;
 border-top-right-radius: 60px 90px;
 border-bottom-right-radius: 60px 90px;
 border-bottom-left-radius: 60px 90px;
}
Quando os valores do comprimento do raio na horizontal e na vertical são diferentes e 
aplicados igualmente em todos os cantos.
seletor_qualquer { 
 border-radius : 300px 80px 100px 60px / 160px 100px 80px 120px;
}
A regra anterior equivale ao código a seguir:
seletor_qualquer {
 border-top-left-radius: 300px 160px;
 border-top-right-radius: 80px 100px;
 border-bottom-right-radius: 100px 80px;
 border-bottom-left-radius: 60px 120px;
}
Existem outras possibilidades, mas para não estender o assunto aconselho que brinque com esta 
propriedade e crie formas diferentes.
 
A seguir vamos falar sobre as “sombras” de um box ! :D 
320 321
Box-shadow
A propriedade “box-shadow” possibilita efeitos de sombra em um Box. Veja a seguinte sintaxe:
Seletor_qualquer {
 box-shadow: 10px 20px 5px #000000;
}
O primeiro valor é responsável pelo deslocamento horizontal da sombra. Quanto maior o valor, 
mais deslocamento. No caso a sombra se desloca para direita. Valores negativos são permitidos, 
o que faz a sombra deslocar para esquerda.
O segundo valor é responsável pelo deslocamento vertical da sombra. No caso a sombra se des-
loca para baixo. Valores negativos fazem a sombra deslocar para cima.
O terceiro valor é responsável pelo efeito “blur” na sombra. Alguns chamam de esfumaçado ou 
borrão. Este efeito causa um desfoque que torna a sombra maior e mais leve. E se este valor não 
for especificado a sombra recebe o valor zero, o que a torna mais nítida. Valores acima de zero 
tornam o aspecto visual da sombra mais real. Quanto maior o valor mais leve e transparente é a 
sombra.
O quarto valor é a cor da sombra. Imaginamos como sombra algo que possui cores acinzentadas 
ao preto, porém você é livre para definir a cor que precisa.
Existe a possibilidade ainda de colocarmos a sombra dentro do “Box”, basta você usar também 
valor “inset”. Veja:
Seletor_qualquer {
 box-shadow: inset 10px 20px 5px #000000;
}
Ainda existe a possibilidade de você colocar múltiplas sombras em um mesmo “box”, para isso 
basta que você separe os valores com vírgula. Para os criativos, isso possibilita obter efeitos inte-
ressantes. Veja a sintaxe:
Seletor_qualquer {
 box-shadow: 10px 20px 5px #000000, -10px -20px 5px #ff0000;
}
Que tal então visualizarmos um exemplo prático? Vamos nessa?
<!DOCTYPE html>
<html>
 <head>
 <meta charset=”utf-8”>
 <title>Box-shadow</title>
 <style type=”text/css”>
 #normal { 
 box-shadow: 7px 7px 15px #000000;
 }
 #negativa { 
 box-shadow: -7px -7px 15px #000000;
 }
 #inset { 
 box-shadow: inset 7px 7px 15px #000000;
 }
 #multiplas { 
 box-shadow: 
 -25px -25px #ff0000, 
 0 25px #00ff00, 
 25px -25px 0 #0000ff,
 45px 45px 30px #ff0000,
 0 -45px 30px #00ff00, 
322 323
 -45px 45px 30px #0000ff; 
 border-radius: 200px;
 }
 div {
 background-color: #ffffff; 
 border: 2px solid #000000; 
 width: 200px;
 height: 200px; 
 margin: 100px 50px; display: inline-block;
 }
 </style>
 </head>
 <body>
 <div id=”normal”></div>
 <div id=”negativa”></div>
 <div id=”inset”></div>
 <div id=”multiplas”></div>
 </body> 
</html>
Veja o resultado:
Podemos ver na imagem anterior quatro resultados com características diferentes. 
Na primeira figura vemos a aplicação convencional da propriedade “box-shadow” usando a som-
bra externamente e com valores positivos para o deslocamento.
Na segunda figura mantemos a sombra externa só que usamos valores negativos.
Na terceira imagem destaca-se uso do valor “inset” para colocar a borda internamente.
Já a última imagem mostra como as folhas de estilos em cascatas são fantásticas. 
Até um tempo atrás isso somente era possível através de um editor de imagens. 
Em conjunto com a propriedade “border-radius” inserimos seis sombras diferentes variando des-
locamentos, cores, nitidez e transparência. 
324 325
Essa última figura vai ficar de tarefa bônus para você avaliar o código fonte e brincar fazendo al-
terações.
A seguir continuaremos no assunto sombra, só que agora para textos.
 
Text-shadow
A propriedade “text-shadow” serve para adicionar uma sombra a cada letra de algum texto. É 
muita parecida com a propriedade “box-shadow” só que aplicada a textos.
Vamos a sintaxe básica:
h1 { 
 color: #000000;
 text-shadow: 2px 2px 5px #fff000;
}
O primeiro valor desloca a sombra para direita, caso usássemos um valor negativo o desloca-
mento seria para esquerda.
O segundo valor desloca a sombra para baixo, caso usássemos um valor negativo o deslocamen-
to seria para cima.
O terceiro é valor corresponde ao raio do efeito “blur” que será aplicado a sombra. Não usar este 
valor ou especificar o valor zero fará que a borda seja sólida.
O quarto valor é a cor da sombra.
Esta propriedade também possibilita o uso de múltiplos valores para combinar sombras e dife-
rentes efeitos, com isso a criatividade não tem limites!
Vamos conferir agora no exemplo a seguir:
<!DOCTYPE html>
<html>
 <head>
 <meta charset=”utf-8”>
 <title>Text-shadow</title>
 <style type=”text/css”>
 body {
 background-color: #f4f8fa;
 padding-left: 30px;
 }
 #normal { 
 text-shadow: 3px 2px #001d2f;
 }
 #blur { 
 text-shadow: 3px 2px 3px #001d2f;
 }
 #negativa { 
 text-shadow: -3px -2px #001d2f;
 }
 #contorno { 
 text-shadow: 2px 0 #001d2f, 0 2px #001d2f , -2px 0 #001d2f , 0 -2px #001d2f ;
 }
 #multiplas { 
 text-shadow: 3px -3px #006db2 , 6px -6px #014068, 9px -9px #001d2f;
 }
 p {
 font: bold 36px/40px Arial, sans-serif;
 color: #009cff;
 letter-spacing: 1px;
 }
 </style>
 </head>
 <body>
 <p id=”normal”>Estou aprendendo CSS com o Chief.</p>
 <p id=”blur”>Estou aprendendo CSS com o Chief.</p>
 <p id=”negativa”>Estou aprendendo CSS com o Chief.</p>
326 327
 <p id=”contorno”>Estou aprendendo CSS com o Chief.</p>
 <p id=”multiplas”>Estou aprendendo CSS com o Chief.</p>
 </body>
</html>
Resultado:
Conseguimos diferentes resultados em alguns casos com mudanças sutis nos valores.
No primeiro e no segundo textos usamos o mesmo valor de deslocamento e cor. A diferença 
entre eles é que no primeiro não usamos “blur” o que resultou em uma sombra mais sólida em 
comparação com a segunda onde desfoque deixou a sombra mais leve.
No terceiro os valores são os mesmos que o do primeiro só que negativos. Enquanto no primeiro 
a borda se desloca para direita e para baixo, no terceiro se desloca para esquerda e para cima.
Já no quarto texto utilizamos múltiplos valores. Para conseguir este contorno foi preciso declarar 
quatro valores sendo que em cada um deles possui um deslocamento zero em conjunto com um 
deslocamento de 2 pixels para algum lado. E em nenhuma das declarações os lados se repetem. 
Confira no código.
No quinto texto também usamos múltiplos valores, no caso 3. Usamos tons diferentes de azul e 
para cada valor de deslocamento incrementamos 3 pixels (3, 6, 9) nas declarações para conseguir 
o resultado.
Você pode testar diferentes tipos de situações com esta propriedade. É comum ,encontrar em sites, 
estilizações mais discretas como no texto um e dois. Portanto sempre avalie bem. O menos é mais.
Caso você ainda tenha dúvidas sobre o uso de border-radius, box-shadow 
e text-shadow, lembre-se que você, muito provavelmente, já viu algo muito 
semelhante ao manusear os efeitos de algum editor visual, como por exem-
plo, o Photoshop. 
O site gerador de efeitos http://layerstyles.org/builder.html mostra isso na 
prática e com um layout muito parecido com o do Photoshop. Com certeza 
você identificará melhor, casoainda tenha dúvidas, tudo o que dissemos até 
aqui.
Existem vários geradores desse tipo na web, mas o ideal é que você não pre-
cise de algum para criar seus próprios efeitos. Não é pecado usá-los, mas é 
sempre bom você saber fazer “ na unha” esses efeitos e só recorrer aos ge-
radores quando for algo muito complexo que você, mesmo sabendo, levaria 
bastante tempo para fazer “na unha”.
http://layerstyles.org/builder.html
328 329
Parabéns!!! 
Neste último capítulo cobrimos muitas propriedades importantes. É lógico que não foram todas. 
Existem outras relevantes só que de uso restritos a algumas situações não tão frequentes. Como 
você já sabe, o nosso intuito aqui é te passar o “crème de la crème” do CSS e ficar dentro do nosso 
esquema 80/20. 
Com a experiência você vai incorporando mais 
propriedades ao seu conhecimento e seu reper-
tório aumentará, porém com o que você viu até 
qui já dá para fazer muita coisa bacana. 
Lembra quanto coisa interessante vimos só 
nessas últimas propriedades?
Então que tal você rever tudo que foi apresen-
tados neste último capítulo e brincar com os 
arquivos que deixaremos disponível?
Depois se dê uma pausa para descansar antes 
de partir para o próximo capítulo. Você mere-
ce!!!
No próximo capítulo você entenderá como 
construir layouts que se adaptam a diferentes 
resoluções de tela.
O código HTML e os arquivos usados 
até esta etapa se encontram 
neste link para download
Introdução ao
Design Responsivo
http://ebookhtmlcss.com/arquivos/capitulo-4.5/arquivos-para-download-9.zip
http://ebookhtmlcss.com/arquivos/capitulo-4.5/arquivos-para-download-9.zip
http://ebookhtmlcss.com/arquivos/capitulo-4.5/arquivos-para-download-9.zip
330 331
Neste E-book construiremos um site passo a passo. Com as propriedades estudadas já seria 
suficiente para isso se não fosse por um importante detalhe: hoje temos acesso a internet por 
diferentes tipos de dispositivos com diferentes resoluções, e um site desenvolvido para desktop, 
por exemplo, não vai ser portar bem em um celular. Por uma questão de usabilidade o site deve 
adequar a estilização para esses diferentes dispositivos sem afetar o acesso conteúdo e as fun-
cionalidades. 
Galucho, neste cenário devemos nos preocupar com a responsividade de nossos projetos.
O Design Responsivo consisti em garantir que os layouts projetados sejam adaptados a diferen-
tes tamanho de telas. E a forma responsiva que você projeta é uma resposta aos requisitos que 
o tamanho da tela exige. O CSS, mais precisamente, as ”media queries” são as ferramentas que 
farão você atender a esses requisitos. Pelo menos no que se refere a estruturar layouts. 
Existem também preocupações como performance, imagens responsivas, entre outros, que fa-
zem parte do contexto do Design Responsivo e que não aprofundaremos aqui, pois o nosso foco 
agora é apenas CSS.
E o que seriam “media queries”?
Ela são instruções CSS que fazem com que as páginas HTML, de acordo com as características do 
dispositivo no qual estão sendo visualizadas, tenham diferentes comportamentos e estilos.
Esse é um assunto extenso que daria um livro inteiro. Portanto vamos focar mais na prática o su-
ficiente para desenvolvermos layouts responsivos. No final deste capítulo deixaremos referências 
para aprofundamento, bele?
E como funciona as “media queries” na prática? 
Bom.. Esse termo vem da Língua Inglesa e literalmente significa “consultas de mídia”. Usaremos 
bastante este termo daqui para frente. 
Um site projetado com media queries estabelece diferentes estilizações para diferentes tama-
nhos de tela. Quando este site é acessado por um dispositivo as medias queries fazem algumas 
consultas ao navegador:
“ E ae navegador? Qual sua largura? Altura? Resolução? Que time que você torce? “
( Não! Esta ultima não! Hahaha)
Após esta checagem com o navegador ele compara as informações que tem declaradas em seus 
parâmetros e retorna os estilos que se adaptam melhor as informações passadas pelo navegador.
Vamos explicar melhor isso com os códigos. Para usar as media queries você precisa saber as 
resoluções de tela (altura e largura em pixels) dos dispositivos mais comuns. Usamos estas largu-
ras para estabelecer “breakpoints” que são pontos de quebras que determinam quando devemos 
alterar as regras CSS.
Hoje em dia esta cada vez mais difícil saber o quanto de resoluções diferentes existem, porque 
toda hora se lança um novo aparelho e cada vez mais parrudo. Mas para fins de estudos vamos 
nos ater a estas larguras a seguir como breakpoints:
• 320 pixels 
• 480 pixels 
• 600 pixels 
• 768 pixels 
• 1024 pixels 
• 1200 pixels
Teoricamente os dois valores abaixo atendem bem a alguns smartphones:
320 pixels 
480 pixels 
332 333
Então vamos a sintaxe:
@media only screen and (max-width: 320px){
 /* Aqui dentro vai as regras CSS */
}
Como interpretamos esta sintaxe?
A sintaxe diz que as regras CSS incorporadas dentro dela só atenderão a dispositivos que tenham 
monitores coloridos e no máximo 320 pixels de largura da tela.
Legal, né?
Agora outro tipo de sintaxe com outros valores.
As larguras que usaremos a seguir “teoricamente” atendem a alguns tipo de tablets:
@media only screen and (min-width: 600px) and (max-width: 760px){
 /* Aqui dentro vai as regras CSS */
}
Podemos usar outras condições em nossas consultas de mídia, mas neste exemplo temos duas. 
E uma delas é novidade! É a “min-width”. Ela restringe a largura a um “valor mínimo”. 
No nosso exemplo ela especifica que as regras CSS incorporadas devem atender a dispositivos 
que tenham no mínimo 600 pixels de largura. A outra condição restringe a tela no máximo a 760 
pixels. Isso quer dizer que esta consulta se restringe entre 600 a 760 pixels.
Vale a pena reforçar que este valores de breakpoints não correspondem a verdade absoluta. Exis-
tem muitas outras resoluções intermediárias. 
Uma consulta com valor máximo de largura de 1024 pixels atende a alguns tablets maiores, e 
também alguns monitores de desktops e notebooks. Já uma consulta com 1200 pixels de largura 
pode atender a telas largas widescreen. Portanto é preciso testar bem. 
Uma forma de estabelecer um breakpoint é redimensionar a largura do seu navegador (com o 
mouse clique na borda e arraste para esquerda/direita) e quando o site “quebrar” eis um novo 
breakpoint. Com isso basta construir uma nova consulta de mídia , ou editar os valores de uma 
já existente, para em seguida arrumar o problema, colocando uma nova regra CSS, dentro da 
consulta.
Agora vamos ver o uso das media queries na prática para você entender visualmente o funcio-
namento. 
Iremos construir uma página bem simples com três blocos de textos e cores de fundo diferentes. 
Iremos também estabelecer três consultas de mídia. Para cada nova consulta um bloco de texto 
ganhará cor de fundo. E teremos uma quarta situação onde o CSS padrão funciona para todas as 
resoluções. Nesta situação todos os blocos não apresentarão suas cores de fundo.
Podemos trabalhar com consultas tanto com “max-width” quanto “min-width”. É bastante co-
mum encontrar sites que trabalham com “max-width”. Seja em projetos mobile-first (começando 
a projetar para mobile) ou começando para desktop com adaptação do site para resoluções me-
nores.
Nos seguiremos o inverso do fluxo comum. Projetaremos este exemplo para mobile primeiro 
com “min-width” (não conta que é segredo, mas o site que construiremos nos próximos capitulos 
também :P) e adaptaremos para as outras resoluções maiores com media queries. 
Por que isso? Por que somos loucos?
 
Sim também, mas porque acreditamos que é melhor para o usuário que você pense primeiro na 
experiência dele no mobile do que no caminho inverso. Projetar para mobile faz que você não 
caia no pecado de cometer excessos que projetar para uma tela maior primeiro pode causar, e 
334 335
depois não saber como adaptar tanta informação visual em uma tela bem menor, sacou? Sem 
contar que dá para ecomomizar muito código.
Então, com este E-book tentaremoste inserir na cultura de fazer as coisas pensando no usuário, 
e o mobile first é um bom caminho a seguir. Porém no futuro cabe a você escolher.
Como usaremos “min-width” para consultas de mídia desenvolveremos o estilo padrão sem con-
sulta alguma. E conforme a tela aumente para 480 pixels a gente implementa as consultas a partir 
deste valor. Ok?
Segue o código:
<!DOCTYPE html> 
<html> 
 <head> 
 <meta charset=”utf-8”> 
 <title>Media queries</title> 
 <style type=”text/css”> 
 body { 
 background-color: #a5c8de; 
 } 
 #largura-1 { 
 background-color: none; 
 } 
 p { 
 padding: 20px; 
 font: bold 18px/24px Arial, sans-serif; 
 color: #ffffff; 
 text-shadow: 3px 2px 3px #001d2f; 
 border: 1px dotted #000000; 
 } 
 </style> 
 </head> 
 <body>
 <p id=”largura-1”>Todas as cores de fundo dos blocos desaparecem quando a largura que 480 pixels.</p> 
 <p id=”largura-2”>A cor de fundo verde aparece quando a largura é de no mínimo 480 pixels.</p> 
 <p id=”largura-3”>A cor de fundo vermelha aparece quando a largura é de no mínimo 760 pixels.</p> 
 <p id=”largura-4”>A cor de fundo azul aparece quando a largura é de no mínimo 900 pixels.</p> 
 </body> 
</html>
Ainda não inserimos as media queries. Somente o CSS padrão. Ele será responsável por atribuir 
regras comuns em todas as resoluções e algumas somente quando a resolução for menor que 
480 pixels. Resolução esta que começamos. 
Veja no HTML que afirmamos que ”no 
primeiro parágrafo que todos o blocos 
não terão suas cores de fundo quan-
do não tiver consulta de mídia”, o que 
equivale a uma largura de tela menor 
que 480 pixels em nosso caso. 
Então veja visualmente, na figura ao 
lado, como fica a página com o nave-
gador redimensionado abaixo de 480 
pixels.
A única cor de fundo que vemos é o 
azul claro de “body”. Os parágrafos es-
tão todos ainda sem cor de fundo e so-
mente com uma borda pontilhada.
Agora enfim colocaremos no final das 
folhas de estilos padrão as novas media 
queries.
 
Veja:
336 337
<style type=”text/css”> 
 body { 
 background-color: #a5c8de; 
 } 
 #largura-1 { 
 background-color: none; 
 } 
 p { 
 padding: 20px; 
 font: bold 18px/24px Arial, sans-serif; 
 color: #ffffff; 
 text-shadow: 3px 2px 3px #001d2f; 
 border: 1px dotted #000000; 
 } 
 @media only screen and (min-width: 480px) { 
 #largura-2 { 
 background-color: #297802; 
 } 
 } 
 @media only screen and (min-width: 760px) { 
 #largura-3 { 
 background-color: #d30000; 
 } 
 } 
 @media only screen and (min-width: 900px) { 
 #largura-4 { 
 background-color: #1e00d3; 
 } 
 } 
</style>
Com o estilo padrão configurado para que em exatos 479 pixels de largura, que é o limite antes 
da primeira media query, os blocos não tenham cor de fundo, basta agora clicar na borda lateral 
esquerda do navegador e arrastar no mínimo 1 pixels para direita para que um dos blocos receba 
uma cor de fundo.
Ultrapassando um pixels a direita entra-
mos na consulta de mídia que diz que 
a partir de 480 pixels, o segundo blo-
co recebe um “background” verde. Isso 
quer dizer que qualquer valor igual ou 
acima de 480 pixels fará este bloco ter 
cor no fundo.
Na próxima consulta de mídia, a partir 
de 760 pixels, a cor de fundo do terceiro 
bloco será vermelha.
 
338 339
Note que a cor de fundo do segundo bloco continua sendo verde, porque está dentro da con-
dição “no mínimo 480 pixels”. Se quisermos trocar a cor deste bloco quando estiver na faixa de 
consulta de 760 pixels, isso é perfeitamente possível. Veja um exemplo:
@media only screen and (min-width: 480px) {
 #largura-2 {
 background-color: #297802;
 }
}
@media only screen and (min-width: 760px) {
 #largura-2 {
 background-color: MUDAR AQUI O VALOR DA COR;
 }
 #largura-3 {
 background-color: #d30000;
 }
}
Veja que para mudar a cor de fundo do segundo bloco repetimos a regra dentro da consulta “@
media only screen and (min-width: 760px)” e alteramos a cor de fundo na declaração. 
Bem simples!
Agora vamos para última media query (a que funciona a partir de 900 pixels). 
Será ela que colocará a cor de fundo azul no último bloco que, até então, não tinha cor alguma 
nas outras resoluções de tela. 
Veja a seguir:
Este pequeno fundamento que apresentamos é para você compreender o funcionamento das 
“media queries”. Quando redimensionamos a largura do navegador, tentamos simular dispositi-
vos. Caso, durante o redimensionamento, uma media query atenda à alguma resolução de tela 
as novas regras CSS são aplicadas. E com isso você pode determinar o melhor layout para aquela 
resolução de tela. Muito massa, né?
As possibilidades são diversas. Neste E-book iremos construir um site para atender algumas re-
soluções e tudo fará sentido. 
Como exercício você pode usar este último exemplo e configurar as media queries com “max-wi-
dth” para ver o comportamento. 
Também deixarei a seguir algumas referências sobre Design Responsivo, para consulta posterior:
340 341
Este artigo da Popup Design apresenta o conceito de Design responsivo e as vantagens de sua 
utilização.
http://blog.popupdesign.com.br/design-responsivo-i-o-que-e-e-por-que-usar/
Este outro é da mesma autora e é altamente indicado pois mostra como pensar em Design Res-
ponsivo antes mesmo sequer de criar uma linha de código. Ela mostra o processo de criação 
focando em projetar a interface com rascunhos e wireframes, o que facilita muita a nossa vida 
antes de partir para o desenvolvimento. Leitura indispensável:
http://tableless.com.br/design-responsivo-na-pratica-do-rascunho-ao-digita/
Como já tido antes, pela variedade de dispositivos, não é possível estabelecer que alguns bre-
akpoints vão fazer seu site atender a todas variedades de resoluções de tela. Podemos citar tam-
bém que existem frameworks que propõem breakpoints que promovam uma experiência ao 
usuário da melhor forma possível. Você pode pesquisar no Google sobre “frameworks CSS”.
 
Só que mesmo assim nenhum framework atenderá a todos ou algum novo dispositivo. E para 
isso sugerimos uma solução mais avançada e precisa que é usar medias queries baseadas no 
conteúdo da página. Por isso sugerimos a leitura deste artigo do Sérgio Lopes:
http://sergiolopes.org/media-queries-conteudo/
 
Enfim, encerramos uma parte importante que ajudará em muito nos próximo passos deste E-book. 
Sugiro que revise este capítulo e leia as referências. Te aguardo no próximo capítulo para proje-
tarmos juntos um site.
O código HTML e os arquivos usados até esta 
etapa se encontram neste link para download.
Proposta para a 
construção de site
http://blog.popupdesign.com.br/design-responsivo-i-o-que-e-e-por-que-usar/
http://tableless.com.br/design-responsivo-na-pratica-do-rascunho-ao-digita/
http://sergiolopes.org/media-queries-conteudo/
http://ebookhtmlcss.com/arquivos/capitulo-5/arquivos-para-download-10.zip
http://ebookhtmlcss.com/arquivos/capitulo-5/arquivos-para-download-10.zip
342 343
Chegamos em um estágio onde é fundamental repassar o conteúdo fornecido em um contexto 
mais próximo da realidade que você irá encontrar. 
Por isso propomos a construção de um site onde usaremos seus conhecimentos prévios e recém 
adquiridos sobre HTML, juntamente com os tópicos sobre CSS que foram apresentados e incor-
porados ao seu conhecimento, conforme o site for produzido.
Você perceberá que o esquema 80/20 faz sentido. Porém, eventualmente entrará um ou outro 
elemento novo que foge ao esquema, mas que aumentará seu leque de conhecimento.
O site será um portfólio fictício do Designer “Galucho”. E contará com elementos suficientes para 
divulgação dos seus trabalhos como uma página inicial, uma área de apresentação dos trabalhos 
e outra para dados de contato e integração com as redes sociais.Esse seria o “briefing básico” para o nosso projeto já que não aprofundaremos em questões como 
objetivo de comunicação e de marketing, público alvo, estética, entre outras. 
Reforçamos que este é um livro sobre HTML/CSS. Porém para termos um site funcional e visual-
mente agradável atentaremos a alguns aspectos que garantem a usabilidade, navegabilidade e 
uma boa disposição dos elementos da interface.
Você sempre pensará em todos os aspectos do Design, entretanto para esses exercícios adotare-
mos um template que foi reformulado para este fim didático e de acordo com os aspectos citados 
acima.
Alguns profissionais projetam suas interfaces direto no código. Sugerimos que você defina a es-
trutura de páginas e navegação, crie um esboço, depois transporte as ideias para seu editor visual 
favorito (Photoshop e Fireworks são indicados) para depois transportar o layout para codificação. 
Veremos a hierarquia do site através de um diagrama e depois o Wireframe do nosso site.
Estrutura do site 
Antes de começar a um criar site, é importante pensar 
como será a estrutura dele (qual o caminho de tal página, 
qual ação do usuário o levará para tal página, onde ficará 
cada diretório, definir a hierarquia do conteúdo, etc). 
Para ajudar nessa tarefa, podemos usar um diagrama sim-
ples. Você pode criar um diagrama para definir a hierar-
quia e organização do seu do seu site.
Você pode fazer com lápis e papel, em um quadro bran-
co usando postit ou em softwares e serviços online. 
O importante é você planejar a sequência lógica do seu 
site, estruturando-o da melhor maneira possível.
Reservar um tempo, antes de sair fazendo as coisas no Photoshop, para planejar e estruturar o 
seu site, mesmo que ele seja simples, pode te facilitar a vida tanto na criação quanto no desen-
volvimento das páginas.
Você pode achar essa parte chata e trivial, mas com certeza se algo der errado durante a execu-
ção do projeto, você lembrará dela. Não que ela seja um “escudo anti-bugs”, não é isso, mas um 
bom planejamento pode facilitar a sua vida te ajudando a “encontrar possíveis erros” antes mes-
mo deles se apresentarem.
Então antes de sair fazendo, pare e pense no seu projeto como um todo!
344 345
Wireframe 
O wireframe é um esboço, uma simulação de como a interface deverá funcionar. Basicamente é 
unir todas as informações que colhemos no briefing para o papel, de um modo estruturado pre-
vendo como será a construção.
O site do Galucho, para fins didáticos atenderá três resoluções de telas diferentes: Smartphone, 
Tablet e Desktop .:
Logo, ele retrata o layout , de forma simples, da página organizando o conteúdo e os elementos 
da interface no espaço que pretendemos usar. Além de fornecer toda a estrutura para o designer 
elaborar o layout, ele fornece os elementos funcionais (como a navegação, por exemplo) que 
serão usados por um desenvolvedor.
Existe várias ferramentas específica que auxiliam para construção do Wireframe, pode até ser 
feito com lápis e papel, mas no nosso caso usaremos um editor visual.
A ideia é que o wireframe seja guiado em uma coluna única para resoluções menores que 480 
pixels (celulares), e que para resoluções maiores, incluindo dispositivos como tablets e desktops 
ele seja guiado em três colunas. Porém nada impediria que ele fosse guiado por 6 colunas de lar-
gura menor, ou por nove. Basta você decidir. No nosso exemplo usaremos:
• Três colunas;
• Quatros espaçamentos multiplicado por 20 pixels, isto é, 80 pixels
• Largura do site de 980 pixels, e subtraindo os 80 pixels dos espaçamentos. Teremos então 900 
pixels de área.
• Para a largura de cada coluna iremos dividir 900 pixels pela quantidade de colunas que usare-
mos, no caso três(3). Chegaremos então a 300 pixels por coluna.
No nosso projeto o uso das colunas visa facilitar o alinhamento e posicionamento dos elementos 
e conteúdo, como por exemplo, o posicionamento e alinhamento das três imagens que apresen-
tam trabalhos do portfólio do Galucho na versão para tablet e desktop. 
Veja a seguir:
347346
Podemos ver que as imagens 
terão o mesmo tamanho de-
finido pela área delimitada, 
que existe um alinhamento 
adequado entre os elemen-
tos, existe também dois es-
paçamentos entre as colunas 
a qual chamamos de áreas 
de respiro e duas nas extre-
midades. Estas áreas propor-
cionam organização e har-
monia.
Do wireframe 
para o PSD
Ferramentas como Pho-
toshop e Fireworks possibi-
litam estruturar seu layout. 
Para isso você precisa co-
nhecer seu conteúdo para 
saber como imagens, tex-
tos, vídeos, se comportam 
dentro de uma coluna ou 
bloco criado por você. Você 
deverá ter em mãos uma 
calculadora. E utilizar as li-
nhas guias do editor. 
Veja agora o layout definiti-
vo que iremos usar:
Detalhe importante: Essa divisão em colunas é apenas 
para auxiliar na criação do wireframe. Com o passar do 
tempo você encontrará outras fomas de diagramação para 
web. Você é livre para modificar esse exemplo se achar 
necessário , como por exemplo, adicionando mais colunas, 
aumentando a largura do site, diminuindo ou aumentando 
os espaçamentos, etc.
348 349
Codificação do 
site Galucho
Agora começaremos a montar efetivamente o site do Galucho com os códigos HTML e CSS. A 
primeira etapa é construir uma página modelo que possuirá somente os elementos comuns en-
tre todas as páginas. Por exemplo: o topo, com a integração das redes sociais, o menu e o slogan, 
e também o rodapé, com as informações de contato.
Essa página modelo não será usada no site, entretanto ela serve de modelo para construir as ou-
tras páginas do site. O intuito é duplicá-la para não perdermos tempo construindo os mesmos 
elementos em cada página. Sacou? Com isso bastará a você incluir em cada página os elementos 
que não são comuns entre as páginas. Você ganhará muito tempo com isso.
Separaremos o desenvolvimento nas seguintes etapas:
1. Montar a estrutura HTML comum em todas as páginas do site dentro da página modelo;
2. Estilizar, com folhas de estilo, esta estrutura para resoluções menores que 480 pixels;
3. Estilizar a estrutura para resoluções de até no mínimo 480 pixels;
4. Estilizar a estrutura para resoluções de até no mínimo 767 pixels;
5. Estilizar a estrutura para resoluções de até no mínimo 991 pixels
6. Salvar cópias do modelo para construção da Home Page e da página de portfólio;
7. Completar o restante dos códigos HTML da Home Page;
8. Finalizar a estilização da Home Page para resoluções menores que 480 pixels;
9. Finalizar a estilização da Home Page para resoluções de até no mínimo 480 pixels;
10. Finalizar a estilização da Home Page para resoluções de até no mínimo 767 pixels;
11. Finalizar a estilização da Home Page para resoluções de até no mínimo 991 pixels;
12. Completar o restante dos códigos HTML da página de portfólio;
13. Finalizar a estilização da página de portfólio para resoluções menores que 480 pixels;
14. Finalizar a estilização da página de portfólio para resoluções de até no mínimo 480 pixels;
15. Finalizar a estilização da página de portfólio para resoluções de até no mínimo 767 pixels;
16. Finalizar a estilização da página de portfólio para resoluções de até no mínimo 991 pixels;
 
Então , vamos começar! Vamos nessa? :)
350 351
7.1 - Montar a estrutura HTML comum em todas 
as páginas do site dentro da página modelo
Existem quatro elementos que compõe a estrutura comum entre as páginas do site. São eles:
• O corpo do site;
• O topo;
• O Box de conteúdo;
• E o rodapé. 
Começaremos desenvolvendo os códigos HTML para o corpo do site.
O corpo do site
Primeiramente colocaremos uma estrutura inicial que consiste nos elementos HTML fundamental 
e um box contêiner <div id=”container”></div>. Veja a seguir:
Depois de montada esta estrutura salvaremos como “modelo.html”.
Como você já bem sabe, esta codificação não é suficiente para apresenta conteúdos, nem estilos. 
Somente uma página vazia com o título “modelo” na barra do topo do navegador.
 
 
O topo
 
O próximo passo é criar,conforme nosso layout, os códigos para o topo do site. Reforçando que 
estes se repetirão nas páginas do site. Então, entre as tags “div” do contêiner insira o elemento 
HTML <header></header>.
Para reforçar, sabemos que o elemento “header” surgiu com o advento do HTML5, e como já dis-
semos neste E-book, uma de suas funções é agrupar os elementos do topo do site. No caso do 
site do Galucho ele abrigará:
• A área dos botões de redes sociais;
• O menu de navegação;
• A área que abriga o logo do site;
• E a área que abriga o slogan.
Vamos prosseguindo, Galucho! 
352 353
Agora iremos rever conceitos de HTML que vimos no começo do E-book.
 
Área dos botões de redes sociais 
Vamos mostrar agora entre as tags do elemento “header” os códigos necessários para a área dos 
botões de redes sociais.
Como você pode ver colocamos imagens (ícones) de três redes sociais. É uma pequena lista com 
três itens, por isso usamos os elementos “ul” e “li”. Como o objetivo principal desta lista e levar o 
usuário para estes sites externos, as imagens ficam dentro de links.
Se você olhar esta nova página no navegador só verá três “bullets” que indicam que temos ali uma 
lista. Mas cadê as imagens? As três imagens das redes sociais estão ali. Você só não enxerga, por-
que elas possuem cor branca. Quando colocarmos uma cor de fundo para o site elas aparecerão.
Nota: Estas páginas do Galucho são fictícias, portanto não tem 
endereço, por isso colocamos o sinal # no lugar das urls.
O menu de navegação
 
Logo após o fechamento da “div” da barra social colocaremos o código abaixo:
Este bloco de códigos contém a segunda lista do site que exerce a função de menu. E como este 
menu é a principal navegação do site semanticamente usamos o elemento “nav” que advém do 
HTML5 para agrupar os elementos da navegação.
 
Os itens deste menu possuem links que apontam para a home page, para a página de portfólio e 
para uma seção interna de cada página que fica no rodapé e que apresenta os dados de contato.
 
Um ponto estranho neste código é uma “div” vazia que vem dentro do elemento “nav”. Veja:
 
<div id=”combo-holder”></div>
 
Vou deixar para explicá-la mais a frente. Eu só antecipo que ela serve para inserir dinamicamente 
outra forma de navegar pelas páginas do site e mostrar essa forma quando acessado por dispo-
sitivos com resoluções abaixo de 480 pixels. Agora vamos cuidar da área do logo.
A área que abriga o logo do site 
 
Após o fechamento da tag </nav>, é hora de inserir os códigos para criação da área e inserção 
do logo. Veja a seguir:
354 355
Neste código colocamos uma “div” que servirá de bloco contêiner para centralizar o logo. 
A imagem do logo está dentro de link que aponta para a Home Page, por questão de usabilidade. 
Geralmente o usuário espera que ao clicar no logo de um site ele seja direcionado para página 
inicial. E por uma questão de acessibilidade não podemos esquecer-nos de colocar o atributo 
“alt” que indica aos leitores de tela a denominação da imagem. No nosso caso “Logo do Galucho”.
A área que abriga o slogan
 
Para encerrar a área do topo colocaremos os códigos responsáveis pela área do slogan. 
Veja a seguir:
Para abrigar o slogan, criaremos através de HTML e CSS um laço de fita que atravessa o corpo do 
site. Para isso colocamos dentro um box contêiner (<div id=”slogan”></div>) códigos que inse-
rem dois boxes vazios (sem conteúdo) e que visualmente serão as extremidades da fita, e um box 
que abriga o título do slogan. O termo “ribbon” quer dizer fita, laço de fita, faixa.
 
Você compreenderá como funcionará o laço de fita quando aplicarmos as folhas de estilos.
Encerramos por aqui os códigos para o topo.
O Box de conteúdo
 
O box de conteúdo será uma área logo após a tag de fechamento </header> do topo. Esta é a 
área que pode apresentar elementos diferentes entre as páginas do site. Como nem sempre o 
conteúdo entre páginas de qualquer site é parecido não é conveniente, ao construir uma página, 
inserir elementos que não vão se repetir em outras páginas. Portanto a única coisa que coloca-
remos aqui é um box que demarca toda a área de conteúdo. Simples assim:
<div id=”main”>
</div>
 
Quando formos construir as páginas individualmente, tudo que temos que fazer é inserir os ele-
mentos HTML e conteúdos das respectivas páginas dentre deste código anterior.
 
O termo “main” é muito usado em alguns sites. Você verá isso em algumas manutenções. Está 
relacionado com “principal”. No contexto podemos entender a área de conteúdo como sendo a 
principal.
O Rodapé
 
Usamos o rodapé do site para passar informações de contato fictícios do Galucho e também para 
informar sobre direitos autorais.
Para a área do rodapé é comum usar o elemento HTML “footer” em documentos HTML5. Usamos 
aqui, porém reforçamos que você pode usá-lo em outras seções do site.
356 357
 
Para o cabeçalho H2 usamos um ID chamado “cabeçalho” que serve tanto de seletor para o CSS, 
como também para destino de seção, para aquele link do menu contato que inserimos lá no topo, 
se lembra?
Os dados de contatos estão inseridos através de listas com links e os direitos autorais em um pa-
rágrafo. Com isso já montamos a estrutura padrão do site. Veja o código na íntegra, na imagem 
a seguir. 
Depois o próximo passo será estilizar esta estrutura para resoluções menores que 480 pixels.
Nota: podemos notar também que vários atributos “class”, que podem ser-
vir tanto para estilização dos elementos quanto para uma função que não 
faz parte do escopo deste e-book, e que deixaremos como lição de casa 
para você pesquisar em outro momento. 
Os atributos class=”vcard” , class=”fn”, class=”tel” e class=”email” fazem par-
te de uma forma de fornecer conteúdo semântico através de uma série de 
especificações chamadas de Microformatos (Microformats). Estes servem 
para representar coisas comumente publicadas em sites como pessoas, or-
ganizações, eventos, reviews, entre outras.
 
Para saber mais visite este link: http://webinsider.com.br/2006/01/16/mi-
croformats-aprenda-a-descrever-seus-dados/
http://webinsider.com.br/2006/01/16/microformats-aprenda-a-descrever-seus-dados/
http://webinsider.com.br/2006/01/16/microformats-aprenda-a-descrever-seus-dados/
358 359
7.2 - Estilizar, com folhas de estilo, a estrutura pa-
drão do site para resoluções menores que 480 pixels
Finalmente chegamos a uma das partes mais legais de trabalhar. Vamos usar o CSS para dar apa-
rência ao site do Galucho que até este momento se encontra assim:
Como planejado vamos estilizar a página modelo para resoluções até 480 pixels.
 
Geralmente o que se vê são sites que 
começam com resoluções maiores e 
consultas de mídia (medias queries) “ma-
x-width” até atingir a menor resolução 
planejada. Isso funciona, porém exige 
muita repetição de códigos de proprie-
dades para cada breakpoint. 
Como nosso esquema se baseia no 
80/20 vamos inverter este paradigma 
e usar consultas de mídia “min-width” 
até atingir a maior resolução planejada 
que é 991 pixels. 
E sabe que isso quer dizer?
 
Isso quer dizer que começaremos da 
menor resolução para a maior. Cons-
truiremos nossa página modelo pri-
meiro para mobile, e para este momen-
to não precisaremos usar a consultas 
de mídia. 
Desenvolveremos um site normal, só que o corpo do site terá uma largura de 252 pixels somente. 
Conforme subimos de resolução, no caso “min-width: 480px” (toda resolução que tenha no mí-
nimo 480 pixels, ou melhor, dizendo, de 480 pixels para cima) informamos que a largura máxima 
não pode passar de 980 pixels (max-with:980px). E partir daí nós estabelecemos valores de “wid-
th” em porcentagem para as resoluções maiores. Mas isso você compreenderá melhor depois de 
terminarmos a versão mobile.
Agora seguiremos as seguintes etapas. Estilizaremos:
 
• A “body” e o corpo do site;
• O topo;
• O Box de conteúdo;
• E o rodapé. 
A “body” e o corpo do site
 
Trabalharemos com a linkagem externa. Para isso use seu editor e crie um novo arquivo para 
salvar com a extensão “.css”. Vamosnomeá-lo de “estilos.css” e por enquanto o deixaremos vazio. 
Salve no mesmo diretório do arquivo HTML da página modelo.
Agora voltaremos ao documento HTML. Nele faremos duas linkagens externas. 
A primeira é para inserir o arquivo recém-criado “estilos.css”. Como você já sabe, para isso nós 
utilizaremos o elemento HTML “link” entre as tags do elemento “head”. 
<link rel=”stylesheet” href=”estilos.css” media=”all”> 
Em seguida linkaremos uma fonte CSS de um site externo e a posicionaremos antes da linha de 
código do arquivo “estilos.css”. No caso é uma fonte do Google fonts. 
360 361
Colocaremos antes porque não queremos que regras externas prevaleçam às regras locais. Esta 
fonte é específica para algumas partes do site, e possivelmente não se encontra na maior parte 
das máquinas dos usuários.
Veja como estas linkagens ficarão no código HTML:
Feito isso deixaremos o documento HTML da página modelo de lado um pouco e nos dedicare-
mos a estilizar os elementos desta página no arquivo CSS externo “estilos.css”. 
As primeiras tarefas dentro do arquivo CSS são colocar um reset e estilizar o fundo do site (um 
velho conhecido nosso). Veja o CSS:
Veja o resultado na imagem a seguir:
Como você pode ver, na figura acima, o fundo do site é mesmo um velho conhecido nosso. Aliás, 
o código usado em “body” é bem similar ao usado nos exemplos antigos, propositalmente para 
já começarmos a estilização desta página de forma familiar. Da mesma forma que o utilizamos 
antes, colocamos em “body” propriedades que podem ser herdadas pelos seus descendentes, 
como propriedades de cor de fontes.
 
O uso deste fundo possibilitou que enfim enxergássemos os botões das redes sociais Facebook, 
Google Plus e Twitter.
 
Outro detalhe importante é que inserimos uma declaração “display:block” para alguns elementos 
do HTML5. Eles naturalmente são elementos em bloco, entretanto versões atingas do Internet 
Explorer não sabem disso, daí o motivo da inserção.
 
Agora centralizaremos a div “corpo” da página e também colocaremos um fundo especial para 
ela. Para isso vamos para a regra a seguir, após a regra aplicada em “body”.
362 363
Resultado:
Ficou tudo meio apertado, mas ajustaremos isso. Porém o importante, a saber agora, é que o cor-
po do site está centralizado (margin: 0 auto) e dentro da largura adequada (252px) para quando 
o site se apresentar para dispositivos móveis.
 
As outras propriedades, que você já conhecer bem, serviram para colocar um fundo, bordas nas 
laterais e posicionar o “box” relativamente.
Galucho, com isso cumprimos um importante passo. O corpo da página modelo está estilizado. 
Vamos agora ao topo.
O topo
 
Dentro do bloco do topo estilizaremos por etapas seguindo esta ordem:
 
• A área dos botões de redes sociais;
• O menu de navegação;
• A área que abriga o logo do site;
• E a área que abriga o slogan.
 
Então, vamos ao bloco que abriga os botões de redes sociais:
Nota Importante: pode parecer estranho você vendo um site de largura pequena em um 
navegador de dimensões bem superiores, mas a partir do momento que colocarmos o pri-
meiro valor de “media query” (@media only screen and (min-width: 480px)), você não con-
seguirá ver mais este layout desta forma. Somente se redimensionar a largura do navegador 
para menos que 480 pixels.
364 365
A área dos botões de redes sociais
 
Para começar, sabemos que não é preciso declarar largura para o elemento “header”, que não 
será estilizado, e nem para a “div #social-bar” porque eles devem se adequar automaticamente 
dentro da largura do corpo (252px). Isso equivaleria a declarar “width:auto”, mas como é default, 
não é necessário. 
Esclarecido isso, seguem os códigos para inserirmos após “.container”:
Resultado:
Para a barra colocamos um fundo com uma imagem “png” repetida que trás um tom de cinza 
médio. Usamos também preenchimentos no topo e na base através de “padding”. Para o elemen-
to “ul” especificamos um valor de largura de 126 pixels, que é a somatória das larguras dos ícones 
(32 + 32+ 32) com as margens direita e esquerda do elemento “li” (30). Depois centralizamos o 
box de “ul” com a declaração “margin: 0 auto;”.
 
Destacamos nesta estilização o uso de “float:left” em “li” para que as os ícones ficassem lado a 
lado, e o uso de “display: block” no elemento “a” para que a área dos ícones ficassem clicáveis por 
completo.
 
Partimos agora para o menu de navegação.
O menu de navegação
 
Primeiro item que vamos estilizar no menu é o elemento “nav:
Com “nav” estilizado ele se enquadra na largura total de “corpo” que é 252 pixels de maneira au-
tomática. Você verá um tipo de borda especial no topo de Box, entretanto é só um efeito visual 
causado pela imagem que colocamos na propriedade “background”. Borda mesmo, somente na 
base do bloco. E o padding nós usamos como área de respiro dentro do bloco.
 
Agora o próximo objetivo é algo interessante. Se você recorda, no nosso wireframe vimos que o 
menu para o celular e para o tablet é diferente do menu do desktop. 
366 367
O menu no desktop é formado por esta lista tradicional que temos no código com os elementos 
HTML “ul”, ‘li” e “a”. Só que para nosso projeto acreditamos que em resoluções menores os botões 
do menu iriam ficar com um tamanho pequeno o que dificultaria o usuário de efetuar cliques. E 
não queremos que ele tenha este tipo de problema.
 
A solução que adotaremos é substituir este menu feito com listas por uma lista de seleção “dro-
p-down” onde o usuário pode escolher que página quer navegar.
 
Você pode estar se perguntando: “Que raios! Como faremos isso se já temos o código HTML para 
colocar? E de onde sairá este formulário? ”.
 
Calma que chegaremos lá. A primeira coisa que temos que fazer é garantir que a lista atual não 
apareça para a resolução que estamos trabalhando. Faremos isso colocando a declaração “dis-
play:none” para o elemento “ul”.
Observação: Não confunda o seletor “nav” com seletor “#nav”.
 
Veja o resultado:
E ,como vimos, temos o bloco “nav” estilizado com o visual que falamos anteriormente e com o 
menu oculto pela declaração “display:none” que colocamos no elemento “ul” com identificador 
“#nav”. 
Agora vem a mágica que traz a tal lista de seleção para acesso da página. Ela é formada basica-
mente por dois elementos HTML que tem frequência moderada de aplicação na web em compa-
ração com 80/20 que dispusemos até aqui no E-book. 
Apesar da frequência não ser alta, você poderá ver bastante estes elementos em páginas de ca-
dastros. Tem aumentado seu uso significativamente em dispositivos móveis que precisam de 
navegação alternativa como esta que usaremos. Os elementos HTML são “select” e “option”. Eles 
trabalham unidos e no nosso caso formam este código a seguir:
 
<select id=”comboNav”>
 <option selected=”selected” value=””>Navegação</option>
 <option value=”index.html”>HOME</option>
 <option value=”portfolio.html”>PORTFÓLIO</option>
 <option value=”#contato”>CONTATO</option>
</select>.
 
O elemento “select” indica que se trata de uma lista de seleção e o “option” determina os valores 
a serem selecionados. O elemento “option” determina vários tipos de valores, que você determi-
na conforme o projeto. No caso ,do site do Galucho, os valores se referem às páginas do site que 
queremos que usuário use para navegar. A primeira opção de “option” tem valor vazio porque a 
intenção é não direcionar para lugar algum. Nesta opção também temos o atributo ‘selected=”-
selected”’ que indica que “Navegação” será selecionado como padrão.
 
Agora uma coisa intrigante: este código deve estar obrigatoriamente entre as tags <div id=”com-
bo-holder”></div>, só que a gente não colocará. Mas como isso é possível?
 
É possível através de “javascript”. Caso você não conheça, javascript é uma linguagem de progra-
mação baseada em script que roda na máquina do cliente, chamamos de client-side. 
368 369
É diferente da maioria das linguagens que rodam no servidor.
 
Foge do escopo desta ebook explicar o funcionamento desta linguagem.Entretanto para peque-
nas funcionalidades e efeitos chamaremos através do elemento HTML “script” alguns códigos 
javascript. Muitos efeitos que você vê em páginas são decorrentes do javascript, como por exem-
plo, uma foto que se expande em um box. Nem sempre é preciso ter conhecimentos avançados 
para colocar estes efeitos em seu site. Basta que você pesquise no site do desenvolvedor o efeito 
desejado, baixar os arquivos e colocar os códigos necessários onde a documentação do produtor 
indicar.
 
Para que nossa lista de seleção seja “colocada” entre as tags <div id=”combo-holder”></div> pre-
cisamos voltar ao nosso documento HTML e colocar dois códigos javascript antes da tag de fe-
chamento do elemento “body”, local este geralmente indicado para inserir códigos javascript.
 
Veja a seguir como proceder:
 <script src=”js/jquery-1.7.1.min.js”></script>
 <script src=”js/combo-navi.js”></script>
 
Perceba que a sintaxe HTML é comum a maioria dos elementos que você conhece. Existem tags 
de abertura e fechamento <script></script>. E dentro da tag de abertura tem o atributo “src” que 
procura um arquivo de extensão “.js” (javascript) no caminho do diretório indicado.
Os arquivos “jquery-1.7.1.min.js” e “combo-na-
vi.js” são os responsáveis por inserir dinamica-
mente a lista de seleção dentro do documento 
HTML. Apesar de não vermos esta inserção no 
código fonte o inspetor, encontrado nas ferra-
mentas de desenvolvedores de navegadores, 
mostra o código da lista incorporado ao docu-
mento HTML (veja na imagem ao lado).
A ferramenta mostra a lista de seleção dentro de 
<div id=”combo-holder”></div>. 
Ferramentas de inspeção auxiliam muito quando precisamos estilizar elementos ocultos no có-
digo.
 
E as declarações que usaremos para estes elementos são:
370 371
Agora o resultado:
O identificador #comboNav foi o seletor usado para estilizar o elemento HTML “select” incorpo-
rado dentro do documento via javascript. Para estilizar colocamos um fundo cinza, uma cor de 
fonte branca e um preenchimento de 4 pixels. Para centralizar esta lista de seleção dentro do box 
de navegação usamos “margin: 10 auto”. Todas as propriedades que usamos para estilizar os itens 
citados você conheceu no capítulo sobre CSS. Não é mais segredo para você. Mas esporadica-
mente iremos te apresentar algumas propriedades novas. Em “#comboNav” usamos duas:
 
1. text-indent – Esta propriedade determina um recuo de texto. Determinamos um valor de 15 
pixels para que se comparando com os textos das opções da lista ele se diferencie pelo recuo.
2. border-radius – Ela permite colocar bordas arredondadas na extremidades de um elemento. 
Perceba em “#comboNav” colocamos sutilmente bordas arredondadas em cada canto do Box. 
Elas possuem de 3 pixels.
 
Veja como se comporta a lista de seleção quando selecionamos um item de destino:
Nota: Existem outros jeitos de se fazer um menu de navegação para reso-
luções menores, com outros elementos HTML e até sem JavaScript. 
Porém esse template, que estamos usando no site Galucho, originalmente 
foi pensado e criado assim. Então mantivemos o menu afim de respeitar a 
ideia do autor e também para que você já se familiarize aos poucos com a 
tag <script>.
372 373
A área que abriga o logo do site
 
Nesta parte a nossa preocupação é centralizar o logo dentro do Box dedicado a ele, e também 
que suas dimensões fiquem adequadas ao espaço reservado. Segue o código CSS:
Resultado:
Colocamos uma área de preenchimento ,através do padding, no topo e na base de 20 e 30 pixels 
respectivamente dentro da “div” de ID “#logo”. Centralizamos o logo dentro desta “div” com “mar-
gin: 0 auto” e diminuímos o tamanho a largura do logo para 80% do valor total.
 
Falando em diminuir tamanho de imagens via CSS... Não consideramos a melhor maneira para 
trabalhar com imagens em sites responsivos. Na verdade, para um site estático como esse temos 
poucas opções de oferecer imagens para dispositivos mobile sem comprometer a performance 
do site. 
O problema reside no fato que a imagem do logo, assim como todas as imagens do site na reso-
lução mais baixa, tem o mesmo peso que as imagens do site para desktop. Mesmo diminuindo 
com CSS a porcentagem da imagem, esta diminuição é somente visual. Este é um problema, que 
até a época em que escrevemos este livro, web designers e desenvolvedores estão enfrentando. 
Existem técnicas que amenizam e estão fora do escopo do E-book. Ainda mais porque muitas 
requerem ferramentas que vão além do HTML e CSS. 
Se quiser saber mais sobre este assunto visite este excelente material: http://tableless.com.br/
imagens-responsivas-de-alta-performance/.
 
Voltando a estilização do site, entraremos agora no último item do topo, o slogan. Vamos nessa?
A área que abriga o slogan
 
Quando estávamos montando o HTML da área do slogan, falamos que sua área teria formato de 
laço de fita. Você se lembra?
O código tem muitos detalhes. Como você já tem uma boa base de CSS vamos explicar, por par-
tes, os detalhes que fizeram a diferença na construção do laço de fita:
Primeira ação é definir uma declaração “position:relative” para o box “<div id=”slogan”></div>”. 
http://tableless.com.br/imagens-responsivas-de-alta-performance/
http://tableless.com.br/imagens-responsivas-de-alta-performance/
374 375
Isso para garantir que as extremidades das fitas, as “divs” filhas “ribbon-lleft” e “ribbon-right”, se-
jam posicionadas de forma absoluta em relação ao Box pai. Em seguida, nos preocuparemos em 
posicionar as “divs” filhas “ribbon-lleft” e “ribbon-right”. Para isso inseriremos uma imagem de 
fundo específica para cada div. Veja como fica o CSS:
Veja na figura a seguir que as imagens de fundo ficaram no quanto esquerdo do conteúdo do 
slogan.
Então o próximo passo será colocá-las nas laterais do corpo do site de forma que ultrapassasse 
além da largura. Isso só é possível através de um posicionamento absoluto negativo. Como estas 
imagens de extremidade de fita tem 56 pixels de largura declaramos -56px para ambos os lados. 
Resultado:
Para dar o aspecto de laço essas imagens teriam que se posicionar acima do box de conteúdo. 
Para referência estilizaremos este “box” antes de posicioná-las. A regra você pode consultar lá no 
código completo nos seletores “#slogan .ribbon” e “#slogan h1”. Veja como ficará:
376 377
E com isso alcançamos o objetivo: 
Agora falando das propriedades usadas, destacamos o uso de “text-shadow” que proporciona um 
sombreamento para textos e o uso da fonte “Josefin Sans” que linkamos do Google.
 
text-shadow: 0px 1px 0 #9d9b92;
font: 400 20px/normal ‘Josefin Sans’, sans-serif;
 
E com isso acabamos de dar forma para o topo do site. 
Próximo passo é estilizar a área do conteúdo.
O Box de conteúdo
 
Não precisamos de muita coisa para estilizar o Box de conteúdo que para esta página modelo 
somente contém uma “div”. Quando construirmos as páginas individuais os conteúdos serão 
diferentes e o visual também, mas por enquanto só temos que nos preocuparmos em estipular 
uma largura e uma altura para este box.
 
O valor da largura será automático e decidimos colocar um valor provisório de 200 pixels para 
altura, já que não colocamos conteúdo ainda. Provisório porque sua altura será determinada pela 
altura que o conteúdo proporcionará somada a possíveis valores de margens, paddings e bordas. 
Aí usaremos a declaração “height:auto”.
 
Então tudo o que temos a fazer é colocar esta regra:
 
378 379
Colocaremos também um pequeno parágrafo com o texto “Aguardando conteúdo!”. 
 
Veja o resultado:
Então é só isso mesmo, Galucho. Nossa página para baixas resoluções já está quase pronta!
A seguir iremos estilizar o rodapé. Vamos à próxima etapa? 
Nossa função é dar um jeito nisso. Vamos ao CSS: 
O rodapé
 
O rodapé do jeito que está é uma poluição só. Os textos estão todos grudados em uma área aper-
tada. Veja na imagem:
380 381
Salve o arquivo e veja o resultado no navegador: 
Uma coisa que caracteriza um rodapé nãoé somente o fato de ele estar no final do site, também 
as informações ali presentes, como as de “Copyright”, e em alguns casos uma cor de fundo que 
contrasta com grande parte do site. Lógico que isso não é uma regra, porém ajuda a dar destaque 
ao rodapé.
 
O site do Galucho usa tons de cinza. Então decidimos usar um esquema monocromático em al-
guns itens do site, resultando para o rodapé um cinza mais escuro.
 
382 383
Quanto às folhas de estilos usadas não tem muito segredo. Todas foram apresentadas no Capí-
tulo sobre CSS. A grande sacada aqui para deixar o rodapé melhor foi criar áreas de respiro com 
uso das propriedades “margin” e “padding” nos elementos e deixar o texto centralizado.
 
A única novidade aqui foi o uso do seletor “: hover” nos links amarelados para que eles ganhem 
uma decoração sublinhada ao colocar o mouse sob eles.
 
Enfim finalizamos a página modelo para resoluções até 480 pixels. Você já deve ter percebido 
que a página ficou bacana e não parece em nada com aquele amontoado de informações joga-
das sem apresentação visual, lembra?
 
E antes de finalizar esta parte do rodapé, podemos fazer uma comparação entre o modelo sem 
CSS e com CSS para vermos o poder das folhas de estilos. 
Qual destas versões 
você gostaria de 
apresentar para seu 
cliente? 
Parabéns!!! Você estilizou sua primeira página!!!
Lógico que você sabe que foi só para uma resolução, entretanto grande parte do trabalho já foi 
feito. Agora dê uma pausa para descansar e comemore. Encontramo-nos no próximo tópico.
384 385
7.3 - Estilizar a estrutura para resoluções de no 
mínimo 480 pixels
Antes de começarmos, vamos incluir alguns pequenos códigos no HTML do site do Galucho. 
Estamos cientes que a versão que construímos no tópico anterior foi dedicada para um site mo-
bile, pelo menos na sua largura de corpo. Só que ele não está totalmente adequado. Isso porque 
todo o CSS que construímos facilita a visualização no Desktop.
Só que no celular nós ainda vemos do mesmo modo que vemos no Desktop. Com isso somos 
obrigados a ampliar a tela com o zoom. 
Veja nas imagens a seguir como o site se comporta da mesma forma, em um celular e um tablet 
na posição paisagem, e em um Desktop.
Para dizer que o site atende a dispositivos móveis temos que executar três pequenas tarefas. Va-
mos à primeira.
1. Para que nossa página modelo seja exibida corretamente em dispositivos móveis vamos 
 incluir uma meta tag no cabeçalho (entre a tags do elemento “head”) do documento, 
 especificando “width=device-width” e “initial-scale=1”. Segue o código:
<meta name=viewport content=”width=device-width, initial-scale=1”>
386 387
Esta meta-tag fornece ao navegador instruções de como controlar as dimensões e o redimensio-
namento da página. O primeiro valor content “width=device-width” determina automaticamente 
um valor igual a largura da tela do dispositivo. Isso permite que a página redistribua o conteúdo 
para corresponder a diferentes tamanhos de tela. 
O segundo define a escala inicial. Ela permite que a página exiba corretamente quando muda-
mos a orientação (paisagem/retrato) de nosso dispositivo.
2. Inserir script “CSS3-mediaqueries.js” para que dispositivos que não suportam consultas de 
 mídia nativamente compreendam as folhas de estilo.
Nem todos os dispositivos “compreendem” as media queries. Por isso colocaremos no final do 
documento um script que chama o arquivo “css3-mediaqueries.js” para que elas sejam interpre-
tadas por estes dispositivos.
<script src=”js/css3-mediaqueries.js”></script>
3. Definir uma largura para corpo do site dentro desta consulta de mídia: “@media only 
 screen and (min-width: 480px)”.
Ao definirmos este valor, a versão que construímos no tópico anterior, cuja largura de corpo é 
de 252 pixels, só poderá ser vista em dispositivos com resolução inferiores a 480 pixels. E este é 
o nosso objetivo. Então para isso acontecer basta colocar o código a seguir no final do CSS atual.
Para você entender na prática como tudo funciona vamos pedir auxílio ao nosso navegador. 
Pode ser o Google Chrome ou o Mozilla Firefox. Veja na imagem a seguir, que chamarei de figura 
1, o que aconteceu com a largura da tela após as três modificações (principalmente a última).
O que aconteceu com aquele layout de lagura fina? Pois é, segunda a nova consulta de mídia ele 
não pode aparecer em resoluções de tela que tenha no mínimo 480 pixels de largura (min-wid-
th:480px). E a resolução do desktop usado na figua tem 1366 pixels de largura. 
388 389
Por isso que prevalece a nova largura descrita na regra para o corpo que encontramos dentro da 
media query, ou seja:
O corpo tem 93% (witdh: 93%) da largura do dispositivo (1366 pixels). Descontando a bar-
ra de rolagem do navegador e multiplicando pela largura do corpo em porcentagem ((1366 
do desktop – 17 da largura da barra de rolagem) * 93%), resulta em 1255 pixels que é um 
valor dentro da nova regra. 
Veja a seguir na figura 2:
Só que 1255 pixels deixaram o corpo largo demais e se acessado em resoluções maiores ainda, 
mais largo ficará dificultando a leiturabilidade de textos.
 Por isso que entra também a declaração “max-width: 980px”, para que limite a largura não per-
mitindo que o corpo ultrapasse os 980 pixels. Este limite permite que o site fique como planeja-
mos, ou seja, dentro das dimensões que vimos na figura 1. Entendeu?
Você já viu como ficou o site para desktop baseado neste novo valor de consulta de mídia. Agora 
veja o resultado para o celular e o tablet na posição: 
Nota importante: 
Considere nas imagens acima somente a largura do corpo do site em 
relação ao que era antes da aplicação da media query. Os outros ele-
mentos internos estão sujeitos às modificações a partir das folhas de 
estilos, neste e nos próximos valores de consultas de mídia.
390 391
Bom... Você ainda está curioso para saber como ficou e onde você pode ver todo aquele trabalho 
que você realizou para a página modelo para a resolução inferior a 480 pixels, não é mesmo? Se 
você tiver instalado o Google Chrome em sua máquina, abra o inspetor da ferramenta de desen-
volvedor e se o navegador estiver maximizado, clique no botão para você desativá-lo. Isso per-
mitirá que você redimensione a janela.
Agora vá com o mouse até a extremidade direita do navegador e posicione a seta até que ele 
tome a forma de uma seta bidirecional (igual a esta ). 
Clique e arraste para esquerda para que diminua a largura da tela. Ao fazer isso, a página que tem 
a largura do corpo definida em porcentagem procurará se adaptar automaticamente. Você verá 
também que enquanto você arrasta o mouse aparecerá, no canto superior direito da página os 
valores da largura que estarão em ordem decrescente. 
Quando você chegar a 480 pixels de largura você ainda estará dentro da consulta de mídia “min-
-width: 480px” e a largura do corpo do site será de aproximadamente 432 pixels. 
Porém quando você diminuir 
um pixel, chegando assim a 
479 pixels, a página estará fora 
da consulta de mídia “min-
-width: 480px” e voltamos ao 
conhecido layout com largu-
ra de corpo que cai para 252 
pixels.
A imagem ao lado indica que a 
página está dentro da consulta 
de mídia “min-width: 480px” e 
a um pixel de sair dela se redi-
mensionarmos o navegador à 
esquerda.
E é o que exatamente acontece na imagem seguir. Com este processo você consegue simular bre-
akpoints e resoluções de dispositivos enquanto desenvolve as folhas de estilo com media queries. 
Você acaba de rever o layout para resoluções abaixo de 480 pixels no nave-
gador de um desktop. Comparando com a outra imagem notamos como é 
visível a diferença entre eles. Ele deverá funcionar também para dispositivos 
dentro desta faixa de resolução. 
Olha a figura, à sua esquerda, de um simulador para ver como ele se adéqua 
perfeitamente, conforme o projetado, ao smartphone.
392 393
Agora que cumprimos as três pequenas tarefas, e que você já entendeu, de forma prática, a im-
portância do uso das media queries,vamos seguir o fluxo normal da montagem do nosso CSS 
para consulta de mídia atual (min-width: 480px).
Seguiremos o esquema que fizemos anteriormente. 
• O corpo do site;
• O topo;
• O Box de conteúdo;
• E o rodapé.
O corpo do site já foi. Partiremos para o topo e verificaremos apenas o que mudará no css . 
O interessante desta fase é que o código tende a diminuir porque muita coisa declarada no CSS 
para resoluções abaixo de 480 pixels será mantida e não haverá necessidade de duplicar decla-
rações.
O topo
O menu de navegação
A única mudança será na largura da lista de seleção que aumenta de 212 pixels para 396 pixels. 
Colocaremos a declaração dentro na consulta de mídia e após a regra de “.container”.
A área que abriga o logo do site 
Mudaremos somente a porcentagem das dimensões da imagem:
E a área que abriga o slogan
Aqui aumentamos o tamanho da fonte, por consequência é indicado diminuir o tamanho do 
preenchimento do topo. 
E com isso terminamos as regras do topo para esta comsulta de mídia. Você deve estar estra-
nhando a quantidade reduzida de códigos. É porque grande parte das regras usadas para as 
resoluções inferiores a 480 pixels são reaproveitadas aqui também. O mesmo acontecerá no 
Box de conteúdo.
O rodapé
394 395
O rodapé foi o ponto com maiores alterações. Mesmo assim o código anterior é bastante rea-
proveitado. Veja:
A novidade que mais se destacou é o uso da propriedade “letter-spacing” que usamos para au-
mentar o espaçamento entre letras.
E com isso rapidamente terminamos os códigos para a media-query “min-width: 480px”. 
Veja na imagem a seguir os códigos utilizados:
Você quer como o layout ficou, certo?
396 397
Vamos primeiro entrar para a próxima consulta de mídia que limita certas mudanças atuais até a 
largura de 766 pixels. Aí nós mostraremos o comportamento da página modelo com 480 pixels e 
766 pixels, que são os limites de atuação da media query que acabamos de trabalhar.
7.4 - Estilizar a estrutura para resoluções de até 
no mínimo 767 pixels
Começamos direto inserindo a instrução media query para atender resoluções de até no mínimo 
767 pixels.
@media only screen and (min-width: 767px){ }
Como já vimos o corpo do site mantém a declaração da consulta de mídia anterior que indica 
“width: 93%”. Vamos ao topo, então!
O topo
Menu de navegação
Aqui surgirá uma grande mudança. O menu baseado em lista de seleção será substituído por 
uma lista ordenada. Seguem as regras:
Agora o resultado: 
398 399
Imagino que você percebeu a mudança radical. Temos aqui um menu tradicional onde basta ao 
usuário efetuar um clique para acessar as páginas.
Um fator importante para mudança foi ocultar a lista antiga e mostrar a nova outrora oculta. 
Tudo isso foi possível através da propriedade “display” e dos valores “block” e “none”.
Ocultamos o menu feito com lista de 
seleção:
E revelamos o menu feito com lista or-
denada: 
Agora que mostramos o fator determi-
nante para mudança de menus. Vamos 
ver alguns detalhes interessantes na es-
tilização:
No seletor “#nav li”, para colocarmos os itens lado a lado, usamos a declaração “display: inline-blo-
ck”, ao contrário do que fizemos anteriormente na barra de rede social onde usamos “float: left”.
E chegamos ao que pode ser o ponto mais complexo do menu: quando posicionamos o mouse 
sobre um item do menu ele forma um background com formato similar ao laço de fita com ex-
tremidades pontiagudas. A própria indicação da página do menu possui este background. 
Veja na imagem a seguir:
Os códigos responsáveis pelo efeito estão abaixo:
400 401
Note que a imagem usada é a mesma. Só que o posicionamento é diferente. Veja, a seguir, a ima-
gem usada. Ela pouco lembra o que vemos no menu:
A primeira regra faz que o menu mostre a extremidade esquerda quando posicionamos a ima-
gem 37 pixels negativos para o topo. Veja na imagem a seguir que este deslocamento negativo 
para o topo faz com que a parte em que hachuramos não fique visível, mostrando o que inte-
ressa dentro do elemento “li”:
Já simultaneamente dentro da “span” filha de “li” mostra o inverso. Porém somente cerca de 90pi-
xels que é a largura deste elemento. Aqui o posicionamento faz com que a imagem se desloque 
para a o topo e para direita, como podemos ver na imagem a seguir: 
Quanto aos outros códigos usados são autoexplicativos com propriedades que você conhece. 
Destaque para a propriedade “line-height” com o valor de 37pixels usado dentro da declaração 
de “#nav li a” para que caiba dentro da altura do bloco.
Área que abriga o logo do site
A partir daqui o logo irá usar as dimensões originais de sua imagem. Em outras circunstancias os 
valores de suas dimensões declaradas no documento HTML já seriam o suficientes, porém para 
que não haja influencia das consultas de mídias anteriores colocaremos estes valores também 
nas regras CSS:
Área que abriga o slogan
Temos duas pequenas mudanças dentro do título do slogan. Usaremos unidades em pixels para 
o preenchimento o topo e o tamanho da fonte aumentará para se adequar as telas maiores que 
a consulta de mídia atual possa a vir atender:
402 403
E com isso terminamos as regras do topo. As grandes mudanças foram relacionadas ao menu, mas 
também podemos nos aproveitar de grande parte das regras usadas para as resoluções inferiores 
a 480 pixels e até 480 pixels. Esse reaproveitamento também acontecerá no box de conteúdo.
O rodapé
O rodapé novamente foi o ponto com maiores alterações. Com uma dimensão maior optamos 
por distribuir as informações lateralmente substituindo o aspecto centralizado. Veja como ficou:
Feito! Terminamos a nossa estilização para a consulta de mídia “min-width:767px”. Sabemos que 
a próxima consulta é “mim-width:991px”, sendo assim, uma largura de 990 pixels está dentro da 
consulta de mídia deste tópico que acabamos. 
Que tal vermos como está nossa página modelo para esta largura?
Olhando para esta imagem você consegue se lembrar da página quando só tínhamos o HTML? :)
404 405
7.5 - Estilizar a estrutura para resoluções de até 
no mínimo 991 pixels
Finalmente chegamos à última consulta de mídia. Acredito que o conceito sobre media queries 
esteja mais solidificado em sua mente. Procuramos atender a alguns breakpoints durante todas 
as etapas para que o layout da página modelo ficasse o mais agradável e flexível possível. 
A partir desta nova consulta o layout terá um comportamento fixo, ou seja, dispositivos de 991 
pixels para cima receberão o mesmo estilo sempre. A largura do corpo deste site (.container) foi 
projetado para ter diferentes larguras em quatro diferentes tipos de situações. E uma condição 
especial a de que não ultrapasse a máxima largura de 980 pixels (max-width:980px). 
Os dispositivos que atendem a nova consulta de mídia superam o valor de 980 pixels. Nós o pro-
jetamos para que a partir daí a largura fique fixa em 980 pixels. Portanto nossa primeira regra será:
No atual momento em que este E-book é criado esta largura trabalha tranquilamente para a 
maioria dos desktops. Entretanto é necessário estar sempre atento para as novas necessidades 
que surgirão no mercado, através de dispositivos com resoluções ainda maiores.
 
Não teremos grandes mudanças nesta resolução, pelo menos para esta página modelo. Além de 
setar a largura da página vamos também aumentar o tamanho da fonte do slogan e pronto. To-
dos outros elementos necessários já foram estilados nas consultas anteriores. 
Entretanto quando montarmos as páginas individuais, que praticamente se concentrará dentro 
do “Box de conteúdo”, podemos vir a ter um bom trabalho desta resolução.
Vamos agora ao código do slogan:
O trabalho na página modelo esta encerrado. Vamos ao resultado para este resolução?
406 407
Agora temos uma base para construir as duas páginas do site. Apesar da existência do menu 
“Contato”, você já deve ter percebido que a função dele é direcionar para o rodapé das páginas 
do site, local onde encontramos os dados de contato do Galucho.Próximo passo agora é, a partir da página modelo, salvar cópias de seu conteúdo, renomeando 
os nomes dos arquivos e executando pequenas alterações. Preparado?
7.6 - Salvar cópias do modelo para construção 
das Páginas Home e Portfólio
É hora de abandonar a página modelo. Afinal a função dela era, como seu nome mesmo diz, ser-
vir de modelo. Caso sua página modelo não esteja aberta no seu editor, abra. Agora salve uma 
versão como “index.html”. Essa será a página inicial.
Talvez Galucho você possa pensar que cometi um erro grave. Será que o nome do arquivo não 
deveria ser “home.html”? A resposta é não. Tanto que colocamos o menu “home” com “index.
html”. O serviço de hospedagem costuma interpretar os arquivos iniciados com o termo “index”, 
para certos tipos de linguagem de construção de sites (index.html, index.htm, index.php) como 
páginas iniciais.
O “index.html” é bastante usado para um site 100% HTML como o do Galucho. E ao usá-lo será 
redirecionado para o domínio do site. Veja:
www.galucho.com.br/index.html = www.galucho.com.br
www.galucho.com.br/home.html = www.galucho.com.br/home.html
Já a versão “home.html” não é interpretado como página inicial. Por isso usamos o nome “home” 
ou “página inicial” entre as tags do elemento “a”, entretanto no atributo “href” usamos “index.html”. 
Próximo passo é tomar pequenas ações que diferenciem a Home da página de Portfólio. Come-
çamos mudando o título, no nosso arquivo index.html, dentro do elemento “title”. Veja:
<title>Galucho - Designer</title>
Em seguida apagaremos a mensagem “Aguardando conteúdo!” que está dentro das tags ‘<div 
id=”main”></div>’. Afinal, não tem mais motivos para ela está em nossas páginas. Concorda?
Agora daremos uma pausa na home para voltarmos a página modelo. Vamos salvar a segunda 
cópia como “portfolio.html”. Também faremos pequenas ações para diferenciar as páginas.
Mude o título atual para este:
<title>Portfólio do Galucho</title>
Outra mudança importante é trocar uma “class” na lista de menu da navegação principal. Refiro-
-me a este item, class=”current-menu-item”, que promove um background ao menu e tema fun-
ção de indicar em que página o usuário esta. Neste momento ele está indicando a home page.
<ul id=”nav”>
 <li class=”current-menu-item”><a href=”index.html”><span>HOME</span></a></li>
 <li><a href=”portfolio.html”><span>PORTFÓLIO</span></a></li>
 <li><a href=”#contato”><span>CONTATO</span></a></li>
</ul>
408 409
Não é o que queremos. Devemos trocar para a página de portfólio:
<ul id=”nav”>
 <li>a href=”index.html”><span>HOME</span></a></li>
 <li class=”current-menu-item”><a href=”portfolio.html”><span>PORTFÓLIO</span></a></li>
 <li><a href=”#contato”><span>CONTATO</span></a></li>
</ul>
Aproveitamos também para fazer as mesmas mudanças fizemos na Home referente ao conteúdo 
dentro da tag <div id=”main”></div>.
E agora que tal navegar pelo site? Isso já é possível!!! Cliques nos menus, redimensione as telas, 
brinque com o trabalho que você acabou de executar!!! :D
Feito as devidas alterações. Deixaremos o arquivo da página modelo de lado, fecharemos o arqui-
vo “portfolio.html” e trabalharemos com o “index.html”.
Mas antes de finalizarmos essa parte substituiremos, na nossa folha de CSS, o código que limita 
a altura desta “div” em 200 pixels...
... Por esta que permite a altura expanda conforme o conteúdo cresça.
E assim fechamos essa parte por aqui!
410 411
Você está de Parabéns!!! 
Surgiremos um novo descanso antes de seguir com este capítulo que é um dos mais longos. 
Você terá tarefas importantes! Dê uma pausa e volte renovado.
7.7 - Completar o restante dos códigos HTML da 
Home Page
Agora meu amigo Galucho é hora de colocar o conteúdo nas páginas. E todo conteúdo será colo-
cado entre as tags “<div id=”main”></div>”. Como estamos na página inicial o intuito é apresentar 
uma prévia sobre os trabalhos realizados pelo Galucho a fim que os visitantes cliquem nos atalhos 
que levam a página de portfólio. 
Começaremos com este código:
Observação: o E-book é destinado fundamentalmente a apresentar meios para usar 
as linguagens HTML e CSS de forma mais precisa possível e dentro do esquema 80/20. 
É natural que alguns sintam falta de páginas extras tipo; “sobre o Galucho” entre outras 
que poderiam estar presentes. Entretanto estas ausências não fazem o conteúdo fugir 
ao objetivo do E-book e até serve de sugestão de exercício extra para que você incre-
mente com mais páginas.
412 413
Trata-se de um slideshow. Ele tem a função de mostrar uma lista de imagens através de uma 
apresentação com efeitos. O efeito que aplicaremos dependerá de códigos javascript prontos 
específicos e algumas declarações CSS. 
No elemento “ul” temos o atributo class=”bxslider”. Ele será usado automaticamente pelo CSS do 
slideshow, escolhido para estilizar a apresentação.
Para conhecer melhor este slideshow visite http://bxslider.com/.
Esta apresentação também servirá como atalho para seções encontradas na outra página. 
Você se lembra da ligação para uma parte específica dentro de uma mesma página? 
 
Aqui nos faremos esta ligação só que para partes específicas dentro da página de portfólio (por-
tfolio.html#fotografia, portfolio.html#web-design, portfolio.html#grafico).
Enquanto aplicamos somente o HTML é assim que nossa lista de imagens se apresenta: 
Observação: Você não precisa aprender agora javascript para inserir este tipo de 
apresentação animada, e nem é objetivo do E-book. Entretanto queremos mostrar que 
sabendo HTML e CSS e lendo a documentação de alguns “plugins” javascript, que en-
contramos na web, você pode colocar efeitos diversos em seu site sem a necessidade 
de saber programar. Basta saber o local certo de inserir este plugins. 
E também tenha cuidado para não abusar em efeitos e plugins para que o seu site não 
fique pesado. Também fique ligado para não colocar animações e transições desneces-
sárias que geram possíveis conflitos. Com o tempo você pode aprender esta lingua-
gem para otimizar seus códigos, ok?
http://bxslider.com/
414 415
Após o slideshow colocamos um código que mostra a missão do site:
E agora para finalizar colocaremos códigos para uma pequena galeria que também serve de 
atalho para a página de portfólio: 
Esta galeria é formada por uma lista que contém três imagens clicáveis. Cada imagem serve de 
atalho e também representa cada categoria presente na página de portfólio. E a lista também 
fornece uma pequena descrição sobre a categoria em forma de link.
Este código foi suficiente para estender demais a tela verticalmente. Por isso deixaremos uma 
imagem da galeria quando aplicarmos o CSS e estilizar é o que faremos no próximo tópico. Final-
mente veremos como ficará a Home Page para resoluções abaixo de 480 pixels.
Vamos nessa?
 
7.8 - Finalizar a estilização da Home Page para 
resoluções menores que 480 pixels
A sequência lógica indica que devemos estilizar os elementos entre as tags do elemento “aside”, 
inclusive ele mesmo se for necessário. Porém, antes, como trabalharemos com um plugin exter-
no (Bxslider) e grande parte de sua funcionalidade já vem pronta, devemos instalá-lo primeiro. 
 
E sabe por quê? Por que todo e qualquer elemento deste tipo está sujeito a possuir estilo próprio, 
regras CSS próprias que estilizam o código que a gente criou. Lembra-se da class “bxslider” que 
colocamos no elemento “ul”? Sem contar que ele também pode embutir dinamicamente códigos 
HTML extras, consequentemente mais estilos. 
Por isso ao fazer a instalação primeiro, podermos descobrir quais regras queremos manter e quais 
iremos subscrever, sacou?
Então já que não tem outro caminho vamos à tarefa! 
416 417
Estilizando o slideshow
Primeiro baixaremos o pacote de arquivos do site do desenvolvedor (http://bxslider.com) para 
nosso computador e enviaremos os arquivos para o diretório do site.
Então colocaremos uma linha de código que “linka” os estilos do slidershow. Esta linha deve estar 
acima do código que linka o CSS do sitedo Galucho. Veja:
<link rel=”stylesheet” href=”jquery.bxslider.css” media=”all”> 
<link rel=”stylesheet” href=”estilos.css” media=”all”>
Próximo passo é colocar o código javascript do slidershow antes do fechamento da tag “body” , 
juntos com os outros scripts.
<script src=”js/jquery-1.7.1.min.js”></script>
<script src=”js/combo-navi.js”></script> 
<script src=”js/css3-mediaqueries.js”></script>
<script src=”s/jquery.bxslider.js”></script>
E para finalizar, segundo a documentação do produtor do Bxslider, devemos iniciar o slideshow 
através de um código javascript extra que vem após o código anterior. Segue:
<script type=”text/javascript”>
 $(document).ready(function(){ 
 $(‘.bxslider’).bxSlider({
 auto: true,
 autoControls: true
 });
 });
</script>
Um especialista em javascript pode otimizar e até criar seu próprio slideshow do zero. Mas nem 
por isso, você que não tem familiaridade com a linguagem, deve excluir o uso. Desenvolvedores 
do mundo todo constroem e documentam plugins javascripts com diferentes funções para uso 
da comunidade web. Alguns são gratuitos, outros pagos. O que você tem que avaliar é se real-
mente seu projeto necessita, o custo, o desempenho do site, a facilidade de uso, e por questão de 
segurança, se o recurso tem boas avaliações da comunidade. Bom, que tal ver o resultado?
“Aew!” Obtivemos um resultado satis-
fatório, ele funciona bem, mas não é o 
que queremos ainda. 
É bem provável que você já tenha visto 
um slideshow em algum site. 
No caso deste, as imagens aparecem e 
desaparecem do box movimentando-se 
para esquerda. Em suas extremidades 
possui setas para avançar ou voltar uma 
imagem. No canto esquerdo inferior 
possui pequenos círculos que indicam 
a quantidade de imagens que são apre-
sentadas e no lado inverso um botão 
para pausar e outro para acionar o slide.
Alguns destes elementos decidimos 
alterá-los com CSS para se adequar ao 
layout do site. Para executar esta tarefa 
exige de você, Galucho, determinação 
de investigador. 
Usaremos para isso o inspetor das fer-
ramentas para desenvolvedores de seu 
http://bxslider.com/
418 419
navegador. Para isso você deve clicar em cima do objeto que você pretender investigar com o 
botão direito e inspecionar o elemento.
Geralmente no canto direito inferior do seu navegador apresentará um quadro com as regras 
CSS que o elemento usa. Você pode editá-lo fornecendo valores para as propriedades e visualizar 
alterações na interface do site. Conforme a aparência fica como você quer, você usa os valores 
para alterar seu CSS. 
Neste slideshow decidimos eliminar a borda branca e os botões play e pause. Decidimos também 
centralizar os três círculos, aumentar de tamanho, mudar as cores e posicioná-los dentro do sli-
deshow. E para finalizar alterar a imagem dos botões de avançar e voltar e outras alterações.
Vou deixar como exercício para você identificar, no código anterior, quais regras foram respon-
sáveis pelas mudanças que decidimos praticar. Mas como sou bonzinho vou deixar uma dica: 
Quando falo em eliminar algo, quero dizer ocultar, com isso o valor “none” estará sempre presen-
te. Ok?
Outra coisa nova referente a propriedade “background-position” é o uso da técnica CSS Sprites. 
Ele consiste em unir imagens que poderiam estar separadas e inseridas individualmente via 
“background” em um só arquivo. E depois através de “background-position” cada elemento terá 
como fundo uma parte da nova imagem formada pelo arquivo. Foi o que fizemos com os fundos 
dos menus. Lembra-se desta imagem?
No slideshow o processo é similar e acontece nos botões de avançar e voltar. Como temos dois 
botões e ainda o efeito “:hover” sobre eles, precisaríamos de quatros imagens o que proporciona 
quatro requisições ao servidor deixando o carregamento do site mais lento. Com CSS Sprites 
unimos as quatros imagens em usa só e posicionamos com background-position. Isso proporciona 
uma só requisição ao servidor. 
Veja a imagem usada:
Os círculos debaixo representam o estado normal. O valor de posicionamento 
-32px no background garante que elas fiquem visíveis. Quando posicionamos 
o mouse sobre elas o posicionamento muda para 0 fazendo que as imagens de 
cima apareçam.
 
Para saber mais sobre CSS Sprites visite: http://www.maujor.com/tutorial/css-sprites.php
http://www.maujor.com/tutorial/css-sprites.php
420 421
Vamos ver como ficou nosso slideshow após as alterações nas regras?
A borda sumiu, os botões play 
pause também, os botões de 
avançar e voltar mudaram 
de cor (fundo), só faltando 
os três círculos que ficariam 
dentro do slideshow. Na ver-
dade eles estão ocultos de-
vido o pouco espaço nesta 
resolução. Eles aparecerão 
em ouras consultas de mídia.
Encerramos o slideshow para 
esta consulta de mídia! 
Próximo passo é estilizar o 
texto da missão do site.
Estilizando o texto da missão do site
O texto da missão do site e o texto que vem logo após o slideshow. Vamos às regras:
As regras já são bem conhecidas. Um diferencial que podemos destacar é um adereço especial 
que é inserido como imagem de fundo no topo do elemento “h2” de class “headline”. 
Veja o resultado:
422 423
Estilizando a galeria de imagens
Agora é hora de estilizar a mini galeria. Ela é formada por listas com imagens e textos clicáveis e 
com a função de levar o usuário para as seções na página de portfólio. Veja o código:
Resultado: 
Apesar de você não ver na figura logo 
após a miniatura da camiseta, vem uma 
miniatura que representa a categoria so-
bre o portfólio de Fotografia, que é uma 
habilidade do Galucho.
Grande parte das declarações usadas 
nesta mini galeria você já conhece. O 
que temos de novidade é a propriedade 
“opacity” que mexe com o nível de opa-
cidade, ou se você preferir, de transpa-
rência dos elementos. 
Quando mais próximo de zero(0) mais 
transparente é o elemento. Zero corres-
ponde a 100% de transparência. O valor 1 
não confere transparência ao elemento.
Na nossa declaração temos um valor de 
0.5 que é ativada quando o mouse é po-
sicionado em cima da primeira área de 
link onde reside a imagem e o elemento 
“span” de cor alaranjada. Este valor pro-
move 50% de transparência à imagem:
.feature li .thumb:hover img {
 opacity: 0.5;
 background: #000;
}
424 425
Com isso terminamos a estilização do conteúdo da página inicial para resoluções abaixo de 480 
pixels. Próximo objetivo é fazer os ajustes para resoluções de no mínimo até 480 pixels.
7.9 - Finalizar a estilização da Home Page para 
resoluções de até no mínimo 480 pixels
Olha só que bacana! Os ajustes que faremos para as próximas consultas mídias diminuem bas-
tante a partir de agora. Para você ter uma ideia o slideshow não sofre alterações para esta media 
query. Então só mexeremos em duas regras. Segue a primeira:
Com ela aumentamos o tamanho do texto e a entrelinhas da missão do site e fazemos ajustes 
nas margens. 
Na outra regra colocamos margins de 20 pixels nas laterais. Veja:
E é isso aí, Galucho!
 
Vamos para a próxima 
consulta de mídia. Bora?
426 427
7.10 - Finalizar a estilização da Home Page para 
resoluções de até no mínimo 767 pixels
Para esta faixa de resoluções mexeremos no slideshow e na mini galeria. Vamos a primeira regra:
A regra anterior estava oculta para as resoluções menores que 767 pixels devido a declaração 
“display:none”, o que tornava seus descendentes ocultos também. Com a aplicação da declara-
ção “display:block” enfim conseguimos ver o formato circular dos elementos descendentes esti-
lizados no tópico sobre as resoluções inferiores a 480 pixels.
Segunda regra:
Com esta regra colocamos os círculos a 20 pixels da base inferior. 
Você pode fazer testes com a propriedade “bottom” alterando os valores.
Veja o resultado:
O intuito desta regra é distribuir a lista de imagens em larguras iguais dentro da área disponível. 
Para isso precisamos usar um pouco de matemática básica.
Primeiro, vamos posicioná-las lateralmente com “float:left”. 
Terceira regra:
428 429
Depoisusaremos valores em porcentagem para que as larguras de cada imagem fiquem iguais e 
que somadas com as larguras de suas margens laterais cheguem a 100% (ou próximo disso).
Estipulamos então o valor de 1.5% para cada margem lateral. 
Então se você somar as margens esquerda e direita de um item da lista teremos 3%. Como são 
três itens o resultado da multiplicação resultará em 9%. Esta é a largura total das margens.
Com isso concluímos que o total da área dedicadas as listas de imagem é igual à área disponível 
(100%) menos a largura total das margens (9%). O que resulta em 91% de largura para serem divi-
didas entre as três listas com imagens. Portanto: 91 dividido por 3 resulta em aproximadamente 
30.3. Valor este que usaremos como porcentagem para a largura “width: 30.3%”.
Viu como a mini galeria ficou bacana com as imagens lado a lado? E assim elas permanecerão 
para as resoluções acima de 991 pixels. Vamos ver?
7.11 - Finalizar a estilização da Home Page para 
resoluções de até no mínimo 991 pixels
Também mexeremos em poucos itens para esta consulta de mídia. Segue a primeira regra:
Na imagem acima aumentaremos o tamanho do texto da missão do site e o espaço entrelinhas.
Segunda regra:
Esta segunda você conhece bem. Setaremos zero para todas as margens do bloco.
Terceira:
430 431
Até poderíamos manter as declarações da consulta da mídia anterior, mas optamos por deixar 
valores de largura e margens fixos para que os espaços de respiro entre as imagens fiquem se-
melhantes.
E assim terminamos a nossa Home! :D
Parabéns Galucho!!!
Você está de parabéns Galucho por chegar até aqui.
 
A Home Page para todas as resoluções está pronta.
 
Estamos a poucos passos de encerrar a construção do site do Galucho. E para você chegar com 
toda energia sugiro aquele descanso para refrescar a mente.
 
Vemo-nos na página de portfólio. Até!
Home Page completa: 
http://ebookhtmlcss.com/site-
-galucho/index.html
http://ebookhtmlcss.com/site-galucho/index.html
http://ebookhtmlcss.com/site-galucho/index.html
http://ebookhtmlcss.com/site-galucho/index.html
432 433
7.12 - Completar o restante dos códigos HTML da 
página de portfólio
Para a página de portfólio usaremos códigos similares aos usados na mini galeria da Home Page. 
Cada mini galeria representará um seção do portfólio, cada seção mostrará três trabalhos, sendo 
que as seções serão Web Design, Design Gráfico e Fotografia.
Vamos ao código da seção Web Designer:
Veja o resultado: 
Veja que coisa bacana: estamos falando de HTML, mas pelo visual da figura acima não teremos 
tanto trabalho com CSS. A página de portfólio, por repetir alguns seletores usados na Home 
page, tem boa parte dos elementos estilizados. Isso tanto para as menores resoluções (imagem 
à esquerda) quanto nas maiores (imagem à direita). Só estão faltando pequenos ajustes, é claro.
Porém, em termos de conteúdo, ainda não está bacana. Não está do jeito que o Galucho quer. Ele 
deseja que seu portfólio tenha o título de cada trabalho junto com uma descrição. 
Como sabemos que todos Galuchos e Galuchas são pessoas espertas ele já pensou em uma so-
lução bacana para exibir o que pretende.
Você reparou bem neste código?
<a href=”#test-popup1” class=”open-popup-link thumb”>
434 435
Primeiro temos a class “thumb”, já apresentada a nós, que serve para estilizar o link. Entretanto 
temos duas novidades. Uma é a outra class “open-popup-link”. Com ela a nossa intenção é que 
quando o usuário “clique em uma imagem da mini galeria se abra uma caixa sobre a interface do 
site”. Esta caixa terá a imagem completa de cada trabalho do Galucho mais o título e a descrição 
do projeto, sacou?
E aí sim, vai ficar do jeito que o Galucho quer. E os visitantes poderão ver e entender os trabalhos 
do Galucho.
E o que a class “open-popup-link” tem a ver com isso? Muita coisa! 
A caixa que se abre acima da interface do site é decorrente de um efeito chamado “lightbox”. Este 
é um efeito muito comum na web e com certeza você já viu. E ele é possível através de javascript. 
A class “open-popup-link” chama uma função específica de um script quando clicamos na ima-
gem e esta função abre a caixa. E nessa hora que entra em ação a segunda novidade.
O “#test-popup1” encontrado dentro do atributo “href” indica que haverá um acesso para alguma 
parte dentro da página. E que parte seria essa?
Bom, cada link do código acima tem seu próprio “#test-popup...”, #test-popup1, #test-popup2, 
#test-popup3, e consequentemente eles acessarão elementos com IDs correspondentes (id=tes-
t-popup1”) e assim por diante. O mais bacana é que os conteúdos destes elementos aparecerão 
dentro da caixa lightbox.
Então está na hora de inserir mais código no documento logo após o fechamento de “ul”. Veja:
<div id=”test-popup1” class=”white-popup mfp-hide”>
 <img src=”img/chief-of-design-blog.jpg” alt=”Chief of Design” width=”898” height=”444”>
 <h3>Descrição do projeto</h3>
 <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tin...</p>
 <button title=”Close (Esc)” type=”button” class=”mfp-close”>×</button>
</div>
Não coloquei o código completo. Sabemos que se trata de 3 trabalhos por seção, então tudo 
que temos que fazer é repetir mais duas vezes o código acima. Aí, nós mudaremos o número do 
“#test-popup1”, o endereço e o tamanho da imagem.
Como o site do Galucho é fictício e para fins didáticos, manteremos os textos dos cabeçalhos “h3” 
e dos parágrafos em todas as caixas. Entretanto sabemos que em condições normais estes textos 
seriam diferentes e retratariam cada trabalho de forma personalizada. Veja a seguir a imagem dos 
códigos para os três trabalhos da seção “Web Design”.
Temos um elemento 
HTML até aqui não 
usado. É o “button”. 
Ele cria um botão 
clicável e terá a fun-
ção de fechar a caixa 
lightbox quando o 
usuário clicar em “x”.
O nome do plugin 
javascript que fará a 
mágica toda se cha-
ma “Magnific Popup” 
(http://dimseme-
nov.com/plugins/
magnific-popup/). 
Quando ele tiver instalado e configurado em nosso documento todo o conteúdo apresentado no 
código anterior ficará oculto e você só verá as mini galerias, porém enquanto isso não acontece 
o que temos é um verdadeiro caos de imagens e textos. Então vamos ao que interessa que é ins-
talar o plugin.
436 437
Primeiro baixaremos o pacote de arquivos no site do desenvolvedor do plugin e os colocaremos 
dentro do nosso diretório. Importante ler a documentação do site. Em seguida, digitaremos antes 
de nossa folha de estilo, o código que linka para o CSS do plugin e aproveitamos para deletar a 
linha de código do plugin Bxslider que não será usado nesta página:
<link rel=”stylesheet” href=”magnific-popup.css”> 
<link rel=”stylesheet” href=”estilos.css” media=”all”>
Agora é hora de ir antes da tag de fechamento do elemento “body” para colocar os códigos javas-
cript do plugin. Aproveitaremos e deletaremos também o script do Bxslider. Veja:
 <script src=”js/jquery-1.7.1.min.js”></script>
 <script src=”js/combo-navi.js”></script> 
 <script src=”js/css3-mediaqueries.js”></script>
 <script src=”js/jquery.magnific-popup.js”></script>
 <script type=”text/javascript”>
 $(‘.open-popup-link’).magnificPopup({
 type:’inline’,
 midClick: true 
 });
 </script> 
</body>
Agora com tudo devidamente instalado é hora de testar. Vamos clicar na primeira imagem do 
portfólio do Galucho para ver o resultado:
Bom, podemos dizer que 
o efeito funcionou parcial-
mente, isso porque estetica-
mente falando e em termos 
de usabilidade não chega-
mos ao resultado que espe-
rávamos. 
Mal conseguimos ler os tex-
tos e a imagem do trabalho 
do Galucho extrapola as di-
mensões do dispositivo...
Imagino que você já deva sa-
ber o motivo. 
Tudo isso acontece porque 
estamos usando as folhas de 
estilos do plugin e precisa-
mos mudar algumas decla-
rações para que se adéque 
ao nosso layout.
É o que faremos logo, logo... 
Primeiro vamos completar o 
restante do código HTML. Fal-
ta inserirmos os trabalhos deDesign Gráfico e de Fotografia 
do Galucho. 
438 439
Como o código é extenso e repetitivo não vamos reproduzir aqui. Porém como instrução basta 
copiar todos os códigos que estão entre as tags “<section></section>” referente à seção sobre 
“Web Design”. Depois cole duas vezes e substitua os títulos dos cabeçalhos “h3” pelos títulos das 
seções correspondentes (Design gráfico e Fotografia).
Outras mudanças serão necessárias: 
As âncoras “#test-popup...” deverão ter sequencias ate atingir o número 9 de “#test-popup9”, 
porque temos um total de 9 trabalhos no portfólio do Galucho. Três por seção. O mesmo deverá 
acontecer com <div id=”test-popup1” class=”white-popup mfp-hide”>. Os IDs de cada “div” de-
verão seguir a sequencia de 1 até 9, ou seja até <div id=”test-popup9” class=”white-popup mfp-
-hide”>.
E para encerrar cada imagem (maior) dentro do caixa lightbox deve corresponder, óbvio, a cada 
imagem clicável encontrada na lista da galeria.
Agora finalmente já podemos partir para a estilização da página portfólio. 
Vamos nessa Galuchos!!!
7.13 - Finalizar a estilização da página de portfó-
lio para resoluções menores que 480 pixels
A primeira coisa que iremos nos preocupar é dar uma aparência decente a caixa lightbox que 
montamos na etapa anterior. São poucas regras CSS que usaremos.
Veja a seguir:
440 441
Vamos ver o resultado? Veja o antes e o depois:
Procuramos usar o mesmo background do corpo do site e o mesmo tipo de fonte para os textos. 
As propriedades já são bem conhecidas por você. E o mais bacana é que não precisamos mudar 
nada nas próximas consultas de mídia. Veja esta imagem para resoluções acima de 990 pixels. 
Agora os trabalhos do Galucho podem ser vistos sem problemas, entretanto ainda temos re-
gras para esta consulta de mídia. 
 
Lembra quando eu falei que a página estava bacana, mas precisava de uns pequenos ajustes?
Um detalhe que não pode passar desapercebido é que a mini galeria usada nas duas páginas 
apesar de terem, até agora, os mesmos estilos, elas não são iguais. Em comparação com a 
galeria da Home Page a galeria do portfólio não tem os botões alaranjados e nem a descrição 
logo abaixo deles. Isso faz com que as imagens de cada seção fiquem “grudadas” uma nas ou-
tras nas resoluções menores. 
Parece que a solução é fácil, bastando colocar um valor de “margin-bottom”. Porém se fizer-
mos isso alteramos o layout da Home. E agora?
442 443
Outra coisa que pretendemos fazer é eliminar também aquele adereço que fica acima dos subtí-
tulos de cada seção, mas isso também alteraria o layout da Home Page. E agora?
Quando você quer alterar algum coisa em comum entre páginas sem bagunçar o estilos, uma 
sugestão é usar um seletor extra, em um elemento, na pagina que você quer fazer a alteração. 
Mas como proceder? Veja um exemplo:
O código CSS usado faz as imagens “grudarem” nesta página, mas não na Home Page é este:
Vemos que temos margens superior e inferior de valor zero. Na Home page não fez diferença, 
porque tem mais elementos HTML com estilos que promovem uma área de respiro. Como na 
página de portfólio não possui esses elementos o ideal seria declarar, por exemplo, uma margem 
inferior de 20 pixels. Então vamos a mágica!
Procuraremos um elemento ancestral bem acima desta lista. No caso, decidimos usar a div de 
class “container”. Agora colocaremos uma nova class. A chamaremos de “portfólio”:
<div class=”container portfolio”>
Com isso basta apenas adicionar na frente do seletor que você quer mudar uma declaração o 
seletor no elemento ancestral. Veja:
Note que não foi necessário colocar a declaração “width:auto”, pois a regra anterior já assume. 
Nosso novo seletor só vai mudar a declaração que nos interessa. E como ná Home Page não 
possui ‘<div class=”container portfolio”>’, qualquer alteração que fizermos usando o seletor do 
elemento ancestral não danificará seu layout. 
Agora veja os códigos restantes. 
Praticamente a página de portfólio tem poucas alterações porque recebe grande parte dos estilos 
já declarados no arquivo “estilos.css”. Teremos apenas pequenos ajustes:
No código acima um pequeno ajuste na margem inferior do laço da fita. E as próximas regras são 
ajustes na área de conteúdo:
E é só isso mesmo! Mexemos mais na caixa de lightbox do que no layout da página propriamente 
dito. Vamos para a próxima consulta de mídia?
444 445
7.14 - Finalizar a estilização da página de portfó-
lio para resoluções de até no mínimo 481 pixels
Sinto decepcionar você, mas se você 
esperava uma chuva de regras CSS, mas 
isso é tudo que temos que acrescentar:
 
E agora veja ao lado como a página está 
ficando:
7.15 - Finalizar a estilização da página de portfó-
lio para resoluções de até no mínimo 767 pixels 
E a redução de códigos só 
tende a diminuir. Na verda-
de a única coisa que faremos 
aqui é acrescentar o seletor 
“portfolio .feature li” para so-
brescrever as regras da con-
sulta de mídia anterior. 
Este código nós criamos 
quando estávamos estilizan-
do a Home Page.
447446
7.16 - Finalizar a estilização da página de portfó-
lio para resoluções de até no mínimo 991 pixels
Da mesma forma que o tópi-
co anterior, a única coisa que 
faremos aqui é acrescentar o 
seletor “portfolio .feature li” 
para sobrescrever as regras 
da consulta de mídia anterior. 
Este código também foi criado 
quando estávamos estilizando 
a Home Page para esta con-
sulta de mídia.
Parabéns!!! Terminamos o site do Galucho!!!
Seguimos todas as etapas do processo começando pelo o wireframe, passando pela codifica-
ção HTML e finalizando com estilização dos elementos para diferentes consultas de mídia.
Comemore! Você está habilitado a desenvolver páginas web com HTML e CSS usando as tags e 
propriedades mais usadas. O próximo passado e ir aumentando seu repertório conforme adqui-
re experiência.
Sucesso para você, Galucho!
Site completo: 
http://ebookhtmlcss.com/
site-galucho/index.html
Arquivos completo do site:
 
http://ebookhtmlcss.com/
site-galucho/index.html
http://ebookhtmlcss.com/site-galucho/index.html
http://ebookhtmlcss.com/site-galucho/index.html
http://ebookhtmlcss.com/site-galucho/index.html
http://ebookhtmlcss.com/site-galucho/index.html
http://ebookhtmlcss.com//arquivos/capitulo-7/arquivos-site-galucho.rar
http://ebookhtmlcss.com//arquivos/capitulo-7/arquivos-site-galucho.rar
http://ebookhtmlcss.com//arquivos/capitulo-7/arquivos-site-galucho.rar
http://ebookhtmlcss.com//arquivos/capitulo-7/arquivos-site-galucho.rar
448 449
O mundo começa agora. 
Apenas começamos... 
Tomei a liberdade de usar este trecho final de uma canção da famosa banda Brasileira Legião 
Urbana para iniciar os trechos finais deste E-book. 
Apesar de concluído, a leitura deste E-book, seu mundo no desenvolvimento web começa agora. 
Você apenas começou!
Entretanto, você começou em vantagem em relação a muitos que por não saberem que o come-
ço é difícil tentam abraçar o mundo querendo aprender de uma vez tudo o que existe de técnicas 
e ferramentas. Nossa intenção foi de abrir sua cabeça para o buscar primeiro essencial, o “crème 
de la crème”: focar no que é primordial para você conseguir escrever o seu próprio código e as-
sim “sair do zero”.
 “É fazendo que se aprende a fazer aquilo que se deve aprender a fazer.”
 
 Aristóteles
Espero, de todo coração, que você perceba que este E-book cumpriu sua missão. Posso afirmar 
que em números ele cumpriu. Lembra de nossa promessa inicial? Focar nos fundamentos que 
trazem efetivamente a maior parte dos resultados, que já podem ser aplicados em poucos dias 
até que lhe traga a “fluência” necessária para assumir seus primeiros projetos? Traduzindo o tão 
falado esquema 80/20? 
Pois bem, numericamente falando, trabalhamos aproximadamente dentro deste esquema. Você 
pode até não ter percebido, mas foi que aconteceu.
Se minha contagem não estiver errada existem, para todas as versões de HTML, 131 elementos 
(fonte: http://www.w3schools.com/tags/default.asp).
Nós conseguimos montar o site do Galucho

Mais conteúdos dessa disciplina