Início

Responsive Web Development

UA4 — CSS: Fundamentos

CSS (Cascading Style Sheets) controla a apresentação visual do HTML — cores, fontes, espaçamentos, layout e muito mais.

CSS Visual Anatomy — capa
A Anatomia Visual da Web: Dominando o CSS
HTML (Planta Baixa) vs CSS (Pintura e Decoração)
HTML define estrutura; CSS define apresentação

Como aplicar CSS

MétodoComoQuando usar
Externo<link rel=“stylesheet” href=“style.css”>Sempre — é o padrão
Interno<style> no <head>Prototipação rápida
Inlinestyle=”…” na tagExceção — evitar
Anatomia de uma regra CSS: seletor, propriedade, valor
Anatomia de uma regra CSS
CSS inline, interno e externo — comparativo
Inline (evite) → Interno (restrito) → Externo (profissional)

Seletores

/* Tag */
p { color: red; }

/* Classe */
.destaque { font-weight: bold; }

/* ID */
#cabecalho { background: #333; }

/* Descendente */
nav a { text-decoration: none; }

/* Pseudo-classe */
a:hover { color: blue; }
li:first-child { font-weight: bold; }

/* Pseudo-elemento */
p::first-line { font-size: 1.2em; }
Classes e IDs — bairros e CPFs dos elementos
Classes e IDs — bairros e CPFs dos elementos
Seletores básicos: ID, Classe, Elemento, Universal
Arsenal de miras: seletores ID, classe, elemento e universal
Pseudo-classes e pseudo-elementos
Pseudo-classes (estado) e pseudo-elementos (partes específicas)

Box Model

Todo elemento HTML é uma caixa com quatro áreas:

┌─────────────────────────────┐ ← margin
│  ┌───────────────────────┐  │ ← border
│  │  ┌─────────────────┐  │  │ ← padding
│  │  │    CONTEÚDO     │  │  │
│  │  └─────────────────┘  │  │
│  └───────────────────────┘  │
└─────────────────────────────┘
.caixa {
  width: 300px;
  padding: 16px;
  border: 2px solid #ccc;
  margin: 24px auto;  /* auto centraliza horizontalmente */
  box-sizing: border-box; /* padding incluso na width */
}
Box Model: Content, Padding, Border, Margin
O segredo de tudo: Content → Padding → Border → Margin

Especificidade

Quando há conflito de regras CSS, vence a de maior especificidade:

SeletorEspecificidade
style="" (inline)1,0,0,0 — ganha sempre
#id0,1,0,0
.classe, [attr], :pseudo0,0,1,0
tag (p, div…)0,0,0,1
* (universal)0,0,0,0

Dica prática

Prefira classes a IDs no CSS — são reutilizáveis e causam menos problemas de especificidade.

Comparativo: CSS externo vs interno vs inline

CaracterísticaCSS ExternoCSS InternoCSS Inline
ManutençãoFácil — uma mudança reflete em todas as páginasModerada — mudanças refletem só na página atualDifícil — mudanças em cada elemento
ConsistênciaAlta — estilos aplicados uniformementeModerada — só na página atualBaixa — propenso a inconsistências
Tempo de carregamentoMelhor — pode ser cacheado pelo navegadorMédio — carrega junto com o documentoPior — cada elemento carrega seus próprios estilos
Organização do códigoAlta — separação clara conteúdo/estiloMédia — conteúdo e estilo no mesmo arquivoBaixa — conteúdo e estilo misturados

Unidades de medida em CSS

UnidadeTipoO que representa
pxAbsolutaPixel — tamanho fixo na tela
%RelativaPorcentagem do elemento pai
emRelativaRelativo ao font-size do elemento pai
remRelativaRelativo ao font-size do elemento raiz (:root)
vwRelativa1% da largura da viewport
vhRelativa1% da altura da viewport
chRelativaLargura do caractere “0” na fonte atual
frRelativa (Grid)Fração do espaço disponível no Grid

Propriedade float

O float era o principal método de layout antes do Flexbox e Grid — ainda aparece em código legado:

.imagem {
  float: left;   /* left | right | none */
  margin: 0 1rem 1rem 0;
}

/* Limpa o float para o próximo elemento */
.container::after {
  content: "";
  display: block;
  clear: both;
}

Tipos de seletores CSS — resumo

SeletorExemploSeleciona
Universal*Todos os elementos da página
Tag (tipo)p, h1Todos os elementos daquele tipo
Classe.destaqueElementos com class=“destaque”
ID#cabecalhoElemento com id=“cabecalho” (único)
Descendentenav aa dentro de qualquer nav
Filho diretoul > lili filho direto de ul
Pseudo-classea:hoverElemento em determinado estado
Pseudo-elementop::first-lineParte específica do elemento
Atributo[type=“email”]Elementos com aquele atributo/valor

Práticas Modernas — CSS

CSS Variables (Custom Properties): :root { --cor-primaria: #3b82f6; } — centralize valores repetidos e altere o tema de toda a página mudando uma variável. Utility-first (Tailwind CSS): tendência que usa classes utilitárias (flex, p-4, text-lg) direto no HTML em vez de criar classes semânticas no CSS — produtivo mas gera mais HTML verboso. CSS Modules / Scoped CSS: em projetos com React/Vue, escopo de estilo por componente evita conflitos de nomes de classe globalmente. Evite !important: resolve conflito de especificidade na força bruta — prefira refatorar a hierarquia de seletores.

Dicas para a prova — UA4

  • As três formas de aplicar CSS: inline (atributo style), interna (tag <style> no <head>) e externa (arquivo .css via <link>).
  • Bloco de declaração CSS: seletor { propriedade: valor; } — seletor define o alvo; propriedade e valor definem o estilo.
  • O seletor universal (*) seleciona todos os elementos — especificidade zero.
  • float: left e float: right — empurra o elemento para a borda e permite que o texto flua ao redor.
  • Ordem de especificidade: inline > #id > .classe > tag > *.
  • CSS externo é o método recomendado para projetos reais — reutilizável, cacheável e de fácil manutenção.

Referências bibliográficas desta UA

  • Serpa, M. S. Ferramentas de Desenvolvimento Web. Porto Alegre: SAGAH, 2024.
  • Bertagnolli, S. C.; Miletto, E. M. Desenvolvimento de Software II. Porto Alegre: Bookman, 2014.