M04 - Como Funciona A Web
M04 - Como Funciona A Web
a Web
O que vamos ver hoje
INDIVIDUAL
● Crie um repositório no Github
● Conecte ao repositório local:
git init
git remote add origin <url_repo>
Inicializar projeto
npm init -y
Instalar Express
npm install express
Instalar nodemon
npm install nodemon
CREATE POST
READ GET
UPDATE PUT
DELETE DELETE
Arquitetura cliente-servidor
O que chamamos de cliente?
São os dispositivos que fazem solicitações de
serviços ou recursos a um servidor.
Arquitetura cliente-servidor 13
O que chamamos de servidor?
É o que fornece os serviços e recursos que os
clientes acessam. Em outras palavras, é aquele
que responde aos pedidos dos clientes.
Arquitetura cliente-servidor 14
Os pedidos (requests)
São as solicitações que fazemos através do navegador (o cliente) para um
servidor. Por exemplo, a página do Facebook é armazenada em seus servidores.
PEDIDO /
REQUEST
SERVIDOR
CLIENTE
INTERNET
www.facebook.com
www.facebook.com
Arquitetura cliente-servidor 15
O que vai dentro do request?
São muitas informações, mas vamos listar algumas que são importantes:
Arquitetura cliente-servidor 16
As respostas (responses)
O servidor recebe nosso pedido, processa-o e envia como resultado uma
resposta ao cliente (navegador). Neste exemplo, ele devolverá a página inicial
do site.
CLIENTE SERVIDOR
INTERNET
www.facebook.com
www.facebook.com
RESPOSTA /
RESPONSE
Arquitetura cliente-servidor 17
O que vai dentro do response?
Aqui as informações são parecidas com a da request. Então também teremos
URL, Data e afins. Porém com uma exceção:
Arquitetura cliente-servidor 18
Por que é importante saber este
fluxo de Request-Response? Porque
no mundo do desenvolvimento
web, a maioria das aplicações tem
duas pontas: o front-end e o
back-end.
Arquitetura cliente-servidor
O front-end
É tudo o que acontece no lado do cliente (no navegador).
Isso inclui todos os elementos gráficos que compõem a interface do site e
também parte de sua funcionalidade.
As linguagens utilizadas são: HTML para a estrutura, CSS para os estilos visuais
e JavaScript para a interação dentro do site.
CLIENTE
FRONT-END
Arquitetura cliente-servidor 20
O back-end
É tudo o que acontece no lado do servidor.
Isso inclui todo o funcionamento interno e a lógica do site. É o que permite que
todas as solicitações requisitadas pelo cliente sejam carregadas.
Podemos encontrar: bancos de dados como MySQL e MongoDB, linguagens
como PHP e JavaScript para sites dinâmicos, frameworks (estruturas de
trabalho) como Express e Laravel.
SERVIDOR
BACKEND
Arquitetura cliente-servidor 21
Hoje existe a possibilidade de executar
o JavaScript no lado do servidor,
permitindo programar na mesma
linguagem tanto no front-end como no
back-end, tornando o processo de
desenvolvimento mais fluido.
Arquitetura cliente-servidor
Introdução
a HTTP
HTTP (Hyper Text Transfer
Protocol)
é o protocolo que gerencia as
transações web entre clientes
e servidores.
Introdução a HTTP
O que é uma URI?
O protocolo HTTP permite a transferência de informação na web através dos
endereços web, tecnicamente chamadas URI.
URI
URL URN
Arquiteturaacliente-servidor
Introdução HTTP 25
Componentes de uma URI
URL
Indica onde se encontra o recurso que
desejamos obter e sempre começa com um
protocolo. Neste caso, HTTP.
http://www.digitalhouse.com/br/perguntas-frequentes
URN
É o nome exato do recurso uniforme.
O nome do domínio e, algumas vezes, o
nome do recurso.
Arquiteturaacliente-servidor
Introdução HTTP 26
Dentro dessa estrutura de
comunicação, falamos de request a
cada vez que o cliente solicita um
recurso ao servidor, e de response a
cada vez que o servidor devolve
uma resposta para o cliente.
Introdução a HTTP
Como viaja a informação
Cada vez que fazemos um pedido ou recebemos uma resposta utilizando o
protocolo HTTP, são enviadas informações importantes sobre eles.
A informação viaja através dos headers ou cabeçalhos, que são partes de
texto, contendo a informação requerida pelo cliente ou pelo servidor.
Arquiteturaacliente-servidor
Introdução HTTP 28
Como viaja a informação
Além dos cabeçalhos, temos o body ou corpo da mensagem, que é onde estará
a informação em si do pedido ou sua resposta.
REQUEST SERVIDOR
CLIENTE HEADER
BODY
RESPONSE
HEADER
BODY
Arquiteturaacliente-servidor
Introdução HTTP 29
Métodos de request
O protocolo HTTP define métodos de pedido. Cada método representa
uma ação e, embora compartilhem algumas características, implementam
funcionalidades diferentes entre si. Os métodos mais utilizados por este
protocolo são:
GET
É usado para pedir informações ao servidor de um recurso específico. Cada vez
que escrevemos um endereço no navegador ou clicamos em um link, estamos
utilizando o método GET. No caso de querer enviar informação ao servidor
usando este método, ela viajará através da URL.
Arquiteturaacliente-servidor
Introdução HTTP 30
Métodos de request
POST
Usada para enviar dados para o servidor. Este método é mais seguro que o
GET, já que a informação não viaja através da URL.
DELETE
Apaga um recurso existente no servidor. Quando eliminamos um post no
Facebook, por exemplo, estamos utilizando este método.
Arquiteturaacliente-servidor
Introdução HTTP 31
Métodos de request
PUT
É muito parecido com o POST. Usado para substituir toda a informação atual
de um recurso existente no servidor.
PATCH
Similar ao PUT. É utilizado para aplicar modificações parciais a um recurso
no servidor.
Arquiteturaacliente-servidor
Introdução HTTP 32
Métodos de request
Resumidamente, temos 5 métodos e cada um deles têm um propósito.
Modificar parcialmente
PATCH
um dado
Introdução a HTTP
Códigos de estado HTTP
Cada vez que o servidor recebe um pedido ou request, este emite um código
de estado que indica, de forma resumida, o estado da resposta HTTP. O código
tem três dígitos. O primeiro representa um dos 5 tipos de resposta possíveis:
Arquiteturaacliente-servidor
Introdução HTTP 34
Códigos de estado HTTP
Alguns dos códigos mais usados são:
Arquiteturaacliente-servidor
Introdução HTTP 35
HTTPS é um protocolo
melhorado do HTTP. Usando
este protocolo, o servidor
codifica a sessão com um
certificado digital.
Introdução a HTTP
Introdução
ao Express
Express é um framework
que facilita e agiliza o
desenvolvimento de
aplicações web com Node.js.
Arquitetura
Introduçãocliente-servidor
ao Express 38
O que é um framework?
Um framework é um ambiente de trabalho que traz resolvidas uma série de
tarefas, automatizando assim o desenvolvimento de qualquer aplicação.
Introdução ao Express 39
Como usar Express?
O primeiro passo é instalar a biblioteca em um projeto Node.js inicializado. Ou
seja, temos que ter executado previamente npm init e ter criado o arquivo
package.json.
Com o próximo comando, estaremos guardando, na propriedade
dependencies do arquivo package.json, uma referência à biblioteca que
estamos instalando.
Arquitetura
Introduçãocliente-servidor
ao Express 40
Como usar Express?
Uma vez instalado o Express, temos que importar o módulo no nosso
entry-point, que normalmente é um arquivo chamado: app.js.
Arquitetura
Introduçãocliente-servidor
ao Express 41
Cada vez que tivermos que
trabalhar com Express,
precisamos instalá-lo dentro
do projeto que estamos
desenvolvendo.
Arquitetura
Introduçãocliente-servidor
ao Express 42
Servidor HTTP
no Express
Uma das tantas funcionalidades que o
Express oferece é a possibilidade de
levantar um servidor web de maneira
muito simples e em poucos passos.
Arquitetura cliente-servidor 44
{código}
Importamos o módulo do
Express e guardamos a
const express = require('express');
função que nos é retornada
const app = express(); na constante express.
app.listen(3000, () =>
console.log('Servidor executando')
);
Arquitetura cliente-servidor 45
{código}
Executamos a função e
guardamos o objeto que é
const express = require('express'); devolvido na constante app.
const app = express();
Agora, através dela, vamos ter
acesso a todas as
propriedades e métodos que
app.get('/', (req, res) => { têm no Express.
res.send('Olá mundo!');
});
app.listen(3000, () =>
console.log('Servidor executando')
);
Arquitetura cliente-servidor 46
{código}
const express = require('express');
const app = express();
Arquitetura cliente-servidor 47
Com o servidor em execução, só nos
falta definir as rotas para começar a
tratar as respostas da nossa
aplicação.
Arquitetura cliente-servidor 48
{código}
const express = require('express');
const app = express();
app.listen(3000, () =>
console.log('Servidor executando')
);
Arquitetura cliente-servidor 49
{código}
O método recebe dois
const express = require('express'); parâmetros:
const app = express(); O primeiro é uma string, que
define a URL da rota.
O segundo é um callback
app.get('/', (req, res) => { com dois parâmetros: request
res.send('Olá mundo!'); (req) e response (res).
Arquitetura cliente-servidor 50
{código}
const express = require('express');
const app = express();
app.listen(3000, () =>
console.log('Servidor executando')
);
Arquitetura cliente-servidor 51
{código}
const express = require('express');
const app = express();
Dentro do callback, definimos
a resposta que enviaremos.
app.get('/', (req, res) => { Do objeto res (response),
res.send('Olá mundo!'); invocamos o método send.
Como parâmetro, passamos o
});
que queremos mostrar no
navegador. Neste caso, o
texto: Olá mundo!
app.listen(3000, () =>
console.log('Servidor executando')
);
Arquitetura cliente-servidor 52
Rotas em
Express
Através do sistema de roteamento
do Express, podemos definir como
a nossa aplicação vai responder
segundo o método HTTP e a rota
que for solicitada ao servidor.
Rotas em Express
Definindo uma rota
O Express nos traz uma estrutura simples para definir cada uma das rotas que
estaremos atendendo e as respostas que serão enviadas pela nossa aplicação.
Arquitetura cliente-servidor 55
Definindo uma rota
O primeiro objeto que vemos é o app, este guarda a execução do Express e
contém a maior parte da sua funcionalidade.
Arquitetura cliente-servidor 56
Definindo uma rota
Em seguida, precisamos colocar o método HTTP que queremos atender. Pode
ser, por exemplo: get, post, put, patch ou delete.
Arquitetura cliente-servidor 57
Definindo uma rota
Como primeiro parâmetro da função, temos uma string, que representa a rota
para a qual o nosso cliente fez a requisição. Neste caso, se trata da raiz ou
home do sistema.
Arquitetura cliente-servidor 58
Definindo uma rota
Como segundo parâmetro, temos a callback, que se encarregará de responder
à requisição.
● req → Representa a requisição do cliente.
● res → Representa a resposta do servidor.
Ambos são objetos que o Express nos fornece e conterão toda a informação e
funcionalidade necessária para trabalhar os pedidos e respostas.
Arquitetura cliente-servidor 59
Definindo uma rota
Finalmente, dentro da callback, definiremos a lógica de manipulação para
responder à requisição do cliente.
Neste caso, utilizamos o método send() do objeto res (response) para enviar
uma resposta de texto ao navegador (cliente).
Arquitetura cliente-servidor 60
Definindo uma rota
Não será necessário sempre colocar o conteúdo diretamente dentro do método.
Como todo método, o send() pode receber uma variável como parâmetro.
Arquitetura cliente-servidor 61
Send File
O método sendFile() é parte do
objeto de resposta do Express.
Arquitetura cliente-servidor 63
Respondendo com um arquivo
Até agora conhecíamos o método send(), que nos permitia enviar texto ou
HTML manualmente.
O problema é que enviar uma página inteira dessa forma é complicado, porque
teríamos que colocar todo o seu código dentro do método.
● font-family
● font-size
● font-weight
Atividade
○ Header
○ Main
○ Footer
Atividade
➔ W3Schools
http://w3schools.com
Introducción a HTML 75
75
Introducción
Arquitetura a HTML
cliente-servidor
Analisar um
1 website
Introducción a HTML 76
76
Introducción
Arquitetura a HTML
cliente-servidor
Analisar um website
Antes de começarmos a analisar a linguagem, vamos iniciar com uma análise de
um website.
Introdução acliente-servidor
HTML a HTML 77
77
Introducción
Arquitetura
Analisar um website
Se imaginássemos e destacássemos as caixas que fazem parte deste site,
veríamos algo assim (3 grandes divisões):
Introdução acliente-servidor
HTML a HTML 78
78
Introducción
Arquitetura
Analisar um website
Se fizermos o mesmo com as informações dentro dessas 3 grandes caixas,
provavelmente teremos algo parecido com isto:
Introdução acliente-servidor
HTML a HTML 79
79
Introducción
Arquitetura
Isto nos leva à conclusão de que
cada elemento HTML produz
um componente visual no
navegador.
Arquitetura cliente-servidor 80
Fluxo de um
2 website
Introducción a HTML 81
81
Introducción
Arquitetura a HTML
cliente-servidor
Fluxo de um website
Uma das finalidades deste módulo é que possamos entender como os
elementos HTML interagem uns com os outros.
E para fazer isso, precisaremos da ajuda de algumas ferramentas que
aprenderemos logo nas próximas aulas, por enquanto vamos seguir a seguinte
regra:
Introdução acliente-servidor
HTML a HTML 82
82
Introducción
Arquitetura
Fluxo de um website
Alguns elementos que vamos incorporar em nossos sites já ocupam 100% da
largura de nossa tela, é por isso que veremos que quase todos os elementos
são colocados um abaixo do outro.
100%
conteúdo
Alguns elementos, por padrão, vão ocupar
apenas seu conteúdo (como o elemento
roxo). Entraremos em mais detalhes sobre
100%
eles mais tarde.
100%
Introdução acliente-servidor
HTML a HTML 83
83
Introducción
Arquitetura
100%
Fluxo de um website
Nos próximos tópicos, fornecemos uma ajuda de
memória para que tenhamos uma referência de
quanto espaço cada elemento ocupa na tela. O
lembrete estará localizado no canto superior
direito, como neste slide.
Introdução acliente-servidor
HTML a HTML 84
84
Introducción
Arquitetura
Tags, atributos e
estrutura básica
1. Estrutura de uma página
2. Sintaxe Elementar
Índice
3. Estrutura básica de um
documento HTML
Tags, atributos
Arquitetura e estrutura básica
cliente-servidor 86
Estrutura de uma
1 página web
Tags, atributos
Arquitetura e estrutura básica
cliente-servidor 87
Como é que
normalmente vemos
um website?
Tags, atributos e estrutura básica 88
E o que está por
trás do que vemos
no navegador?
Tags, atributos e estrutura básica 89
HTML
Hyper Linguagem de marcação de hipertexto.
Tags, atributos
Arquitetura e estrutura básica
cliente-servidor 91
Sintaxe de um elemento
<h1> … </h1>
Tag de abertura Tag de fechamento
Indica o início de um Indica o fim de um
elemento, ele deve elemento, ele deve
sempre começar com o sempre começar com o
sinal menor < e terminar símbolo menor seguido
com o sinal maior >. da barra </ e terminar
O nome da etiqueta deve com o sinal maior >.
estar dentro. O nome vai dentro.
</h1> ENCERRAMENTO
Tags, atributos
Arquitetura e estrutura básica
cliente-servidor 95
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Hello world</title>
</head>
<body>
<p>Lorem ipsum dolor sit amet,
consectetur adipisicing elit.
Tenetur deserunt molestiae
numquam veritatis ea ut
praesentium explicabo atque
maxime a eaque, aut id
consequuntur. Et nemo non
perspiciatis eum!</p>
</body>
</html>
Tags, atributos e estrutura básica 96
<!DOCTYPE html> VERSÃO HTML
<html> TOPO DA PÁGINA
<head>
<meta charset="utf-8"> CONFIGURAÇÃO
DA PÁGINA
<title>Hello world</title>
</head>
<body>
<p>Lorem ipsum dolor sit amet,
consectetur adipisicing elit.
Tenetur deserunt molestiae
numquam veritatis ea ut CONTEÚDO
praesentium explicabo atque DA PÁGINA
Arquiteturade
Elementos cliente-servidor
linha e de bloco 99
1. Elementos de bloco
Índice 2. Elementos de linha
3. A propriedade display
Arquiteturade
Elementos cliente-servidor
linha e de bloco 100
1 Elementos de bloco
Arquiteturade
Elementos cliente-servidor
linha e de bloco 101
Elementos de bloco
Os elementos de bloco tentam ocupar 100% da largura do site. Visualmente,
eles geram uma quebra de linha. Isso porque, ao ocupar toda a largura
disponível, não deixam espaço para que entre outro elemento.
Um elemento de bloco
Arquiteturade
Elementos cliente-servidor
linha e de bloco 102
Tags de bloco
As tags <div> são um exemplo de tags de bloco muito utilizadas, já que
permitem gerar divisões em nosso site.
Arquiteturade
Elementos cliente-servidor
linha e de bloco 103
2 Elementos de linha
Arquiteturade
Elementos cliente-servidor
linha e de bloco 104
Elementos de linha
Os elementos de linha determinam seu tamanho com base no conteúdo
que carregam. Isso quer dizer que podem ficar um ao lado do outro em
toda a largura do site. Se o conteúdo ultrapassar a linha, ele continua na
linha de baixo.
Arquiteturade
Elementos cliente-servidor
linha e de bloco 105
Tags de linha
As tags <span> são tags de linha e frequentemente usadas para conter partes
de textos. Assim, eles podem ser estilizados de forma independente ao bloco
de código que pertencem.
<span>Umas palavras</span>
html <span>Outras palavras</span>
<span>Mais palavras por aqui</span>
Arquiteturade
Elementos cliente-servidor
linha e de bloco 106
3 A propriedade display
Arquiteturade
Elementos cliente-servidor
linha e de bloco 107
A propriedade display
Usando a propriedade display do CSS, podemos alterar a disposição do
elemento que queremos. Os valores que essa propriedade pode receber são:
block, inline, inline-block e none.
Arquiteturade
Elementos cliente-servidor
linha e de bloco 108
Disposições de elementos
Inline
Define um elemento com comportamento de linha. Ou seja, não recebe
algumas propriedades do modelo de caixa.
Block
Define um elemento com comportamento de bloco. Pode receber
propriedades do modelo de caixa.
Arquiteturade
Elementos cliente-servidor
linha e de bloco 109
Disposições de elementos
Inline-block
Define um elemento com comportamento de semi-bloco. Pode receber
propriedades tanto do modelo de caixa quanto de elementos de linha.
None
Define a exibição de um elemento como oculta. Ou seja, o elemento continua
existindo dentro da estrutura do HTML, porém deixa de ser visível ao usuário
no site.
Arquiteturade
Elementos cliente-servidor
linha e de bloco 110
Listas
1. Listas ordenadas
Índice 2. Listas desordenadas
3. Listas aninhadas
Arquitetura
Listas cliente-servidor 112
Listas
1 ordenadas
Arquitetura
Listas cliente-servidor 113
Listas ordenadas
As listas ordenadas nos permitem enumerar itens de maneira consecutiva. Por
padrão, a numeração inicia em 1 e aumenta com cada novo item.
<ol>
<li>Primeiro item</li>
<li>Segundo item</li>
<li>Terceiro item</li>
</ol>
Arquitetura
Listas cliente-servidor 114
Listas ordenadas
As listas ordenadas aparecerão da seguinte forma no navegador:
1. Primeiro item
2. Segundo item
3. Terceiro item
Arquitetura
Listas cliente-servidor 115
Listas ordenadas
Arquitetura
Listas cliente-servidor 116
Listas ordenadas
Arquitetura
Listas cliente-servidor 117
Listas ordenadas
Usando o atributo “start”, nós modificamos o número pelo qual se iniciará a
contagem da lista:
Arquitetura
Listas cliente-servidor 118
Listas
2 desordenadas
Arquitetura
Listas cliente-servidor 119
Listas desordenadas
As listas desordenadas também nos permitem listar itens. A diferença é que,
por padrão, ela irá gerar uma marcação do tipo “círculo” para cada novo item
que for adicionado.
<ul>
<li>Primeiro item</li>
<li>Segundo item</li>
<li>Terceiro item</li>
</ul>
Arquitetura
Listas cliente-servidor 120
Listas desordenadas
As listas desordenadas aparecerão da seguinte forma no navegador:
• Primeiro item
• Segundo item
• Terceiro item
Arquitetura
Listas cliente-servidor 121
Listas desordenadas
Arquitetura
Listas cliente-servidor 122
Listas
3 aninhadas
Arquitetura
Listas cliente-servidor 123
Listas aninhadas
As listas aninhadas nos permitem criar vários níveis de hierarquia e
organização. Podemos aninhá-los como quisermos e gerar os níveis de que
precisamos.
<ul>
<li>
Lembrete para viagem: Dentro de uma tag <ol> ou
<ol> <ul> só podem haver
<li>Identidade</li> elementos <li>.
<li>Passagens</li>
</ol> As listas podem ser aninhadas
adicionando um <ul> ou <ol>
</li>
dentro de um <li>.
<li>Ligar para a Assist Card</li>
<li>Adaptador para celular</li>
</ul>
Arquitetura
Listas cliente-servidor 124
Listas aninhadas
A listas aninhadas aparecerão da seguinte maneira no navegador:
Arquitetura
Listas cliente-servidor 125
Tag de Configuração e Texto
Tags de
configuração
e texto
1. Configuração de caracteres
Índice
2. Tags de texto
😊👌
Arquitetura cliente-servidor 132
Exemplo de HTML sem charset UTF-8
Este é um parágrafo que possui muitos acentos: á, é, Ã, ó, ú. Deu tudo
certo? Você vá algum caractere estranho?
Temos outro parágrafo de teste. O hipopótamo é um ávido consumidor de
sab±o. Sou f± do ³rg±o alem±o.
Outra vez. O hipopótamo é um ávido consumidor de sab±o. Sou f± do
³rg±o alem±o.
💥
😱
Arquitetura cliente-servidor 133
Etiquetas
2 de texto
<h1>Título Principal</h1>
<h2>Título Secundário</h2>
<h3>Cabeçalho nível 3</h3>
html
<h4>Cabeçalho nível 4</h4>
<h5>Cabeçalho nível 5</h5>
<h6>Cabeçalho nível 6</h6>
Cabeçalho nivel 1
Cabeçalho nivel 2
Cabeçalho nivel 3
Cabeçalho nivel 4
Cabeçalho nivel 5
Cabeçalho nivel 6
”
por documento HTML.
https://www.google.com ../imagens/fotoPerfil.jpg
https://umwebsite.com/imagens/imagem1.jpg
meuProjeto
O caminho relativo de umArquivo.js para
umaImagem.jpg ficaria da seguinte forma:
umArquivo.js
umaImagem.jpg umaImagem.jpg
meuProjeto
imagens imagens/umaImagem.jpg
umaImagem.jpg
meuProjeto
imagens
imagens/icones/umaImagem.jpg
icones
umaImagem.jpg
js
Caminho relativo de umArquivo.js até umaImagem.jpg:
umArquivo.js
../imagens/umaImagem.jpg
imagens
umaImagem.jpg
Rota
Aqui podemos especificar uma rota absoluta
(como no exemplo abaixo) ou uma rota relativa.
Locais
Para recursos dentro do nosso site, recomenda-se o uso de rotas relativas.
Telefone
Parecido com o caso anterior, se estivermos usando nosso celular e clicarmos
no link, será iniciada uma chamada para o número de telefone indicado.
Atributo → width
Esse atributo nos permite
especificar a largura da imagem.
Atributo → height
Esse atributo nos permite
especificar a altura da imagem.
Arquitetura
Introdução àcliente-servidor
semântica 160
HTML
1 semântico
Arquitetura
Introdução àcliente-servidor
semântica 161
O que é a semântica?
O uso correto de nossas tags, do ponto de vista semântico, permite reforçar o
significado do conteúdo do nosso site.
Dessa forma, podemos ser mais específicos ao incluir conteúdo entre as tags, e
assim, criar um código mais amigável ao mecanismo de busca.
Arquitetura
Introdução àcliente-servidor
semântica 162
“ Incorporar tags semânticas em
nosso código ajuda muito ao
”
posicionamento de SEO.
Arquitetura
Introdução àcliente-servidor
semântica 163
Tags
2 semânticas
Arquitetura
Introdução àcliente-servidor
semântica 164
Tag <strong>
Através desta tag, estamos dizendo aos mecanismos de busca que o elemento
é importante. Por padrão, o texto aparecerá em negrito.
Arquitetura
Introdução àcliente-servidor
semântica 165
Tag <em>
Com esta tag, nós estamos dizendo ao mecanismo de busca que o elemento
tem uma ênfase. Por padrão, o texto ficará em itálico.
Esta tag converte o texto em itálico e diz ao mecanismo de busca que ele leva
mais ênfase do que o restante. É semântica.
Arquitetura
Introdução àcliente-servidor
semântica 166
Tag <mark>
Esta tag semântica nos permite destacar uma parte do texto que seja
relevante. Serve para chamar a atenção do leitor. Por padrão, ele será visto
com um fundo amarelo.
Arquitetura
Introdução àcliente-servidor
semântica 167
Tag <cite>
Esta tag indica o título ou parte de uma “obra”. Ex: um livro, uma pintura, uma
música, um filme, uma série de TV, etc.
Arquitetura
Introdução àcliente-servidor
semântica 168
Tag <abbr>
Esta tag é usada para representar uma abreviação ou sigla. Quando você
passa o mouse por cima da sigla, aparece o significado dela, o qual definimos
no atributo title.
Arquitetura
Introdução àcliente-servidor
semântica 169
Outras tags semânticas
html <section>...</section>
html <article>...</article>
Arquitetura
Introdução àcliente-servidor
semântica 170
Outras tags semânticas
html <header>...</header>
html <footer>...</footer>
Arquitetura
Introdução àcliente-servidor
semântica 171
Estrutura
de um site
Estrutura de um site
Conhecer as tags e suas
combinações vão nos ajudar
a transformar um desenho
gráfico em um código
organizado e compreensível
de maneira simples.
Header
Section
Section
Footer
<header>
<!-- Conteúdo da header -->
</header>
<section>
<!-- Conteúdo do carrossel -->
</section>
html
<section>
<!-- Conteúdo dos produtos destaques -->
</section>
<footer>
<!-- Conteúdo do footer -->
</footer>
Arquitetura cliente-servidor 176
O conteúdo de cada bloco
Nossa segunda tarefa será definir os elementos que serão necessários dentro
da divisão de cada bloco.
1 3
2 4
<section>
<article>
<img src="/img/prod-1.jpg" alt="Título do produto">
<h3>Título do produto</h3>
<p>Descrição do produto</p>
</article>
html
<article>
<img src="/img/prod-2.jpg" alt="Título do produto">
<h3>Título do produto</h3>
<p>Descrição do produto</p>
</article>
</section>
Arquitetura cliente-servidor 179
Os produtos destacados
Por mais que sejam diferentes, esta seção é muito parecida com a anterior.
Cada produto será um artigo e dentro teremos a imagem, o título, a descrição
e, nesse caso, um link para ver mais.
<section>
<article>
<img src="/img/prod-1.jpg" alt="Título do produto">
<h3>Título do produto</h3>
<p>Descrição do produto</p>
html
<a href="#">ver mais</a>
</article>
<article><!-- Produto 2 --></article>
<article><!-- Produto 3 --></article>
</section>
Arquitetura cliente-servidor 180
O rodapé da página
Para o rodapé da página, teremos novamente a imagem do logotipo e, em
seguida, vários grupos ou seções de links.
<footer>
<div><img src="/img/logo.jpg" alt="Logo da empresa"></div>
<section>
<h2>Produtos</h2>
<ul>
<li><a href="#">Link 1</a></li>
<li><a href="#">Link 2</a></li>
html
<li><a href="#">Link 3</a></li>
</ul>
</section>
<section><!-- Conteúdo de “Serviços” --></section>
<section><!-- Conteúdo de “Sobre” --></section>
<section><!-- Conteúdo de “Redes Sociais” --></section>
</footer>
Estrutura de um site
O que vimos essa semana
● CSS
● Tipografia
● Cores
● Background
O que vamos ver hoje
● background-image
● background-size
● background-position
Agora vamos botar a mão na massa!
Atividade
➔ W3Schools
http://w3schools.com
Arquitetura
Introdução acliente-servidor
CSS 193
Vinculação
1 com HTML
Arquitetura
Introdução acliente-servidor
CSS 194
O que CSS significa?
Arquitetura
Introdução acliente-servidor
CSS 195
Para que servem as folhas de estilo?
As folhas de estilo servem para estilizar o nosso conteúdo HTML. Com o CSS,
podemos modificar as cores, o background, as tipografias, larguras, alturas...
Também podemos gerar animações e transições.
Contamos com 3 métodos para vincular nossos arquivos CSS com o
documento HTML.
Arquitetura
Introdução acliente-servidor
CSS 196
Vinculação externa RECOMEN
DADA 🤓☝
Atributo + valor
Rota de localização da minha folha de estilo.
Arquitetura
Introdução acliente-servidor
CSS 197
NÃO RECO
Vinculação interna 😕👎
MENDADA
<head>
<meta charset="UTF-8">
<style>
html
body {background: blue}
</style>
</head>
Arquitetura
Introdução acliente-servidor
CSS 198
NÃO RECO
Vinculação em linha 😕👎
MENDADA
Arquitetura
Introdução acliente-servidor
CSS 199
As regras
2 de CSS
Arquitetura
Introdução acliente-servidor
CSS 200
O que são as regras de CSS?
Uma regra de CSS é um conjunto de instruções que se aplicam a um
determinado elemento para agregar estilos.
Seletor
Indica sobre qual ou quais
elementos aplicaremos a regra.
Propriedade Valor
Define qual propriedade do(s) Especificará o comportamento que
elemento(s) vamos modificar. a propriedade vai ter.
Arquitetura
Introdução acliente-servidor
CSS 201
Como se escrevem?
Primeiro escrevemos o seletor (ou seletores, caso haja mais de um), seguido de
chaves {} para indicar onde começam as regras.
Cada regra é composta por uma propriedade e seu valor correspondente,
separados por dois pontos :.
Finalmente, podemos adicionar outras regras para o mesmo elemento, basta
separá-las com um ponto e vírgula ;.
body {
background-color: purple;
css font-family: sans-serif;
text-align: center;
}
Arquitetura
Introdução acliente-servidor
CSS 202
Os seletores de
3 CSS
Arquitetura
Introdução acliente-servidor
CSS 203
Seletores de ID
Este seletor irá selecionar o elemento HTML que é associado ao atributo ID.
Recomenda-se a utilização de nomes únicos para cada id e não repetí-los ao
longo do documento.
Arquitetura
Introdução acliente-servidor
CSS 204
Seletores de classe
Este seletor irá chamar o elemento HTML que é associado a um atributo
CLASS.
Podemos atribuir o número de classes que queremos a um mesmo elemento.
Para fazer isso, só precisamos separá-los com um espaço.
Arquitetura
Introdução acliente-servidor
CSS 205
Seletores de tag
Este seletor vai chamar o elemento HTML com o mesmo nome da tag que
chamamos do nosso CSS.
Arquitetura
Introdução acliente-servidor
CSS 206
Seletores combinados
Estes seletores afetam o(s) elemento(s) que cumprem todas as condições
estabelecidas. No exemplo a seguir, vamos chamar o elemento h2 designado
para a classe subtítulo.
Arquitetura
Introdução acliente-servidor
CSS 207
Seletores descendentes
Estes seletores servem para agregar especificidade. No exemplo a seguir,
vamos chamar o elemento li que está dentro da ul com o id lista.
Para chamá-los a partir do CSS, escrevemos os seletores separados por um
espaço (o da direita sempre será o que está dentro da esquerda).
<ul id="lista">
html <li>Primeiro item</li>
</ul>
Arquitetura
Introdução acliente-servidor
CSS 208
“ O CSS sempre vai priorizar
os seletores mais específicos
”
para aplicar os estilos.
Arquitetura
Introdução acliente-servidor
CSS 209
Propriedades
tipográficas
Propriedades tipográficas
Existem muitas propriedades de CSS que nos permitem manipular os
elementos do HTML à vontade.
Se tivéssemos que agrupar essas propriedades, poderíamos fazer assim:
● Fontes
● Fundos
● Tamanhos
● Posicionamento
● Visualização
● Comportamento
● Interface
● Outros
p {
css font-family: Arial, sans-serif;
}
p {
css font-size: 23px;
}
p {
css font-style: normal;
}
p {
css font-weight: 500;
}
p {
css text-align: justify;
}
p {
css text-decoration: underline;
}
p {
css line-height: 20px;
}
Arquitetura
Cores e background
cliente-servidor 220
1 Cores
Arquitetura
Cores e background
cliente-servidor 221
Formatos de cor
Os seguintes formatos podem ser aplicados a qualquer propriedade CSS que
receba cor:
Nome (podemos identificar as cores pelo seu nome em inglês, veja todos aqui)
purple
Hexadecimal
#f05331
RGB
rgb(255, 100, 50)
RGBA
rgba(122, 50, 125, 0.5). O último número representa a opacidade que o elemento
terá e varia de 0 a 1. Quanto menor o número, maior a transparência.
Arquitetura
Cores e background
cliente-servidor 222
Cor do texto
O atributo color nos permite atribuir uma cor ao texto de um elemento.
Recebe como valor qualquer dos formatos de cor permitidos.
Arquitetura
Cores e background
cliente-servidor 223
Cor de fundo
O atributo background-color nos permite atribuir uma cor para o fundo de um
elemento.
Ele recebe como valor qualquer um dos formatos de cor permitidos (como
vimos anteriormente).
Arquitetura
Cores e background
cliente-servidor 224
Opacidade
Através do atributo opacity damos transparência a todo o elemento, e não
apenas o seu background.
Valor
O valor representa a porcentagem de
opacidade que queremos dar ao elemento.
Os valores vão de 0 a 1. Isso quer dizer que 0.5
representa 50% de opacidade.
Arquitetura
Cores e background
cliente-servidor 225
2 Background
Arquitetura
Cores e background
cliente-servidor 226
background-image
Permite atribuir uma imagem de fundo ao elemento, definindo o caminho
através da url.
Arquitetura
Cores e background
cliente-servidor 227
background-repeat
Permite controlar se, e como, a imagem vai ser repetida. Recebe os valores:
repeat, no repeat, repeat-x, repeat-y, round e space.
Arquitetura
Cores e background
cliente-servidor 228
background-position
Permite mover a imagem dentro do elemento e decidir onde posicioná-la.
Recebe como valores: tamanhos em pixels ou porcentagem, right, bottom, left,
top. Podemos lhe atribuir um ou dois valores. O primeiro trata da posição no
eixo x, e o segundo a posição no eixo y.
Arquitetura
Cores e background
cliente-servidor 229
background-attachment
Permite definir se a imagem de fundo se moverá junto com a página durante o
scroll ou se permanecerá fixa. Recebe como valor: fixed, scroll, inherit e initial.
Arquitetura
Cores e background
cliente-servidor 230
background-size
Permite definir o tamanho da imagem de fundo. Recebe como valor: contain,
cover, inherit, assim como tamanhos em pixels ou porcentagem, indicando
com o primeiro valor a largura, e com o segundo a altura.
Arquitetura
Cores e background
cliente-servidor 231
Layouts
responsivos
O que vamos ver hoje
● Inspetor de elementos
● Menu responsivo
● Prática com @media
Atividade
➔ W3Schools
http://w3schools.com
top
margin (margem)
border (borda)
right
elemento
left
padding (preenchimento) HTML
content (conteúdo)
bottom
div {
css width: 120px;
}
div {
css height: 130px;
}
Este é um bloco.
height: 120px
div {
background-color: blue;
css width: 130px;
height: 120px;
}
width: 130px
padding: 20px
padding: 12px
padding: 12px
padding: 20px
height
height
padding: 12px padding: 12px
width width
Arquitetura cliente-servidor 246
Propriedade padding
Podemos atribuir valor a esta propriedade usando a medida em pixels (px),
indicando 1 valor para os 4 lados da caixa.
Único valor
Isso quer dizer que uma margem interna de 12px
será aplicada em todos os lados.
Dois valores
12px de padding para cima e para baixo.
20px de padding para esquerda e para direita.
Três valores
12px de padding para cima.
20px de padding para esquerda e direita.
18px de padding para baixo.
Quatro valores
12px de padding para cima.
15px de padding para direita.
18px de padding para baixo.
21px de padding para esquerda.
TOP A A A A
RIGHT
A A;
A B A B;
B B A B C;
B D A B C D;
B
BOTTOM A A C C
border: 3px
padding
Esse é um bloco.
border: 3px
border: 3px
padding
padding
padding
border: 3px
Espessura
padding padding
Esse é um bloco. Esse é um bloco.
margin: 15px
margin: 15px
margin: 15px
margin: 15px
padding
padding
padding
padding
padding padding
margin: 15px margin: 20px
Único valor
Isso quer dizer que uma margem externa de 15px
será aplicada em todos os lados.
padding
padding
margin
margin
cálculo para saber quanto espaço um
elemento vai ocupar no total é
bastante trabalhoso.
Por isso, a propriedade box-sizing
padding
nos ajuda com esse cálculo.
margin
15px + 3px + 12px + 150px + 12px + 3px + 15px
margin
padding
Conteúdo
height
padding
padding
margin
margin
padding
margin
width
Arquitetura cliente-servidor 261
box-sizing: border-box
Se usarmos o valor border-box, a altura e largura que indicarmos abrangerá o
conteúdo, padding e borda do elemento, deixando apenas a margem de fora.
margin
padding
Conteúdo
height
padding
padding
margin
margin
padding
margin
width
Arquitetura cliente-servidor 262
box-sizing: border-box
margin
padding
div {
Esse é um bloco.
width: 150px;
padding
padding
margin
margin
height: 130px;
padding: 12px;
border: solid 3px yellow;
padding
margin: 15px;
margin
box-sizing: border-box;
15px + 150px + 15px
}
largura total = 180px
Arquitetura
Viewports cliente-servidor 266
1 Tag viewport
Arquitetura
Viewports cliente-servidor 267
Tag viewport
A tag <meta> viewport passa ao browser instruções de como se deve
dimensionar e escalar a página web ao carregar.
Esta é a estrutura básica desta tag. Em alguns casos, pode ser que ela carregue
mais informações.
Arquitetura
Viewports cliente-servidor 268
Tag viewport
Arquitetura
Viewports cliente-servidor 269
2 Dev tools
Arquitetura
Viewports cliente-servidor 270
Dev tools
Nos permitem inspecionar o código de qualquer site e realizar modificações
sobre ele.
Essas alterações só ficam visíveis para nós de maneira local. Uma vez que
atualizamos o site, a visualização volta para como estava inicialmente.
Para acessá-las, podemos clicar com o botão direito do mouse e selecionar a
opção “Inspecionar”. Também podemos acessar com F12 ou Cmd+i.
Arquitetura
Viewports cliente-servidor 271
Vendo a página em diferentes tamanhos
Também nos permitem manipular a largura da viewport e simular como seria a
exibição de uma página em dispositivos com diferentes tamanhos de tela,
como por exemplo, tablet ou celular.
Arquitetura
Viewports cliente-servidor 272
Seções das dev tools
Acessos rápidos
e seções das
ferramentas de
desenvolvedor. Estrutura HTML do site.
Podemos editar os
elementos dando duplo
clique em cima deles.
Arquitetura
Viewports cliente-servidor 273
Medidas
relativas
As medidas relativas são
aquelas que levam em conta o
contexto onde se encontram.
width:
width: 300px width: 700px
200px
width:
width: 25% width: 58,33%
16,66%
p {
font-size: 20px;
css line-height: 2em; // 20px * 2 = 40px
padding: 1.5em; // 20px * 1.5 = 30px
}
Como você deve ter percebido, usar ems pode ser muito complicado.
Os rems funcionam de forma muito parecida aos ems, com a diferença de que
sempre tomarão como base o tamanho de font size do elemento <html>.
Isto quer dizer que o tamanho expressado em rems não modificará o font-size
dos elementos filhos, nem será afetado pela mudança do font-size do
elemento pai.
Em geral, é melhor usar rems ao invés de ems, já que conservamos as
vantagens de uma unidade relativa, enquanto evitamos fazer cálculos
complexos e ficar dependentes de como são afetados os elementos entre si.
Viewport
div {
width: 25vw; // 25% da largura disponível
css
height: 50vh; // 50% da altura disponível
}
width: 25vw;
height: 50vh;
100vh
100vw
body {
background: red;
}
@media (min-width: 460px){
css /* Tablets */
}
@media (min-width: 768px){
/* Laptop */
}
body {
background: red;
}
@media (max-width: 768px){
css /* Tablets */
}
@media (max-width: 460px){
/* Smartphones */
}
➔ Flexbox froggy
https://flexboxfroggy.com/#pt-br
.container-pai {
css display: flex;
}
flex-container
flex-items
Para deixar claro ao container que ele deve respeitar a largura definida de
seus filhos, usamos a propriedade flex-wrap com o valor wrap.
.container-pai {
display: flex;
css
flex-wrap: wrap;
}
.elemento-filho {
css display: flex;
}
Os eixos 322
O Flexbox trabalha com dois eixos para
desenvolver todo o seu fluxo interno:
o eixo X e o eixo Y.
Conforme decidirmos ordenar os
elementos, chamaremos um de main
axis e o outro de cross axis.
Os eixos 323
323
Eixos em Flexbox
Quando trabalhamos em fluxo flex, falamos do eixo principal (main axis) e do
eixo transversal (cross axis). O conceito de trabalho do flexbox é baseado em
uma única direção, ou seja, os elementos são distribuídos em linhas
horizontais ou em colunas verticais.
Ao definirmos o eixo principal do nosso flex container, determinamos o fluxo
que os elementos terão dentro do container. Eles serão ordenados com base
no eixo que definimos.
1
cross axis
main axis
1 2 2
main axis cross axis
Os eixos 324
324
2 flex-direction
Os eixos 325
flex-direction
Com esta propriedade, definimos o main axis do container (eixo principal), que
pode ser tanto horizontal como vertical. O cross axis (eixo transversal), será a
direção perpendicular ao main axis.
1 2 3 1 3
2 2
3 2 1 3 1
Os eixos 326
326
flex-direction: row
Os itens se dispõem no eixo x, da esquerda para a direita.
Se não declararmos a propriedade de direcionamento flex-direction para o
container, o valor padrão será row.
cross axis 1 2 3
Os eixos 327
327
flex-direction: row-reverse
Os itens se dispõem no eixo x, da direita para a esquerda.
cross axis 3 2 1
Os eixos 328
328
flex-direction: column
Os itens se dispõem no eixo y, de cima para baixo.
cross axis
Os eixos 329
329
flex-direction: column-reverse
Os itens estão dispostos no eixo y, de baixo para cima.
cross axis
Os eixos 330
330
Flexbox nos dá duas propriedades para
alinhar facilmente os elementos:
Através do main axis com justify-content.
Através do cross axis com align-items.
Os eixos 331
331
3 justify-content
Os eixos 332
justify-content
Com esta propriedade, alinhamos os itens ao longo do main axis.
Se é horizontal, eles serão alinhados em função da linha.
Se for vertical, eles serão alinhados de acordo com a coluna.
flex-start
flex-end
Os eixos 333
333
justify-content: flex-start
Os itens ficam alinhados com o início do main axis que definimos.
Se não declararmos o justify-content ao container, o valor padrão será
flex-start.
flex-start
flex-end
1 2 3
Os eixos 334
334
justify-content: flex-end
Os itens ficam alinhados com o final do main axis que definimos.
flex-start
flex-end
1 2 3
Os eixos 335
335
justify-content: center
Os itens ficam alinhados ao centro do main axis.
flex-start
flex-end
1 2 3
Os eixos 336
336
justify-content: space-between
Os itens se distribuem de maneira uniforme dentro do container.
O primeiro item será enviado ao início do main axis e o último item ao final.
O espaço livre se dividirá igualmente para separar os itens.
flex-start
flex-end
1 2 3
Os eixos 337
337
justify-content: space-around
Os itens se distribuem de maneira uniforme dentro do container.
O espaço livre disponível será dividido igualmente entre todos os elementos.
O primeiro item terá uma unidade de espaço entre a borda do container, e duas
unidades de espaço entre o seguinte item, isso é, seu próprio espaço somado ao
espaço do sucessor. O mesmo acontece com o último item.
flex-start
flex-end
1 2 3
Os eixos 338
338
4 align-items
Os eixos 339
align-items
Com esta propriedade, alinhamos os itens ao longo do cross axis.
Se não declararmos essa propriedade, o valor padrão é stretch.
flex-start
cross axis
flex-end
Os eixos 340
340
align-items: stretch
Os itens se ajustam para cobrir todo o container.
Se o eixo transversal for vertical, eles são ajustados de acordo com a coluna.
Se o eixo transversal for horizontal, eles são ajustados de acordo com a linha.
flex-start
cross axis
1 2 3
flex-end
Os eixos 341
341
align-items: flex-start
Os itens ficam alinhados ao início do cross-axis.
flex-start
cross axis 1 2 3
flex-end
Os eixos 342
342
align-items: flex-end
Os itens ficam alinhados ao final do cross-axis.
flex-start
cross axis
1 2 3
flex-end
Os eixos 343
343
align-items: center
Os itens ficam alinhados ao centro do cross-axis.
flex-start
cross axis
1 2 3
flex-end
Os eixos 344
344
Os itens em
Flexbox
Flexbox nos dá a possibilidade de
aplicar propriedades diretamente a
cada item para poder manipulá-las
separadamente e ter mais controle.
.caixa {
css order: 1;
}
.caixa-q {
css order: 1;
}
Q M D M D Q
order: 1
.caixa-d {
css order: -1;
}
M D Q D M Q
order: -1
flex-grow
.caixa-a, .caixa-b {
css flex-grow: 1;
}
A B A B
.caixa-b {
css flex-grow: 1;
}
A B A B
flex-grow
0 0 0.75 0 0.25
flex-start
flex-end
.container-pai {
align-items: flex-start;
}
css .caixa-dois {
align-self: flex-end;
}
flex-start
1 3
2
flex-end
Estrutura básica de Flexbox 360
360
align-self: center
Com center, o item fica alinhado ao centro do cross axis.
.container-pai {
align-items: flex-start;
}
css .caixa-dois {
align-self: center;
}
flex-start
1 3
center
2
flex-end
Estrutura básica de Flexbox 361
361
align-self: flex-start
Com flex-start, o item fica alinhado ao início do cross axis.
.container-pai {
align-items: flex-end;
}
css .caixa-dois {
align-self: flex-start;
}
flex-start
2
1 3
flex-end
Estrutura básica de Flexbox 362
362
align-self: stretch
Com stretch, o item se ajusta até cobrir todo o cross axis, desde que não
tenha uma altura definida e o container pai tenha a regra flex-wrap: wrap.
.caixa-um, .caixa-tres {
align-self: flex-start;
}
css .caixa-dois {
align-self: stretch;
}
flex-start
1 3
2
flex-end
➔ Validação de campos
https://developer.mozilla.org/pt-BR/docs/Learn/Forms/Form_validation
Formulários
HTML
1. O que é um formulário?
Índice
2. Elementos do formulário
Os eixos 374
374
Como funcionam
Para que um formulário funcione corretamente, são necessárias as 3 instâncias
a seguir:
Os eixos 375
375
Como funcionam
Na aula de hoje, nos preocupamos com a parte de HTML, ou seja, com a
aparência correta do formulário e a captura da informação.
Mais adiante, veremos como validar e processar a informação.
Os eixos 376
376
Elementos do
2 formulário
Os eixos 378
378
Os atributos de <form>
Essa tag possui dois atributos: action e method.
Cada um cumpre um objetivo particular:
Os eixos 379
379
O elemento <input>
É um elemento multifuncional. Alterando o valor do atributo type, podemos
obter diferentes tipos de campos.
O atributo name identifica o campo e o diferencia dos demais campos.
É importante saber que os elementos que não têm name não serão enviados.
Os eixos 380
380
O elemento <label>
Serve para associar um texto descritivo a um determinado campo.
for conteúdo
Associa o label com um campo Contém o texto que será exibido e indica as
através da sua propriedade id. informações que o usuário deve preencher no campo.
<label for="nome">Nome:</label>
html
<input type="text" name="nome" id="nome">
id do campo
Para que o label seja associado, o campo que queremos associar
deve possuir um id com o mesmo valor usado no for do label.
Os eixos 381
381
O elemento <label>
Em geral, cada campo ou grupo de campos terá seu label associado.
Quando o usuário clicar no label, será ativado automaticamente o campo ao
qual ele corresponde.
<label for="telefone">Telefone:</label>
<input type="tel" name="telefone" id="telefone">
</form>
Os eixos 382
382
Radio
buttons e
checkboxes
1. Radio buttons
Índice
2. Checkboxes
Os eixos 386
386
Propriedades e valores
type value
Cria um botão do tipo radio. Aqui vai a informação que será enviada caso
o usuário selecione esse radio-button.
name checked
Para que o usuário possa selecionar somente uma É opcional, faz com que o radio-button
opção, temos que atribuir o mesmo nome a todos os apareça pré-selecionado.
inputs do tipo radio que sejam do mesmo grupo.
Os eixos 387
387
Como vemos no navegador
Os inputs do tipo radio ficarão visíveis dessa forma:
Os eixos 388
388
2 Checkboxes
Os eixos 390
390
Propriedades e valores
type value
Cria um botão do tipo checkbox. Aqui vai a informação que será enviada
caso o usuário selecione esse checkbox.
name checked
Para que o usuário possa selecionar mais de uma É opcional, faz com que o
opção, temos que atribuir o mesmo nome a todos os checkbox apareça pré-selecionado.
inputs do tipo checkbox que sejam do mesmo grupo.
Os eixos 391
391
Outra maneira de usar
O checkbox pode ser útil para coletar informações que respondem a
perguntas simples do tipo sim/não ou verdadeiro/falso.
Nesse caso, não é necessário atribuir um valor, já que, se a opção for
selecionada, será enviado o valor “on”.
Os eixos 392
392
Como vemos no navegador
Os inputs do tipo checkbox ficarão visíveis dessa forma:
Os eixos 393
393
Formulários
avançados
O elemento <textarea>
Os campos anteriores, especialmente os de texto, são pensados para receber
pouca informação, geralmente, apenas uma linha. Já o textarea nos permite
escrever textos maiores, com várias linhas.
Conteúdo da opção
É o que o usuário verá ao abrir o select.
value max
Se precisamos mostrar uma data É opcional. Nos permite definir
padrão, usamos o atributo value. a data máxima que pode
ser escolhida.
multiple
Por padrão, permite carregar somente um arquivo.
Se quisermos aceitar mais de um, usamos multiple.
Os eixos 410
410
Pseudo seletores
Estão divididos em dois grandes grupos:
Os pseudo elementos, que nos permitem criar elementos a partir do CSS sem
ter que modificar a estrutura do HTML.
Os eixos 411
411
2 Pseudo classes
seletor:pseudo-classe {
css propriedade: valor;
}
Os eixos 413
413
Pseudo classes dos links
Os links são um dos elementos que possuem pseudo classes específicas.
Neste caso, são elas :link , :visited, :hover e :active
a:link,
a:visited {
color: rgb(98, 8, 194);
font-weight: bold;
}
css
a:hover,
a:active {
color:rgb(136, 11, 74);
}
Os eixos 414
414
Pseudo classe :link
É utilizada para aplicar estilo aos links <a></a> que tenham a propriedade href.
Os estilos definidos pela pseudo classe :link serão anulados por qualquer
pseudo classe posterior relacionada com o link (:visited, :hover ou :active)
que tenha ao menos a mesma especificidade.
a:link {
background-color: rgb(234, 0, 255);
css border-color: rgb(161, 17, 89);
color: red;
}
Os eixos 415
415
Pseudo classe :visited
É utilizada para aplicar estilo aos links <a></a> que tenham sido visitados
ao menos uma vez pelo usuário.
Seus estilos também poderão ser anulados pelos demais pseudo seletores de
links.
a:visited {
background-color: rgb(234, 0, 255);
css border-color: rgb(161, 17, 89);
color: red;
}
Os eixos 416
416
Pseudo classe :hover
Apesar deste pseudo seletor estar relacionado com os links, ele pode ser
aplicado a qualquer outro elemento de HTML.
a:hover {
css background-color: gold;
}
Os eixos 417
417
Pseudo classe :active
É utilizado para aplicar estilo aos links <a></a> que estão sendo clicados
pelo usuário. Normalmente, utilizamos para fazer a animação do click.
Seus estilos também poderão ser anulados pelos demais pseudo seletores
de links.
a:active {
background-color: rgb(234, 0, 255);
css border-color: rgb(161, 17, 89);
color: red;
}
Os eixos 418
418
Pseudo classes dos inputs
Os inputs também são elementos que possuem pseudo classes específicos.
Neste caso, elas são :focus , :enabled, :disabled e :target
Os eixos 419
419
Pseudo classe :focus
É aplicado quando um elemento tem o foco do cursor, ou seja, quando o
cursor se encontra dentro do elemento em questão.
O caso mais normal é quando o usuário está completando um campo de
um formulário.
input:focus {
color: orange;
css
font-weight: bold;
}
Os eixos 420
420
Pseudo classe :disabled
É aplicado quando um elemento está desabilitado, ou seja, quando possui a
propriedade disabled.
Normalmente, é utilizado para dar estilos aos campos que não se podem
completar em um formulário ou a opções que estão desativadas.
input:disabled {
css background-color: gray;
}
Os eixos 421
421
Para continuar aprendendo
Existem muitos outros pseudo seletores com possibilidades diversas na hora
de definir estilos.
Os eixos 422
422
3 Pseudo elementos
seletor::pseudo-elemento {
css propriedade: valor;
}
Os eixos 424
424
Pseudo elemento ::before
É utilizado junto com a propriedade content para introduzir conteúdo no
documento HTML usando o CSS.
Esse novo conteúdo aparecerá antes do conteúdo interno do elemento.
div::before {
content: "Isso será renderizado antes do elemento";
css
color: red;
}
Os eixos 425
425
Pseudo elemento ::after
É utilizado junto com a propriedade content para introduzir conteúdo no
documento HTML usando o CSS.
Esse novo conteúdo aparecerá depois do conteúdo interno do elemento.
div::after {
content: "Isso será renderizado depois do elemento";
css
color: red;
}
Os eixos 426
426
Como fica no navegador?
Por padrão, ::before e ::after são elementos de linha, então eles aparecerão
antes ou depois do conteúdo existente. No entanto, nós podemos
transformá-los em elementos de bloco e manipulá-los de outra maneira.
div::before {
content: "Aparece no começo.";
color: red;
} Aparece no começo.
css Esse é o texto que
div::after { está dentro da div.
content: "Aparece no final.";
Aparece no final.
color: blue;
}
Os eixos 428
428
Organizando
e animando
elementos
Posicionamento relativo
.caixa-1 {
position: relative;
css left: 100px;
top: 50px;
}
.caixa-2 {
position: absolute;
css right: 100px;
bottom: 50px;
}
.buttonFucsia {
position: fixed;
css right: 50px;
bottom: 50px;
}
1 .caixa-1 { … }
.caixa-2 {
2 css position: relative;
z-index: 10;
}
button {
background-color: #eaeaea;
color: #000;
css transition-property:
background-color, color; Sem transiction Com transiction
transition-duration: 0.5s;
}
@keyframes fantasma {
0% { opacity: 0% }
css 25% { transform: translateY(-20px); opacity: 100% }
100% { opacity: 0% }
}
.fantasma {
css animation: fantasma 3s infinite;
}
”
Arquitetura cliente-servidor 443
Posicionamento relativo
Quando movemos uma caixa, o ponto de referência será seu próprio lado. Ao
posicionar a caixa 1 de maneira relativa, o espaço que ocupava
originalmente seguirá ocupado. Isto quer dizer que os elementos que
estejam ao seu lado (caixa 2) não vão ser afetados por esta modificação.
.caixa-1 {
position: relative;
css left: 100px;
top: 50px;
}
”
lados do body.
.caixa-2 {
position: absolute;
css right: 100px;
bottom: 50px;
}
.caixa-2 {
css position: absolute;
right: 100px;
top: 50px;
}
”
janela do navegador.
.botaoFucsia {
position: fixed;
css right: 50px;
bottom: 50px;
}
.criarProduto {
position: fixed;
css right: 50px;
bottom: 50px;
}
”
um documento HTML.
1
<div class="caixa-1">1</div>
2 html <div class="caixa-2">2</div>
<div class="caixa-3">3</div>
3
2
.caixa-1 {
css position: relative;
}
3
2 .caixa-1 {
position: relative;
css left: 100px;
top: 50px;
3
}
.caixa-1 { … }
2
.caixa-2 {
css
position: relative;
3 z-index: 10;
}
button {
background-color: #eaeaea;
css
color: #000
}
button:hover {
background-color: #1a73e8;
css
color: #fff
}
button {
background-color: #eaeaea;
color: #000;
css
transition-property: background-color, color;
transition-duration: 0.5s;
}
button {
background-color: #eaeaea;
color: #000;
css transition:
background-color 0.5s,
color 0.5s;
}
button {
background-color: #1a73e8;
css color: #fff;
transition: all 0.5s
}
@keyframes fantasma {
css /* Aqui definimos os pontos da animação */
}
@keyframes fantasma {
0% { opacity: 0% }
css 25% { transform: translateY(-20px); opacity: 100% }
100% { opacity: 0% }
}
.fantasma {
css animation: fantasma 3s infinite;
}