GH GambleHub

Microinteracțiuni și feedback

1) Ce este micro-interacțiunea

Microinteracțiile sunt scurte cicluri de semnal ↔ răspuns care confirmă faptul că sistemul a auzit utilizatorul și se îndreaptă spre rezultat.

Clasic patru:

1. Declanșare (clic, glisați, focalizați, eveniment de sistem).

2. Reguli (ce se schimbă și cum).

3. Fidbeck (vizual/sonor/tactil/text).

4. Reguli de buclă/meta (repetare, expirare, anulare/refacere).

Scopul: de a reduce incertitudinea și încărcătura cognitivă fără a distrage atenția de la sarcină.

2) Principii de proiectare

Înțeles> efect. Efectul explică „ce s-a întâmplat” şi „ce urmează”.
Instantaneitate. Primul răspuns ≤ de 100 ms (butoane/comutatoare).
Fără ambiguitate. Stări distinctive: hover/focus/pressed/disabled/loading.
Economii. Proprietăți minime, durate scurte, fără artificii.
Consistență. Aceleaşi acţiuni sunt aceleaşi semnale.
Accesibilitate. Fidbek este văzut, auzit și citit de un cititor de ecran; există o alternativă la mișcare/sunet.

3) Temporizări și curbe

Hover/Focus: 120-180ms

Presat/Comutare: 80-120 мс

Toast/Tooltip: intrare 180-240ms, ieșire 120-160ms

Validare inline: ≤ 100 ms după pierderea focalizării câmpului

