Verdadeiro ou Falso
Apresenta uma afirmação que o aprendiz deve classificar como verdadeira ou falsa, com feedback imediato e justificativa opcional.
Experimente
A atividade de Verdadeiro ou Falso é mais eficaz quando as afirmações são elaboradas a partir de equívocos comuns dos aprendizes, não apenas de fatos corretos do conteúdo.
Código-fonte
Dados de exemplo
Define a afirmação, se ela é verdadeira, e uma explicação opcional.
| 1 |
<?php
|
| 2 |
$afirmacao = 'O Sol é um planeta do Sistema Solar.';
|
| 3 |
$correta = false;
|
| 4 |
$explicacao = 'O Sol é uma estrela — o centro do Sistema Solar em torno do qual os planetas orbitam.';
|
| 5 |
?>
|
Estrutura da afirmação e dos dois botões
Monta o HTML com os botões Verdadeiro e Falso lado a lado.
| 1 |
<div class="questao" data-tipo="verdadeiro-falso">
|
| 2 |
|
| 3 |
<p class="questao-afirmacao"><?= htmlspecialchars($afirmacao) ?></p>
|
| 4 |
|
| 5 |
<div class="questao-opcoes">
|
| 6 |
<button type="button" class="questao-opcao" data-correta="<?= $correta ? 'true' : 'false' ?>" data-selecionada="false">
|
| 7 |
Verdadeiro
|
| 8 |
</button>
|
| 9 |
<button type="button" class="questao-opcao" data-correta="<?= !$correta ? 'true' : 'false' ?>" data-selecionada="false">
|
| 10 |
Falso
|
| 11 |
</button>
|
| 12 |
</div>
|
| 13 |
|
| 14 |
<button type="button" class="questao-verificar">Verificar resposta</button>
|
| 15 |
|
| 16 |
<div class="questao-feedback" hidden></div>
|
| 17 |
|
| 18 |
<?php if ($explicacao): ?>
|
| 19 |
<div class="questao-explicacao" hidden><?= htmlspecialchars($explicacao) ?></div>
|
| 20 |
<?php endif; ?>
|
| 21 |
|
| 22 |
<button type="button" class="questao-reset" hidden>Tentar novamente</button>
|
| 23 |
|
| 24 |
</div>
|
Botões Verdadeiro/Falso
Estilo base dos dois botões lado a lado.
| 1 |
.questao-opcoes {
|
| 2 |
display: flex;
|
| 3 |
gap: 12px;
|
| 4 |
margin-bottom: 16px;
|
| 5 |
}
|
| 6 |
|
| 7 |
.questao-opcao {
|
| 8 |
flex: 1;
|
| 9 |
padding: 14px;
|
| 10 |
border: 2px solid #d1d5db;
|
| 11 |
border-radius: 8px;
|
| 12 |
background: #fff;
|
| 13 |
font-weight: 600;
|
| 14 |
cursor: pointer;
|
| 15 |
transition: border-color 0.2s, background-color 0.2s;
|
| 16 |
}
|
| 17 |
|
| 18 |
.questao-opcao:hover {
|
| 19 |
border-color: #6366f1;
|
| 20 |
}
|
Opção selecionada
Destaca a alternativa escolhida com cor neutra — verde/vermelho aqui entregaria a resposta antes da hora.
| 1 |
.questao-opcao.selecionada {
|
| 2 |
border-color: #6366f1;
|
| 3 |
background: #eef2ff;
|
| 4 |
}
|
Resultado da verificação
Colore a alternativa correta de verde e a errada escolhida de vermelho.
| 1 |
.questao-opcao.acerto {
|
| 2 |
border-color: #22c55e;
|
| 3 |
background: #f0fdf4;
|
| 4 |
}
|
| 5 |
|
| 6 |
.questao-opcao.erro {
|
| 7 |
border-color: #ef4444;
|
| 8 |
background: #fef2f2;
|
| 9 |
}
|
Mensagem de feedback e explicação
Estiliza a caixa de resultado e o bloco de explicação exibido após verificar.
| 1 |
.questao-feedback {
|
| 2 |
padding: 12px 16px;
|
| 3 |
border-radius: 8px;
|
| 4 |
font-size: 14px;
|
| 5 |
margin-bottom: 8px;
|
| 6 |
}
|
| 7 |
|
| 8 |
.questao-feedback.correto {
|
| 9 |
background: #f0fdf4;
|
| 10 |
color: #15803d;
|
| 11 |
}
|
| 12 |
|
| 13 |
.questao-feedback.errado {
|
| 14 |
background: #fef2f2;
|
| 15 |
color: #b91c1c;
|
| 16 |
}
|
| 17 |
|
| 18 |
.questao-feedback.aviso {
|
| 19 |
background: #fffbeb;
|
| 20 |
color: #b45309;
|
| 21 |
}
|
| 22 |
|
| 23 |
.questao-explicacao {
|
| 24 |
padding: 12px 16px;
|
| 25 |
border-radius: 8px;
|
| 26 |
background: #f3f4f6;
|
| 27 |
color: #4b5563;
|
| 28 |
font-size: 14px;
|
| 29 |
margin-bottom: 8px;
|
| 30 |
}
|
Encontrar os elementos da questão
Localiza os elementos da questão no DOM.
| 1 |
document.addEventListener('DOMContentLoaded', function () {
|
| 2 |
document.querySelectorAll('.questao[data-tipo="verdadeiro-falso"]').forEach(function (questao) {
|
| 3 |
var opcoes = questao.querySelectorAll('.questao-opcao');
|
| 4 |
var verificar = questao.querySelector('.questao-verificar');
|
| 5 |
var feedback = questao.querySelector('.questao-feedback');
|
| 6 |
var explicacao = questao.querySelector('.questao-explicacao');
|
| 7 |
var reset = questao.querySelector('.questao-reset');
|
| 8 |
var respondida = false;
|
Selecionar Verdadeiro ou Falso
Marca a opção clicada e desmarca a outra (seleção exclusiva).
| 1 |
function selecionar(alvo) {
|
| 2 |
opcoes.forEach(function (opcao) {
|
| 3 |
var marcada = opcao === alvo;
|
| 4 |
opcao.dataset.selecionada = marcada ? 'true' : 'false';
|
| 5 |
opcao.classList.toggle('selecionada', marcada);
|
| 6 |
});
|
| 7 |
feedback.hidden = true;
|
| 8 |
}
|
| 9 |
|
| 10 |
opcoes.forEach(function (opcao) {
|
| 11 |
opcao.addEventListener('click', function () {
|
| 12 |
if (respondida) return;
|
| 13 |
selecionar(opcao);
|
| 14 |
});
|
| 15 |
});
|
Verificar a resposta
Trava a escolha selecionada, mostra o resultado e revela a explicação.
| 1 |
verificar.addEventListener('click', function () {
|
| 2 |
if (respondida) return;
|
| 3 |
|
| 4 |
var escolhida = Array.prototype.filter.call(opcoes, function (opcao) {
|
| 5 |
return opcao.dataset.selecionada === 'true';
|
| 6 |
})[0];
|
| 7 |
|
| 8 |
if (!escolhida) {
|
| 9 |
feedback.textContent = 'Escolha Verdadeiro ou Falso antes de verificar.';
|
| 10 |
feedback.className = 'questao-feedback aviso';
|
| 11 |
feedback.hidden = false;
|
| 12 |
return;
|
| 13 |
}
|
| 14 |
|
| 15 |
respondida = true;
|
| 16 |
var correta = escolhida.dataset.correta === 'true';
|
| 17 |
|
| 18 |
opcoes.forEach(function (opcao) {
|
| 19 |
opcao.disabled = true;
|
| 20 |
opcao.classList.remove('selecionada');
|
| 21 |
if (opcao.dataset.correta === 'true') {
|
| 22 |
opcao.classList.add('acerto');
|
| 23 |
}
|
| 24 |
});
|
| 25 |
if (!correta) escolhida.classList.add('erro');
|
| 26 |
|
| 27 |
feedback.textContent = correta ? 'Correto! Muito bem.' : 'Não foi dessa vez. Veja a resposta correta destacada acima.';
|
| 28 |
feedback.className = 'questao-feedback ' + (correta ? 'correto' : 'errado');
|
| 29 |
feedback.hidden = false;
|
| 30 |
|
| 31 |
if (explicacao) explicacao.hidden = false;
|
| 32 |
|
| 33 |
verificar.hidden = true;
|
| 34 |
reset.hidden = false;
|
| 35 |
});
|
Reiniciar
Restaura o estado inicial da questão para uma nova tentativa.
| 1 |
reset.addEventListener('click', function () {
|
| 2 |
respondida = false;
|
| 3 |
|
| 4 |
opcoes.forEach(function (opcao) {
|
| 5 |
opcao.disabled = false;
|
| 6 |
opcao.dataset.selecionada = 'false';
|
| 7 |
opcao.classList.remove('selecionada', 'acerto', 'erro');
|
| 8 |
});
|
| 9 |
|
| 10 |
feedback.hidden = true;
|
| 11 |
if (explicacao) explicacao.hidden = true;
|
| 12 |
reset.hidden = true;
|
| 13 |
verificar.hidden = false;
|
| 14 |
});
|