Capacités des médias et des appareils du navigateur

Panneau de fuseau horaire en langue de l’espace de démonstration

Dans le contexte d’un espace de présentation, complétez le panneau de fuseau horaire linguistique : contenu réel, contrôles interactifs, retour d’état clair et mise en page adaptée à plusieurs tailles.

Capacités des médias et des appareils du navigateurPanneau de fuseau horaire linguistiqueHTMLCSSBrowser API
Après activation de JavaScript, ce cas peut être modifié, exécuté et enregistré. Code source fixe ci-dessous :
<!doctype html>
<html lang="fr" dir="ltr">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Panneau de fuseau horaire en langue de l’espace de démonstration</title>
  <style>
    :root { --ink:#ecf7f3; --paper:#071310; --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:ui-monospace,"SFMono-Regular",Consolas,monospace; background:linear-gradient(color-mix(in srgb,var(--secondary) 5%,transparent) 1px,transparent 1px),linear-gradient(90deg,color-mix(in srgb,var(--secondary) 5%,transparent) 1px,transparent 1px),var(--paper);background-size:24px 24px; }
    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(1080px,calc(100% - 30px));margin:auto;padding:48px 0}.eyebrow{color:var(--secondary);font:700 12px/1.3 ui-monospace,monospace}.eyebrow::before{content:"> ";color:var(--accent)}.mast{display:grid;grid-template-columns:1fr auto;border:1px solid var(--secondary);padding:18px;gap:24px;align-items:center;margin-bottom:16px}.mast h1{font-family:ui-monospace,"SFMono-Regular",monospace;font-weight:700;font-size:clamp(34px,7vw,72px);letter-spacing:-.055em;margin:12px 0;line-height:1.05}.intro{margin:0;color:color-mix(in srgb,var(--ink) 72%,transparent);font:400 14px/1.7 ui-monospace,monospace}.scenario{padding:7px 10px;border:1px dashed var(--secondary);font:700 11px/1 ui-monospace,monospace}.demo{border-color:var(--secondary);border-radius:8px;box-shadow:0 0 50px color-mix(in srgb,var(--secondary) 15%,transparent);position:relative;min-height:390px;padding:26px;background:color-mix(in srgb,var(--paper) 94%,#000)}@media(max-width:700px){.page{width:calc(100% - 18px);padding:20px 0}.mast{grid-template-columns:1fr}.demo{padding:14px}}
    .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}}
    .locale-workbench{display:grid;grid-template-columns:minmax(220px,.6fr) minmax(280px,.8fr) minmax(0,1fr);gap:14px}.locale-workbench>header{padding:24px;border:1px solid var(--line);background:var(--paper)}.locale-workbench h2{margin:.25em 0;font-size:clamp(30px,5vw,52px)}.locale-workbench>form{display:grid;align-content:start;gap:13px;padding:24px;border:1px solid var(--line)}.locale-workbench form label{display:grid;gap:6px}.locale-workbench select,.locale-workbench input{width:100%;padding:10px;border:1px solid var(--line);background:transparent}.locale-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.locale-workbench>section{display:grid;gap:16px;padding:24px;color:var(--paper);background:var(--ink)}.locale-clock{display:grid;gap:8px;padding-bottom:18px;border-bottom:1px solid currentColor}.locale-clock output{font:900 clamp(34px,7vw,70px)/1 ui-monospace,monospace}.locale-clock small{color:#ffffffaa;font:700 12px/1.4 ui-monospace,monospace}.locale-workbench section dl{display:grid;grid-template-columns:1fr 1fr;gap:9px}.locale-workbench section dl div{padding:12px;border:1px solid #ffffff44}.locale-workbench dd{margin:6px 0 0;font-weight:900}@media(max-width:1024px){.locale-workbench{grid-template-columns:1fr}}@media(max-width:760px){.locale-actions,.locale-workbench section dl{grid-template-columns:1fr}}.workflow-session{display:grid;gap:14px}.session-command{display:grid;grid-template-columns:1fr auto minmax(170px,.45fr) auto;gap:16px;align-items:end;padding:18px;border-block:4px double var(--ink)}.session-command h2{margin:.2em 0}.session-command output{font:900 clamp(28px,5vw,54px)/1 ui-monospace,monospace}.session-command label{display:grid;grid-template-columns:1fr auto;gap:7px;font-size:12px}.session-command input{grid-column:1/-1;width:100%}#workflowSessionProgress{height:12px;overflow:hidden;border-radius:2px;background:var(--line)}#workflowSessionProgress i{display:block;width:0;height:100%;background:var(--accent)}.session-stage{min-width:0;transition:filter .25s,transform .25s}.session-stage[data-session-phase="running"]{transform:translateY(-3px)}.session-stage[data-session-phase="paused"]{filter:grayscale(.65)}.session-stage[data-session-phase="complete"]{filter:contrast(.78);opacity:.72}.session-log{display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:start}.session-log ol{display:flex;flex-wrap:wrap;gap:7px;padding:0;margin:0;list-style:none}.session-log li{padding:5px 8px;border:1px solid var(--line);font-size:12px}@media(max-width:900px){.session-stage{order:-1}.session-command{grid-template-columns:1fr auto}.session-command label{grid-column:1/-1}.session-log{grid-template-columns:1fr}}
  </style>
</head>
<body data-aesthetic="terminal" data-composition="split-note">
  <main class="page">
    <header class="mast"><div><span class="eyebrow">terminal / panneau de fuseaux horaires linguistiques / ADVANCED</span><h1>Panneau de fuseau horaire en langue de l’espace de démonstration</h1><p class="intro">Dans le contexte d’un espace de présentation, complétez le panneau de fuseau horaire linguistique : contenu réel, contrôles interactifs, retour d’état clair et mise en page adaptée à plusieurs tailles.</p></div><span class="scenario">Espace de démonstration</span></header>
    <div class="composition-split"><aside class="split-note"><b>CASE 02</b><span>Maîtrisez la structure sémantique, l’organisation adaptative, l’utilisation du clavier et la synchronisation des états du panneau de fuseaux horaires linguistiques.</span></aside><section class="demo" aria-label="Zone d’interaction du panneau de langue et de fuseau horaire de l’espace de présentation"><div class="workflow-session"><header class="session-command"><div><span class="eyebrow">Espace de démonstration SESSION</span><h2>Tableau de chronométrage de démonstration</h2></div><output id="workflowSessionClock">00:45</output><label>Durée du tour<input id="workflowSessionLength" type="range" min="15" max="90" step="15" value="45"><span>s</span></label><button id="workflowSessionToggle" class="action primary" type="button">Démarrer la présentation</button></header><div id="workflowSessionProgress" role="progressbar" aria-label="Progression de la minuterie de démonstration" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0"><i></i></div><section id="workflowCore" class="workflow-core session-stage" data-session-phase="ready" tabindex="-1"><!-- 11DZ_CORE_START:browser-media-device-locale-clock --><div class="locale-workbench"><header><span class="eyebrow">INTL WORKBENCH</span><h2>Borne de fuseau horaire linguistique pour l’espace de présentation</h2><p id="localeNative">Lecture de la langue du navigateur</p></header><form id="localeControls"><label>Langue d’affichage<select id="localeLanguage" data-core-bridge="browser-media-device-locale-clock"><option>zh-CN</option><option>en-US</option><option>ja-JP</option><option>de-DE</option></select></label><label>Fuseau horaire cible<select id="localeZone"><option>Asia/Shanghai</option><option>UTC</option><option>America/New_York</option><option>Europe/Paris</option></select></label><label>Montant d’exemple<input id="localeAmount" type="number" min="0" step="10" value="1280"></label><div class="locale-actions"><button class="action primary" type="submit">Format d’application</button><button id="localeNow" class="action" type="button">Utiliser l’heure actuelle</button></div></form><section><div class="locale-clock"><span>Heure locale</span><output id="localeClock">—</output><small id="localeMode">Heure de référence</small></div><dl><div><dt>Date</dt><dd id="localeDate">—</dd></div><div><dt>Montant</dt><dd id="localeMoney">—</dd></div><div><dt>Numérique</dt><dd id="localeNumber">—</dd></div><div><dt>Temps relatif</dt><dd id="localeRelative">—</dd></div></dl></section></div><!-- 11DZ_CORE_END --></section><footer class="session-log"><strong id="workflowSessionScore">0 points de contrôle interactifs</strong><ol id="workflowSessionLaps" aria-label="Journal de ronde"></ol></footer></div><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:browser-media-device-locale-clock */
const localeLanguage=document.querySelector('#localeLanguage');const localeZone=document.querySelector('#localeZone');const localeAmount=document.querySelector('#localeAmount');const localeReferenceTime=new Date('2026-03-18T09:30:45Z');const localeState={locale:localeLanguage.value,zone:localeZone.value,amount:Number(localeAmount.value),live:false};function localeCurrencyFor(locale){return locale==='ja-JP'?'JPY':locale==='en-US'?'USD':'CNY';}function localeCurrentTime(){return localeState.live?new Date():localeReferenceTime;}function localeModeLabel(locale,zone,now){const baseLabel=localeState.live?'Heure actuelle':'Heure de référence';const timeLabel=new Intl.DateTimeFormat(locale,{timeZone:zone,timeStyle:'medium',hour12:false}).format(now);return baseLabel+' · '+timeLabel;}function renderLocale(){const now=localeCurrentTime();const locale=localeState.locale;const zone=localeState.zone;document.querySelector('#localeNative').textContent='Langue du navigateur '+navigator.language+' · Fuseau horaire du système '+Intl.DateTimeFormat().resolvedOptions().timeZone+' · Afficher '+locale;document.querySelector('#localeClock').textContent=new Intl.DateTimeFormat(locale,{timeZone:zone,timeStyle:'medium',hour12:false}).format(now);document.querySelector('#localeDate').textContent=new Intl.DateTimeFormat(locale,{timeZone:zone,dateStyle:'full'}).format(now);document.querySelector('#localeMoney').textContent=new Intl.NumberFormat(locale,{style:'currency',currency:localeCurrencyFor(locale)}).format(localeState.amount);document.querySelector('#localeNumber').textContent=new Intl.NumberFormat(locale,{notation:'compact',maximumFractionDigits:1}).format(localeState.amount*183);document.querySelector('#localeRelative').textContent=new Intl.RelativeTimeFormat(locale,{numeric:'auto'}).format(3,'day');document.querySelector('#localeMode').textContent=localeModeLabel(locale,zone,now);}localeLanguage.addEventListener('change',()=>{localeState.locale=localeLanguage.value;localeState.live=false;renderLocale();announce('La langue d’affichage a été changée en '+localeState.locale);});document.querySelector('#localeControls').addEventListener('submit',event=>{event.preventDefault();localeState.locale=localeLanguage.value;localeState.zone=localeZone.value;localeState.amount=Number(localeAmount.value)||0;localeState.live=false;renderLocale();announce('La langue, le fuseau horaire et le format monétaire ont été appliqués');});document.querySelector('#localeNow').addEventListener('click',()=>{localeState.locale=localeLanguage.value;localeState.zone=localeZone.value;localeState.amount=Number(localeAmount.value)||0;localeState.live=true;renderLocale();announce('Prévisualisation basculée sur l’heure actuelle');});renderLocale();
/* 11DZ_CORE_SCRIPT_END */
const workflowBridgeSpec={"name":"browser-media-device-locale-clock","selector":"[data-core-bridge=\"browser-media-device-locale-clock\"]","mode":"select","key":"ArrowRight"};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+' · Version de base '+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.setAttribute('aria-keyshortcuts',workflowBridgeSpec.key);workflowBridgeControl.addEventListener('keydown',event=>{if(event.key!==workflowBridgeSpec.key)return;event.preventDefault();workflowBridgeControl.selectedIndex=(workflowBridgeControl.selectedIndex+1)%workflowBridgeControl.options.length;workflowBridgeControl.dispatchEvent(new Event('input',{bubbles:true}));workflowBridgeControl.dispatchEvent(new Event('change',{bubbles:true}));});workflowBridgeControl.addEventListener("keydown",workflowBridgeScheduleCommit);workflowBridgeControl.addEventListener('input',workflowBridgeScheduleCommit);workflowBridgeControl.addEventListener('change',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.selectedIndex=(workflowBridgeControl.selectedIndex+1)%workflowBridgeControl.options.length;workflowBridgeControl.dispatchEvent(new Event('change',{bubbles:true}));const result=workflowBridgeCommit();setTimeout(workflowBridgeCommit,0);return result;}function workflowBridgeReset(){workflowBridgeCore.dataset.workflowVersion='0';workflowBridgeLastEffect=workflowBridgeSerialize();}
const workflowSessionCore=document.querySelector('#workflowCore');const workflowSessionToggle=document.querySelector('#workflowSessionToggle');const workflowSessionLength=document.querySelector('#workflowSessionLength');const workflowSessionState={phase:'ready',elapsed:0,limit:Number(workflowSessionLength.value),checkpoints:[],timer:null};function workflowSessionFormat(seconds){return String(Math.floor(seconds/60)).padStart(2,'0')+':'+String(seconds%60).padStart(2,'0');}function workflowSessionDrive(){const percent=Math.min(100,Math.round(workflowSessionState.elapsed/workflowSessionState.limit*100));document.querySelector('#workflowSessionClock').textContent=workflowSessionFormat(Math.max(0,workflowSessionState.limit-workflowSessionState.elapsed));const progress=document.querySelector('#workflowSessionProgress');progress.setAttribute('aria-valuenow',String(percent));progress.querySelector('i').style.width=percent+'%';workflowSessionCore.dataset.sessionPhase=workflowSessionState.phase;document.querySelector('#workflowSessionScore').textContent=workflowSessionState.checkpoints.length+' points de contrôle d’interaction';}function workflowSessionLap(label){workflowSessionState.checkpoints.push({label,at:workflowSessionState.elapsed});const item=document.createElement('li');item.textContent=label+' · '+workflowSessionFormat(workflowSessionState.elapsed);document.querySelector('#workflowSessionLaps').append(item);workflowSessionDrive();}function workflowSessionStop(complete=false){clearInterval(workflowSessionState.timer);workflowSessionState.timer=null;workflowSessionState.phase=complete?'complete':'paused';workflowSessionToggle.textContent=complete?'Recommencer':'Tour suivant';workflowSessionToggle.setAttribute('aria-pressed','false');workflowSessionDrive();announce(complete?'Tour de chronométrage de démonstration terminée':'La ronde est suspendue');}function workflowSessionStart(){if(workflowSessionState.phase==='complete'){workflowSessionState.elapsed=0;workflowSessionState.checkpoints=[];document.querySelector('#workflowSessionLaps').replaceChildren();}workflowSessionState.phase='running';workflowSessionToggle.textContent='Tour de pause';workflowSessionToggle.setAttribute('aria-pressed','true');const bridge=workflowBridgeActivate();workflowSessionLap(bridge.summary);clearInterval(workflowSessionState.timer);workflowSessionState.timer=setInterval(()=>{workflowSessionState.elapsed+=1;if(workflowSessionState.elapsed>=workflowSessionState.limit){workflowSessionStop(true);return;}workflowSessionDrive();},1000);workflowSessionDrive();announce('Le tour de chronométrage de la présentation a commencé · '+bridge.summary);}workflowSessionToggle.addEventListener('click',()=>workflowSessionState.phase==='running'?workflowSessionStop():workflowSessionStart());workflowSessionLength.addEventListener('input',()=>{workflowSessionState.limit=Number(workflowSessionLength.value);workflowSessionState.elapsed=Math.min(workflowSessionState.elapsed,workflowSessionState.limit);workflowSessionDrive();});workflowSessionCore.addEventListener('keydown',event=>{if(event.key==='Enter'||event.key===' '){workflowSessionLap('Opérations au clavier');}});workflowSessionCore.addEventListener('click',event=>{if(event.target.closest('[data-core-bridge]'))workflowSessionLap('Opération principale · '+workflowBridgeSummary());});document.addEventListener('visibilitychange',()=>{if(document.hidden&&workflowSessionState.phase==='running')workflowSessionStop();});workflowSessionDrive();
workflowBridgeReset();
  </script>
</body>
</html>
Commentaires sur la pageVous avez découvert un problème ou avez une suggestion d’amélioration ?
Les fonctions de retour nécessitent l’utilisation de la version en ligne

Veuillez activer JavaScript dans la version en ligne avant de soumettre ; les fonctionnalités locales de l’outil ou du cas ne sont pas affectées.

Aller vers la version en ligne pour envoyer des commentaires