Curba implicită este "cubic-bezier (0. 2, 0, 0. 2, 1)`; pentru apăsat - accelerat "cubic-bezier (0. 4, 0, 1, 1)`.

4) Catalog de microinteracție

4. 1 Butoane și întrerupătoare

Răspuns imediat: clic vizual/liniuță + stare ocupată atunci când este interogată de rețea.
Actualizare optimistă: schimbați UI imediat, reveniți la eroare (cu anulare).
Dublu clic pe dezbatere: blocați repetarea până când/se răspunde la timeout.

4. 2 Validarea în linie a formularelor

Validarea câmpurilor neclare; mesajele sunt scurte și constructive („cel puțin 8 caractere”).
Pictograma Stare + culoare + text (nu o culoare).
Pentru parole - un indicator instant de „putere” (nu interferează cu intrarea).

4. 3 Pâine prăjită/bannere/gustări

Utilizare pentru confirmări non-blocante.
Durata 2-5 s, pauză la hover/focus, Anulați butonul acolo unde este cazul.
Nu închideți conținutul important și CTA-urile.

4. 4 Progress și schelete

Dacă lungimea procesului este cunoscută, bara de progres; dacă nu, schelet în loc de spinner.
Nu există salturi de aspect: remediați. înălțimi de bloc.

4. 5 Ecusoane/contoare

Contrast cifre ≥ 4. 5:1; maxim 99/999 cu trunchiul „99 +”.
Increment animații - pași scurți de loturi 40-60 ms, fără aspectul „tremurând”.

4. 6 Tooltip/Ajutor

Aspect de hover/focus; accesibilitatea prin „aria-descrisă de”.
Interziceți informațiile critice numai în tooltip.

5) Erori, stări goale, anulare

Eroare: text onest, explicarea motivului și acțiunii („Repetare”, „Schimbare carte”).
Starea goală: ce este și cum să începeți; ilustrație dezactivată, contrast text AA/AAA.
Anulare fereastră: 5-10 s pentru acțiuni reversibile (eliminarea, anularea pariului înainte de glonț).

6) Feedback multimodal

Sunet: liniștit, scurt, un model pe tip de eveniment (succes/eroare/atenție); opriți în setările.
Vibro/haptika: răspuns ușor de presă/succes; respectă „prefers-redusă-mișcare” și limitările sistemului.
Vizual: numai „transformare/opacitate”, fără blur/umbre grele pe matrice.

7) Disponibilitate (A11y)

„: focus-vizibil” pentru tastatură; focalizare inel fără ceață.
Screensaver: „rol =” stare „/” alertă „” pentru pâine prăjită; regiuni vii 'aria-live =' politicos/asertiv ''.
Alternativă la sunet/mișcare; „prefers-redusă-mișcare: reduce”.
Text și contrast pictogramă - WCAG (regular ≥ 4. 5:1).

8) Performanță

Răspunde ≤ 100ms: răspuns vizual la rețea.
Animați „transformare/opacitate”; evitați „înălțimea/stânga/caseta-umbră” pe mai multe elemente.
Efecte de rețea - cu prefetch și optimism; retrai sunt idempotente.

9) Microinteraction token-uri (sistem de proiectare)

json
{
"micro": {
"duration": { "hover": 160, "focus": 160, "press": 90, "toastIn": 220, "toastOut": 140 },
"easing":  { "std": "cubic-bezier(0. 2,0,0. 2,1)", "acc": "cubic-bezier(0. 4,0,1,1)" },
"toast":  { "timeoutMs": 3500, "pauseOnHover": true },
"badge":  { "max": 99, "emphasisStepMs": 50 }
}
}

10) Fragmente de implementare

Hover și Anula pauza pâine prăjită:
html
<div id="toast" role="status" aria-live="polite" hidden></div>
<script>
const toast = (msg, {undo, timeout=3500}={})=>{
const el = document. getElementById('toast');
el. innerHTML = undo? '$ {msg} <button> Undo </button>': msg;
el. hidden = false;
let t = setTimeout(close, timeout);
el. onmouseenter = () => clearTimeout(t);
el. onmouseleave = () => t = setTimeout(close, timeout);
if (undo) el. querySelector('button'). onclick = ()=>{ undo(); close(); };
function close(){ el. hidden = true; el. innerHTML=''; }
};
</script>
Validare inline pentru blur:
js const rules = { password: v => v.length>=8         "Minimum 8 characters"};
document. querySelectorAll('[data-validate]'). forEach(i=>{
i.addEventListener('blur', e=>{
const rule = rules[e. target. name]; if (!rule) return;
const ok = rule(e. target. value);
e. target. dataset. state = ok===true? 'ok': 'err';
e. target. nextElementSibling. textContent = ok===true? '': ok;
});
});
Haptica/vibro (folback):
js export const haptic = type => {
if (!('vibrate' in navigator)) return;
if (type==='success') navigator. vibrate(10);
if (type==='error') navigator. vibrate([20,40,20]);
};
CSS pentru efecte „ieftine”:
css
.button{ transition: transform. 09s cubic-bezier(.4,0,1,1), box-shadow. 16s cubic-bezier(.2,0,.2,1); }
.button:active{ transform: scale(.98); }
.input[data-state="err"]{ outline: 2px solid var(--role-danger); }
.sr-only{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
@media (prefers-reduced-motion: reduce){ { animation:none! important; transition-duration:.01ms! important; } }

11) Măsurători și controlul calității

INP p75 <200 ms, Sarcini lungi cota <5%.

Primul feedback al utilizatorului klik→vizualnyy ≤ 100ms

Proporția de acțiuni optimiste cu o revenire de <3% (altfel - neîncredere).
Sondaje UX: claritatea mesajelor de eroare, vizibilitatea confirmărilor.

Lista de verificare QA

  • Fiecare interactiv are „apăsat/ocupat/dezactivat”.
  • Erorile sunt însoțite de text și acțiuni (Retry/Anulare).
  • Toasturile sunt disponibile pe SR și nu se suprapun conținutului cheie.
  • Validarea inline nu interferează cu intrarea; mesajele sunt specifice.
  • „preferă mișcarea redusă” susținută; sunetul/vibrațiile sunt oprite.
  • Nici un aspect și strobe salturi; animații despre „transformare/opacitate”.

12) Specificul iGaming

Pariu/cumpărare: instant 'pressed→busy', toast „Acceptat” cu Anulare (dacă reglementările permit), chei idempotente; în întârziere> 1 s - „Așteptând confirmarea”....
Spin/Reveal: scurt feedback de presă, pornire/oprire fără clipire fără sfârșit; câștig - spargere ≤ 500 ms + text lizibil (AAA).
Coeficienți vii: actualizări cu loturi, diff vizual (săgeată/grosime) fără „salturi”.
Plăți/concluzii: progrese pas cu pas (KUS→Proverka→Vyplata), texte transparente ale motivelor refuzului.
Joc responsabil: notificări fără efecte distractive; contrast mai mare, CTA „Set Limit” explicite.

13) Anti-modele

Așteptați un răspuns la rețea înainte de a afișa un răspuns la un clic.
„Culoare fără formă”: starea diferă numai în nuanță.
Pulsații nesfârșite/clipește, sunete ascuțite fără întrerupător.
Tooltip cu conținut critic care nu este accesibil de la tastatură.
Spinner în gol> 1-2 s fără progres/schelet.
Umbre subțiri/blur pe sute de elemente (lag pe dispozitive slabe).

14) Documentația în sistemul de proiectare

„Micro-token-uri”: „durată/relaxare”, presetări de toasturi/insigne/validatoare.
„Modele”: butoane, forme, toasturi, progres, erori inline, anulare.
„A11y & Motion”: reguli pentru SR/HC/redusă-mișcare; ARIA exemple.
„Do/Don' t”: clipuri scurte cu temporizări, numere INP/First Feedback.

Scurt rezumat

Micro-interacțiunile sunt un limbaj de încredere. Oferiți un răspuns în ≤ 100 ms, capturați stări ușor de înțeles, utilizați optimist cu rollback sigur, nu vă bazați numai pe culoare și animați proprietățile luminii. Respectați disponibilitatea și performanța - apoi produsul se simte viu, onest și de încredere, în special în scenarii în timp real.

Contact

Contactați-ne

Scrieți-ne pentru orice întrebare sau solicitare de suport.Suntem mereu gata să ajutăm!

Pornește integrarea

Email-ul este obligatoriu. Telegram sau WhatsApp sunt opționale.

Numele dumneavoastră opțional
Email opțional
Subiect opțional
Mesaj opțional
Telegram opțional
@
Dacă indicați Telegram — vă vom răspunde și acolo, pe lângă Email.
WhatsApp opțional
Format: cod de țară și număr (de exemplu, +40XXXXXXXXX).

Apăsând butonul, sunteți de acord cu prelucrarea datelor dumneavoastră.