GH GambleHub

Nəzarət seçimi: checkbox, switch, radio zımba

1) Əsas fərqlər (mənası, «şəkil» deyil)

NəzarətNə deməkdirNə zaman tətbiq olunurEffektin tətbiqi
ÇekboxKonfiqurasiya və ya seçimlərin daxil edilməsi/istisna edilməsi. Müstəqil və ya təkrar seçim ola bilər. tri-state dəstəkləyir. Seçimlərin siyahıları, filtrlər, razılıqlar. Siz bir neçə seçə bilərsiniz. Adətən təxirə salınır («Save» ilə), lakin təsir yerli olduqda dərhal icazə verilir və geri qaytarılır.
Switch (açar)Sistemin/funksiyanın cari vəziyyətinin dəyişdirilməsi dərhal dəyişməli və vizual olaraq nəzərə çarpmalıdır. Funksionallığı, statusları, bildirişləri, canlı rejimini açın/qapatın. Dərhal və görünür; əlavə olmadan «Save».
Radio qutularıBir dəstdən bir-birini istisna edən variantlar. Düz bir həmişə seçilir (və ya seçildikdən sonra). Rejimlər, formatlar, ölçü vahidləri, çeşidləmə. Adətən dərhal tətbiq olunur; mürəkkəb dəyişikliklər üçün - «Tətbiq et».
Qayda:
  • N-dən biri lazımdır - radio götürün.
  • Hər hansı bir bayraq dəsti lazımdır - çekbox.
  • Dərhal davranışı dəyişdirən bir ikili tumbler lazımdır - svitch.

2) Ağac həlləri (qısa)

1. Bir neçə müstəqil seçki? → Çekbox.
2. Tam bir variant dəsti? → Radiocopks (və ya seqment-control/taggles).
3. Bir ikili bayraq, təsiri ani və nəzərə çarpan? → Switch.
4. «Qismən» işarəsi lazımdır? → tri-state ilə Checkbox.
5. Risk/dəyər yüksəkdir (ödəniş, moderasiya)? → Radio/çekbox + təsdiq (switch deyil).

3) İstifadəçi davranışı və gözləntiləri

Switch = ani nəticə. Dəyişdirildikdən sonra istifadəçi fərdi «Save» olmadan dərhal effekt və geri dönüşü gözləyir.
Checkbox = seçimlər. Dərhal və ya düymə ilə tətbiq oluna bilər - modeli açıq şəkildə göstərmək vacibdir («Parametrlər qorunub »/« Save» düyməsini basın).
Radio = rejim seçimi. Keçid interfeysi yenidən qura bilər. Dəyişiklik siqnalı (mikro animasiya/mətn).

4) Hallar və vizual semantika

Normal / Hover / Focus / Active / Disabled / Error. Mətn və göstərici kontrastı ≥ AA.
Tri-state (çekbox): boş/qismən/seçilmiş. Qismən vəziyyət özlüyündə likabeldir - klik «boş» deyil, «seçilmiş» olaraq dəyişir.
Switch: «qaçışçının» rənginə və mövqeyinə görə «açıq/açıq» fərqi var. Rəng yeganə məna daşıyıcısı deyil (nişan/etiket yaxınlıqdadır).

5) Kopyalama və imzalar

Feil + obyekt və ya seçim zamanı doğru olur iddia.

Çekbox: «E-poçt bildirişləri alın».
Svitch: «Xəbərdarlıqlar: Açıq/Qapalı» (solda leybl, sağda və ya yazının özündə dövlət).
Radio: «Əmsalların formatı: Onluq/Kəsr/Amerika».
İkiqat inkarlardan çəkinin: «Söndürməyin...» - qarışıq.

Riskli hərəkətlər üçün ikinci bir təsvir əlavə edin: "Açıq. sürətli dərəcələr (təsdiq olmadan) - 5 saniyə ərzində ləğv edilə bilər"

6) Əlçatanlıq (A11y) və klaviatura

Çekbox: 'role = "checkbox"', aria-checked = "true 'false' mixed '', Space - keçid.
Svitch: native '<input type = «checkbox»>' svitch vizual və ya 'role =' switch's 'aria-checked'. Çekbox kimi davranış (Space).
Radio: 'role = «radiogroup» konteynerdə,' role = «radio» elementlərdə, oxlar ↑/↓ və ya ←/→ - seçimi, Space/Enter - təsdiqləyir.
Qruplar: ümumi kontekst üçün 'fieldset '/' legend' istifadə edin.
Focus halqaları görünür; click zonalarının ölçüləri ≥ 44 × 44 px hər tac.

