Seletores personalizados
Anotações relacionada a aula 15
1. Indicar Fontes em CSS: Sintaxe e Tipos
Para especificar fontes em CSS, utiliza-se a propriedade font-family
. A sintaxe básica envolve
listar um ou mais nomes de fontes, separados por vírgula. O navegador tentará usar a primeira fonte da lista; se
não estiver disponível no sistema do usuário, tentará a próxima, e assim por diante.
- Sintaxe:
seletor { font-family: "Nome da Fonte 1", "Nome da Fonte 2", nome-generico-da-familia; }
- Nomes de Fontes: Se o nome da fonte contiver espaços, deve ser colocado entre aspas
(simples ou duplas). Ex:
"Times New Roman"
. - Font Stack (Pilha de Fontes): É a prática de listar múltiplas fontes. A última fonte na lista deve ser sempre uma família genérica.
- Famílias Genéricas: São categorias de fontes com características visuais semelhantes. As
principais são:
serif
: Fontes com pequenos traços decorativos nas extremidades das letras (ex: Times New Roman, Georgia).sans-serif
: Fontes sem serifas, com traços limpos (ex: Arial, Verdana, Helvetica). Geralmente preferidas para telas digitais pela legibilidade.monospace
: Fontes onde todos os caracteres ocupam a mesma largura horizontal (ex: Courier New, Consolas). Comum para código.cursive
: Fontes que simulam escrita à mão (ex: Brush Script MT).fantasy
: Fontes decorativas, mais estilizadas (ex: Papyrus).
- Tipos de Fontes:
- Fontes Seguras para Web (Web Safe Fonts): Fontes comuns pré-instaladas na maioria dos sistemas operacionais (Windows, macOS, Linux, Android, iOS). Exemplos: Arial, Verdana, Helvetica, Georgia, Times New Roman, Courier New. Usá-las garante maior consistência visual sem necessidade de carregar arquivos extras.
- Fontes da Web (Web Fonts): Fontes que não são pré-instaladas e precisam ser
baixadas pelo navegador. Podem ser hospedadas externamente (como no Google Fonts) ou auto-hospedadas
usando a regra
@font-face
(detalhado no ponto 9). Permitem maior liberdade criativa.
Exemplo:
body {
/* Tenta usar Open Sans, se não der, tenta Arial, se não der, usa qualquer sans-serif disponível */
font-family: "Open Sans", Arial, sans-serif;
}
h1 {
/* Tenta usar Merriweather, se não der, tenta Georgia, se não der, usa qualquer serifada */
font-family: Merriweather, Georgia, serif;
}
2. Teoria das Cores no Design de Websites e Melhores Práticas
A teoria das cores estuda como as cores interagem e como podem ser combinadas para criar harmonia visual e transmitir mensagens. No design de websites, ela é crucial para a estética, usabilidade, acessibilidade e identidade da marca.
- Conceitos Básicos:
- Círculo Cromático: Ferramenta visual que organiza as cores (primárias, secundárias, terciárias).
- Esquemas de Cores: Combinações harmônicas (monocromático, análogo, complementar, triádico, tetrádico).
- Psicologia das Cores: Cores evocam emoções e associações culturais (ex: azul transmite confiança, vermelho urgência, verde natureza/sucesso).
- Melhores Práticas para Fontes e Fundo:
- Contraste: É fundamental garantir contraste suficiente entre a cor do texto e a cor de fundo para assegurar a legibilidade. As diretrizes WCAG (Web Content Accessibility Guidelines) recomendam uma taxa de contraste mínima de 4.5:1 para texto normal e 3:1 para texto grande. Existem ferramentas online (contrast checkers) para verificar isso. Fundo branco com texto preto oferece o maior contraste, mas combinações como azul escuro sobre branco ou texto cinza escuro sobre fundo claro também funcionam bem. Evite combinações de baixo contraste (ex: texto cinza claro sobre fundo branco, texto vermelho sobre fundo verde).
- Hierarquia Visual: Use cores para diferenciar elementos (títulos, links, botões, texto normal) e guiar o olhar do usuário.
- Identidade da Marca: Utilize as cores da marca de forma consistente.
- Limitação da Paleta: Não use cores em excesso. Uma paleta principal (2-3 cores) e algumas cores de destaque (para alertas, ações) costuma ser suficiente.
- Acessibilidade: Além do contraste, considere o daltonismo. Não confie apenas na cor para transmitir informação importante (use também ícones, texto, sublinhados).
- Estado dos Elementos: Use variações de cor para indicar estados como
:hover
(mouse sobre),:focus
(elemento selecionado via teclado),:active
(clicado).
3. Medidas Absolutas em CSS (cm, mm, in, px, pt, pc)
Medidas absolutas definem um tamanho fixo, que não depende de outros elementos ou do tamanho da janela do navegador.
cm
(Centímetros),mm
(Milímetros),in
(Inches - Polegadas):- O que são: Unidades de medida físicas.
- Uso: Raramente usadas para design de tela devido à variação de densidade de pixels
(DPI) entre dispositivos. Um centímetro físico pode corresponder a um número diferente de pixels em
telas diferentes. Podem ser úteis em stylesheets específicos para impressão
(
@media print
).
px
(Pixels):- O que é: A unidade absoluta mais comum para telas. Teoricamente, representa um pixel (ponto) na tela do dispositivo.
- Uso: Frequentemente usado para definir espessuras de borda
(
border: 1px solid black;
), larguras/alturas fixas de elementos que não devem escalar, ou gaps pequenos e precisos. Não é recomendado parafont-size
se a acessibilidade for uma prioridade, pois pode impedir que usuários redimensionem o texto nas configurações do navegador.
pt
(Points - Pontos):- O que é: Unidade tipográfica tradicional (1pt = 1/72 de polegada).
- Uso: Comum em design gráfico e impressão, mas menos usual na web pelo mesmo motivo das outras unidades físicas.
pc
(Picas):- O que é: Outra unidade tipográfica (1pc = 12pt).
- Uso: Muito rara em desenvolvimento web.
Por que usar (com cautela): px
é útil quando se precisa de um controle preciso
sobre o tamanho de elementos que não devem mudar, como bordas finas ou ícones com dimensões exatas. As unidades
físicas são mais adequadas para definir estilos de impressão.
4. Medidas Relativas em CSS (em, ex, rem, vw, vh, %)
Medidas relativas têm seu tamanho definido em relação a outro valor, tornando-as ideais para designs responsivos e acessíveis.
em
:- O que é: Relativa ao
font-size
do elemento pai (ou do próprio elemento, se estiver definindofont-size
). - Uso: Útil para criar componentes escaláveis, onde o padding, margin, etc., se
ajustam proporcionalmente ao tamanho do texto. Ex:
padding: 1em;
significa um padding igual aofont-size
atual. Cuidado: O valor pode "compor" em elementos aninhados, tornando o cálculo complexo (se um pai temfont-size: 1.2em
e o filho também, o filho terá1.2 * 1.2 = 1.44
vezes ofont-size
do avô).
- O que é: Relativa ao
ex
:- O que é: Relativa à altura-x (a altura da letra "x" minúscula) da fonte atual.
- Uso: Raro, mas pode ser útil para alinhamentos finos baseados na métrica da fonte.
rem
(Root em):- O que é: Relativa ao
font-size
do elemento raiz (<html>
). Por padrão, nos navegadores, isso é16px
, mas o usuário pode alterar. - Uso: Altamente recomendada para
font-size
,padding
,margin
ewidth
/height
em layouts. Evita o problema de composição doem
. Permite que todo o layout e texto escalem proporcionalmente se o usuário alterar o tamanho da fonte base no navegador, melhorando a acessibilidade. Ex:font-size: 1.5rem;
(será24px
se a raiz for16px
).
- O que é: Relativa ao
vw
(Viewport Width):- O que é: 1vw = 1% da largura da viewport (a área visível da janela do navegador).
- Uso: Ótimo para criar elementos que ocupam uma largura relativa à tela, como fontes
que se ajustam ao tamanho da janela (
font-size: 5vw;
) ou seções de largura total.
vh
(Viewport Height):- O que é: 1vh = 1% da altura da viewport.
- Uso: Ideal para criar elementos com altura relativa à tela, como um banner
"hero" que ocupa toda a altura visível (
height: 100vh;
).
%
(Percentagem):- O que é: Relativa à mesma propriedade do elemento pai. Se usada para
font-size
, é relativa aofont-size
do pai. Se usada parawidth
, é relativa àwidth
do pai. - Uso: Muito comum para larguras e alturas de elementos dentro de um contêiner
(
width: 50%;
), margens e paddings.
- O que é: Relativa à mesma propriedade do elemento pai. Se usada para
Benefícios: Criação de layouts fluidos, adaptáveis a diferentes tamanhos de tela (responsividade) e que respeitam as preferências de tamanho de fonte do usuário (acessibilidade).
5. Recomendações da W3C sobre Fontes e Unidades
O W3C (World Wide Web Consortium), através de suas especificações (CSS) e diretrizes (WCAG), estabelece padrões e boas práticas:
- Unidades:
- Acessibilidade (WCAG): Recomenda o uso de unidades relativas (
rem
,em
,%
) para tamanhos de fonte e espaçamentos. Isso permite que usuários com baixa visão possam aumentar o tamanho do texto através das configurações do navegador sem quebrar o layout. Evitarpx
parafont-size
é uma prática chave. - CSS: Define a funcionalidade de todas as unidades, mas não prescreve rigidamente qual usar, embora as vantagens das unidades relativas para flexibilidade e acessibilidade sejam implícitas nas especificações modernas como CSS Values and Units Module.
- Acessibilidade (WCAG): Recomenda o uso de unidades relativas (
- Fontes:
- Font Stacks: Recomenda o uso de pilhas de fontes (
font-family
) terminando com uma família genérica para garantir que o texto seja sempre renderizado de forma legível. - Web Fonts (
@font-face
): Padroniza o uso de@font-face
para incorporar fontes personalizadas. Recomenda o uso de formatos otimizados para web como WOFF e WOFF2 para melhor desempenho. A especificação CSS Fonts Module detalha isso. - Performance: Sugere carregar apenas os pesos e estilos de fonte necessários e
considerar estratégias como
font-display
para controlar como o texto é exibido enquanto a fonte carrega.
- Font Stacks: Recomenda o uso de pilhas de fontes (
- Contraste de Cor (WCAG): Define níveis mínimos de contraste entre texto e fundo (AA e AAA) para garantir legibilidade para pessoas com deficiências visuais ou em condições de iluminação variadas.
Em resumo, o W3C promove o uso de tecnologias web de forma semântica, acessível e interoperável, favorecendo unidades relativas, fontes da web otimizadas e design consciente da acessibilidade.
6. Fontes Modernas e Fluidas para Websites
Fontes "modernas e fluidas" são aquelas que:
- Possuem boa legibilidade em diferentes tamanhos e resoluções de tela.
- Oferecem vários pesos (light, regular, bold, black) e estilos (italic).
- Frequentemente são
sans-serif
para interfaces e texto curto, masserif
bem desenhadas também funcionam bem para leitura longa. - Podem incluir Variable Fonts, que permitem ajustes finos em peso, largura e outros eixos em um único arquivo, oferecendo grande flexibilidade e performance.
Recomendações Atuais e Exemplos Populares (Muitas disponíveis no Google Fonts):
- Sans-serif:
- Inter: Excelente para UI, muito legível, com muitos pesos e recursos OpenType. É uma fonte variável.
- Roboto: Padrão do Android, muito versátil e legível.
- Open Sans: Uma escolha muito popular, neutra e amigável.
- Lato: Sensação amigável e quente, boa legibilidade.
- Montserrat: Geométrica, boa para títulos e texto curto.
- Nunito / Nunito Sans: Bordas arredondadas, visual moderno e amigável.
- Serif:
- Merriweather: Projetada para leitura em tela, boa legibilidade.
- Playfair Display: Elegante, alto contraste, ótima para títulos grandes.
- Lora: Serifada contemporânea, boa para corpo de texto.
- PT Serif: Projetada para funcionar bem com PT Sans, boa para textos longos.
- Considerações:
- Licença: Verifique se a licença permite uso na web (a maioria do Google Fonts permite).
- Performance: Carregue apenas os pesos/estilos necessários. Use WOFF2.
- Combinação: Escolha fontes que se complementem (ex: uma sans-serif para UI/títulos e uma serif para corpo de texto).
7. Propriedade font
(Shorthand)
A propriedade font
é um atalho (shorthand) para definir várias propriedades de fonte em uma única
declaração CSS. Ela pode definir: font-style
, font-variant
, font-weight
,
font-stretch
, font-size
, line-height
e font-family
.
- Sintaxe:
seletor { /* Ordem recomendada: style variant weight stretch size/line-height family */ font: [font-style] [font-variant] [font-weight] [font-stretch] font-size [/line-height] font-family; }
- Valores Obrigatórios:
font-size
efont-family
DEVEM ser especificados. - Valores Opcionais:
font-style
,font-variant
,font-weight
,font-stretch
,line-height
. Se omitidos, são redefinidos para seus valores iniciais (normal
,normal
,normal
,normal
,normal
, respectivamente). line-height
: Se incluído, deve vir imediatamente apósfont-size
, separado por uma barra (/
).font-stretch
: É menos comum e nem todas as fontes o suportam.
Exemplos:
p {
/* Define: italic, normal variant, bold weight, normal stretch, 1em size, 1.5 line-height, Arial family (ou sans-serif) */
font: italic bold 1em/1.5 Arial, sans-serif;
}
h1 {
/* Define apenas o obrigatório: normal style/variant/weight/stretch, 2.5rem size, normal line-height, Georgia family (ou serif) */
font: 2.5rem Georgia, serif;
}
.special-text {
/* Define: normal style, small-caps variant, 400 weight, normal stretch, 16px size, 1.4 line-height, "Open Sans" family (ou sans-serif) */
font: small-caps 400 16px/1.4 "Open Sans", sans-serif;
}
Atenção: Usar o shorthand font
redefine todas as propriedades que ele pode
controlar para seus valores iniciais, a menos que você as especifique explicitamente na declaração.
8. Repositórios Externos de Fontes Gratuitas
Existem vários sites que oferecem fontes de alta qualidade, muitas delas gratuitas para uso em projetos web:
- Google Fonts (fonts.google.com):
- Descrição: O mais popular e amplamente utilizado. Oferece uma vasta biblioteca de
fontes open-source, otimizadas para web. Fácil de implementar via link
<link>
no HTML ou@import
no CSS, ou baixando os arquivos para auto-hospedagem. - Qualidade: Geralmente alta, com boa cobertura de caracteres e vários pesos/estilos.
- Descrição: O mais popular e amplamente utilizado. Oferece uma vasta biblioteca de
fontes open-source, otimizadas para web. Fácil de implementar via link
- Font Squirrel (fontsquirrel.com):
- Descrição: Curadoria de fontes gratuitas, com foco em licenças que permitem uso
comercial. Muitas fontes de alta qualidade. Oferece um útil "Webfont Generator" para criar
kits
@font-face
a partir de arquivos de fonte que você possui (respeitando a licença). - Qualidade: Boa seleção, mas verifique sempre a licença individual de cada fonte.
- Descrição: Curadoria de fontes gratuitas, com foco em licenças que permitem uso
comercial. Muitas fontes de alta qualidade. Oferece um útil "Webfont Generator" para criar
kits
- Adobe Fonts (fonts.adobe.com):
- Descrição: Anteriormente Typekit. Oferece uma grande coleção de fontes premium. Possui um plano gratuito (limitado) e acesso completo para assinantes da Adobe Creative Cloud. Integração fácil em projetos web.
- Qualidade: Muito alta, fontes de fundições renomadas.
- DaFont (dafont.com) / FontSpace (fontspace.com):
- Descrição: Grandes coleções de fontes, incluindo muitas decorativas e experimentais.
- Qualidade: Variável. É crucial verificar cuidadosamente a licença de cada fonte antes de usar, especialmente para fins comerciais, pois muitas são apenas para uso pessoal ou demonstração.
9. @font-face
, font-family
, Formatos e Fontes Personalizadas
Para usar fontes que não são "web safe" e que você mesmo hospeda (em vez de usar um serviço como Google
Fonts), você utiliza a regra CSS @font-face
.
@font-face
:- Conceito: Permite que você especifique um nome para uma fonte personalizada e informe ao navegador onde encontrar o arquivo (ou arquivos) dessa fonte.
- Sintaxe:
@font-face { font-family: 'NomeDaMinhaFonte'; /* Nome que você usará no CSS */ src: url('caminho/para/minhafonte.woff2') format('woff2'), /* Formato moderno e preferido */ url('caminho/para/minhafonte.woff') format('woff'); /* Formato fallback */ /* Opcional: definir peso e estilo para esta fonte específica */ font-weight: 400; /* ou bold, 700, etc. */ font-style: normal; /* ou italic */ font-display: swap; /* Controla como o texto é exibido durante o carregamento */ }
font-display
: Propriedade importante para performance e experiência do usuário.swap
mostra o texto com uma fonte fallback imediatamente e troca pela fonte personalizada quando ela carregar. Outras opções incluemblock
,fallback
,optional
.
font-family
(dentro e fora de@font-face
):- Dentro de
@font-face
: Define o nome que você dará à fonte personalizada (ex:'NomeDaMinhaFonte'
). - Fora de
@font-face
: Usa o nome definido para aplicar a fonte a elementos HTML (ex:body { font-family: 'NomeDaMinhaFonte', sans-serif; }
).
- Dentro de
- Formatos de Arquivo de Fonte:
TTF
(TrueType Font) /OTF
(OpenType Font): Formatos de desktop comuns. Funcionam na web, mas os arquivos podem ser grandes. OTF geralmente tem mais recursos (ligaturas, etc.).WOFF
(Web Open Font Format): Criado especificamente para a web. É um contêiner comprimido para fontes TTF/OTF. Amplo suporte de navegadores.WOFF2
(Web Open Font Format 2): Evolução do WOFF com compressão significativamente melhor (arquivos menores, carregamento mais rápido). É o formato preferido para navegadores modernos.EOT
(Embedded OpenType): Formato antigo da Microsoft para IE. Praticamente obsoleto.SVG
(Scalable Vector Graphics) Fonts: Formato vetorial, usado em versões antigas do Safari móvel. Também obsoleto para texto.
- Como Utilizar Fontes Personalizadas:
- Obtenha os Arquivos: Compre ou baixe os arquivos da fonte (TTF, OTF).
Verifique a licença para garantir que permite o uso em
@font-face
(web embedding). - Converta para Formatos Web: Use ferramentas (como o gerador do Font Squirrel ou
conversores online/offline) para gerar as versões
WOFF2
eWOFF
da sua fonte. - Defina
@font-face
no CSS: Crie regras@font-face
para cada variação (peso/estilo) da sua fonte, apontando para os arquivosWOFF2
eWOFF
. ColoqueWOFF2
primeiro na declaraçãosrc
para que navegadores modernos o usem. - Aplique a Fonte: Use o
font-family
definido nas suas regras CSS normais.
- Obtenha os Arquivos: Compre ou baixe os arquivos da fonte (TTF, OTF).
Verifique a licença para garantir que permite o uso em
10. Extensões de Navegador: ColorZilla e Font Ninja
São ferramentas (extensões/add-ons para navegadores como Chrome, Firefox) que auxiliam desenvolvedores e designers a inspecionar elementos visuais em páginas web.
- ColorZilla:
- Função Principal: Identificar cores em qualquer ponto de uma página web.
- Recursos: Possui um conta-gotas (Eyedropper) para clicar em um pixel e obter seu código de cor (Hex, RGB, HSL). Também inclui um seletor de cores, histórico de cores selecionadas, analisador de cores da página, e um gerador de gradientes CSS.
- Utilidade: Agiliza a descoberta de cores exatas usadas em um site, seja para replicar um estilo, verificar contraste ou obter inspiração, sem precisar inspecionar o código CSS manualmente.
- Font Ninja (ou alternativas como WhatFont):
- Função Principal: Identificar as fontes usadas no texto de uma página web.
- Recursos: Ao ativar a extensão e passar o mouse sobre o texto, ela exibe o nome da
font-family
,font-size
,font-weight
,line-height
e a cor (color
) aplicados àquele texto. Algumas versões permitem testar fontes diretamente na página. - Utilidade: Facilita a identificação de tipografia interessante em outros sites, depuração de quais estilos de fonte estão sendo realmente aplicados a um elemento, e verificação de hierarquia tipográfica.
Ambas as extensões otimizam o fluxo de trabalho, permitindo identificar rapidamente estilos visuais sem mergulhar profundamente no DevTools do navegador.
11. Propriedades CSS para Alinhamento de Texto
CSS oferece diversas propriedades para controlar a disposição e apresentação do texto dentro de seus elementos contêineres:
text-align
:- Descrição: Controla o alinhamento horizontal do texto dentro de um elemento de bloco.
- Valores Comuns:
left
(alinha à esquerda, padrão para idiomas LTR como português),right
(alinha à direita),center
(centraliza),justify
(justifica o texto, alinhando ambas as margens esquerda e direita, exceto geralmente a última linha). - Valores Lógicos:
start
(alinha no início da direção do texto - esquerda em LTR),end
(alinha no fim da direção do texto - direita em LTR). São preferíveis para internacionalização.
text-indent
:- Descrição: Aplica um recuo (indentação) à primeira linha de texto de um bloco.
- Valores: Pode ser uma medida (ex:
2em
,30px
) ou percentagem (relativa à largura do contêiner). Valores negativos criam um recuo "pendurado". Ex:text-indent: 2em;
.
line-height
:- Descrição: Define a altura da caixa de linha, controlando o espaçamento vertical entre as linhas de texto (conhecido como "leading" ou entrelinha).
- Valores: Pode ser um número sem unidade (ex:
1.5
- recomendado, pois é relativo aofont-size
do próprio elemento), uma medida (ex:24px
), ou uma percentagem (relativa aofont-size
). Umaline-height
adequada (geralmente entre1.4
e1.8
) melhora muito a legibilidade.
vertical-align
:- Descrição: Controla o alinhamento vertical de elementos inline ou
inline-block (como imagens ou
<span>
dentro de um parágrafo) e células de tabela (<td>
,<th>
) dentro de sua linha ou célula. Não alinha elementos de bloco verticalmente dentro de seu contêiner (para isso, usa-se Flexbox, Grid ou outras técnicas). - Valores Comuns:
baseline
(padrão),top
,middle
,bottom
,text-top
,text-bottom
, além de valores de comprimento (px, em) e percentagem.
- Descrição: Controla o alinhamento vertical de elementos inline ou
inline-block (como imagens ou
text-decoration
:- Descrição: Aplica linhas decorativas ao texto. É um shorthand para
text-decoration-line
,text-decoration-color
,text-decoration-style
,text-decoration-thickness
. - Valores Comuns (para
text-decoration-line
):none
(remove decoração, útil para links),underline
,overline
,line-through
.
- Descrição: Aplica linhas decorativas ao texto. É um shorthand para
text-transform
:- Descrição: Controla a capitalização do texto.
- Valores:
none
(padrão),capitalize
(primeira letra de cada palavra maiúscula),uppercase
(tudo maiúsculo),lowercase
(tudo minúsculo).
letter-spacing
:- Descrição: Ajusta o espaço entre os caracteres do texto.
- Valores: Medidas como
px
,em
. Pode ser negativo para aproximar as letras.
word-spacing
:- Descrição: Ajusta o espaço entre as palavras.
- Valores: Medidas como
px
,em
.