Partilhar: WhatsApp
aulify
UC UC02634 · T. Multimédia

Ficha 01 · HTML semântico e CSS

Estrutura, semântica, CSS, variáveis
Versão · Aluno
Tempo · 45 minutos
Cotação · 100 pontos
Aluno(a)
Turma
Data
Objectivos da ficha

Parte I · HTML

Exercício 1 · Documento base (15 pts)

Escreve a estrutura mínima de um documento HTML5 válido em português, com charset, viewport, title, ligação a style.css e um h1 "Olá".

<!DOCTYPE html>
<html lang="pt">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Olá</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <h1>Olá</h1>
</body>
</html>

Exercício 2 · Semântica (15 pts)

Reescreve este markup usando HTML semântico:

<div class="topo">
  <div class="titulo">Aulify</div>
  <div class="menu">
    <div class="link"><a href="/">Início</a></div>
    <div class="link"><a href="/recursos">Recursos</a></div>
  </div>
</div>
<div class="conteudo">
  <div class="post"><div class="post-titulo">Novidades</div><div>Texto…</div></div>
</div>
<div class="rodape">© 2026</div>
<header>
  <h1>Aulify</h1>
  <nav>
    <ul>
      <li><a href="/">Início</a></li>
      <li><a href="/recursos">Recursos</a></li>
    </ul>
  </nav>
</header>
<main>
  <article>
    <h2>Novidades</h2>
    <p>Texto…</p>
  </article>
</main>
<footer><p>&copy; 2026</p></footer>

Exercício 3 · Hierarquia (10 pts)

Esta estrutura tem problemas. Identifica e corrige:

<h1>Site</h1>
<h3>Secção</h3>
<h5>Subsecção</h5>
<h1>Rodapé</h1>

Problemas: salta de h1 para h3 e de h3 para h5 (sem h2/h4); dois h1.

Corrigido:

<h1>Site</h1>
  <h2>Secção</h2>
    <h3>Subsecção</h3>
<h2>Rodapé</h2>   <!-- ou <footer> sem heading -->

Um único h1; nunca saltar níveis.

Parte II · CSS

Exercício 4 · Selectors (10 pts)

Indica o que selecciona cada um:

a) nav a ___

b) .card > h2 ___

c) input:focus-visible ___

d) a[target="_blank"] ___

a) Todos os <a> dentro de um <nav> (qualquer profundidade). b) <h2> filhos directos de elementos com classe .card. c) <input> com foco recebido por teclado (Tab) — não por rato. d) <a> com atributo target="_blank".

Exercício 5 · Variáveis CSS (15 pts)

Cria um pequeno design system com 3 variáveis (cor primária, cor texto, espaço base) e aplica-as num botão e numa caixa.

:root {
  --cor-primaria: #6366f1;
  --cor-texto: #1a1a2e;
  --espaco: 16px;
}

body { color: var(--cor-texto); }

.botao {
  background: var(--cor-primaria);
  color: #fff;
  padding: var(--espaco) calc(var(--espaco) * 1.5);
  border: 0;
  border-radius: 8px;
}

.caixa {
  padding: var(--espaco);
  border: 1px solid color-mix(in srgb, var(--cor-texto) 15%, transparent);
  border-radius: 8px;
}

Mudar --cor-primaria num sítio propaga ao botão e ao resto.

Parte III · Box model

Exercício 6 · box-sizing (10 pts)

Para que serve *, *::before, *::after { box-sizing: border-box; } e que problema resolve?

Faz com que width/height incluam padding e border (em vez de só o conteúdo, que é o default content-box). Resolve o problema clássico de "uma caixa com width:200px e padding:20px afinal ocupa 240 px" — torna o dimensionamento previsível e os layouts mais simples. Aplica-se a todos os elementos com o seletor *.

Exercício 7 · Especificidade (10 pts)

Esta regra parece não funcionar:

.botao { background: red; }

mas body p .botao está a aplicar verde com green. Que está a passar-se e como resolver sem !important?

body p .botao tem especificidade maior (1 classe + 2 elementos) que .botao (1 classe), por isso prevalece (verde). Soluções:

Em sistemas grandes: convenções como BEM ou utility classes evitam guerras de especificidade.