Snippet:
html
<! -- Radio Group -->
<fieldset role="radiogroup" aria-labelledby="odds-format">
<legend id = "odds-format "> Odds format </legend>
<label><input type="radio" name="odds" value="decimal" checked> Десятичный</label>
<label><input type="radio" name="odds" value="fractional"> Дробный</label>
<label> <input type = "radio" name = "odds" value = "american"> American </label>
</fieldset>

<! -- Checkbox (tri-state via aria) -->
<div role = "checkbox" aria-checked =" mixed" tabindex =" 0" id = "cb "> Notify about tournaments </div>

<! -- Switch (role = "switch") -->
<button role="switch" aria-checked="false" aria-labelledby="live-title" class="switch" id="live">
<span class="switch__knob"></span>
</button>
<span id = "live-title "> Live updates </span>

7) Asinxron dəyişikliklər və səhvlər

Switch + Network: keçid → dərhal optimist UI → server təsdiqi → uğursuzluqla yumşaq yuvarlanmaq və səbəb göstərir.
«Save» Checkbox/Radio: Təsdiq olmadıqda - qlobal davranışı dəyişdirməyin.
Riskli hərəkətlər: təsdiq (modalka) və ya 5-10 saniyəlik undo-panel (reqlament icazə verərsə).

js
//Optimistic for switch const sw = document. getElementById('live');
sw. addEventListener('click', async ()=>{
const prev = sw. getAttribute('aria-checked') === 'true';
sw. setAttribute ('aria-checked', String (! prev)) ;//instantly try {
const r = await fetch('/api/live', { method:'POST', body: JSON. stringify({ enabled:!prev })});
if(!r.ok) throw new Error();
} catch {
sw. setAttribute('aria-checked', String(prev));     // откат
//show the toast "Failed to enable live"
}
});

8) Mobil nümunələr

Switch - mobil konfiqurasiya əsas ikili nəzarət.
Radio 2-4 seçim üçün segmented control əvəz edilə bilər (daha yaxşı barmaq vurmaq).
Siyahıdakı çekboxlar - böyük bir klik sahəsi və sürətli multivible dəstəyi ilə.

9) Qrup və maket nümunələri

Radio: şaquli siyahı (daha yaxşı taranır), 2-3 seçim üçün - seqmentlər bir sətirdə.
Çekbox: bir sütun üzrə hizalama; uzun siyahılar üçün - «Hamısını seç» + qrupdan tri-state.
Switch: solda etiket, sağda bir xətt üzərində nəzarət; lazım gələrsə, cari vəziyyəti mətnlə göstərin («On «/» Off »).

10) Antipattern

Dərhal dəyişiklik tətbiq etməyən Switch («Save» tələb edir).
Bir çox seçim mümkün olan radio qutuları.
Bir-birini istisna edən variantlar üçün çekbox («Kişi/Qadın» iki çekbox kimi).
Təhlükəli geri dönməz hərəkət üçün ikili switch (məlumatları silmək).
Mətndə ikiqat inkarlar.
Səhv olduqda düzəni dəyişdirin, fokus itir.

11) iGaming xüsusiyyətləri (nümunələr)

Əmsalların formatı: «Onluq/Kəsr/Amerika» radio qrupu - dərhal tətbiq olunur və profildə saxlanılır.
Sürətli bahis: Hər bir əməliyyatdan sonra 5-10 saniyə ərzində açıq təsviri və undo ilə «Sürətli bahislər (təsdiq olmadan)».
Abunə/bildirişlər: tədbir növlərinə görə çekboxlar (uduşlar, turnirlər, depozitlər). Qrup çekbox «Hamısını seç» - tri-state.
Canlı yeniləmə əmsalları: optimistika və şəbəkə səhv olduqda geri dönüş ilə «Live-mode» switch.
Məsuliyyətli oyunun limitləri: dövrlər üçün radio qutuları (gün/həftə/ay) + məbləğ sahəsi; «sabahdan» giriş ilə dəyişdirilmiş limitin təsdiqi.

12) Dizayn sistemi tokenləri (nümunə)

json
{
"checkbox": { "size": 20, "radius": 4, "gap": 8 },
"radio": { "size": 20, "dot": 10, "gap": 8 },
"switch": { "width": 44, "height": 24, "knob": 20, "padding": 2 },
"focusRing": { "width": 2, "offset": 2 },
"motion": { "toggleMs": 140, "ease": "cubic-bezier(0. 2,0,0. 2,1)" },
"a11y": { "contrastAA": true }
}
CSS Presets (konsepsiya):
css
.control { display:flex; align-items:center; gap:8px; min-height:36px; }
.switch { width:44px; height:24px; padding:2px; border-radius:999px; background:var(--bg-muted); position:relative; }
.switch[aria-checked="true"]{ background:var(--accent); }
.switch__knob{ position:absolute; width:20px; height:20px; border-radius:50%; left:2px; top:2px; transition: transform. 14s cubic-bezier(.2,0,.2,1); background:#fff; }
.switch[aria-checked="true"].switch__knob{ transform: translateX(20px); }
.control:focus-visible{ outline:2px solid var(--focus); outline-offset:2px; }

13) UX məntiqi snippet

