Questão de Programação — Linguagens de programação — INSTITUTO AOCP 2025
- Código
- qg540901
- Banca
- INSTITUTO AOCP
- Órgão
- MPE-RS
- Ano
- 2025
- Nível
- Médio
- Cargo
- Técnico do Ministério Público - Informática
- A:target
- B:before
- C:root
- D:empty
- E:indeterminate
GabaritoA — :target
Gabarito: letra A. A pseudoclasse :target do CSS3 é utilizada para estilizar o elemento que é o alvo (âncora) de um link clicado, ou seja, o elemento cujo id corresponde ao fragmento da URL. Quando o usuário clica em um link de navegação que aponta para uma seção específica (ex.: #documentos), o elemento com id="documentos" recebe o destaque definido pela regra :target. As demais alternativas descrevem outras pseudoclasses ou pseudoelementos que não se aplicam a esse cenário.
A pseudoclasse :target faz parte da especificação CSS3 e é uma ferramenta poderosa para melhorar a usabilidade de páginas web, especialmente em portais com navegação interna. Ela permite que o desenvolvedor aplique estilos a um elemento que é o destino de um link, sem a necessidade de JavaScript. O funcionamento é simples: quando um link com um fragmento de URL (como #secao) é clicado, o navegador procura o elemento com o id correspondente (id="secao") e aplica a ele os estilos definidos pela regra :target. Isso é particularmente útil para destacar a seção ativa, como no caso do portal do MPRS descrito no enunciado.
Para entender melhor, considere o seguinte exemplo: um portal com links de navegação para as seções "Documentos", "Processos" e "Atividades". Cada seção possui um id único, como id="documentos", id="processos" e id="atividades". Ao clicar no link "Documentos", a URL muda para #documentos, e o elemento com id="documentos" se torna o alvo. Com a regra CSS #documentos:target { background-color: yellow; }, essa seção receberá um fundo amarelo, chamando a atenção do usuário. Essa técnica é amplamente utilizada em single-page applications e portais para melhorar a experiência de navegação.
É importante distinguir :target de outras pseudoclasses e pseudoelementos. Enquanto :target seleciona o elemento que é o alvo do link, pseudoelementos como ::before e ::after são usados para inserir conteúdo antes ou depois do elemento, e pseudoclasses como :root selecionam a raiz do documento (o elemento <html>). Já :empty seleciona elementos que não têm filhos (nem texto, nem elementos), e :indeterminate é usada para elementos de formulário que estão em estado indeterminado, como checkboxes ou radio buttons que não foram selecionados. A banca explora exatamente essa confusão entre pseudoclasses e pseudoelementos, e entre as diferentes finalidades de cada um.
A pegadinha desta questão está em confundir :target com outras pseudoclasses que parecem relacionadas, mas têm propósitos distintos. O candidato pode ser tentado a escolher :before (que na verdade é ::before), pensando que ele pode ser usado para destacar algo, mas ele é um pseudoelemento que insere conteúdo, não um seletor de alvo. Da mesma forma, :root e :empty são pseudoclasses estruturais, e :indeterminate é específica para formulários. A chave é lembrar que :target é a única que se relaciona diretamente com a navegação por âncoras e o destaque do elemento alvo.
Guarde a fronteira entre :target (alvo de link) e as demais pseudoclasses/pseudoelementos: é exatamente nela que as alternativas se dividem. A alternativa correta é a única que descreve a funcionalidade de destacar a seção após o clique no link.
A pseudoclasse :target é a resposta correta. Ela seleciona o elemento que é o alvo de um link de âncora, ou seja, o elemento cujo id corresponde ao fragmento da URL. Quando o usuário clica em um link de navegação para uma seção específica, o elemento com o id correspondente recebe os estilos definidos pela regra :target. Isso atende exatamente ao requisito do enunciado: destacar o título da seção após o clique no link.
A alternativa B apresenta :before, que na verdade é o pseudoelemento ::before. Ele é usado para inserir conteúdo antes do elemento selecionado, não para destacar o elemento alvo de um link. Por exemplo, p::before { content: "Nota: "; } insere o texto "Nota: " antes de cada parágrafo. Não tem relação com navegação ou destaque de seção após clique.
A alternativa C apresenta :root, que é uma pseudoclasse que seleciona a raiz do documento, ou seja, o elemento <html>. Ela é usada para definir variáveis CSS globais ou estilos base, mas não tem relação com o destaque de uma seção após o clique em um link. Por exemplo, :root { --cor-primaria: #333; } define uma variável CSS global.
A alternativa D apresenta :empty, que é uma pseudoclasse que seleciona elementos que não têm filhos, ou seja, que não contêm texto, elementos ou espaços em branco. Por exemplo, p:empty { display: none; } esconde parágrafos vazios. Não tem relação com navegação ou destaque de seção após clique.
A alternativa E apresenta :indeterminate, que é uma pseudoclasse usada para selecionar elementos de formulário que estão em estado indeterminado, como checkboxes que não estão marcados nem desmarcados, ou radio buttons que não têm nenhuma opção selecionada. Por exemplo, input[type="checkbox"]:indeterminate { outline: 2px solid red; }. Não tem relação com navegação ou destaque de seção após clique.
A banca troca a pseudoclasse :target (que destaca o elemento alvo de um link) por pseudoelementos como ::before e por pseudoclasses estruturais como :root e :empty. O candidato pode confundir :before com uma forma de destacar, mas ele insere conteúdo, não seleciona o alvo. Lembre-se: :target é a única que se relaciona com a navegação por âncoras e o destaque do elemento alvo. Com treino, você enxerga essas trocas de longe 💪
Gabarito: letra A
Link permanente: /questoes/qg540901