Isang maikli at may paninindigang checklist para sa accessible na mga web button
Limang panuntunang nakakahuli sa karamihan ng problema sa button accessibility bago pa umabot sa production
Talaan ng nilalaman
- Ang problema sa payo tungkol sa button accessibility
- 1. Gamitin ang button element para sa mga button
- 2. Gawing hindi bababa sa 44×44 pixels ang hit target
- 3. Magbigay ng nakikitang focus states na hindi lang browser defaults
- 4. Sumulat ng mga button label na may saysay kahit walang konteksto
- 5. Tiyakin ang sapat na color contrast
- Ano ang hindi saklaw ng checklist na ito
- Paano ito isasama sa iyong workflow
- Ang gastos ng paglaktaw sa gawaing ito
- Mahahalagang punto
- FAQ
- Sources
Ang problema sa payo tungkol sa button accessibility
Karamihan ng gabay sa button accessibility ay nahahati sa dalawang kampo: alinman sa isa itong 40-pahinang interpretasyon ng WCAG na walang nagbabasa, o isa itong malabong mungkahing "gawing accessible ang mga button" nang walang konkretong hakbang. Wala sa dalawang ito ang nakakatulong kapag maglalabas ka ng feature sa Huwebes.
Saklaw ng checklist na ito ang limang pinakakaraniwang pagkabigo sa button accessibility na nakikita namin sa production. Hindi ka nito gagawing eksperto sa WCAG, pero mahuhuli nito ang mga problemang talagang nakakaapekto sa mga user.
1. Gamitin ang button element para sa mga button
Kung kumikilos ito bilang button, dapat itong maging <button> element. Hindi <div> na may onclick, hindi <span> na may role="button", hindi <a> na may href="#" at preventDefault.
Binibigyan ka ng <button> element ng keyboard navigation, focus management, at screen reader announcements nang libre. Kapag gumamit ka ng <div>, binubuo mo uli ang lahat ng iyon mula sa simula — at magkakamali ka.
Ang tanging eksepsiyon: kung ang action ay nagna-navigate sa bagong page o nagpapalit ng URL, gumamit ng <a> element. Magkaiba ang semantics ng links at buttons. Nagna-navigate ang mga screen reader user ayon sa uri ng element, at inaasahan nilang ang mga button ay nagsasagawa ng actions at ang links ay nagna-navigate.
2. Gawing hindi bababa sa 44×44 pixels ang hit target
Iniaatas ng WCAG 2.5.5 (Level AAA) na ang interactive elements ay may minimum target size na 44×44 CSS pixels. Hindi ito tungkol sa visual size — tungkol ito sa clickable area.
Maaari kang magkaroon ng maliit na visual button na may sapat na padding, o maaari mong palawakin ang hit target gamit ang pseudo-element. Ang mahalaga ay hindi kailangang tumama nang eksakto ang user.
Ang mga mobile user, mga taong may motor impairments, at sinumang gumagamit ng device habang gumagalaw ay hindi tatama sa maliliit na target. Maaaring malinis tingnan ang 24×24 pixel icon button, pero isa itong pagkabigo sa usability.
3. Magbigay ng nakikitang focus states na hindi lang browser defaults
Mas mabuti ang default focus ring ng browser kaysa wala, pero hindi ito pare-pareho sa iba’t ibang browser at madalas hindi nakikita sa ilang background. Kailangan mo ng custom focus state na gumagana sa iyong design system.
May tatlong katangian ang magandang focus indicator:
- High contrast: hindi bababa sa 3:1 laban sa katabing mga kulay
- Visible offset: hindi natatakpan ng sariling border o background ng button
- Consistent shape: dapat makilala ito ng mga user bilang focus indicator sa kabuuan ng iyong interface
Huwag alisin ang outline: none nang hindi ito pinapalitan ng mas mabuti. At huwag gawing napakapino ng focus states na ikaw lang ang nakakakita nito sa perpektong kondisyon ng ilaw.
4. Sumulat ng mga button label na may saysay kahit walang konteksto
Madalas nagna-navigate ang mga screen reader user sa pamamagitan ng pagtalon sa pagitan ng mga button. Kapag ginagawa nila ito, naririnig nila ang listahan ng mga button label na walang nakapaligid na konteksto.
Walang silbi sa listahang iyon ang button na may label na "Learn more". Ganoon din ang "Click here" o "Submit". Dapat ilarawan ng label ang action: "Download the accessibility checklist", "Subscribe to updates", "Delete this comment".
Kung nangangailangan ang iyong design ng maikling visual label, gumamit ng aria-label para magbigay ng mas naglalarawang alternatibo. Pero mas mabuting solusyon ang magsulat ng mga label na gumagana para sa lahat.
Para sa icon-only buttons, mandatory ang aria-label. Ang button na may magnifying glass icon lang ay nangangailangan ng aria-label="Search" o katumbas na text. Hindi accessible sa mga screen reader ang icon.
5. Tiyakin ang sapat na color contrast
Iniaatas ng WCAG 2.1 ang contrast ratio na hindi bababa sa 4.5:1 para sa normal text at 3:1 para sa large text (18pt o 14pt bold). Karaniwang normal text ang mga button label.
Bagsak ang light gray text sa puting button. Bagsak ang maputlang asul sa light blue na background. Maaaring mukhang sopistikado ang mga kombinasyong ito, pero iniiwan nila ang mga user na may low vision, color blindness, o sinumang tumitingin sa screen sa maliwanag na sikat ng araw.
Gumamit ng contrast checker habang nagdi-design, hindi pagkatapos ng launch. Mahal ayusin ang contrast issues sa production dahil madalas nangangailangan ito ng pagbabago sa design system.
Kung gumagamit ka ng image processing tools, makakatulong ang client-side processing na mapanatili ang privacy habang gumagawa ng accessible visual assets — lalo na kapag sinusubukan ang mga kombinasyon ng kulay o gumagawa ng preview states.
Ano ang hindi saklaw ng checklist na ito
Sadyang hindi kumpleto ang listahang ito. Hindi nito saklaw ang disabled state semantics, loading states, error handling, o complex button patterns tulad ng split buttons o dropdown triggers. Kailangan ng sariling gabay ang mga pattern na iyon.
Hindi rin nito saklaw ang mas malawak na tanong kung kailan gagamit ng button kumpara sa ibang interactive elements. Para doon, kailangan mong maunawaan ang semantic HTML at ang accessibility tree — mga paksang nararapat magkaroon ng sariling artikulo.
Ang saklaw nito ay ang low-hanging fruit: ang mga pagkakamaling lumilitaw sa halos bawat code review, nakakaapekto sa pinakamaraming user, at pinakamadaling ayusin habang development.
Paano ito isasama sa iyong workflow
Gumagana lang ang accessibility checklists kung bahagi sila ng development process, hindi idinadagdag pagkatapos. Ganito ito maisasakatuparan:
Sa design: magdagdag ng focus states at hit target annotations sa iyong design files. Huwag ipaubaya sa mga developer ang panghuhula nito.
Sa code review: tingnan kung may <button> elements, aria-label sa icon buttons, at focus state CSS. Mabilis makita ang mga ito.
Sa testing: mag-tab sa iyong interface gamit ang keyboard. Kung hindi mo maabot ang isang button o hindi mo makita kung nasaan ang focus, ganoon din ang iyong mga user.
Sa documentation: isama ang button accessibility requirements sa iyong component library. Gawing mas madali ang paggawa ng tama kaysa paggawa ng mali.
Kung nagde-debug ka ng production issues, makakatulong ang mga tool para sa pag-inspect ng HTTP headers at redirects para maunawaan kung paano binibigyang-kahulugan ng assistive technologies ang iyong markup — lalo na kapag tina-troubleshoot ang focus management pagkatapos ng navigation.
Ang gastos ng paglaktaw sa gawaing ito
Ang inaccessible na mga button ay hindi lang bumabagsak sa WCAG compliance — sinisira nila ang workflows. Ang user na hindi makapag-click ng submit button ay hindi makakakumpleto ng form. Ang user na hindi makakita ng focus states ay hindi makakapag-navigate gamit ang keyboard. Ang user na hindi maihiwalay ang button text mula sa background ay hindi mababasa ang label.
Hindi ito edge cases. Humigit-kumulang 15% ng populasyon sa mundo ang may ilang anyo ng disability, at ang temporary impairments (sirang mouse, maliwanag na sikat ng araw, may kargang sanggol) ay kalauna’y nakakaapekto sa lahat.
Ang magandang balita: karamihan ng button accessibility ay mga problemang may solusyon na. Hindi mo kailangang mag-imbento ng bagong patterns o maghintay ng browser support. Kailangan mo lang gamitin nang tama ang platform at subukan ang iyong gawa.
Mahahalagang punto
- Gumamit ng
<button>elements para sa buttons at<a>elements para sa navigation — mahalaga ang semantic difference para sa assistive technology - Tiyaking hindi bababa sa 44×44 CSS pixels ang hit targets para masuportahan ang motor impairments at mobile users
- Magbigay ng nakikita at high-contrast na focus states na gumagana sa kabuuan ng iyong design system
- Sumulat ng mga button label na may saysay kapag binasa nang hiwalay, at gumamit ng
aria-labelpara sa icon-only buttons - Suriin ang color contrast habang nagdi-design, hindi pagkatapos ng launch, para maiwasan ang magastos na retrofits
FAQ
Q: Maaari ko bang gamitin ang role="button" sa isang <div> kung magdaragdag ako ng keyboard handlers?
A: Maaari, pero hindi dapat. Kakailanganin mong i-handle nang manu-mano ang Enter, Space, focus management, at disabled states — at hindi maiiwasang may makaligtaan ka. Ginagawa ng <button> element ang lahat ng ito nang tama bilang default. Gamitin ito.
Q: Paano naman ang mga button na nagto-toggle ng state, tulad ng play/pause button?
A: Gumamit ng aria-pressed="true" o aria-pressed="false" para ipahiwatig ang kasalukuyang state. Dapat ding ipakita ng button label ang action na mangyayari kapag na-click ("Pause" kapag nagpe-play, "Play" kapag naka-pause), hindi ang kasalukuyang state. Kailangang malaman ng mga screen reader user kung ano ang gagawin ng button, hindi kung anong state ang kinaroroonan ng system.
Q: Kailangan bang matugunan ng disabled buttons ang contrast requirements?
A: Ibinubukod ng WCAG 2.1 ang disabled controls mula sa contrast requirements (1.4.3), pero kontrobersyal ito. Mahirap makita ng lahat ang disabled buttons na may mahinang contrast. Kung magpapakita ka ng disabled button, gawin itong nababasa. Mas mabuti pa, itago ito o ipaliwanag kung bakit ito disabled.
Q: Paano ko ite-test ang button accessibility nang walang screen reader?
A: Gamitin ang iyong keyboard. Mag-tab sa interface at tiyaking naaabot mo ang bawat button, nakikita mo kung nasaan ang focus, at naa-activate mo ang mga button gamit ang Enter o Space. Nahuhuli nito ang karamihan ng problema. Para sa mas malalim na testing, gamitin ang accessibility inspector sa Chrome o Firefox DevTools para tingnan ang computed role at label.
Q: Ano ang pagkakaiba ng aria-label at aria-labelledby?
A: Direktang nagbibigay ang aria-label ng text string. Tinutukoy ng aria-labelledby ang ID ng ibang element na ang text content ang nagiging label. Gamitin ang aria-labelledby kapag umiiral na ang label text sa ibang bahagi ng DOM. Gamitin ang aria-label kapag kailangan mong magbigay ng label na hindi nakikita sa screen.
Sources
- Web Content Accessibility Guidelines (WCAG) 2.1 — W3C
- Inclusive Components: Toggle Buttons — Heydon Pickering
- The ARIA Button Pattern — W3C ARIA Authoring Practices Guide
- WebAIM: Keyboard Accessibility — WebAIM