Tri-state «Hamısını seç»:
js function updateMaster(master, items){
const total = items. length, checked = items. filter(i=>i. checked). length;
master. indeterminate = checked>0 && checked<total;
master. checked = checked===total;
}
Klaviatura ilə radio qrupu (oxlar):
js const radios = [...document. querySelectorAll('[role="radio"]')];
let i = radios. findIndex(r => r. getAttribute('aria-checked')==='true');
document. addEventListener('keydown', e => {
if(!['ArrowRight','ArrowDown','ArrowLeft','ArrowUp'].includes(e. key)) return;
e. preventDefault();
const dir = (e. key==='ArrowRight'          e. key==='ArrowDown')? 1: -1;
i = (i + dir + radios. length) % radios. length;
radios. forEach(r => r. setAttribute('aria-checked','false'));
radios[i].setAttribute('aria-checked','true');
radios[i].focus();
});

14) Metriklər və təcrübələr

Misclick rate və undo tezliyi.
Radio qrupları üzrə seçim və validasiya səhvlərinə qədər vaxt.
Pay «Hamısını seç» və əl seçimi ilə müqayisə (sürət, dəqiqlik).
A/B: etiketlərin kopyalanması, seçimlərin qaydası, radio vs segmented, «dərhal» vs «düyməsi ilə tətbiq edin».

15) QA-çek siyahısı

Məna və seçim

  • Control tapşırığa uyğun gəlir (çoklu → çekbox; biri N → radio; ani ikili → switch).
  • Riskli hərəkətlər üçün təsdiq/undo var.

Mövcudluq

  • Düzgün rollar ('checkbox '/' switch '/' radiogroup '/' radio'), 'aria-checked '/' indeterminate'.
  • Focus halqaları görünür, oxlar radio qrupunda işləyir, Space check box/switch açır.

Davranış

  • Switch dərhal dəyişikliklər tətbiq; səhv olduqda - geri çəkilmə və mesaj.
  • Tri-state «Hamısını seç» düzgün; etiket klikləri işləyir.

Vizual

  • Kontrast ≥ AA; hal yalnız rəng ilə ötürülmür.
  • Klik zonaları ≥ 44 × 44 px; nizam və hizalama sabitdir.

Mobil

  • 2-4 radio variantları üçün segmented-control tac test edilmişdir.
  • Barmaq vurma və sürüşmə toqquşmur.

16) Dizayn sistemində sənədləşmə

Komponentlər: «Checkbox», «Switch», «RadioGroup »/« SegmentedControl».
Ölçü/animasiya/fokus tokenləri, kopyalama nümunələri.
Nümunələr: «Hər şeyi seç» (tri-state), «Ani tətbiq», «Riskdən sonra Undo».
Do/Don 't-qalereya: gecikmiş saxlama ilə svitch (don 't), çek qutuları əvəzinə radio (don 't), qısa dəstlər üçün seqmentlər (do).

Qısa xülasə

Nəzarət seçimi məna və gözləntilərdir: çekbox - müstəqil bayraqlar və qruplar, switch - funksiyanın dərhal açılması/söndürülməsi, radio - dəstdən tam bir seçimdir. Əlçatanlığı saxlayın, asenkron vəziyyətlər və kopyalama haqqında düşünün - və istifadəçilər səhvlər və sürprizlər olmadan parametrləri inamla dəyişdirəcəklər.

Contact

Bizimlə əlaqə

Hər hansı sualınız və ya dəstək ehtiyacınız varsa — bizimlə əlaqə saxlayın.Həmişə köməyə hazırıq!

İnteqrasiyaya başla

Email — məcburidir. Telegram və ya WhatsApp — istəyə bağlıdır.

Adınız istəyə bağlı
Email istəyə bağlı
Mövzu istəyə bağlı
Mesaj istəyə bağlı
Telegram istəyə bağlı
@
Əgər Telegram daxil etsəniz — Email ilə yanaşı orada da cavab verəcəyik.
WhatsApp istəyə bağlı
Format: ölkə kodu + nömrə (məsələn, +994XXXXXXXXX).

Düyməyə basmaqla məlumatların işlənməsinə razılıq vermiş olursunuz.