Curso HTML e Css
Curso HTML e Css
Curso HTML e Css
MÓDULO 01 ▪ CAPÍTULO 01
HISTÓRIA DA
INTERNET
HISTÓRIA DA
INTERNET
Nessa perspectiva, o governo dos Estados Unidos temia um ataque russo às bases
militares. Um ataque poderia trazer a público informações sigilosas, tornando os EUA
vulneráveis.
O começo de tudo
A ARPANET funcionava através de um sistema conhecido como chaveamento de
pacotes, que é um sistema de transmissão de dados em rede de computadores no
qual as informações são divididas em pequenos pacotes, que por sua vez contém:
Já na década de 1970, a tensão entre URSS e EUA diminui. As duas potências entram
definitivamente naquilo em que a história se encarregou de chamar de Coexistência
Com isso, a ARPANET começou a ter dificuldades em administrar todo este sistema,
devido ao grande e crescente número de localidades universitárias contidas nela.
Dividiu-se então este sistema em dois grupos, a MILNET, que possuía as localidades
militares e a nova ARPANET, que possuía as localidades não militares. O
desenvolvimento da rede, nesse ambiente mais livre, pôde então acontecer. Não só os
pesquisadores como também os alunos e os amigos dos alunos, tiveram acesso aos
estudos já empreendidos e somaram esforços para aperfeiçoá-los.
Além desses backbones, existem os criados por empresas particulares. A elas são
conectadas redes menores, de forma mais ou menos anárquica. É basicamente isto
que consiste a Internet, que não tem um dono específico.
A Internet no Brasil
Em 1989, o Ministério da Ciência e Tecnologia lança um projeto pioneiro, a Rede
Nacional de Ensino e Pesquisa (RNP). Existente ainda hoje, a RNP é uma
organização de interesse público cuja principal missão é operar uma rede acadêmica
de alcance nacional. Quando foi lançada, a organização tinha o objetivo de capacitar
recursos humanos de alta tecnologia e difundir a tecnologia Internet através da
implantação do primeiro backbone nacional.
Outro avanço alcançado pela RNP ocorreu em 2002. Nesse ano, o então presidente da
república transformou a RNP em uma organização social. Com isso ela passa a ter
maior autonomia administrativa para executar as tarefas e o poder público ganha
meios de controle mais eficazes para \avaliar e cobrar os resultados. Como objetivos
dessa transformação estão o fornecimento de serviços de infraestrutura de redes IP
avançadas, a implantação e a avaliação de novas tecnologias de rede, a disseminação
dessas tecnologias e a capacitação de recursos humanos na área de segurança de
redes, gerência e roteamento.
https://www.youtube.com/
Módulo 1 do curso:
playlist?list=PLHz_AreHm4dkZ9-
atkcmcBaMZdmLHft8n
Não guarde conhecimento. Ele é livre. Compartilhe o seu e veja ele se espalhando pelo mundo 🌎
MÓDULO 01 ▪ CAPÍTULO 02
COMO A INTERNET
FUNCIONA?
COMO A
INTERNET
FUNCIONA?
Você é daquele -po de pessoa curiosa, que não
sossega enquanto não descobre como
funcionam as coisas? Eu sou assim! Hoje em dia,
a maioria das pessoas que conhecemos estão
conectadas à Internet. Mas você sabe como
funciona essa comunicação? Como é possível
conversar ou mandar um arquivo para uma
pessoa que está no Japão e tudo chegar em
menos de 1 segundo? Esse é o nosso desafio
nessa aula.
Tem gente que acha que um computador é um dispositivo super inteligente e cheio de
capacidades de decidir nosso destino, mas na verdade ele é apenas uma máquina
capaz de analisar sinais e fazer contas simples de uma maneira super rápida!
Mas é claro que o que circula dentro do seu computador não são pequenos números,
são ondas (sinais). No caso de equipamentos eletrônicos processados, as ondas se
parecem com as representadas a seguir.
Esta é uma onda que representa os bits, também chamada de onda digital
Como vimos na aula anterior, a Internet é uma rede gigantesca que interliga várias
outras redes ao redor do mundo. E precisamos ter meios físicos para levar esses
sinais de um lado para o outro.
E se nesse exato momento você está confuso(a) com esse conceito, saiba que a
maioria das transmissões entre continentes não é realizada pelos Satélites, como a
maioria das pessoas costuma pensar. Os satélites possuem uma limitação de tráfego e
sofrem muito com interferências, e é por isso que os cabos de fibra ótica devem ser
passados pelos oceanos. Um trabalho incalculável, mas necessário.
Mas não dá para esses cabos submarinos saírem pela praia e seguirem caminho até a
sua casa, e por isso precisam se interligar a outros sistemas de comunicação. Alguns
dos sistemas utilizados sempre foram a telefonia tradicional, os sistemas de TV a
cabo, os sinais via satélite e até as simples redes de radiofrequência.
De uma maneira bem resumida, modular é conseguir ler uma onda no formato A
compatível com um tipo de sistema de comunicação e convertê-la para um formato B,
compatível com outro tipo de sistema.
E é exatamente para isso que servem aqueles aparelhos que você instala em sua casa
para começar a receber Internet doméstica
Cliente e Servidor
Volte uma página e olhe aquele mapa de
novo. Imagine que o ponto A é você na
escola pedindo uma pizza. O ponto B é a
pizzaria, que vai te fornecer o pedido que vai
matar sua fome. Quando o pedido for
confirmado, o motoboy que vai fazer a
entrega é o pacote. Ele vai levar seu pedido
até você por uma rota.
IMPORTANTE!
Quando você estudar um pouco mais sobre redes de comunicação,
vai descobrir que a função MODEM desses aparelhos é apenas uma
das características do produto. Na verdade, esse dispositivo é um
GATEWAY, que vai se ligar aos ROTEADORES do seu provedor de
acesso, mas resolvi simplificar a explicação para não aprofundar tanto
assim no início de tudo.
Um servidor pode estar no seu bairro, na sua cidade, no seu país ou até mesmo do
outro lado do mundo. Os pacotes podem girar o mundo todo em poucos segundos e o
resultado será exibido na tela do seu celular/computador como se fosse magia, mas é
pura TECNOLOGIA!
Mas como será que o mecanismo da Internet consegue descobrir o local exato de um
site? Como ele descobre em que servidor ele está? E como ele consegue encontrar a
posição exata do servidor no Globo? Aí entramos no próximo assunto.
Identificando os nós
Como vimos anteriormente, a Internet funciona baseada em um conjunto de
protocolos chamado TCP/IP. Um protocolo garante que todas as comunicações
seguirão um mesmo padrão, permitindo que dispositivos que são diferentes, com
tecnologias completamente distintas, possam se trocar mensagens.
Uma das funções do TCP/IP, mais especificamente do IP, é identificar os nós. Mas o
que seria esse nó?
A resposta é simples: um nó é cada ponto que está conectado à rede. Quando você
“se conecta” à Internet, recebe uma identificação única. Essa identificação é um
ENDEREÇO IP.
Os IPs mais modernos (IPv6), usam 128 bits ao todo (o que é 4x mais bits que o
IPv4).
Ex: 2001:0db8:85a3:08d3:1319:8a2e:0370:7344
NICbr: https://youtu.be/_JbLr_C-HLk
Acessando um servidor
Agora que você já sabe como os pontos são identificados, vamos criar um simples
cenário aqui. Analise a imagem abaixo e veja que você estaria no ponto A, tentando
acessar o site que está guardado no servidor que é o ponto D.
Você também deve ter notado que o ponto A tem um IP (201.17.81.243) e o ponto D
também tem o seu (66.220.158.68). Agora imagine que você deva ter que decorar o
IP do seu site favorito. Isso dificultaria todo o processo, não é?
NICbr: https://youtu.be/ACGuo26MswI
É possível fazer um exercício simples para descobrir o seu próprio IP ou até mesmo
descobrir o IP atual de um site que você esteja acessando. Descubra como, lendo o
quadro informativo abaixo.
1. Você está no ponto A (conectado à Internet) e digita o endereço do site que está
querendo acessar (ex: www.facebook.com).
2. A arquitetura da Internet (ponto B) vai encontrar o Servidor DNS que terá o
registro do IP referente ao nome que você digitou.
3. O Servidor DNS, que é o ponto C do nosso desenho, vai resolver o endereço e
retornar o IP atual do site que você pediu (ex: no dia em que eu escrevi esse
material, o IP atual do facebook.com era 66.220.158.68).
4. Uma vez que seu navegador já sabe o IP que deseja acessar, vai poder se
direcionar diretamente ao servidor correto.
5. Assim que chega uma solicitação ao ponto D, ele vai procurar a página solicitada e
te enviar uma cópia do documento para o seu computador.
IP2Location: https://www.iplocation.net
EXTRA: Depois que você descobrir o IP do Facebook, tente digitar o
número dele no lugar do endereço do site no seu Google Chrome e
aperte o enter. Surpresa!
OBS: Caso você não solicite um documento específico, o servidor vai te enviar o
arquivo de índice (geralmente chamado index.html).
6. Agora que o seu computador no ponto A tem o arquivo HTML, vai poder analisá-lo
para descobrir que arquivos extras ele vai precisar (fotos, vídeos, estilos, etc). A
partir daí ele vai fazer outras solicitações ao ponto D, para que ele possa enviar
esses recursos extras. É por conta disso que os sites que você visita vão
aparecendo aos poucos.
O domínio é um nome único que vai conseguir identificar o seu servidor ou as suas
páginas. Para conseguir um domínio, você deve pagar pelo direito de usá-lo por um
período mínimo de 1 ano.
cursoemvideo.com
faetec.rj.gov.br
github.io
universidadebrasil.edu.br
Além disso, alguns desses ainda indicam o país (.br). Esses são os
TLD (Top Level Domain).
GTLD: São TLDs genéricos, sem indicação de país. Alguns dos domínios genéricos são
.com, .net, .gov, .org, .io, .info, .online, .store, etc.
ccTLD: São TLDs com designação do país (coutry code). Alguns dos domínios desse
tipo são .com.br, .edu.us, .co.fr, .jp, .es, etc.
Da junção entre o nome e a terminação, temos um domínio. Esse domínio pode ser
usado para ter acesso ao seu servidor, seja ele web, servidor de ftp, servidor de e-
mail (as contas de e-mail são no formato [email protected], onde o
nome do usuário vem antes da @ e o domínio vem depois)
CUIDADO! Tem muita gente que pensa que o www que vem
antes da URL faz parte do domínio. Não faz! Esse www é um sub-
domínio que aponta diretamente para o seu servidor web padrão.
Nesse caso o www, images, maps e mail são sub-domínios do domínio google.com.br.
Sacou?
E por fim, uma URL também pode ter um caminho extra, que indica pastas a
percorrer para achar um arquivo específico. Por exemplo:
https://www.github.com/gustavoguanabara/html-css/tree/master/aulas-pdf
Como vimos, o domínio é uma maneira mais fácil para que outras pessoas possam
chegar aos arquivos que vão compor o seu site. Mas onde estarão esses arquivos?
Mas seu computador fica ligado 24h por dia, 7 dias por semana,
365 dias ao ano? Se faltar luz, você tem uma sub-estação de
energia pra manter tudo funcionando em caso de panes? Você
tem uma banda de internet suficiente para suportar milhares
ou até milhões de acessos simultâneos?
https://www.youtube.com/
Módulo 1 do curso:
playlist?list=PLHz_AreHm4dkZ9-
atkcmcBaMZdmLHft8n
Não guarde conhecimento. Ele é livre. Compartilhe o seu e veja ele se espalhando pelo mundo 🌎
MÓDULO 01 ▪ CAPÍTULO 03
COMO FUNCIONA A
HTML E AS CSS?
COMO FUNCIONA
A HTML E AS
CSS?
Pode ser estranho pra você ler “a HTML” e
também “as CSS”. Muita gente trata as duas
tecnologias com o ar@go masculino na maioria
das vezes. Na verdade, isso nem está totalmente
errado, mas eu sempre vou considerar defini-las
pela tradução dos seus termos. HTML é uma
Linguagem de Marcação Hipertexto. CSS são as
Folhas de Es@lo em Cascata. Notou que são
termos em feminino? Pois as polêmicas não
param por aqui não…
HTML trabalha fundamentada apenas nas marcas ou etiquetas (do Inglês tag) e as
CSS funcionam baseadas nos seletores, propriedades e valores. Você vai entender
mais sobre isso mais pra frente.
Sendo assim, em breve você terá a base suficiente para conseguir dizer com certeza
que HTML e CSS não são linguagens de programação.
HTML Conteúdo
CSS Estilo
JavaScript Interatividade
Abra aí o seu site de notícias favorito. Ao abrir uma determinada notícia, você vai ver
o texto, as imagens, os vídeos e todo aquele conteúdo que compõe a notícia em si.
Isso tudo foi criado em HTML. Ela é focada em conteúdo.
Agora preste atenção nas cores, na posição dos componentes e organização visual do
conteúdo em colunas, blocos visuais e tudo mais. Tudo foi definido em CSS. Ela é
focada no design/estilo.
Finalmente, provavelmente existe o menu do site. Quando você clica nele, acontece
uma animação. Ao mover o mouse sobre as sessões, é possível que aconteçam
algumas interações interessantes. Isso foi desenvolvido com ajuda de JavaScript. Ela
é uma linguagem focada nas interações.
Na imagem anterior, você consegue perceber o uso da tag <p> para a criação de um
parágrafo simples. A maioria das tags possuem uma abertura e um fechamento, e
você identifica isso pela presença da barra no fechamento da tag.
Além disso, as tags também podem ter atributos e valores, que vão configurar seu
comportamento:
APRENDA MAIS: Sempre que você quiser saber quais são as tags
que estão sendo consideradas obsoletas pelo W3C, basta consultar a
referência oficial da linguagem, disponível no site abaixo e acessar o item
15: Obsolete Features.
De forma simples e direta (vou até escrever “gritando” aqui, pra dar ênfase): NÃO
USE TAGS OBSOLETAS NO SEU SITE! Ufa! Que alívio colocar isso pra fora e
desabafar 😅
As configurações das CSS são realizadas através dos seletores. Vamos ver a
anatomia de um seletor.
Note que, ao final de cada declaração, temos que colocar ponto-e-vírgula para
indicar que ela se encerrou.
Todas as propriedades devem ter seu valor, e eles devem ser separados por dois
pontos. Você não é obrigado(a) a usar nenhuma declaração específica. Só utilize a
propriedade que você realmente deseja alterar.
https://www.youtube.com/
Módulo 1 do curso:
playlist?list=PLHz_AreHm4dkZ9-
atkcmcBaMZdmLHft8n
1. Qual das frases a seguir é a única 5. Qual tag abaixo não tem fechamento?
tecnicamente CORRETA de se falar?
<title>
“Eu programo em linguagem HTML” <meta>
“Eu programo em linguagem CSS” <strong>
“Eu programo em linguagem <head>
JavaScript”
“Eu programo em linguagem VSCode” 6. Na tag <a>, o href é um(a):
conteúdo
2. A sigla HTML significa: parâmetro
Host Text Makeup Language característica
HyperText Markup Language valor
Hyper Tree Makeup Language
Host Tree Markup Language 7. Todas as configurações visuais dos
elementos HTML são realizadas pela
3. A sigla CSS significa: linguagem CSS. Agrupamos todas as
declarações CSS de um mesmo
Cascading Style Sheets elemento dentro de um(a):
Cell Safety Science
Characteristic Score Style seletor
Chief Scale Sheets parâmetro
valor
4. Correlacione a coluna da esquerda selecionador
com a da direita, de acordo com o foco
de cada uma das tecnologias: 8. Para mudar a cor de um texto em
CSS, configuramos qual propriedade?
( 1 ) HTML ( ) interatividade text
( 2 ) CSS ( ) conteúdo text-color
( 3 ) JS ( ) estilo color
font-color
1 - 2 - 3
3 - 2 - 1
1 - 3 - 2
3 - 1 - 2
Não guarde conhecimento. Ele é livre. Compartilhe o seu e veja ele se espalhando pelo mundo 🌎
MÓDULO 01 ▪ CAPÍTULO 04
PRIMEIROS PASSOS
COM HTML5
PRIMEIROS
PASSOS COM
HTML5
Pronto! Já vai começar a codificação que você
está esperando tanto! Chegou a hora de colocar
a mão na massa e criar os primeiros
documentos HTML. E faremos do jeito
tradicional: devagar e sempre. Ao uGlizar esse
método que eu prefiro aplicar às minhas aulas,
veremos exercícios bem simples, com a
aplicação de cada tag nova isoladamente. Tem
gente que acha melhor começar com um
projeto grande, mas em sala eu opto sempre por
esse método. Vamos lá?
Para construir o curso de HTML5 que você encontra no YouTube, utilizei os editores
Notepad++ e o WebStorm da JetBrains. Naquela época eu usava muito esses dois.
Hoje em dia, me adaptei 100% ao Visual Studio Code. Por conta disso, usaremos
esse editor, que foi criado pela Microsoft, é distribuído gratuitamente e funciona no
Windows, Linux e Mac.
Projetos em pastas
Se eu puder te dar um conselho - e eu me sinto nesse direito - ele conselho seria:
ORGANIZE-SE! Quem começa a desenvolver coisas e joga tudo na Área de
Trabalho do Windows ou dentro da pasta Meus Documentos do seu computador,
em pouco tempo fica simplesmente perdido(a).
Para isso, vou te dar uma dica valiosa. Vá até a sua pasta de Documentos e crie uma
pasta chamada html-css. Essa será a sua pasta principal do seu curso. Dentro dessa
pasta, crie duas pastas: desafios e exercicios (note que eu não usei acentuações,
nem espaços, nem letras maiúsculas).
Agora vamos abrir o VS code e abrir essa pasta que acabamos de criar. Se você ainda
está com a tela de Bem-vindo (Welcome) aberta, basta clicar no link Abrir Pasta…
que está na seção Início ao lado esquerdo (veja na foto) e escolher a pasta html-css
que criamos anteriormente.
IMPORTANTE:
Não se esqueça
de usar apenas
letras minúsculas, não usar acentos e não
colocar espaços.
Para criar o código base HTML que vimos no capítulo anterior, vá até as linhas do
arquivo index.html e digite apenas um ponto de exclamação ! e em seguida
pressione a tecla Enter no seu teclado.
Viu só o resultado? O código foi criado automaticamente e precisa apenas de algumas
pequenas atualizações. Complete seu código, adicionando as linhas para deixar o
código igual ao que está representado abaixo.
A linha 2 foi alterada, indicando que nossa página terá seu conteúdo em Português
Brasileiro. A linha 6 também, para que nosso título seja Primeiro site.
Se você se organizou direitinho e salvou o arquivo no local certo, vai poder abrir no
seu explorador de arquivos a pasta Documentos/html-css/exercicios/ex001 e lá
dentro vai encontrar o arquivo index.html. Clique com o botão direito sobre esse
arquivo html e escolher a opção para Abrir no Google Chrome.
https://www.youtube.com/
Módulo 1 do curso:
playlist?list=PLHz_AreHm4dkZ9-
atkcmcBaMZdmLHft8n
Não guarde conhecimento. Ele é livre. Compartilhe o seu e veja ele se espalhando pelo mundo 🌎
MÓDULO 01 ▪ CAPÍTULO 05
CARACTERES,
PARÁGRAFOS E
QUEBRAS DE LINHA
CARACTERES,
PARÁGRAFOS E
QUEBRAS DE LINHA
Crie aí na sua casa uma pasta ex002 dentro da sua pasta que criamos em
Documentos/html-css/exercicios para deixar tudo organizando. Lá dentro, crie um
documento index.html e crie o código base do HTML5 (já ensinei isso
anteriormente).
O que nós criamos no código aí acima foram dois parágrafos. Note que eu criei várias
quebras de linha dentro de cada parágrafo. Salve o seu projeto e veja o resultado.
A tag <br> significa literalmente “quebre a linha” (break row) e agora que você sabe o
significado, não precisa nem de explicação né?
Para isso, no lugar de usar os colchetes angulares <>, usamos caracteres especiais
referentes ao código desses símbolos. No código anterior, quando usamos:
• Um < estamos pedindo pra colocar o símbolo menor que (less than).
• Um > estamos pedindo para coloca o símbolo maior que (greater than).
Existem alguns outros símbolos que podem ser exibidos usando códigos. Esses
códigos são chamados de HTML Entities, basta uma breve consulta para descobrir
quais são as opções, mas vou te dar uma moral e colocar uma tabela com outras
opções.
© Copyright ©
€ Euro €
¥ Yen ¥
¢ Cent ¢
∅ Vazio ∅
∑ Soma ∑
Δ Delta Δ
https://www.w3schools.com/charsets/ref_utf_symbols.asp
Inserindo Emojis
Outra coisa que você pode adicionar às suas páginas são os emojis, onde cada
símbolo possui um código Unicode. Para uma pesquisa mais precisa e atualizada,
acesse o site da emojipedia.org.
E começam os desafios!
Lá no repositório, além do material em PDF e dos códigos dos
exercícios 100% disponíveis, também disponibilizamos alguns
desafios que devem ser resolvidos. Esses desafios não
incluem o código original e você deve tentar chegar à resposta
sem copiar nenhum código.
Com todo o conteúdo que vimos até essa aula, você já pode
resolver o desafio d001. Acesse o repositório público, abra a
área do curso de HTML+CSS e clique no link de acesso aos
desafios. Manda ver! Só não fica pedindo a resposta! Você
consegue resolver isso sozinho(a)!
https://www.youtube.com/
Módulo 1 do curso:
playlist?list=PLHz_AreHm4dkZ9-
atkcmcBaMZdmLHft8n
Não guarde conhecimento. Ele é livre. Compartilhe o seu e veja ele se espalhando pelo mundo 🌎
IMAGENS E
FAVICONS
E se nesse momento você está pensando: “mas quem vai processar um jovem aluno
que está aprendendo a criar sites usando imagens do Google?”.
Concordando ou não com isso, o fato é que a lei existe. E ir contra a lei é ficar
totalmente vulnerável aos efeitos causados por ela. Eu até sugiro que façamos uma
breve discussão sobre isso em sala de aula. Se eu não for seu professor, bata um
papo com ele sobre o assunto. Também sugiro que você converse sobre isso com
algum advogado especializado nesse ramo digital caso fique alguns dúvida (toda
família tem um tio ou vizinho advogado).
1. Seja o criador da própria arte. Use fotos que seu próprio cliente tirou ou que você
mesmo criou.
2. Consiga uma autorização legal de quem é o detentor dos direitos autorais. Isso
precisa de documentos específicos para tal.
3. Compre o direito de usar a imagem. Existem vários sites como o iStockPhoto,
DepositPhotos, ShutterStock, etc. Só fica de olho aberto e leia as regras, pois
na maioria dos casos essa imagem que você comprou só pode ser usada uma
única vez ou em um único projeto.
4. Use imagens de domínio público, pois essas você tem a liberdade de colocar no seu
site, seguindo as regras estabelecidas pelo autor.
• UnSplash
• Pexels
• FreePik
• Rawpixel
• Pixabay
• Libreshot
• Wikimedia Commons
Vamos mudar de assunto, já que possivelmente você não está se preocupando muito
com esse papo de direitos autorais, mesmo ele sendo muito importante para quando
você virar um profissional de verdade.
A grande vantagem do uso de arquivos JPG (em formato JPEG) é gerar arquivos
muito pequenos e que ocupam pouco espaço em disco. Isso é muito importante, pois
quando colocarmos nosso site no ar, ele tem que ser leve e carregar as imagens muito
rapidamente. Só toma cuidado para não exagerar na hora de configurar o nível de
compactação. Isso pode fazer com que sua imagem fique horrível e toda borrada (dá
só uma olhada na imagem abaixo).
Mas para entendermos melhor a explicação acima, vamos a um exemplo visual (já
que estamos falando de imagens né?)
De forma resumida, na hora de escolher o formato de imagem para o seu site, opte
sempre pelo formato JPEG com uma compactação entre 30% e 50%. O formato PNG
só deverá ser usado quando precisarmos de transparência na foto. Combinado?
A regra de outro nesses casos é: use imagens do tamanho certo! Vai precisar de
uma imagem que vai ter 200 pixels de largura? Gere um arquivo exatamente com
esse tamanho! Nada de ficar salvando arquivos gigantes e diminuindo o tamanho da
imagem com códigos.
Uma imagem 1920x1080 de 3MB não vai ficar mais leve se você mudar a largura dela
no seu CSS. Muito pelo contrário. Seu navegador vai levar um tempão pra carregar o
arquivo do seu servidor e vai exibir a imagem minúscula na tela.
Eu só te faço um alerta: analise a foto a seguir, onde eu mostro que o arquivo logo-
html.png estará na pasta raiz do projeto (mesmo local onde está o arquivo
index.html), enquanto o arquivo logo-css.png está localizado dentro da pasta fotos
que está na mesma pasta do projeto.
A posição dos seus arquivos vai fazer diferença e você deverá adaptar seu código para
poder carregar as imagens sem problemas. Agora vá até o Visual Studio Code e edite
o arquivo index.html, criando o código base de sempre e atualizando conforme o
que apresento a seguir:
Agora volte para a página anterior e analise as linhas 13 e 15. A linha 13 vai carregar
a imagem logo-css.png que está dentro da pasta fotos, como vimos anteriormente.
Note que foi necessário colocar o nome da pasta seguido de uma barra antes de
colocar o nome do arquivo. Se isso não for obedecido, simplesmente a imagem não
vai carregar!
Por fim, na linha 15 fizemos a carga de um arquivo que não estava na pasta do
projeto. A imagem js-small.gif está localizada em outro domínio, o jsdotgit.com.
Nesse caso, precisamos indicar o caminho completo (URL) da imagem.
Você pode obter a URL completa de qualquer imagem, abra um site no Google
Chrome, clique com o botão direito do mouse sobre a imagem e escolha a opção
“Copiar endereço da imagem”. Aí é só voltar no seu código HTML, colocar o cursor do
teclado dentro das aspas da propriedade src da sua imagem e apertar Ctrl+V. Faça
uma experiência em casa agora mesmo.
Tente ser objetivo na descrição da sua imagem, mas crie textos que fazem sentido.
Tem um monte de gente que coloca o texto “foto” como descrição de uma imagem. Aí
não dá!
Crie seu arquivo index.html dentro da pasta ex004, incluindo seu código base
automaticamente. Depois faça uma simples alteração na sua área <head>, incluindo
uma tag <link>, digitando apenas a palavra link em uma linha em branco e
escolhendo a opção link:favicon.
Pronto! É só dar uma olhada no nosso código acima e prestar atenção na linha 6. Se
você usou a dica que dei acima, não precisou digitar mais nada! Todo o código foi feito
automaticamente!
OBS: se seu arquivo não se chamar favicon.ico, você deve adaptar a linha 6,
colocando o nome do seu ícone.
Sendo assim, pelo menos por enquanto, continuo dando o meu conselho: use o
formato ICO.
Com todo o conteúdo que vimos até essa aula, você já pode
resolver do desafio d001 até o desafio003. Acesse o
repositório público, abra a área do curso de HTML+CSS e clique
no link de acesso aos desafios. Manda ver! Só não fica pedindo
a resposta! Você consegue resolver isso sozinho(a)!
https://www.youtube.com/
Módulo 1 do curso:
playlist?list=PLHz_AreHm4dkZ9-
atkcmcBaMZdmLHft8n
1. Quando você está criando um site ou 4. Qual foi o formato de imagens criado
qualquer outro tipo de conteúdo, deve se na década de 80 com o objetivo de
preocupar bastante com os direitos de reduzir o tamanho dos arquivos das
uso de determinada mídia (imagem, imagens, sem reduzir sua dimensão?
som, vídeo, etc). Qual dos itens a seguir
melhor define esse assunto? JPEG
PNG
Se a mídia estiver em um site público GIF
como Google e YouTube, podemos usar ZIP
sem problemas.
Não podemos usar nenhuma mídia 5. Qual é o único dos formatos a seguir
sem a prévia autorização do seu criador. que possui suporte para imagens com
Enquanto estamos estudando e partes transparentes e compactadas?
aprendendo, temos total permissão para
usar mídias de terceiros. JPEG
Podemos usar qualquer mídia e pagar BMP
uma multa quando formos descobertos. TIFF
PNG
2. Qual dos itens a seguir é incorreto
quando o assunto é não passar por 6. O que significa a sigla JPEG?
problemas relacionados a direitos
autorais? Joint Photographics Expert Group
JPG Photo Enhancement Graphic
seja o criador das suas próprias artes Join Picture Enlarge Group
consiga uma autorização legal do JPG Photographics Enhancement
detentor dos direitos autorais Group
compre os direitos de uso em sites
especializados e use quantas vezes 7. Muita gente fica na dúvida sobre o
quiser tamanho da imagem
use imagens com licenças públicas,
como Creative Commons use sempre a melhor qualidade
possível para que seu site fique bonito
3. Qual dos sites a seguir é especializado use sempre a pior qualidade possível,
em disponibilizar apenas imagens para pois os sites precisam ser rápidos
uso liberado, sem direitos autorais? tente balancear sempre qualidade e
tamanho, para que seu site não fique
Google Imagens pesado mas não se esqueça da
Getty Imagens experiência proporcionada ao seu
Shutterstock visitante.
Pexels deixe o visitante escolher se quer
imagens grandes ou sites rápidos
src
source
photo
jpeg
Não guarde conhecimento. Ele é livre. Compartilhe o seu e veja ele se espalhando pelo mundo 🌎
HIERARQUIA DE
TÍTULOS
Agora que você já deu uma olhada na estrutura, vamos procurar identificar a sua
hierarquia de títulos. Com toda certeza, se eu te perguntar qual é o título principal da
matéria, a resposta vem imediatamente: “Falta de sintonia”. Isso acontece porque
esse é o texto que está em destaque principal no texto.
Mas aí, te faço outra pergunta: existem outros títulos nessa página? Uma breve
análise visual nos leva a um resultado:
Outra coisa que você também consegue identificar é um parágrafo destacado logo
após o título principal, onde a fonte do texto é até maior e mais destacada, mas não
chega a ser um título. Em seguida, existe um parágrafo introdutório, onde
encontramos um texto que aponta a essência da matéria.
Dentro de cada um desses sub-títulos temos um parágrafo que desenvolve mais sobre
cada assunto.
Acho que deu pra entender meu ponto aqui, não é? Organizar o nosso conteúdo
quando criamos páginas é essencial para ter um bom site.
Um <h1> significa que esse é um assunto principal e é sobre ele que vamos escrever.
Já o <h2> significa que esse é um sub-assunto do <h1> que está imediatamente acima
Faça um outro exercício aí. Estamos agora na página 3 (é só olhar aqui embaixo). Vá
para a página 1 desse capítulo e olhe o nosso <h1>: “Hierarquia de Títulos”. Nessa
página 2, temos o sub-título <h2>: “Entendendo a hierarquia de títulos”. Ele é um sub-
assunto do nosso <h1>.
Nessa página 3 também temos outro <h2>: “Como criar títulos…” e logo abaixo temos
um <h3>: “Mas cuidado…”. Note que esse é um sub-assunto de “como criar títulos…”.
É claro que o nosso H3 tem letra menor que nosso H2, mas não se trata de tamanho.
É questão de hierarquia!
Acesse: https://youtu.be/WsgrSxCmMbM
Você viu que a imagem acima começa na linha 8. As anteriores são o código HTML
automático criado pelo VS Code.
Na linha 9 temos nosso título principal. Nas linhas 12, 14, 16 e 18 temos os sub-
títulos do principal, como analisamos anteriormente.
OBS: Na linha 10, tivemos uma novidade que foi a atribuição de uma classe ao
parágrafo após o <h1>. Mais para frente falaremos mais sobre isso, mas basicamente
é para conseguirmos criar uma configuração visual diferente para esse parágrafo
especial usando folhas de estilo CSS.
https://www.youtube.com/
Módulo 1 do curso:
playlist?list=PLHz_AreHm4dkZ9-
atkcmcBaMZdmLHft8n
nível 1
nível 2
nível 3
tanto faz, o que importa é ser um
título
lorem / Esc
ipsum / Enter
lorem / Enter
ipsum / Esc
Não guarde conhecimento. Ele é livre. Compartilhe o seu e veja ele se espalhando pelo mundo 🌎
FORMATAÇÃO DE
TEXTOS
Na HTML4, tínhamos tags como <b> que colocava um texto em negrito, <u> que
colocava o termo sublinhado e <blink> que fazia o texto piscar. Essas eram tags que
representavam apenas uma forma. Você dizia que queria um texto sublinhado, mas
qual era o motivo? Qual era o sentido de sublinhar alguma coisa? Vamos ver um
exemplo:
Em HTML4, colocamos o par de tags <u> e </u> para delimitar o termo Rua Marquês
de Lira Filho. Isso seria uma maneira de determinar somente um formato visual para
chamar atenção para o endereço onde o cara nasceu. O sublinhado é apenas uma
forma, sem significado explícito. Sublinhamos só pra chamar atenção visualmente.
Já a HTML5 chegou com o conceito de valorizar a semântica, logo suas tags tentam
levar um significado embutido muito forte. Logo, a frase acima ficaria assim:
Sendo assim, a própria W3C sugere que no lugar de <b>, que significa bold ou
negrito e que seria simplesmente uma forma de apresentar um dado, passemos a
usar a tag <strong>, que tem um significado de força ou potência dentro da frase.
https://www.w3.org/TR/html5-
Diferenças entre HTML4 e 5:
diff/#absent-attributes
https://dev.w3.org/html5/
Elementos obsoletos na HTML5:
pf-summary/obsolete.html
Sendo assim, se você está aprendendo HTML com o uso das tags <font>, <big>,
<center>, <srtike> e muitas outras, pode mandar esses links OFICIAIS que estão
aí em cima para quem está te ensinando desse jeito. Talvez essa pessoa nem saiba
ainda que deverá atualizar seus materiais o quanto antes.
Negrito e Itálico
Vamos ver agora algumas formatações bem usadas das últimas versões da
linguagem, começando pelos famosos negrito e itálico.
Como vimos anteriormente, existem as tags <b> e <i> para essa tarefa, mas elas não
possuem significado e focam apenas na forma, sendo assim, são pouco semânticos.
Sendo assim, recomendamos que você passe a usar as tags <strong> e <em> para
realizar essas mesmas formatações visuais, só que agora com sentido.
A tag <strong> significa que o termo delimitado possui força dentro da frase. Logo,
ele aparecerá em negrito.
Já a tag <em> significa que queremos dar ênfase (do Inglês emphasis) ao termo.
Logo, ele aparecerá em itálico.
Note que, ao usar <strong> e <em> no lugar de <b> e <i>, damos mais significado aos
nossos termos e conteúdos. Como eles vão ser representados visualmente (forma),
vai depender das nossas folhas de estilo CSS.
E não adianta ficar me olhando com essa cara de reprovação. Eu não tenho culpa
nenhuma por conta dessa decisão, sou apenas um mero professor que se foca em
mostrar os fatos, não em fazê-los ter um sentido claro. Tem certas coisas que a gente
não questiona, só aceita que dói menos.
Texto deletado
Antigamente existia a tag <strike>, que hoje também está depreciada pela última
versão da HTML. No lugar dela entrou a tag <del>, que significa que o texto está ali,
pode até ser lido, mas deve ser desconsiderado pelo leitor. Exatamente como eu
acabei de fazer.
Texto inserido
O texto inserido é o exato oposto do texto deletado que vimos anteriormente. Nesse
caso, se colocarmos um texto qualquer dentro de <ins> e </ins>, estamos dizendo
que o texto está ali, deve ser lido e você deve prestar atenção nele. É o que fazíamos
anteriormente ao utilizar a tag <u> para sublinhar um texto.
Trechos de código
Nós somos (ou seremos) programadores, e por isso compartilhamos muito código-
fonte em diversas linguagens. Para isso, existe a tag <code> da HTML onde você pode
delimitar seu código. A principal vantagem no uso dessa tag é a o valor semântico que
ela representa, indicando ao navegador que se trata de um código de computador.
Porém, existe também um efeito visual, pois as letras ficam no modo mono-espaçadas
(monospace), o que facilita bastante a leitura do código. Analise, por exemplo, o
trecho de código a seguir:
“Citações”
Se você já escreveu um texto sequer na sua vida, com certeza já
teve que fazer citações. Uma citação é um trecho de texto, escrito
ou dito por outra pessoa, que vai ilustrar perfeitamente algo que
você quer explicar.
Para criar uma citação em HTML, podemos usar a tag <q> (do Inglês quote, que
significa citar). O texto que estiver entre <q> e </q> já vai receber automaticamente
as aspas, mas não terá nenhum deslocamento. Essa técnica é mais usada quando
queremos uma citação no meio de um parágrafo.
Também podemos criar citações mais longas (em bloco) e que tenham um parágrafo
só para si. Nesse caso, colocaremos tudo dentro de <blockquote> e </blockquote> e
Abreviações
Essa é uma novidade da HTML5 e que ajuda muito em áreas como a de Tecnologia,
que usa muitas siglas e abreviações. Sempre que você quiser escrever uma sigla, mas
deixar claro ao usuário (e aos mecanismos de busca) o significado dela, use a tag
<abbr>.
ODITREVNI OTXET
Não entendeu nada desse título? Pois volte ali em cima e leia da última letra até a
primeira. Achou inútil? Eu também. Pois é exatamente essa a função da tag <bdo>.
Para começo de conversa, BDO significa bi-directional override. Ao usar essa tag,
coloque também o parâmetro dir para indicar uma das duas direções possíveis:
E aí, já acabou?
Nesse capítulo, aprendemos vários tipos de formatação de textos. Mas gostaria de
deixar bem claro que existem muitos outros. O que fiz aqui foi uma seleção dos mais
usados (e também o <bdo>, que é o mais inútil) e vamos dar prosseguimento na
matéria. Se por acaso, mais pra frente, precisarmos usar alguma outra tag de
formatação de textos, eu explico pontualmente. Combinado?
Hora de exercitar
Eu já dei esse conselho lá em cima, mas não custa nada repetir. Acesse
agora mesmo o endereço do nosso repositório público em https://
gustavoguanabara.github.io/html-css/exercicios/ e
execute o exercício 007 e o exercício 008 no seu computador e tente
atingir esse mesmo resultado em casa, sem copiar o código que eu
criei. Nesse momento, a prática é algo que você mais precisa. Se
por acaso ficar difícil, pode acessar o repositório público de HTML
e CSS e dar uma olhada nos comandos, mas EVITE COPIAR.
https://www.youtube.com/
Módulo 1 do curso:
playlist?list=PLHz_AreHm4dkZ9-
atkcmcBaMZdmLHft8n
Não guarde conhecimento. Ele é livre. Compartilhe o seu e veja ele se espalhando pelo mundo 🌎
LISTAS COM
HTML5
Por conta disso, a linguagem HTML disponibiliza vários tipos de lista para produzirmos
nosso conteúdo e deixá-lo mais claro e eficiente.
Listas Ordenadas
A HTML chama de ordered lists todas aquelas listas onde a ordem dos itens é algo
muito importante. Um passo-a-passo para criar um bolo, uma lista de aprovados no
vestibular e uma lista com os carros mais caros do mundo são exemplos de listas
ordenadas.
Para criar uma ordered list, vamos usar a tag <ol> para delimitar a lista e <li> (list
item) para identificar cada item da lista.
Por exemplo, a tag <ol type=“I” start = “5”> vai gerar itens numerados como V,
VI, VII, VIII, IX, …
Para criar uma unordered list, vamos usar a tag <ul> para delimitar a lista e a tag
<li> para criar cada um dos seus itens internos.
O resultado visual do código que vimos anteriormente será semelhante ao que temos
a seguir:
Note que os itens da lista interna (a, b, c, …) está deslocado para a direita em relação
ao item 2, do qual essa sub-lista é filha.
Exercício proposto
Crie seu próprio código e faça a seguinte lista aninhada com seus jogos favoritos de
acordo com a plataforma.
Lista de Definições
É como se fosse um dicionário, temos os termos e as suas descrições. É uma lista sem
demarcadores, mas bem útil em alguns casos.
Toda lista de definições está dentro de uma tag <dl> </dl> (definition list) Cada
termo é um <dt> (definition term) e cada descrição é um <dd> (definition description).
Assim como os itens da lista, essas duas últimas tags possuem fechamento opcional,
segundo a referência oficial da HTML5.
Vamos ver um exemplo simples que cria uma lista com três definições que já
conhecemos bem aqui pelo curso.
Hora de exercitar
Chegou a hora de acessar o endereço do nosso repositório público em
https://gustavoguanabara.github.io/html-css/
exercicios/ e executar o exercício 009 no seu computador. Agora
tente atingir esse mesmo resultado em casa, sem copiar o código que
eu criei. Nesse momento, a prática é algo que você mais precisa. Se
por acaso ficar difícil, pode acessar o repositório público de HTML
e CSS e dar uma olhada nos comandos, mas EVITE COPIAR.
https://www.youtube.com/
Módulo 1 do curso:
playlist?list=PLHz_AreHm4dkZ9-
atkcmcBaMZdmLHft8n
<dt> e </dt>
<dd> e </dd>
<dl> e </dl>
<dc> e </dc>
Não guarde conhecimento. Ele é livre. Compartilhe o seu e veja ele se espalhando pelo mundo 🌎
LIGAÇÕES EM
TODA PARTE
LIGAÇõeS EM
TODA PARTE
Google: https://youtu.be/BNHR6IQJGZs
Para criar um hyperlink, devemos criar âncoras através da tag <a>. O principal
atributo dessa tag é o href, que cria uma referência hipertexto. Vamos ver um
exemplo simples:
Note que dentro do atributo href, o que colocamos foi uma URL completa para outro
site.
NÃO ENTENDEU? Você sabe o que é uma URL? Pois volte para o
nosso capítulo 02 e vá até a parte onde falamos de domínios e
hospedagem. Lá explicamos melhor o que são Uniform Resource
Locators e quais são os seus principais componentes.
Mira no Alvo 🎯
Por padrão, sempre que um visitante clique em um
hyperlink, o site de destino abre na mesma janela do site
que continha esse link. Ou seja, o conteúdo anterior vai
deixar de ser exibido para mostrar o novo conteúdo.
Para poder controlar onde o site de destino vai abrir, podemos usar o atributo target,
que suporta os seguintes valores:
Como o uso de frames é uma técnica quase em desuso, vamos nos basear apenas nas
duas primeiras opções _blank e _self.
No código anterior, o primeiro link é o que chamamos de link local ou link interno,
já que ele leva o visitante a outra página dentro do nosso próprio site. Note que não é
necessário nem indicar a URL completa nesses casos.
Já o segundo link vai nos levar para um outro site, o que chamamos de link externo.
Nestes casos, devemos indicar a URL completa, incluindo o protocolo http:// ou
https:// e o caminho que leve à uma página específica, se for necessário.
https://www.iana.org/assignments/media-types/media-types.xhtml
Hora de exercitar
Chegou a hora de acessar o endereço do nosso repositório público em
https://gustavoguanabara.github.io/html-css/
exercicios/ e executar o exercício 010 no seu computador. Agora
tente atingir esse mesmo resultado em casa, sem copiar o código que eu
criei. Nesse momento, a prática é algo que você mais precisa. Se por
acaso ficar difícil, pode acessar o repositório público de HTML e
CSS e dar uma olhada nos comandos, mas EVITE COPIAR.
Com todo o conteúdo que vimos até essa aula, você já pode
resolver o desafio d005 e o desafio006. Acesse o repositório
público, abra a área do curso de HTML+CSS e clique no link de
acesso aos desafios. Manda ver! Só não fica pedindo a
resposta! Você consegue resolver isso sozinho(a)!
https://www.youtube.com/
Módulo 1 do curso:
playlist?list=PLHz_AreHm4dkZ9-
atkcmcBaMZdmLHft8n
IMAGENS
DINÂMICAS, ÁUDIO
E VÍDEO
IMAGENS
DINÂMICAS, ÁUDIO
E VÍDEO
Porém, essa prática não vai fazer com que o tamanho (em bytes) diminua também.
Isso acaba aumentando o consumo de dados em dispositivos móveis e deixando seu
site muito pesado, e ninguém tem paciência para acessar site lento.
O problema vai começar a surgir quando a janela do navegador chegar perto dos
1000 pixels de largura, pois a foto não vai mais caber lá. Vamos agora adicionar uma
linha para resolver esse problema:
‣ type vai indicar o media type da imagem que usamos (veja mais informações
sobre media types no capítulo 10)
‣ srcset vai configurar o nome da imagem que será carregada quando o tamanho
indicado for atingido
‣ media indica o tamanho máximo a ser considerado para carregar a imagem
indicada no atributo srcset.
É importante que existe uma ordem entre os <source>, e nessa nossa configuração,
os itens mais acima sejam os menores tamanhos para max-width e que os seguintes
sejam maiores, de forma crescente. O último item dentro de <picture> deve ser a
imagem padrão.
Me lembro bem de que na época era bem complicado colocar conteúdo em áudio em
um site. Precisava da adição de bastante JavaScript, manipulação de plugins
específicos e um conhecimento bem consistente em RSS. A HTML não me ajudava em
nada. Mais tarde, com a evolução dos vídeos e a melhoria da banda larga nacional,
acabei optando por focar meus esforços no formato vídeo, mas tenho um carinho
especial pelo áudio até hoje.
https://jovemnerd.com.br/?podcast_guest=gustavo-guanabara
Com a HTML5, veio também a facilidade em compartilhar áudio nos nossos sites e
sem depender necessariamente de JavaScript ou plugins extras. A partir de agora,
basta uma tag <audio> e alguns <source> para fazer seu site ser capaz de tocar
qualquer áudio.
Antes de mais nada, vamos criar a tag <video> e configurar alguns atributos
importantes:
‣ width vai indicar a largura que o vídeo vai ter na tela. Nesse exemplo, 600px.
‣ poster configura uma imagem que vai aparecer como uma capa, enquanto o
visitante não aperta o play para reproduzir o vídeo
‣ controls vai configurar se os controles do vídeo vão aparecer na parte inferior da
mídia. Por padrão, os controles não aparecerão, mas basta colocar a palavra
controls na tag <video>.
‣ autoplay diz para o navegador se o vídeo vai começar a tocar automaticamente,
assim que a página for carregada.
https://handbrake.fr/downloads.php
E é claro que seu site possivelmente não vai ter apenas um vídeo, não vai ter apenas
200 visitantes em um dia e aí a conta só aumenta. É preciso tomar muito cuidado
quando decidimos guardar nossos próprios vídeos.
No YouTube, abra o vídeo que você quer incorporar e clique no link COMPARTILHAR
que fica abaixo do título (veja imagem a seguir).
Ao clicar no link indicado anteriormente, uma janela vai aparecer, te dando as opções
de compartilhamento. Escolha o item INCORPORAR.
Hora de exercitar
Chegou a hora de acessar o endereço do nosso repositório público em
https://gustavoguanabara.github.io/html-css/
exercicios/ e executar o exercício 011 e o exercício 012 no seu
computador. Agora tente atingir esse mesmo resultado em casa, sem
copiar o código que eu criei. Nesse momento, a prática é algo que
você mais precisa. Se por acaso ficar difícil, pode acessar o
repositório público de HTML e CSS e dar uma olhada nos
comandos, mas EVITE COPIAR.
Com todo o conteúdo que vimos até essa aula, você já pode
resolver o desafio d007, o desafio008 e o desafio009.
Acesse o repositório público, abra a área do curso de
HTML+CSS e clique no link de acesso aos desafios. Manda ver!
Só não fica pedindo a resposta! Você consegue resolver isso
sozinho(a)!
https://www.youtube.com/
Módulo 1 do curso:
playlist?list=PLHz_AreHm4dkZ9-
atkcmcBaMZdmLHft8n
<video>
<iframe>
<media>
<youtube>
INTRODUÇÃO
ÀS CSS
INTRODUÇÃO
ÀS CSS
Outro conteúdo muito importante que vimos está no capítulo 8, onde falamos sobre
a íntima relação da HTML5 com a semântica das tags. Lá foi comentado que todo e
qualquer efeito visual é responsabilidade das CSS. Vou partir daí e vamos trabalhar
com os estilos, ok?
Caso você sinta qualquer dúvida a partir daqui, não se esqueça de revisitar os
capítulos anteriores, pois a base foi dada gradativamente até esse momento. Vamos
lá!
Vamos começar nos focando na tag <body> e aplicando um estilo diferente ao corpo
da página. Adicione o parâmetro style e digite as duas declarações de font-family e
color, conforme apresentado a seguir:
Muito cuidado na hora de digitar esse código. Tudo deve ser seguido exatamente
como fizemos acima, inclusive com letras maiúsculas e minúsculas. Não esqueça de
adicionar os ponto e vírgulas para separar as declarações. Seu resultado visual deve
ser esse:
Vamos fazer mais uma alteração, dessa vez na linha do primeiro título <h1> do nosso
código:
Você sabe explicar por que o Capítulo 1 ficou vermelho e não verde, como
solicitamos?
Isso acontece porque as configurações pontuais (HTML style) vão prevalecer sobre as
configurações gerais (CSS style). Volte ao seu código e remova todas as configurações
de estilo que fizemos nas tags <body> e <h1> no início do capítulo.
Agora passe o mouse sobre o nome do arquivo style.css e veja que existe um
atalho “Siga o link”, bastando pressionar Ctrl+clique (ou Cmd+clique, se estiver
usando o sistema MacOS). A primeira vez que você segurar o Ctrl/Cmd e clicar sobre
o link, o VSCode vai perguntar se você quer que ele crie o arquivo pra você. Clique em
Sim ou Ok para aceitar a ajuda e seu arquivo será criado automaticamente.
Nas demais linhas, fizemos as configurações dos seletores, da mesma maneira que
criamos com as outras duas técnicas apresentadas no capítulo.
Já a técnica CSS internal style organiza melhor seu código, separando conteúdo e
estilo em duas áreas bem definidas do seu documento. Use essa técnica quando for
criar páginas isoladas com estilos próprios, que não serão replicados em outras
páginas. Opte também por essa técnica apenas se a quantidade de configurações de
estilo for pequena/média. Usar muitos seletores com muitas declarações vai fazer com
que seu arquivo .html fique muito grande e seu conteúdo seja visualmente jogado lá
pra baixo, dificultando manutenções futuras.
Por fim, opte sempre pela técnica CSS external style sempre que seu estilo for
usado em várias páginas dentro do seu site. Usando a tag <link> em várias páginas,
você pode compartilhar o mesmo estilo entre elas e não vai precisar ficar alterando
vários arquivos quando o seu cliente solicitar uma pequena mudança no tom de uma
determinada cor, por exemplo.
Hora de exercitar
Chegou a hora de acessar o endereço do nosso repositório público em
https://gustavoguanabara.github.io/html-css/
exercicios/ e executar os exercícios 013, 014 e 015 no seu
computador. Agora tente atingir esse mesmo resultado em casa, sem
copiar o código que eu criei. Nesse momento, a prática é algo que
você mais precisa. Se por acaso ficar difícil, pode acessar o
repositório público de HTML e CSS e dar uma olhada nos
comandos, mas EVITE COPIAR.
https://www.youtube.com/playlist?
Módulo 1 do curso:
list=PLHz_AreHm4dkZ9-atkcmcBaMZdmLHft8n
https://www.youtube.com/playlist?
Módulo 2 do curso:
list=PLHz_AreHm4dlUpEXkY1AyVLQGcpSgVF8s
<style>
<css>
<external>
<link>
O PODER
DAS CORES
O PODER
DAS CORES
B o a p a r te d a a p re s e n ta ç ã o d e u m
determinado conteúdo parte da escolha das
cores e fontes de uma página. Quando
sabemos escolher bem uma paleta de cores
que harmonize com o nosso conteúdo, já
conseguimos dar o primeiro passo no
caminho de um site bonito. Nesse capítulo,
vou te mostrar as principais dicas para você
começar a aplicar es lo aos seus projetos.
As cores passam emoção para o subconsciente das pessoas, mesmo que na maioria
dos casos isso não seja feito de forma totalmente consciente. Percebemos as cores e
sentimos a sua emoção mesmo sem ter a plena certeza de que alguém usou a
psicologia das cores para modelar um site ou produto.
Se você fizer uma breve busca pelo termo “psicologia das cores”, vai ver várias
sugestões de emoções para determinada cor. O azul, por exemplo, acaba nos
remetendo a harmonia, equilíbrio, confiança, profissionalismo, integridade e
segurança. Agora dê uma breve olhada nos logotipos do Facebook, Twitter, LinkedIn,
Dell, HP e Intel. O que elas têm em comum? Será que isso é só coincidência?
Peguei o azul como exemplo principal, pois ela é citada como a cor favorita entre
homens (46%) e mulheres (44%) e também é a cor com a menor taxa de rejeição
( e n t r e 1% e 2%).
➡ https://rockcontent.com/blog/psicologia-das-cores/
➡ http://www.matildefilmes.com.br/psicologia-das-cores-guia-
avancado-para-profissionais/
➡ https://neilpatel.com/br/blog/psicologia-das-cores-como-
usar-cores-para-aumentar-sua-taxa-de-conversao/
Mas muita atenção ao seguir guias de cores e artigos, pois eles não
devem ser considerados como uma verdade absoluta para todos os
mercados e situações. Constantemente vemos casos de marcas que
adotam uma determinada paleta de cores totalmente não
recomendada por esses padrões e acabam fazendo muito sucesso.
Meu sincero conselho: considere as recomendações, mas não se
prenda a elas. Com isso na mente, acompanhe algumas sugestões
de aplicação de algumas das cores mais usadas em sites.
amor, emoção, energia, raiva, comida, moda, entretenimento, luxo, natureza, serviços
vermelho
perigo serviços de emergência e saúde em geral
felicidade, alegria, otimismo, dar luz, dar calma e felicidade, pode indicar que algo é
amarelo
covardia chamar atenção barato ou spam
pureza, limpeza, felicidade, medicina, saúde, tecnologia, luxo não chama atenção,
branco
segurança (com preto, ouro, cinza) deve ser combinado
O círculo cromático
Dentro da teoria das cores, precisamos separá-las em grupos para que possamos
decidir se as escolhas que vamos fazer para o nosso site vão fazer um sentido
harmônico e para que os nossos visitantes olhem para o nosso projeto e
instintivamente pense: “- nossa, que bonito!”.
Da junção das cores primárias, temos as três cores secundárias, que são o laranja
(amarelo+vermelho), o violeta/roxo (azul+vermelho) e o verde (azul+amarelo).
Da junção de uma cor primária com uma secundária, temos as seis cores terciárias:
‣ Amarelo-esverdeado (amarelo+verde)
‣ Amarelo-alaranjado (amarelo+laranja)
‣ Vermelho-alaranjado (vermelho+laranja)
‣ Vermelho-arroxeado (vermelho+roxo)
‣ Azul-arroxeado (azul+roxo)
‣ Azul-esverdeado (azul+verde)
As cores quentes, criam uma sensação de calor e proximidade. Já as cores frias, estão
associadas a sensações mais calmas, de frescor e tranquilidade.
Cores complementares
São aquelas que apresentam o maior contraste entre si. Elas
estão localizadas do lado imediatamente oposto do círculo
cromático.
Cores análogas
Diferente das cores complementares, que estão do lado
extremo oposto no círculo cromático, as cores análogas são
aquelas que são imediatamente vizinhas entre si.
Cores intercaladas
Um tipo menos usado de harmonia, já que às vezes não
funciona tão bem assim. Vamos escolher a primeira cor e
depois mais duas com intervalo constante entre elas.
Cores triádicas
Técnica bastante utilizada e que garante uma grande riqueza
de cores, onde escolhemos três pontos equidistantes no círculo
cromático.
Cores tetrádicas
Com essa técnica, vamos escolher dois pares de cores
complementares, que não serão necessariamente análogas ou
consecutivas. Isso vai nos garantir dois pares de cores, com
bastante contraste entre si.
Monocromia
Uma harmonia bem diferente das anteriores, que usa apenas
uma cor e varia apenas a sua saturação e o seu brilho. Essa
combinação geralmente gera pouquíssimo contraste entre as
cores escolhidas, mas acaba gerando um resultado visual bem
agradável aos olhos, conhecido como “degradê”.
No modo Criar, você vai escolher o modo de cores (para monitores é o RGB) e
também a regra de harmonia que você quer usar. A partir daí ele vai te sugerir uma
paleta com cinco cores perfeitamente harmônicas. Para mudar as tonalidades sem
mudar a regra, arraste qualquer uma das cores e a regra vai se aplicar aos outros
pontos. Já no modo Explorar, você vai ser apresentado a várias paletas prontas e vai
poder copiá-las na maior cara de pau, pois tudo é grátis e liberado!
Aplicando cores ao
nosso site
Nos códigos CSS do capítulo anterior, vimos declarações
voltadas para cores. Até o momento, usamos valores
textuais como blue, red, lightcyan, e muitas outras.
Porém, esse método de especificação de cores é muito limitado, pois uma tela
moderna é capaz de exibir aproximadamente 65 milhões de cores.
Faça testes, experimente, mude cores, use sua criatividade. A prática leva ao
aprendizado sólido e duradouro!
Vamos tomar como exemplo a cor Teal na tabela da página a seguir. Seu código
rgb(0, 171, 169) indica que existe quantidade 0 de vermelho nessa cor, 171 de
verde e 169 de azul. No código de cores hexadecimal (iniciado sempre com #) indica
que 00 é a quantidade de vermelho, AB é a quantidade de verde e A9 é a quantidade
de azul.
Esta mesma cor indicada acima, pode ser representada em CSS com um outro
formato baseado na maneira como o olho humano enxerga as cores: o padrão HSL. A
função hsl(179, 100%, 34%) indica que temos 179 de hue (matiz), 100% de
Usando
Gradientes em
CSS
Podemos gerar gradientes e
aplicarmos a componentes visuais
usando folhas de estilo. Vamos usar
um exemplo simples no nosso
exercício atual. Vá até o documento
e modifique a declaração do nosso
seletor body.
Também é possível gerar os chamados gradientes radiais, que também são meio auto-
explicativos. Veja o exemplo:
Altere o tipo de gradiente do body para usar o formato radial circular e veja o
resultado. Você também pode personalizar ainda mais seu degradê colocando uma
porcentagem ao lado da cor como red 10%, yellow 40%, green 50%. Experimente!
Uma das maneiras bem práticas de executar essa tarefa é usando uma extensão
gratuita do Google Chrome chamada Colorzilla.
Para instalar uma extensão, abra o Google Chrome e acesse a Chrome Web Store
no endereço https://chrome.google.com/webstore/. Na caixa de pesquisa no canto
superior esquerdo, digite colorzilla e pressione Enter. A extensão vai aparecer no lado
direito da tela e você deve clicar sobre o botão “Usar no Chrome” e clicar no botão
autorizando usar a extensão (veja os passos na imagem a seguir).
Agora você vai perceber que ao lado da barra de endereço do navegador, apareceu
um pequeno conta-gotas. Abra um site qualquer e clique sobre esse ícone. Em
seguida, clique em “Pick Color From Page” e aí é só clicar no local que deseja capturar.
A cor vai aparecer em formato rgb() e com seu código hexadecimal. Ao clicar, o
código será copiado para a sua área de transferência.
Hora de exercitar
Chegou a hora de acessar o endereço do nosso repositório público em
https://gustavoguanabara.github.io/html-css/
exercicios/ e executar o exercício 016 no seu computador. Agora
tente atingir esse mesmo resultado em casa, sem copiar o código que
eu criei. Nesse momento, a prática é algo que você mais precisa. Se
por acaso ficar difícil, pode acessar o repositório público de HTML
e CSS e dar uma olhada nos comandos, mas EVITE COPIAR.
https://www.youtube.com/playlist?
Módulo 1 do curso:
list=PLHz_AreHm4dkZ9-atkcmcBaMZdmLHft8n
https://www.youtube.com/playlist?
Módulo 2 do curso:
list=PLHz_AreHm4dlUpEXkY1AyVLQGcpSgVF8s
linear-degradee e radial-degradee
derradee-linear e degradee-radial
gradient-linear e gradient-radial
linear-gradient e radial-gradient
VAMOS FALAR
DAS FONTES
VAMOS FALAR
DAS FONTES
Família tipográ ca
É o conjunto de glifos que possuem as mesmas características anatômicas,
independente das suas variações.
Vou exemplificar esse conceito com o exemplo a seguir: a família tipográfica Open
Sans possui várias configurações de peso (de 300 a 800). Mesmo parecendo
representações bem diferentes, todos eles fazem parte da mesma família tipográfica.
Imagine que eu tenha que representar a palavra “amor” através de uma determinada
tipografia. Qual das opções abaixo você escolheria?
Com toda certeza, a maioria das pessoas escolheria a segunda opção. Sabe o por
quê? A palavra “amor” tem mais a ver com uma representação mais suave e fluida,
não algo mais robusto e forte. E mesmo sem te dizer isso, provavelmente a escolha
do tipo fez isso por mim.
O problema é que a escolha não é tão simples assim. Na representação acima, com
uma palavra curta e isolada, conseguimos ler facilmente a palavra “amor” em
qualquer uma das opções de fontes escolhidas. Chamamos isso de legibilidade. Mas
basta colocarmos uma frase maior para as coisas ficarem um pouco confusas.
Sendo assim, escolher um bom tipo é essencial para cada caso. Não povoar nosso site
com tipos diferentes também é uma ótima ideia. No máximo dois ou três tipos já
estaria ótimo.
Vamos conhecer agora algumas características anatômicas dos tipos para nos ajudar a
escolher boas fontes para nosso site.
Anatomia do Tipo
Vamos analisar cada uma das partes de um tipo. Volte sempre para essa página ao ler
a descrição de cada elemento:
A - Altura das maiúsculas: Altura que as letras maiúsculas vão ocupar. Geralmente
um pouco menor que a soma da ascendente com a mediana (< B + D)
B - Ascendente: Parte das letras maiúsculas que se ergue acima da linha mediana
C - Descendente: Parte das letras minúsculas que passa por baixo da linha de base.
D - Altura-X: Também chamada de mediana, define o tamanho das letras
minúsculas. Tem esse nome, pois se baseia no tamanho da letra x minúscula.
E - Corpo: É a soma de quatro medidas: ascendente + altura-x + descendente +
espaço de reserva. É o tamanho total da letra. É o valor que escolhemos ao configurar
o tamanho da fonte em um texto.
1 - Arco: presente em letras minúsculas. Uma linha curva que nasce em na haste
principal.
2 - Barriga: curva em uma letra maiúscula ou minúscula, fechada, ligada à haste
vertical em dois pontos.
3 - Braço: traço horizontal ou inclinado, ligado à haste vertical principal de uma letra
maiúscula ou minúscula.
4 - Cauda: apêndice do corpo de algumas letras (g, j, J, K, Q, R), que fica abaixo da
linha base.
5 - Enlace: a forma como uma haste, linha ou filete se liga a um arremate, a uma
serifa ou a um terminal. Pode ser angular ou curvilíneo.
6 - Espinha: curva e contracurva estrutural da letra S.
7 - Esporão: uma projeção que encontramos nas letras b e G.
Categorias de fontes
Os tipos ou fontes tipográficas também são classificados por suas
categorias. Elas são baseadas principalmente na presença ou ausência da
serifa, o item 14 da lista anterior. As demais categorias, acabam derivando das duas
principais (com e sem serifa) ou não se encaixam nessas características e por isso
geram novas categorias.
Fontes Serifadas
Esta é a categoria mais clássica de fontes, surgida lá na época das prensas que eu
citei no início do capítulo. Tipicamente, os caracteres serifados sempre foram
aplicados em grandes blocos de textos impressos em papel e se aproveitam de uma
característica da nossa percepção: nós nunca lemos as palavras letra por letra, e sim
por um conjunto. As serifas têm a capacidade de guiar nossos olhos graças aos
pequenos prolongamentos que elas criam e fazem as letras “se juntarem” em
palavras. A seguir, vemos quatro exemplos de fontes serifadas:
A grande maioria dos textos que você está lendo nesse material desde o início do
curso estão sendo escritos com uma fonte não serifada muito popular: a Verdana.
A principal vantagem no uso desse tipo de fonte é facilitar ao máximo a leitura das
palavras, principalmente aquelas que requerem que você as reproduza. Usamos muito
esse tipo de fonte para representar comandos de linguagens de programação de
computadores. Por isso, nós também costumamos chamá-las de fonte de terminal
ou fonte de console.
Fontes Script
Também chamadas de fontes handwriting, são aquelas que tentam imitar a escrita
humana. Seu uso deve ser bem controlado e jamais será aplicado a textos muito
longos, pois causam cansaço visual e tornam-se difíceis de ler, como já provamos
anteriormente no início do capítulo, dentro do item “As fontes falam”.
Essas fontes também são recomendadas para criar títulos em destaque e devem ser
evitadas para textos médios ou longos.
Vamos fazer alguns exemplos aplicando famílias bem simples às nossas fontes. Vá até
o seu exercício atual e aplique algumas declarações de font-family aos seletores de
cada componente formatável do seu documento HTML.
No exemplo acima, todo título <h2> do nosso documento será 1.5x o tamanho padrão
da fonte de referência.
https://www.w3.org/Style/Examples/007/units.pt_BR.html
Outros estilos
Existem outras formatações muito usadas em CSS, que são as propriedades font-
style para aplicar o itálico e font-weight para aplicar o negrito, sem contudo existir
o fator semântico discutido no capítulo 08.
O padrão para essas duas propriedades é o valor normal, mas podemos aplicar o valor
itálico ao font-style usando italic (mais compatível) ou oblique (menos
compatível). Já o negrito, pode ser aplicado por nomes como lighter, bold e bolder
ou pelo peso numérico, como indicado na imagem.
Existe uma shorthand para fontes que é a propriedade font. No lugar de fazer várias
configurações em múltiplas linhas, podemos simplificar tudo de maneira muito
simples.
Por exemplo, no lugar de configurar o estilo dos parágrafos do nosso site desse jeito:
• font-style
• font-variant
• font-weight
• font-size/line-height
• font-family
Alinhamentos
Existem quatro tipos de alinhamento de textos:
Acesse novamente o site do Chrome Web Store e procure pela extensão Fonts
Ninja (ensinei como fazer isso no capítulo anterior). Uma vez instalada e ativa, a
extensão ficará ao lado da barra de endereços, assim como o Colorzilla.
Abra um site qualquer, selecione o trecho de texto que quer identificar (recomendo
selecionar poucas palavras) e clique sobre o botão do Fonts Ninja (veja na imagem a
seguir).
Uma vez escolhida a fonte, clique sobre o nome dela (como na área 5, acima) e uma
outra tela será exibida, como a seguir. Clique sobre o botão + Select this style e em
seguida pressione o ícone superior, conforme marcado na próxima imagem.
Ao clicar no ícone superior direito, uma aba lateral chamada Selected family
aparecerá.
Hora de exercitar
Chegou a hora de acessar o endereço do nosso repositório público em
https://gustavoguanabara.github.io/html-css/
exercicios/ e executar o exercício 017 no seu computador. Agora
tente atingir esse mesmo resultado em casa, sem copiar o código que
eu criei. Nesse momento, a prática é algo que você mais precisa. Se
por acaso ficar difícil, pode acessar o repositório público de HTML
e CSS e dar uma olhada nos comandos, mas EVITE COPIAR.
https://www.youtube.com/playlist?
Módulo 1 do curso:
list=PLHz_AreHm4dkZ9-atkcmcBaMZdmLHft8n
https://www.youtube.com/playlist?
Módulo 2 do curso:
list=PLHz_AreHm4dlUpEXkY1AyVLQGcpSgVF8s
SELETORES
PERSONALIZADOS
EM CSS
SELETORES
PERSONALIZADOS
EM CSS
Olhando atentamente para a linha 23, vimos que o <h1> principal se diferencia dos
demais que estão nas linhas 24 e 27, pois ele possui um id.
Agora foque sua atenção nas linhas 25 e 28 e perceba que os dois títulos <h2>
possuem o mesmo class.
Em seguida, baseado no código HTML visto anteriormente, vamos criar um estilo local
criando uma área <style> dentro da seção <head> do documento atual.
ANTES… …DEPOIS
Analise os dois resultados acima e perceba as diferenças. Note que apenas o título h1
identificado como titulo-principal ganhou uma formatação diferente e os demais títulos
de mesmo nível se mantiveram como antes. Inclusive, compare o resultado diferente
obtido entre o primeiro e o segundo parágrafos. Apenas o primeiro ficou justificado.
Isso foi por conta da aplicação de uma class apenas ao primeiro (volte lá no código
HTML inicial e confira que o segundo parágrafo não possui class).
Sendo assim, caso haja duplicidade nas configurações, o que fica valendo no final é a
propriedade especificada nas configurações inline. Cada camada de aplicação de
estilos vai adicionando propriedades novas e sobrescrevendo as configurações do nível
anterior.
Quando nós aplicamos configurações personalizadas de id ou de class, também vai
existir uma combinação de configurações, como você já deve ter percebido ao analisar
o exemplo que apresentamos nas páginas anteriores.
Voltando ao exemplo dado anteriormente (que vou replicar aqui para facilitar o
entendimento), logo no início do corpo, tínhamos dois elementos h1:
Essas duas configurações de tamanho e cor da fonte serão aplicadas aos dois títulos,
já que ambos são do tipo h1. Por fim, adicionamos uma configuração específica para o
elemento que tem um id personalizado:
Dessa maneira, o primeiro h1 do código HTML (aquele que tem um id) ganhará mais
três configurações - cor de fundo, cor da fonte e alinhamento do texto - graças a esse
seletor extra. Note que na primeira configuração CSS dos elementos h1, dissemos que
a cor era darkgreen.
Pseudo-classes e pseudo-elementos
Uma pseudo-classe CSS é uma palavra-chave adicionada às declarações de um seletor
após um sinal de dois pontos e especificam um estado especial de um elemento.
Existem várias pseudo-classes para estilos, podemos
citar :hover, :visited, :active, :checked, :empty e :focus.
Vamos começar criando um exemplo bem simples e bastante usado para exemplificar
o uso de pseudo-classes e pseudo-elementos: a personalização de links.
Começando pelo corpo do documento, contendo só o HTML, vamos criar um texto com
um título e três parágrafos, com três links. Note que o último link recebeu a atribuição
de uma classe específica. O resultado visual está sendo apresentado a seguir:
Vamos alterar essa apresentação padrão com nossas configurações de estilo. Crie a
área <style> dentro de <head> e coloque os seguintes seletores.
Nas declarações acima, criamos três configurações para os links: a primeira (linha
12) para links inéditos (não visitados), colocando o texto em negrito, removendo o
sublinhado e colocando-os em cor vermelha.
O resultado visual está apresentado abaixo, compare com o resultado anterior e veja
as diferenças:
Na primeira declaração do código acima (linha 26), dizemos que o link da classe
especial vai ter letra branca, fundo preto e perderá o sublinhado apenas quando
movermos o mouse sobre ele.
Na linha 20, criamos um bloco especial com a tag <div>. Uma das grandes
vantagens em usar divs é que elas podem ter outras tags dentro dela, assim como o
parágrafo interno que criamos na linha 22.
O primeiro seletor, na linha 8, vai esconder o parágrafo que está dentro da div
(representado em CSS como div > p) através da propriedade display com o valor
none.
O segundo seletor, na linha 12, vai fazer o parágrafo escondido reaparecer, com o
fundo pintado de amarelo apenas quando passarmos o mouse sobre ele.
Hora de exercitar
Chegou a hora de acessar o endereço do nosso repositório público em
https://gustavoguanabara.github.io/html-css/
exercicios/ e executar o exercício 017 no seu computador. Agora
tente atingir esse mesmo resultado em casa, sem copiar o código que
eu criei. Nesse momento, a prática é algo que você mais precisa.
Se por acaso ficar difícil, pode acessar o repositório público de
HTML e CSS e dar uma olhada nos comandos, mas EVITE
COPIAR.
https://www.youtube.com/playlist?
Módulo 1 do curso:
list=PLHz_AreHm4dkZ9-atkcmcBaMZdmLHft8n
https://www.youtube.com/playlist?
Módulo 2 do curso:
list=PLHz_AreHm4dlUpEXkY1AyVLQGcpSgVF8s
O MODELO
DE CAIXAS
O MODELO
DE CAIXAS
Tudo começa a partir do conteúdo (content), que representamos acima com o bla
bla bla… Por padrão, toda caixa é composta apenas pelo conteúdo e não possui
padding, nem border, nem outline e nem margin. Uma exceção curiosa é o
elemento <body> que já vem com uma margin de 8px.
Todo conteúdo possui uma largura (width) e uma altura (height) e a esse conjunto
de propriedades, damos o nome de box-size (tamanho da caixa). O tamanho da
caixa não inclui as medidas de padding, border, outline e margin.
Depois do conteúdo e de seu tamanho, vamos nos focar na borda que fica em volta
dele. Ela pode ter uma espessura, uma cor e um formato.
Todas as configurações serão aplicadas ao elemento <h1>, que é uma caixa e foi
criado na linha 24 do código acima. As linhas 9 e 10 configuram o size da caixa
(largura e altura, respectivamente) e fará com que ela tenha 300x50 pixels.
A linha 15 vai criar um espaço interno de preenchimento (da borda para dentro) de
20 pixels no elemento e a linha 19 vai criar um espaço externo (da borda para fora)
de 50 pixels.
Sendo assim, a medida total que essa caixa vai ocupar é de 50 + 10 + 20 + 300 + 20
+ 10 + 50 = 460px de largura e 50 + 10 + 20 + 50 + 20 + 10 + 50 = 210px de
altura.
Preenchimento e margem
personalizados
Todo elemento de caixa possui quatro valores para padding e quatro para margin,
sempre nessa mesma ordem: superior (-top), direita (-right), inferior (-bottom),
esquerda (-left). Quando colocamos um único valor de dimensão para o
preenchimento ou margem, esse mesmo valor é aplicado simetricamente a todas as
direções, mas também podemos fazer códigos como:
Essa simplificação só é possível quando as medidas -top e -bottom forem iguais entre
si e o mesmo também ocorrer entre as medidas -right e -left.
Margens no automático
Um recurso que também vai ser muito usado em nossos exercícios
é a centralização de blocos. Para que isso seja feito, devemos
pedir que o navegador calcule automaticamente as margens da
esquerda e da direita para que o bloco seja colocado no meio do
navegador, independente do tamanho da janela.
Header
Cria áreas relativas a cabeçalhos. Pode ser o cabeçalho principal de um site ou até
mesmo o cabeçalho de uma seção ou artigo. Normalmente inclui títulos <h1> - <h6>
e subtítulos. Podem também conter menus de navegação.
Nav
Define uma área que possui os links de navegação pela
estrutura de páginas que vão compor o website. Um
<nav> pode estar dentro de um <header>.
Main
É um agrupador usado para delimitar o conteúdo
principal do nosso site. Normalmente concentra as
seções, artigos e conteúdos periféricos.
Section
Cria seções para sua página. Ela pode conter o conteúdo diretamente no seu corpo ou
dividir os conteúdos em artigos com conteúdos específicos. Segundo a documentação
oficial da W3C, “uma seção é um agrupamento temático de conteúdos, tipicamente
com um cabeçalho”.
Article
Um artigo é um elemento que vai conter um conteúdo que pode ser lido de forma
independente e dizem respeito a um mesmo assunto. Podemos usar um <article>
para delimitar um post de blog ou fórum, uma notícia, etc.
Footer
Cria um rodapé para o site inteiro, seção ou artigo. É um conteúdo que não faz parte
diretamente do conteúdo nem é um conteúdo periférico (o que caracterizaria um
<aside>), mas possui informações sobre autoria do conteúdo, links adicionais, mapa
do site, documentos relacionados.
A seguir, vou criar uma proposta de estrutura para um projeto de site. Não tome ela
como a única possibilidade de criar o posicionamento de elementos de agrupamento
semântico.
Para criar uma sombra nessa caixa, vamos adicionar uma declaração especial na
linha 17, substituindo o comentário que deixei lá.
Veja que uma sombra bem forte já pode ser percebida, assim que adicionamos a
propriedade box-shadow e seus quatro valores. A ordem é sempre essa:
Bordas decoradas
As bordas das caixas não precisam ser sempre retangulares e podem ter alguns
detalhes especiais. Vamos usar o mesmo exercício que estamos criando desde o item
anterior onde aprendemos a usar sombras.
Assim como fizemos com as margens, também é possível indicar apenas dois valores,
o que vai agir em vértices intercalados, partindo do canto superior esquerdo.
Com todo o conteúdo que vimos até essa aula, você já pode
resolver o desafio d010. Acesse o repositório público, abra a
área do curso de HTML+CSS e clique no link de acesso aos
desafios. Manda ver! Só não fica pedindo a resposta! Você
consegue resolver isso sozinho(a)!
Hora de exercitar
Chegou a hora de acessar o endereço do nosso repositório público em
https://gustavoguanabara.github.io/html-css/
exercicios/ e executar o exercício 017 no seu computador. Agora
tente atingir esse mesmo resultado em casa, sem copiar o código que
eu criei. Nesse momento, a prática é algo que você mais precisa.
Se por acaso ficar difícil, pode acessar o repositório público de
HTML e CSS e dar uma olhada nos comandos, mas EVITE
COPIAR.
https://www.youtube.com/playlist?
Módulo 1 do curso:
list=PLHz_AreHm4dkZ9-atkcmcBaMZdmLHft8n
https://www.youtube.com/playlist?
Módulo 2 do curso:
list=PLHz_AreHm4dlUpEXkY1AyVLQGcpSgVF8s
<aside>
<nav>
<head>
<footer>
border-radius
box-radius
border-vertex
vertex-box
PRIMEIRO
MINI-PROJETO
PRIMEIRO
MINI-PROJETO
Tudo começa desenhando o que chamamos de wireframe, planejando qual vai ser a
estrutura e comportamento do site. Ele vai servir de base na hora de planejar as
caixas que farão parte da página. Para esse nosso primeiro mini-projeto, planejei o
seguinte layout:
Por fim, vamos falar das fontes escolhidas. A primeira, Bebas Neue, será a fonte para
os destaques principais. Já que vamos fazer uma matéria sobre o mundo Android,
optei por uma fonte chamada iDroid. Já para o texto padrão, escolhi a Arial.
A configuração acima vai garantir que a caixa em questão não fique com largura
menor que 400px (para telas pequenas) e nem seja maior que 800px (para telas
muito grandes).
Para medidas entre 400px e 800px, o tamanho será adaptável e a caixa vai ocupar
100% da largura do contêiner. Isso vai facilitar bastante a adaptação do conteúdo a
diversos tipos de tela.
Olhando as declarações feitas para o seletor de body acima, pode parecer inicialmente
que elas ficaram um pouco mais confusas. Mas imagine que seu cliente mude as
definições de cores e fontes. Quantas alterações teriam que ser feitas para deixar tudo
em dia com as novas especificações? Ao usar variáveis, tudo se simplifica muito, pois
basta atualizar as variáveis definidas em :root.
No nosso caso, para o nosso mini-projeto, nós vamos utilizar esse seletor global para
eliminar as eventuais margens que os navegadores (user agents) adicionam a alguns
elementos. Isso vai facilitar bastante, pois vai permitir personalizar as medidas que
vão aparecer na tela para cada elemento individualmente.
Sombras em Textos
No capítulo anterior, falamos sobre as sombras em caixas, utilizando a propriedade
box-shadow. Pois saiba que também existe uma propriedade específica para criar
sombras em textos: o text-shadow.
Como você deve ter percebido olhando as imagens acima, a sombra em textos serve
para destacar a letra e seu fundo, criando um contraste entre elas.
No nosso projeto, quero adicionar uma lista com todas as 14 versões principais do
sistema Android. Se fizermos usando apenas os elementos comuns sem configurá-los,
teremos uma listagem que ocupa um grande espaço vertical. A solução aqui é dividir a
lista em duas colunas e modificar o marcador para personalizar ainda mais a exibição
do conteúdo.
A primeira linha de declarações faz com que o marcador seja personalizado com o
parâmetro list-style-type. O valor \2714 corresponde ao símbolo ✔ que tem o
código Unicode U+2714 (confira no site da Emojipedia). O valor \0020 corresponde a
um espaço em branco (também pode ser \00A0).
Já dentro do iframe, nós usamos o posicionamento absolute para que a div - que é
o seu contêiner - torne-se o ponto de partida para o posicionamento do frame. A
partir daí, podemos utilizar propriedades para configurar o deslocamento à esquerda
(left) e ao topo (top) e seu tamanho em largura (width) e altura (height), todos
em porcentagem de tela.
Com todo o conteúdo que vimos até essa aula, você já pode
resolver o desafio d010. Acesse o repositório público, abra a
área do curso de HTML+CSS e clique no link de acesso aos
desafios. Manda ver! Só não fica pedindo a resposta! Você
consegue resolver isso sozinho(a)!
https://www.youtube.com/playlist?
Módulo 1 do curso:
list=PLHz_AreHm4dkZ9-atkcmcBaMZdmLHft8n
https://www.youtube.com/playlist?
Módulo 2 do curso:
list=PLHz_AreHm4dlUpEXkY1AyVLQGcpSgVF8s
:var text-shadow
:declarations font-shadow
:root letter-shadow
:variables box-shadow
list-type
list-style-type
list-symbol
list-style-symbol
static
absolute
relative
fullsize
DevWeb
Capítulo 18
Aprendendo
Git e GitHub
Para explicar a utilidade de cada um dos dois tipos de repositórios que vamos usar
(locais e remotos), criei três pequenas histórias que podem acontecer na sua vida.
Quando atingir uma versão estável, para manter um “backup seguro”, sempre usamos
ideias brilhantes como gerar uma versão compactada dessa pasta. Isso vai permitir
continuar a desenvolver uma versão aprimorada sem perder a versão anterior. Se por
acaso algo der errado (e acredite, geralmente dá) basta descompactar nosso arquivo
de versão estável, substituir o conteúdo da pasta original e recomeçar os trabalhos da
criação da próxima versão. Usando essa prática, com certeza vai acabar se deparando
com vários arquivos ZIP com nomes esquisitos.
Esses arquivos compactados ficam se acumulando no seu computador e são úteis caso
você precise “voltar no tempo” e desfazer as bobagens que fizemos na madrugada
passada quando tentamos desenvolver algo com muito sono.
Os serviços de armazenamento que eu citei na situação anterior são muito úteis para
fazer backup, mas possuem uma grande limitação quando queremos praticidade. Por
exemplo, salvar os arquivos de um site no Dropbox não vai garantir de forma alguma
que ele vai ficar disponível para o acesso externo. Ninguém vai poder “acessar seu
site”, apenas digitando uma URL no navegador. Tudo vai ficar armazenado como um
grupo de arquivos, não como um site hospedado.
QUER SABER MAIS SOBRE A TRETA? Não vou usar espaço desse
material para contar a treta entre Linux Torvalds e Larry McVoy,
mas já contei essa história no YouTube. Se você ficou curioso(a) para
saber o que rolou, acesse o link a seguir:
Repositório Remoto
Para solucionar os problemas levantados nas duas últimas situações desse capítulo,
vamos precisar de um lugar na nuvem para guardar nossos repositórios locais. E é aí
que entra o nosso segundo grande personagem: o GitHub.
Criado em 2008 por quatro amigos, o GitHub é um serviço que nos permite criar um
repositório remoto na nuvem para guardar nossos projetos e versionamentos. Ele
não é a única opção que existe no mercado (ainda temos o GitLab, o
Bitbucket, e muitos outros) mas provavelmente é a mais popular,
tanto que hoje pertence à gigante Microsoft, que comprou o serviço
em 2018 por 7.5 bilhões de dólares.
https://professorguanabara.github.io/projeto-android/
https://github.com/professorguanabara/projeto-android
Já na área 2, vão aparecer todas as mudanças detectadas pelo Git nos arquivos que
estão na pasta do repositório.
Na área 4, também vão aparecer botões muito importantes para abrir o projeto
usando o Visual Studio Code ou abrir o gerenciador de arquivos do seu sistema com a
pasta do projeto.
A segunda maneira é clicando sobre o botão Choose a theme, que vai permitir
escolher um tema para exibir o conteúdo do arquivo README.md como uma página.
Essa segunda técnica é mais usada quando vamos hospedar vários projetos em um
mesmo repositório ou quando vamos guardar informações sobre um projeto que não é
um site, como download de instaladores e coisas do tipo.
https://www.youtube.com/playlist?
Curso em Vídeo:
list=PLHz_AreHm4dm7ZULPAmadvNhH6vk9oNZA
Questão…
Questão…
Questão…
Questão…
Questão…
Questão…
Questão…
Questão…
DevWeb
Capítulo 19
Imagens
de Fundo
Agora vamos criar a configuração de estilo base para toda <div> que possui a classe
quadrado:
Note que na definição da <div> que tem o id com o valor q1, usamos uma cor sólida,
já para q2, usamos um preenchimento linear. Já na caixa q3, vamos aplicar uma
imagem de fundo através de um endereço informado pela função url().
De forma geral, essas são as três maneiras mais simples de preencher uma caixa em
HTML: cor sólida, degradê ou imagem de fundo.
background-repeat: repeat;
background-repeat: no-repeat;
background-repeat: repeat-x;
background-repeat: repeat-y;
Outra coisa que podemos fazer é redimensionar a imagem para forçá-la a caber na
caixa. Por padrão, nenhum redimensionamento será aplicado, e a imagem será
exibida do seu tamanho natural. Porém, podemos usar a propriedade background-
size para alterar esse comportamento.
cover Muda o tamanho da imagem para que ela seja sempre totalmente exibida na tela,
sem nenhum corte.
contain Redimensiona a imagem para que ela cubra o contêiner, mesmo que para isso
ocorram alguns eventuais cortes.
fixed A imagem de fundo vai ficar fixada enquanto o conteúdo vai sendo rolado.
Simplificando as coisas
Assim como já vimos várias vezes em nosso material, existe também a possibilidade
de usar uma shorthand para simplificar o uso de propriedades que se apliquem ao
fundo de uma caixa. A propriedade abreviada background pode ser declarada
agrupando as seguintes configurações:
• background-color
• background-image
• background-position
• background-repeat
• background-attachment
Centralização vertical em
contêineres
Antes de começar a explicar o assunto sobre o qual vamos
falar, preciso desabafar: plural de contêiner é muito esquisito,
não acha? A propósito, o significado de contêiner (versão do
Inglês container) é simples e direto: “aquele que contém
coisas”.
No capítulo 17, onde criamos o nosso primeiro mini-projeto, tivemos que arrumar
uma maneira de centralizar e redimensionar um vídeo dentro de um contêiner. Agora
vou te mostrar uma outra técnica.
Agora vamos criar as configurações personalizadas para cada <div> dentro da área de
<style> na área da cabeça <head> do código:
Não crie um novo seletor, apenas adicione as declarações que estou indicando.
Qualquer dúvida, assista o último vídeo relativo ao capítulo 19 do curso.
Porém, infelizmente, o resultado não será exatamente o que esperamos. Mas não se
desespere! Nem tudo está perdido!
Note que, pelas linhas pontilhadas, o retângulo interno foi realmente posicionado a
50% da tela, mas pelo canto superior esquerdo da caixa. Vamos realizar uma
transformação e mover o retângulo interno para a esquerda e para cima, para que ele
fique efetivamente centralizado.
E está feito! Essa é apenas uma das técnicas de centralização de conteúdo, mas as
outras requerem aprender outros conceitos mais aprofundados das folhas de estilo,
como as caixas flexíveis (Flexbox).
Com todo o conteúdo que vimos até essa aula, você já pode
resolver o desafio d011. Acesse o repositório público, abra a
área do curso de HTML+CSS e clique no link de acesso aos
desafios. Manda ver! Só não fica pedindo a resposta! Você
consegue resolver isso sozinho(a)!
https://www.youtube.com/playlist?
Curso em Vídeo:
list=PLHz_AreHm4dlAnJ_jJtV29RFxnPHDuk9o
Questão…
Questão…
Questão…
Questão…
Questão…
Questão…
Questão…
Questão…
DevWeb
Capítulo 20
Mini-projeto
Cordel
A ideia dos folhetos não surgiu no Brasil e sim em Portugal, mas foi aqui que
ganharam uma forma peculiar ao estampar as capas usando xilogravuras, formato
muito popular em cidades do nordeste brasileiro.
Outra característica dos folhetos de cordel é ter poesias escritas em forma de versos
que podem ser recitados de forma melodiosa e cadenciada, geralmente
acompanhadas de uma música tocada com instrumentos tipicamente nordestinos.
E se você está lendo essa introdução e se perguntando “o que tem a ver cordel com
HTML e CSS?”, tenho um recado sincero pra você: a cultura faz parte da nossa
identidade como seres humanos. Nunca desmereça a cultura, amplie seus
conhecimentos e valorize sempre os movimentos nacionais. Você não perdeu tempo
lendo tudo isso, você ganhou culturalmente. De nada!
Levantei esse assunto aqui, pois escolhi um poema em forma de cordel de Milton
Duarte chamado “Cordel Moderno - Tecnologia do agora” que fala de Tecnologia (olha
aí o assunto!) de uma maneira bem simpática e atual. Esse será o conteúdo do site
que vamos criar.
https://github.com/gustavoguanabara/html-css/tree/master/desafios/d012
O projeto pronto
Para ver o projeto desse capítulo funcionando completamente, basta acessar o
endereço https://professorguanabara.github.io/projeto-cordel/ no seu
navegador, mas não vale ficar olhando e copiando o código, pois esse é mais um
desafio.
Organizando o conteúdo em
seções
Agora vamos começar a organizar o conteúdo em seções, que serão formatadas para
intercalar áreas brancas com áreas de imagens. Você pode usar qualquer técnica, mas
a que eu achei mais coerente semanticamente foi dividir tudo em <section> com um
ou dois parágrafos e usando quebras de linha para organizar as estrofes.
Na linha 5 do nosso código base, definimos que a viewport terá a largura máxima
baseada na largura do dispositivo e que vai usar uma escala (zoom) inicial da tela
para o valor padrão 1.0 (zoom de 100%).
Sendo assim, vamos considerar uma tela de celular popular como o Samsung Galaxy
S9, que tem uma viewport de 360x740 pixels ou um iPhone X com 375x812 pixels.
Isso significa que - com o celular na posição vertical - a largura da tela é de 300 e
poucos pixels disponíveis para exibir o nosso site.
O que vai fazer com que a fonte fique 5 vezes maior que o seu tamanho base
(aproximadamente 16px, dependendo do navegador). E esse tamanho será mantido,
tanto para telas pequenas quanto para telas grandes.
Isso vai significar que o tamanho da fonte será adaptado para que ocupe 10% da
largura da viewport, ou seja, em uma tela do Galaxy, com 360px de largura, o
tamanho da fonte será 36px. Mas basta deitar o celular para que a largura da tela vá
para 740px, fazendo com que a fonte seja mudada para tamanho 74px, o que significa
10% da nova dimensão.
Note que a imagem do balão vai subindo juntamente com os blocos de texto. Agora,
quando aplicamos o efeito parallax, a rolagem fica um pouco diferente:
Talvez o impacto visual gerado por esse efeito não seja 100% percebido enquanto eu
tento te explicá-lo em forma de um texto em uma página, mas com certeza você
percebeu quando abriu o site do projeto. E se você ainda não abriu, aí vai outra
oportunidade. Acesse o link a seguir, ou abra o app de câmera e aponte seu celular
para o código QR:
https://professorguanabara.github.io/projeto-cordel/
Para obter esse efeito, vamos dar um id à <section> que vai conter a imagem e
realizar as seguintes configurações:
Todas as declarações acima foram vistas no capítulo anterior, quando falamos sobre
aplicação de imagens em background.
Com todo o conteúdo que vimos até essa aula, você já pode
resolver o desafio d012. Acesse o repositório público, abra a
área do curso de HTML+CSS e clique no link de acesso aos
desafios. Manda ver! Só não fica pedindo a resposta! Você
consegue resolver isso sozinho(a)!
https://www.youtube.com/playlist?
Curso em Vídeo:
list=PLHz_AreHm4dlAnJ_jJtV29RFxnPHDuk9o