Layout de página e responsividade

Layout de conteúdo mestre-detalhe para exposição em sala de aula

Conclua um layout de conteúdo mestre-detalhe em um cenário de exposição em sala de aula: inclui conteúdo real, controles interativos, feedback claro de status e layout entre tamanhos de tela.

Layout de página e responsividadeLayout de conteúdo principal e secundárioHTMLCSSJavaScript
É possível editar, executar e salvar este exemplo após ativar JavaScript. O código-fonte fixo é o seguinte:
<!doctype html>
<html lang="pt-BR" dir="ltr">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Layout de conteúdo mestre-detalhe para exposição em sala de aula</title>
  <style>
    :root { --ink:#30231f; --paper:#f9efe5; --accent:#8b6fb0; --secondary:#d7a971; --line:color-mix(in srgb, var(--ink) 18%, transparent); --shadow:0 24px 60px color-mix(in srgb, var(--ink) 16%, transparent); color-scheme:light; }
    * { box-sizing:border-box; }
    html { min-width:320px; background:var(--paper); }
    body { min-height:100vh; margin:0; overflow-x:hidden; color:var(--ink); font-family:Avenir,"PingFang SC",sans-serif; background:var(--paper); }
    button,input,select,textarea { color:inherit; font:inherit; }
    button,[role="button"],input,select,textarea { accent-color:var(--accent); }
    button { cursor:pointer; }
    button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible { outline:3px solid var(--accent); outline-offset:3px; }
    [hidden] { display:none !important; }
    @media (max-width:700px) { .mast h1 { line-height:1.08 !important; letter-spacing:-.035em !important; overflow-wrap:anywhere; } }
    @media (prefers-reduced-motion:reduce) { *,*::before,*::after { scroll-behavior:auto !important; animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; } }
    .page{width:min(1320px,calc(100% - 56px));margin:auto;padding:10vh 0}.mast{display:grid;grid-template-columns:minmax(0,1fr) 160px;gap:10vw;margin-block:6vh;align-items:start;margin-bottom:10vh}.mast h1{font-family:Avenir,"PingFang SC",sans-serif;font-weight:500;font-size:clamp(38px,8vw,88px);letter-spacing:-.055em;margin:0;line-height:.96}.eyebrow{display:block;margin-bottom:24px;font:600 10px/1 ui-monospace,monospace;letter-spacing:.22em}.intro{max-width:52ch;margin-top:28px;line-height:1.8}.scenario{font-size:13px;text-align:right}.demo{border-radius:1px;border-color:color-mix(in srgb,var(--ink) 35%,transparent);box-shadow:none;position:relative;min-height:420px;padding:clamp(28px,5vw,70px);background:transparent}@media(max-width:700px){.page{width:calc(100% - 24px);padding:36px 0}.mast{grid-template-columns:1fr;margin-bottom:30px}.scenario{text-align:left}.demo{padding:18px}}
    .panel{padding:18px;border:3px solid var(--ink);background:var(--paper);box-shadow:8px 8px 0 var(--ink)}.stack{display:grid;gap:12px}.row{display:flex;flex-wrap:wrap;gap:8px}.action{min-height:42px;padding:8px 13px;border:3px solid var(--ink);background:var(--paper);font-weight:900}.action.primary,.action.is-active{color:var(--paper);background:var(--ink)}.status{min-height:24px;padding:8px;color:var(--paper);background:var(--ink);font-weight:900}.metric{font-size:clamp(34px,8vw,76px);font-weight:900;letter-spacing:-.08em}.muted{font-weight:600}.chip{padding:5px 8px;border:2px solid var(--ink);font-weight:900}.meter{height:14px;border:3px solid var(--ink)}.meter>i{display:block;height:100%;background:var(--ink)}
    .composition-split{display:grid;grid-template-columns:150px minmax(0,1fr);gap:18px;align-items:start}.split-note{position:sticky;top:20px;display:grid;gap:14px;padding:18px 12px;border-block:3px double var(--accent);font-size:13px;line-height:1.65}.split-note b{font:900 12px/1 ui-monospace,monospace;letter-spacing:.12em}.split-note span{writing-mode:vertical-rl;min-height:120px;color:color-mix(in srgb,var(--ink) 60%,transparent)}.composition-split .demo{min-width:0}@media(max-width:900px){.composition-split{grid-template-columns:1fr}.split-note{position:static;grid-template-columns:auto 1fr}.split-note span{writing-mode:horizontal-tb;min-height:0}}
    .master-detail-demo{display:grid;grid-template-columns:minmax(220px,.7fr) minmax(300px,1.3fr);min-height:390px;border:1px solid var(--line);border-radius:20px;overflow:hidden;background:var(--paper)}.master-detail-demo nav{display:grid;align-content:start;border-right:1px solid var(--line)}.master-detail-demo nav button{display:grid;gap:5px;padding:15px;border:0;border-bottom:1px solid var(--line);text-align:left;background:transparent}.master-detail-demo nav button[aria-current="true"]{color:var(--paper);background:var(--ink)}.master-detail-demo nav small{opacity:.65}.master-detail-demo article{display:grid;align-content:center;padding:clamp(28px,6vw,66px)}.master-detail-demo article h2{font-size:clamp(34px,7vw,72px)}.master-detail-demo dl div{display:flex;gap:18px;justify-content:space-between}.master-detail-demo dd{font-weight:900}@media(max-width:620px){.master-detail-demo{grid-template-columns:1fr}.master-detail-demo nav{grid-auto-flow:column;overflow:auto;border-right:0;border-bottom:1px solid var(--line)}.master-detail-demo nav button{min-width:180px}}.workflow-dispatch{display:grid;grid-template-columns:minmax(210px,.48fr) minmax(0,1.52fr);gap:18px}.dispatch-console{display:grid;align-content:start;gap:16px;padding:22px;border:1px solid var(--line);border-radius:18px;background:color-mix(in srgb,var(--secondary) 12%,var(--paper))}.dispatch-console h2{margin:.2em 0}.dispatch-console form,.dispatch-console label{display:grid;gap:7px}.dispatch-console input,.dispatch-console select{min-width:0;width:100%;padding:10px;border:1px solid var(--line);border-radius:8px;background:var(--paper)}.dispatch-console fieldset{display:flex;gap:12px;border:1px solid var(--line);border-radius:10px}.dispatch-console fieldset label{display:flex;align-items:center}.dispatch-workbench{--dispatch-load:.22;min-width:0;padding:14px;border-left:8px solid color-mix(in srgb,var(--accent) calc(var(--dispatch-load)*100%),var(--line));background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 8%,transparent),transparent 28%)}.dispatch-workbench[data-dispatch-priority="urgent"]{box-shadow:inset 0 0 0 2px var(--accent)}@media(max-width:900px){.workflow-dispatch{grid-template-columns:1fr}.dispatch-console{order:2}}.evidence-shell{--evidence-zoom:100;display:grid;gap:18px;padding:clamp(16px,4vw,26px);border:1px solid var(--line);border-radius:30px;background:linear-gradient(180deg,color-mix(in srgb,var(--secondary) 8%,transparent),color-mix(in srgb,var(--paper) 94%,transparent));box-shadow:var(--shadow)}.evidence-head{display:flex;justify-content:space-between;gap:18px;align-items:end}.evidence-head h2{margin:.2em 0}.evidence-tools{display:grid;gap:10px;justify-items:end}.evidence-tools output{padding:10px 14px;border-radius:999px;border:1px solid var(--line);background:var(--paper);font-weight:900}.evidence-body{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(230px,.55fr);gap:16px}.evidence-stage{display:grid;gap:12px;min-width:0}.evidence-ribbon{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.evidence-ribbon button{display:grid;gap:6px;min-height:110px;padding:14px;border:1px solid var(--line);border-radius:18px;background:var(--paper);text-align:left}.evidence-ribbon button[aria-pressed="true"]{border-color:var(--accent);box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--accent) 35%,transparent)}.evidence-ribbon span{font:800 11px/1 ui-monospace,monospace;letter-spacing:.14em}.evidence-ribbon small{opacity:.72;line-height:1.5}.evidence-core-shell{min-width:0;padding:clamp(12px,3vw,20px);overflow:auto;border:1px solid var(--line);border-radius:24px;background:color-mix(in srgb,var(--paper) 92%,transparent)}.evidence-core-shell>*{display:block;width:calc(10000%/var(--evidence-zoom));max-width:none;transform:scale(calc(var(--evidence-zoom)/100));transform-origin:top left}.evidence-rail{display:grid;align-content:start;gap:14px;padding:18px;border-radius:22px;color:var(--paper);background:var(--ink)}.evidence-rail label{display:grid;gap:8px}.evidence-rail input,.evidence-rail select{width:100%;padding:10px;border:1px solid #ffffff2e;border-radius:10px;color:inherit;background:#ffffff12}.evidence-checklist,.evidence-log{display:grid;gap:8px;padding-left:18px;margin:0}.evidence-checklist li.is-active{color:var(--secondary);font-weight:900}.evidence-checklist li.is-done{color:var(--accent);font-weight:900}.evidence-log li{line-height:1.55}.evidence-shell[data-board-mode="proof"] .evidence-core-shell{outline:4px solid color-mix(in srgb,var(--accent) 32%,transparent);outline-offset:2px}.evidence-shell[data-board-mode="handoff"] .evidence-rail{background:color-mix(in srgb,var(--ink) 82%,#0a1512)}@media(max-width:920px){.evidence-body{grid-template-columns:1fr}.evidence-ribbon{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:560px){.evidence-head{align-items:stretch;flex-direction:column}.evidence-tools{justify-items:start}.evidence-ribbon{grid-template-columns:1fr}.evidence-core-shell>*{width:100%;transform:none}}
  </style>
</head>
<body data-aesthetic="minimal" data-composition="split-note">
  <main class="page">
    <header class="mast"><div><span class="eyebrow">minimal / layout de conteúdo mestre-detalhe / BEGINNER</span><h1>Layout de conteúdo mestre-detalhe para exposição em sala de aula</h1><p class="intro">Conclua um layout de conteúdo mestre-detalhe em um cenário de exposição em sala de aula: inclui conteúdo real, controles interativos, feedback claro de status e layout entre tamanhos de tela.</p></div><span class="scenario">Exposição da turma</span></header>
    <div class="composition-split"><aside class="split-note"><b>CASE 02</b><span>Domine a estrutura semântica do layout de conteúdo principal e secundário, a organização responsiva, a operação pelo teclado e a sincronização de estados.</span></aside><section class="demo" aria-label="Área interativa do layout de conteúdo mestre-detalhe da exposição de sala de aula"><section id="evidenceShell" class="evidence-shell" data-board-mode="scan"><header class="evidence-head"><div><span class="eyebrow">Exposição de sala de aula / EVIDENCE BOARD</span><h2>Painel de observação do layout de conteúdo principal e secundário</h2><p>Coloque o caso principal no quadro de evidências, usando cartões de observação separados, registros e alternância de padrões para registrar o resultado atual.</p></div><div class="evidence-tools"><div class="row"><button class="action primary" type="button" data-board-mode="scan">Escanear</button><button class="action" type="button" data-board-mode="proof">Verificação</button><button class="action" type="button" data-board-mode="handoff">Transferência</button></div><output id="evidenceStatus">Aguardando amostragem</output></div></header><div class="evidence-body"><section class="evidence-stage"><div class="evidence-ribbon"><button type="button" data-evidence-card="0" aria-pressed="true"><span>01</span><strong>Lembrete de exposição da sala de aula</strong><small>Verifique se a mudança de estado está visível</small></button><button type="button" data-evidence-card="1" aria-pressed="false"><span>02</span><strong>Coleção de exposições da sala de aula</strong><small>Confirmar que as entradas por teclado e por clique são consistentes</small></button><button type="button" data-evidence-card="2" aria-pressed="false"><span>03</span><strong>Visão geral da exibição da sala de aula</strong><small>Observe se o layout recua em telas estreitas</small></button><button type="button" data-evidence-card="3" aria-pressed="false"><span>04</span><strong>Plano de exposição da sala de aula</strong><small>Registre a conclusão da revisão atual</small></button></div><div id="evidenceCoreShell" class="evidence-core-shell"><div class="workflow-dispatch"><aside class="dispatch-console"><span class="eyebrow">Exposição da sala de aula DISPATCH</span><h2>Central de coordenação da exposição da turma</h2><form id="workflowDispatchForm"><label>Tipo de tarefa<select id="workflowDispatchKind"><option>layout compacto de exposição da sala de aula</option><option>Layout equilibrado da exposição da turma</option><option>Layout imersivo da exposição de sala de aula</option></select></label><label>Largura da tela de desenho<input id="workflowDispatchAmount" type="number" min="1" max="9999" value="45"><span>px</span></label><fieldset><legend>Prioridade de processamento</legend><label><input type="radio" name="workflowPriority" value="normal" checked>Padrão</label><label><input type="radio" name="workflowPriority" value="urgent">Urgente</label></fieldset><button class="action primary" type="submit">Layout do aplicativo</button></form><label>Tarefa atual<select id="workflowDispatchActive" aria-label="Alternar tarefa atual"><option value="1">layout compacto de exposição da sala de aula</option><option value="2">Layout equilibrado da exposição da turma</option></select></label><output id="workflowDispatchSummary">Aguardando despacho</output></aside><section id="workflowCore" class="workflow-core dispatch-workbench" data-dispatch-priority="normal"><!-- 11DZ_CORE_START:layouts-responsive-master-detail --><div class="master-detail-demo"><nav aria-label="Lista de registros"><button type="button" data-master-index="0" aria-current="true" data-core-bridge="layouts-responsive-master-detail"><b>Lembrete de exposição da sala de aula</b><small>registro 01</small></button><button type="button" data-master-index="1"><b>Coleção de exposições da sala de aula</b><small>Registrar 02</small></button><button type="button" data-master-index="2"><b>Visão geral da exibição da sala de aula</b><small>Registro 03</small></button><button type="button" data-master-index="3"><b>Plano de exposição da sala de aula</b><small>Registro 04</small></button><button type="button" data-master-index="4"><b>Inspiração para exposição em sala de aula</b><small>Registro 05</small></button><button type="button" data-master-index="5"><b>Registro de exposição em sala de aula</b><small>Registro 06</small></button></nav><article id="detailPanel" tabindex="-1"><span class="eyebrow">MASTER DETAIL</span><h2>Lembrete de exposição da sala de aula</h2><p>Selecione um registro da lista principal; os detalhes à direita são atualizados no mesmo local; em telas estreitas, são empilhados verticalmente.</p><dl><div><dt>cenário</dt><dd>Exposição da turma</dd></div><div><dt>Status</dt><dd id="detailStatus">Em andamento</dd></div></dl></article></div><!-- 11DZ_CORE_END --></section></div></div></section><aside class="evidence-rail"><label>Escala do canvas<input id="evidenceZoom" type="range" min="88" max="128" value="100"><output id="evidenceZoomValue">100%</output></label><label>Coleta atual<select id="evidenceStep"><option value="0">Lembrete de exposição da sala de aula</option><option value="1">Coleção de exposições da sala de aula</option><option value="2">Visão geral da exibição da sala de aula</option><option value="3">Plano de exposição da sala de aula</option></select></label><ul id="evidenceChecklist" class="evidence-checklist"><li>Lembrete de exposição da sala de aula</li><li>Coleção de exposições da sala de aula</li><li>Visão geral da exibição da sala de aula</li><li>Plano de exposição da sala de aula</li></ul><button id="evidenceCapture" class="action primary" type="button">Escrever evidências</button><ol id="evidenceLog" class="evidence-log"><li>Evidência ainda não registrada</li></ol></aside></div></section><p id="status" class="status" role="status" aria-live="polite"></p></section></div>
  </main>
  <script>
    'use strict';
    const statusOutput = document.querySelector('#status');
    const announce = message => { statusOutput.textContent = message; };
    /* 11DZ_CORE_SCRIPT_START:layouts-responsive-master-detail */
const masterRecords=["Lembrete de exposição da sala de aula","Coleção de exposições da sala de aula","Visão geral da exibição da sala de aula","Plano de exposição da sala de aula","Inspiração para exposição em sala de aula","Registro de exposição em sala de aula"];const masterButtons=[...document.querySelectorAll('[data-master-index]')];masterButtons.forEach((button,index)=>button.addEventListener('click',()=>{masterButtons.forEach(item=>item.removeAttribute('aria-current'));button.setAttribute('aria-current','true');document.querySelector('#detailPanel h2').textContent=masterRecords[index];document.querySelector('#detailStatus').textContent=['Em andamento','Aguardando revisão','Concluído'][index%3];document.querySelector('#detailPanel').focus();announce('Aberto '+masterRecords[index]+' Detalhes');}));
/* 11DZ_CORE_SCRIPT_END */
const workflowBridgeSpec={"name":"layouts-responsive-master-detail","selector":"[data-core-bridge=\"layouts-responsive-master-detail\"]","mode":"click","key":"Enter"};const workflowBridgeCore=document.querySelector('#workflowCore');const workflowBridgeControl=workflowBridgeCore.querySelector(workflowBridgeSpec.selector);if(!workflowBridgeControl)throw new Error('Missing core bridge: '+workflowBridgeSpec.name);const workflowBridgeControlledId=workflowBridgeControl.getAttribute('aria-controls');const workflowBridgeControlled=workflowBridgeControlledId?document.getElementById(workflowBridgeControlledId):null;workflowBridgeCore.dataset.workflowBridge=workflowBridgeSpec.name;workflowBridgeCore.dataset.workflowVersion='0';function workflowBridgeSerialize(){const visualNode=workflowBridgeCore.firstElementChild||workflowBridgeCore;const visual=getComputedStyle(visualNode);const outputs=[...workflowBridgeCore.querySelectorAll('output,[role="status"],[aria-live],meter,progress')].map(node=>node.textContent.trim()+'|'+node.getAttribute('aria-valuenow')+'|'+node.getAttribute('value'));const canvas=[...workflowBridgeCore.querySelectorAll('canvas')].map(node=>{try{return node.toDataURL().slice(-160);}catch{return 'canvas-unavailable';}});return JSON.stringify({html:workflowBridgeCore.innerHTML,status:statusOutput.textContent,outputs,canvas,visual:[visual.display,visual.visibility,visual.opacity,visual.transform,visual.filter,visual.backgroundColor,visual.width,visual.height],scroll:workflowBridgeSpec.mode==='scroll'?workflowBridgeControl.scrollTop:null});}let workflowBridgeLastEffect=workflowBridgeSerialize();function workflowBridgeSummary(){const label=(workflowBridgeControl.getAttribute('aria-label')||workflowBridgeControl.textContent||workflowBridgeControl.value||workflowBridgeSpec.name).trim().replace(/\s+/g,' ').slice(0,72);return label+' · versão principal '+workflowBridgeCore.dataset.workflowVersion;}function workflowBridgeCommit(){const effect=workflowBridgeSerialize();if(effect===workflowBridgeLastEffect)return {changed:false,summary:workflowBridgeSummary()};workflowBridgeLastEffect=effect;workflowBridgeCore.dataset.workflowVersion=String(Number(workflowBridgeCore.dataset.workflowVersion||0)+1);return {changed:true,summary:workflowBridgeSummary()};}function workflowBridgeScheduleCommit(){queueMicrotask(workflowBridgeCommit);setTimeout(workflowBridgeCommit,0);}workflowBridgeControl.addEventListener("click",workflowBridgeScheduleCommit);const workflowBridgeStateTargets=new Set(workflowBridgeCore.querySelectorAll('dialog'));if(workflowBridgeControlled&&workflowBridgeCore.contains(workflowBridgeControlled))workflowBridgeStateTargets.add(workflowBridgeControlled);workflowBridgeStateTargets.forEach(target=>['close','cancel','toggle'].forEach(eventName=>target.addEventListener(eventName,workflowBridgeScheduleCommit)));function workflowBridgeActivate(){workflowBridgeControl.focus();workflowBridgeControl.click();const result=workflowBridgeCommit();setTimeout(workflowBridgeCommit,0);return result;}function workflowBridgeReset(){workflowBridgeCore.dataset.workflowVersion='0';workflowBridgeLastEffect=workflowBridgeSerialize();}
const workflowDispatchCore=document.querySelector('#workflowCore');const workflowDispatchForm=document.querySelector('#workflowDispatchForm');const workflowDispatchSelect=document.querySelector('#workflowDispatchActive');const workflowDispatchJobs=new Map([["1",{"label":"layout compacto de exposição da sala de aula","amount":12,"priority":"normal","touches":0}],["2",{"label":"Layout equilibrado da exposição da turma","amount":21,"priority":"urgent","touches":0}]]);let workflowDispatchSerial=workflowDispatchJobs.size;function workflowDispatchDrive(job,activate=false){workflowDispatchCore.dataset.dispatchPriority=job.priority;workflowDispatchCore.style.setProperty('--dispatch-load',Math.min(.95,.16+job.amount/120));const bridge=activate?workflowBridgeActivate():{changed:false,summary:workflowBridgeSummary()};document.querySelector('#workflowDispatchSummary').textContent=job.label+' · '+job.amount+' px · '+bridge.summary;announce('Tarefa atual da exposição da sala de aula:'+job.label);}function workflowDispatchRender(activeId,activate=false){workflowDispatchSelect.replaceChildren(...[...workflowDispatchJobs].map(([id,job])=>{const option=document.createElement('option');option.value=id;option.textContent=job.label+(job.priority==='urgent'?' · Urgente':'');return option;}));workflowDispatchSelect.value=activeId;workflowDispatchDrive(workflowDispatchJobs.get(activeId),activate);}workflowDispatchForm.addEventListener('submit',event=>{event.preventDefault();const data=new FormData(workflowDispatchForm);const id=String(++workflowDispatchSerial);workflowDispatchJobs.set(id,{label:document.querySelector('#workflowDispatchKind').value,amount:Math.max(1,Number(document.querySelector('#workflowDispatchAmount').value)||1),priority:data.get('workflowPriority'),touches:0});workflowDispatchRender(id,true);});workflowDispatchSelect.addEventListener('change',()=>workflowDispatchDrive(workflowDispatchJobs.get(workflowDispatchSelect.value),true));workflowDispatchCore.addEventListener('focusin',()=>{const job=workflowDispatchJobs.get(workflowDispatchSelect.value);if(!job)return;job.touches+=1;document.querySelector('#workflowDispatchSummary').textContent=job.label+' · '+job.amount+' px · '+workflowBridgeSummary();});workflowDispatchRender('1',false);
workflowBridgeReset();
const evidenceShell=document.querySelector('#evidenceShell');const evidenceStatus=document.querySelector('#evidenceStatus');const evidenceZoom=document.querySelector('#evidenceZoom');const evidenceZoomValue=document.querySelector('#evidenceZoomValue');const evidenceStep=document.querySelector('#evidenceStep');const evidenceChecklistItems=[...document.querySelectorAll('#evidenceChecklist li')];const evidenceCards=[...document.querySelectorAll('[data-evidence-card]')];const evidenceLog=document.querySelector('#evidenceLog');const evidenceModeButtons=[...evidenceShell.querySelectorAll('button[data-board-mode]')];const evidenceNotes=["Lembrete de exposição da sala de aula","Coleção de exposições da sala de aula","Visão geral da exibição da sala de aula","Plano de exposição da sala de aula"];const evidenceCore=document.querySelector('#workflowCore');let evidenceCaptures=0;function evidenceSetCard(index){evidenceCards.forEach((card,cardIndex)=>{const active=cardIndex===index;card.setAttribute('aria-pressed',String(active));});evidenceChecklistItems.forEach((item,itemIndex)=>{item.classList.toggle('is-active',itemIndex===index);item.classList.toggle('is-done',itemIndex<evidenceCaptures);});}function evidenceRender(reason){const version=evidenceCore?.dataset.workflowVersion||'0';const zoom=Number(evidenceZoom.value);const active=Math.min(evidenceNotes.length-1,Number(evidenceStep.value)||0);evidenceShell.style.setProperty('--evidence-zoom',String(zoom));evidenceZoomValue.textContent=zoom+'%';evidenceSetCard(active);evidenceStatus.textContent=reason+' · versão principal '+version;}evidenceModeButtons.forEach(button=>button.addEventListener('click',()=>{evidenceModeButtons.forEach(item=>item.classList.toggle('primary',item===button));evidenceShell.dataset.boardMode=button.dataset.boardMode;evidenceRender('Alterado para'+button.textContent);announce('padrão de evidência:'+button.textContent);}));evidenceCards.forEach((card,index)=>card.addEventListener('click',()=>{evidenceStep.value=String(index);evidenceRender('Cartão de observação alternado');announce('Cartão de observação:'+evidenceNotes[index]);}));evidenceZoom.addEventListener('input',()=>{evidenceRender('A escala da tela foi atualizada');announce('observação de escala '+evidenceZoom.value+'%');});evidenceStep.addEventListener('change',()=>{const index=Number(evidenceStep.value)||0;evidenceRender('Amostragem alternada');announce('Seleção atual:'+evidenceNotes[index]);});document.querySelector('#evidenceCapture').addEventListener('click',()=>{const index=Math.min(evidenceNotes.length-1,Number(evidenceStep.value)||0);const note=evidenceNotes[index];const version=evidenceCore?.dataset.workflowVersion||'0';evidenceCaptures+=1;const item=document.createElement('li');item.textContent='Evidência '+evidenceCaptures+' · '+note+' · versão principal '+version;const empty=evidenceLog.querySelector('li')?.textContent==='Evidência ainda não registrada';if(empty)evidenceLog.replaceChildren(item);else evidenceLog.prepend(item);while(evidenceLog.children.length>6)evidenceLog.lastElementChild.remove();evidenceRender('O registro foi escrito '+evidenceCaptures);announce('O registro foi escrito '+evidenceCaptures+' · '+note);});evidenceCore?.addEventListener('focusin',()=>evidenceRender('Caso principal em foco'));evidenceCore?.addEventListener('click',()=>evidenceRender('O caso principal sofre uma interação'));evidenceRender('Aguardando amostragem');
  </script>
</body>
</html>
Feedback da páginaEncontrou um problema ou tem uma sugestão de melhoria?
Recursos de feedback precisam ser usados na versão online

Envie somente após ativar JavaScript na versão online; a funcionalidade local da ferramenta ou do exemplo não é afetada.

Ir para o feedback na versão online