- Tabelas são criadas com as tags
<table>...</table>
, para marcar a tabela<thead>...</thead>
, cabeçalho, contém linhas<tbody>...</tbody>
, corpo, contém linhas<tfoot>...</tfoot>
, rodapé, contém linhas<tr>...</tr>
, linha da tabela<td>...</td>
, célula de dados<th>...</th>
, célula do cabeçalho<caption>...</caption>
, legenda
- Referência na Mozilla Developer Network
- Editores de texto
- Hotkeys
- Na hora de escrever código HTML, CSS e JavaScript, queremos ter:
- Editores indicados:
- VSCode (gratuito 🌟)
- Atom (gratuito)
- Sublime Text 3 (pago, faz vista grossa com quem não paga)
- Benefícios:
- Gratuito
- Altamente personalizável
- Atalhos úteis
- Atenção: os atalhos e sugestões no VS Code só irão funcionar após salvar
o arquivo como
.html
- Evite "Open File" (1 arquivo só), abra uma pasta inteira ("Open Folder")
- Deixa claro quais arquivos compõe a página/site
- Salve o arquivo (ex,
.html
) para ter coloração de sintaxe - Mantenha a indentação. Se precisar corrigir:
- Ctrl+Shift+P (guia de comandos)
- Format Document
- Solicite do editor o esqueleto básico de uma página HTML
- Digite a palavra "html" e pressione Tab
↔️
- Digite a palavra "html" e pressione Tab
- Evite usar as teclas < e >
- Digite apenas o nome da tag, depois Tab
↔️ - Assim você fica muito mais rápido
- Digite apenas o nome da tag, depois Tab
- Use os atalhos sugeridos
- Algumas tags já vêem com atributos básicos (ex,
<img>
)
- Algumas tags já vêem com atributos básicos (ex,
-
Instale uma extensão (plugin ou add-on) para atualizar automaticamente o navegador sempre que salvar um arquivo
VS Code ~ Live Server (link)
Atom ~ Atom Live Server (link)
-
Efeito colateral: estará acessando o site usando um servidor web
- Codificação do arquivo
- Como um texto é armazenado em seu computador?
- ASCII
- UNICODE e UTF-8
- Como um texto é armazenado em seu computador?
- Versão do HTML:
- DOCTYPE
- Arquivos HTMLs são representados como arquivos textuais
- Porém, internamente, eles são armazenados no formato numérico em binário
- Codificação é um mapeamento de letras para números
- Na web há vários tipos de codificações:
- (1) ASCII, (2) UNICODE, ...
- ASCII é um dos mais antigos padrões de codificação
- Cada caractere (letra) é representada por um número
- Esta codificação possui:
- Letras do alfabeto latino/romano
- Pontuações
- Números e símbolos matemáticos
- Símbolos de controle (tab, espaço...)
Código | Letra |
---|---|
⋮ | ⋮ |
32 | Espaço |
33 | ! |
34 | " |
⋮ | ⋮ |
65 | A |
66 | B |
67 | C |
⋮ | ⋮ |
Código | Letra |
---|---|
⋮ | ⋮ |
97 | a |
98 | b |
99 | c |
⋮ | ⋮ |
- Unicode provê o suporte multilíngua
- Diversos alfabetos, não apenas o romano/latino
- UTF-8 é uma codificação que usa uma sequência de 8 bits para
armazenar códigos UNICODE
- Os 128 primeiros caracteres UTF-8 são idênticos aos ASCII
- Ou seja, todo o alfabeto, pontuações mais comuns e números
- Os 128 primeiros caracteres UTF-8 são idênticos aos ASCII
-
Em HTML, dentro do
... <head> <meta charset="utf-8"> <!-- USE ESTA META TAG --> <title>...</title> ...
<head>
da página, usamos uma<meta>
tag com o atributocharset
para isso ➡️- Essa tag deve aparecer nos primeiros 1024 caracteres da página (entenda)
- Para ASCII, seria
<meta charset="ISO-8859-1">
(ASCII romano/latino)
Além do arquivo HTML especificar, o próprio arquivo deve estar salvo usando UTF-8. No VS Code ➡️
- Opções de codificação são gerenciadas pela IANA e podem ser vistas aqui
*[IANA]: Internet Assigned Numbers Authority
- Especifica qual a versão do HTML que estamos usando. Formato:
<!DOCTYPE ... >
- Deve ser a primeira "tag" em um arquivo HTML
- Não pode haver nem comentários antes:
<!DOCTYPE html> ✔️ <html> ... <!-- um comentário --> ❌ <!DOCTYPE html> <html>
- Não pode haver nem comentários antes:
HTML 4.01 ~ ```xml
XHTML 1.1
~ ```xml
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
HTML5 ~ ```xml
Hoje em dia usamos sempre HTML5 😉 <!-- {.flex-align-center} -->
---
<!-- {"layout": "section-header", "hash": "reaproveitando-codigo-css"} -->
# Reaproveitando código CSS
## Seletor de classe, incluindo arquivo e mais sobre cores
- Seletor de classes
- Incluindo arquivos **CSS**
- Cores e Gradientes
<!-- {ul:.content} -->
---
<!-- {"layout": "centered-horizontal", "embedSVG": "img[src$='.svg']", "styles": ["../../styles/classes/css-rule-anatomy.min.css"]} -->
## Relembrando... **regra CSS**
- ![](../../images/css-rule-anatomy.svg) <!-- {.css-rule-anatomy.rule.push-right data-viewbox="56 0 90 10" style="width: 250px"} -->
- ![](../../images/css-rule-anatomy.svg) <!-- {.css-rule-anatomy.declaration.selector.push-right data-viewbox="50 10 150 65" style="width: 370px"} -->
- ![](../../images/css-rule-anatomy.svg) <!-- {.css-rule-anatomy.property.value.push-right data-viewbox="56 30 90 65" style="width: 250px"} --> <!-- {ul:.card-list} -->
---
## Problema: **selecionando** elementos
- Como fazemos para selecionar (_e.g._): <!-- {ul:.bulleted} -->
1. apenas **alguns parágrafos** em vez de todos?
1. apenas o **primeiro título h2** da página?
1. apenas **uma imagem em especial**?
- Uma solução possível é usar os atributos universais¹ HTML chamados
**`class`** e **`id`** para identificar os elementos e estilizá-los
> ¹**Atributos universais**: aqueles que qualquer elemento pode ter <cite>Coutinho & Hasan, 2021</cite>
>
- Vamos ver diferentes formas para isso...
---
## Selecionar **por nome de _tag_**
- Até agora, estilizamos elementos HTML de duas formas:
- **Primeira forma:** Selecionando a _tag_:
```css
p {
color: blue;
}
- Isso faz com que todos os parágrafos fiquem com a cor azul
- Segunda forma: selecionando 01 elemento em específico
- Supondo que temos:
<p id="resumo">Este é o resumo da notícia...</p>
:
#resumo { color: blue; }
- Deixando de cor azul apenas o parágrafo cujo
id
éresumo
. - Contudo, não pode haver mais de 1 elemento com o mesmo
id
- Como fazemos, então, para estilizar não apenas 01, mas um subconjunto de
elementos da forma como queremos?
- Resposta: usando classes
- Supondo que temos:
- Dada a seguinte estrutura de um
<body></body>
:<p>Primeiro</p> <p>Segundo</p> <p>Terceiro</p>
- Para criar uma regra CSS para, digamos, os dois primeiros parágrafos, podemos
alterar a estrutura HTML para:
<p class="destacado">Primeiro</p> <p class="destacado">Segundo</p> <p>Terceiro</p> <!-- continua no próximo slide -->
- E, em um arquivo CSS, podemos escrever o nome da tag, seguido por um ponto
"
.
", seguido pelo nome da classe:p.destacado { font-weight: bold; /* negrito */ }
- Ou, se quisermos usar a classe
destacado
para outros elementos além de<p></p>
, podemos omitir o nome da tag:.destacado { font-weight: bold; }
- Por enquanto, colocamos o CSS dentro do arquivo HTML
<style> /* reaproveitamento de código CSS dentro do arquivo */ p { color: #fff; } /* misturamos código CSS dentro do arquivo HTML */ </style>
- Mas isto é uma prática ruim! 😱
- Um arquivo HTML pode referenciar ("incluir") um CSS assim:
<link rel="stylesheet" href="arquivo-de-estilos.css">
- Mais de um arquivo HTML pode usar esse CSS
- Reaproveitamento de código CSS
- Caching do arquivo CSS: o arquivo é baixado apenas uma vez e
usado sempre que necessário
- Útil se o site tem várias páginas
- Mais de um arquivo HTML pode usar esse CSS
- Quando o navegador lê essa linha, ele baixa esse arquivo CSS e o interpreta
- Esqueceu toda a sintaxe (forma de escrita)?
- Digite apenas
link
e, logo após, aperte Tab↔️ : - O mesmo vale para o VS Code
<style> .color-text { color: #ffff0a; } .gradient-text { background: linear-gradient(to right, #0f9000, #c900d6); -webkit-background-clip: text; -webkit-text-fill-color: transparent; } </style>
-
red cyan gold forestgreen cornflowerblue rebeccapurple ⋮
-
rgb(verme, verde, azul)
- rgb(...) com número entre 0...255 para vermelho, verde, azul
-
#vmvdaz
- '#' + 2 caracteres para vermelho, verde, azul
- (0...9, A(10)...F(15))
- Exemplo:
p { color: cyan; }
- Exemplo:
p { color: rgb(0, 255, 255); }
- Exemplo:
p { color: #00ffff; }
-
red cyan gold forestgreen cornflowerblue rebeccapurple ⋮
- Não tem como
-
rgba(verme, verde, azul, alpha)
alpha
é a opacidade da cor- opacidade = 1 - transparência
- De 0 (transp.) até 1 (opaco)
-
#vmvdazaa
- 2 caracteres para
alpha
- De 0 (transp.) até FF (opaco)
- 2 caracteres para
- Exemplo:
- Não tem!
- Exemplo:
p { color: rgba(0, 255, 255, 0.5); }
- Exemplo:
p { color: #00ffff80; }
-
Se ambos caracteres de cada componente em hexa são iguais (ex:
#FF0033 /* maiúsc. ou min. */ #ff0033 #f03
#ff0033
), pode escrever só 1 de cada (ex:#f03
) -
Em vez de 0...255, pode escrever 0%...100%
rgb(255, 0, 51) rgb(100%, 0%, 20%) rgba(255, 0, 0, 0.1)
-
Também existe
hsl(60, 100%, 50%) hsla(240, 100%, 50%, 0.05)
hsl(hue, sat, light)
, mas é menos comum
linear-gradient
é um valor válido parabackground-image
, e não parabackground-color
nem paracolor
- Veja a documentação do que é um
gradient
- Veja a documentação do que é um
-
::: result . max-width: calc(100% - 600px);
0 graus, iniciando com azul e terminando como verde
:::
p { background-image: linear-gradient( 0deg, blue, #00FF00 ); }
- ::: result . max-width: calc(100% - 650px);
Começa amarelo e termina azul no canto esquerdo superior
:::
p { background-image: linear-gradient( to left top, yellow, blue ); }
- ::: result . max-width: calc(100% - 600px);
Azul, branco e verde
:::
p { background-image: linear-gradient( 90deg, blue, white 20%, #00FF00 ); }
- A atividade das abelhas
- Flutuando coisas
- Pesquisando novas propriedades CSS/elementos HTML
- Baixe as imagens e páginas
que serão usados
- Descompacte o arquivo
cefet-front-end-bees-master.zip
na área de trabalho- Isto criará uma pasta com o nome
cefet-front-end-bees-master
lá
- Isto criará uma pasta com o nome
- Renomeie a pasta criada na área de trabalho para
site-abelhas
- Esta é a pasta raiz do site - onde devem ficar os arquivos
.html
- Esta é a pasta raiz do site - onde devem ficar os arquivos
- Veja instruções detalhadas aqui
- Descompacte o arquivo
Jornais e revistas costumam colocar imagens junto ao texto para fazer uma bela diagramação do conteúdo Coutinho, 2017 Isso se chama deixar o elemento (e.g., imagem) flutuando Hasan, 2017
- Na web também queremos fazer isso!
Vamos conhecer um nova propriedade: float
- Usado para alterar o fluxo tradicional da página
- Em CSS:
img#abelha-operaria { float: left; /* left, right, none */ } /* none é o valor padrão - sem flutuação */
- No HTML:
<img id="abelha-operaria" src="..."> <p>Texto ...</p>
- Em CSS:
Um elemento flutuante é removido do fluxo tradicional e
- os elementos
block
depois dele fingem que ele não está ali - os elementos
inline
depois dele respeitam seu formato
- os elementos
- Vamos fazer com que o parágrafo com
id="amazing"
flutue à direita nos próximos 2 slides...
Flutuando o parágrafo à direita
p#amazing { width: 200px; float: right; }
- Repare que:
- Elementos declarados antes do parágrafo flutuante não são alterados
- Elementos declarados depois:
- Se forem
block
, ignoram o elemento flutuante - Se forem
inline
, respeitam o elemtno flutuante
- Se forem
- Repare que:
Como arredondar bordas?
- Há muitas propriedades CSS que não teremos tempo de ver no curso
- Contudo, a Web é uma ótima fonte de informação
- Pesquise "como arredondar bordas em CSS" no Google, por exemplo
- Capítulos 5 e 6 do livro