A monitor showing a Figma-style interface with a button component selected, inspect specs visible, comment bubbles near design elements — the visual marker for the Figma handoff audit.
Image description: A monitor showing a Figma-style interface with a button component selected, inspect specs visible, comment bubbles near design elements — the visual marker for the Figma handoff audit.

Tekninen opas · Figma-käsikirjoitusauditointi

Suunnittelijan ja kehittäjän välinen käsikirjoitus epäonnistuu saavutettavuudessa: tutkimus 50 Figma-tiedostosta

Auditoimme 50 tuotanto-Figma-tiedostoa — anonymisoituina ja luvalla — saavutettavuusspesifikaatioiden osalta: mitä siirtyi käsikirjoitukseen ja mitä jäi pois.

Suunnittelijan ja kehittäjän välinen käsikirjoitus epäonnistuu saavutettavuudessa
tutkimus 50 Figma-tiedostosta

Pyysimme katseluoikeuden 50 tuotanto-Figma-tiedostoon 28 tuotantotiimiltä — luvalla ja täydellä anonymisoinnilla — ja kävimme jokaisen läpi yhdellä kysymyksellä: kun kehittäjä avaa tämän tiedoston ja aloittaa toteutuksen, mitä saavutettavuuspäätöksiä suunnittelija on jo tehnyt — ja mitkä jäävät kehittäjälle keksittäväksi perjantai-iltapäivänä kello 16? Vastaus tiedostosta toiseen on, että useimmat niistä keksitään edelleen kello 16.

50
auditoitua tuotanto-Figma-tiedostoa, anonymisoituna
60 %
interaktiivisista komponenteista toimitettiin ilman kohdistustilan suunnittelua
5
saavutettavuusominaisuutta seurattiin jokaisessa tiedostossa
11 min lukemista
Päivitetty toukokuu 2026

1. Miten 50 tiedostoa auditoitiin

Otos koostuu 50 Figma-tiedostosta 28 tuotantotiimiltä SaaS-, vähittäiskauppa-, fintech-, julkishallinto- ja koulutustekniikka-aloilta. Neuvottelimme katseluoikeuden ei-nimeämisperiaatteella: mikään tässä artikkelissa ei tunnista brändiä, tiimiä tai suunnittelijaa. Tiedostot valittiin kuvaamaan sitä, mitä kehittäjä todellisuudessa vastaanottaisi käsikirjoituksessa — ei portfoliosivuston kiillotettua tapaustutkimusta — joten pyysimme kutakin tiimiä jakamaan tiedoston, josta viimeisin ominaisuus oli toimitettu, ei tiedoston, josta he olivat ylpeimpiä. Kaksitoista tiedostoista oli tiimeiltä, joilla on erillinen design-system-käytäntö; loput 38 olivat tuotetason tiedostoja, jotka toivat kirjastosta komponentteja tai rakensivat niitä suoraan tiedostoon.

Kävimme jokaisen tiedoston läpi etsimällä viittä saavutettavuusominaisuutta: kohdistustilan suunnittelu jokaisessa interaktiivisessa komponentissa, alt-tekstimerkinnät kaikissa kuvissa tai ei-koristeellisissa kuvakkeissa, lukemisjärjestyksen dokumentaatio layoutin yli, liikeasetusten käsittely animoiduille tai siirtyville elementeille, sekä tummaväriteeman kontrastispesifikaatio kaikille molempiin valoihin ja pimeisiin teemoihin toimitetuille komponenteille. Kullekin ominaisuudelle tiedosto sai pisteen “dokumentoitu” vain jos pätevä kehittäjä pystyisi toteuttamaan suunnitelman ilman vastauksen keksimistä itse. “Mainittu muistilapussa” ei kelvannut. “Heksadesimaaliksi määritelty yhdessä hover-tilassa” ei kelvannut. Vaatimus oli: onko päätös tiedostossa muodossa, jonka kehittäjä pystyy toteuttamaan kysymättä?

Päätutkimustulos on, että käsikirjoituksesta puuttuvat saavutettavuuspäätökset paljon useammin kuin ne sisältyvät siihen. Kohdistustilan suunnittelu esiintyi noin 40 %:ssa interaktiivisista komponenteista koko aineistossa. Alt-tekstimerkinnät esiintyivät noin 22 %:ssa kuvista, jotka niitä tarvitsivat. Lukemisjärjestys oli eksplisiittisesti dokumentoitu 16 %:ssa tiedostoista. Liikeasetusten käsittely mainittiin 10 %:ssa. Tummaväriteeman kontrasti — 31:lle tiedostolle, jotka toimittivat molemmat teemat — oli määritelty 30 %:ssa komponenteista. Aukko ei ole missään yksittäisessä ominaisuudessa. Se on kaikissa viidessä, ja kehittäjä jää sulkemaan sen yksi harkintapäätös kerrallaan.

50
auditoitua tiedostoa 28 tuotantotiimiltä (toukokuu 2026)
28
erillistä tiimiä, anonymisoituna, viideltä sektorilta
5
saavutettavuusominaisuutta pisteytetty per tiedosto, per komponentti
noin 1 800
interaktiivista komponenttia käsitelty koko aineistossa
Mitä “dokumentoitu” tarkoittaa tässä auditoinnissa

Käytimme kehittäjä-lukee-ja-toteuttaa-vaatimusta. Kohdistustila lasketaan dokumentoiduksi, jos tiedosto näyttää visuaalisen spesifikaation — ääriviivan väri, leveys, siirtymä, kontrasti kohdistetun elementin taustaa vasten — muodossa, jonka kehittäjä voi kartoittaa CSS-tokeniksi. Lähellä oleva Slack-viesti, jossa lukee “käytä brändin sinistä”, ei kelpaa, koska Slack-viestit eivät selviä käsikirjoituksesta. Tiedoston on kannettava päätös yksinään.

”Käsikirjoitus ei epäonnistu siksi, etteivät suunnittelijat välitä saavutettavuudesta. Se epäonnistuu, koska tiedostoformaatti kohtelee saavutettavuutta kommenttimerkintänä, kun sen pitäisi olla jokaisen komponentin ensisijainen ominaisuus.”

— disabilityworld.org-tekniikkatiimi, auditoinnin muistiinpanot

2. Kohdistustilan suunnittelu: 60 %:n aukko

Aineiston noin 1 800 interaktiivisesta komponentista — painikkeista, linkeistä, syöttökentistä, valintaruuduista, kytkimistä, välilehdistä, yhdistelmälaatikoista, valikkokohdista, korttipohjaisista painikkeista, kaikesta, mitä näppäimistön käyttäjä voi saavuttaa — noin 40 % toimitti suunnitellun kohdistustilan. Loput 60 % toimittivat oletustilan, aktiivisen tilan ja hover-tilan, ja sitten pysähtyivät. Kehittäjä, joka rakentaa komponentin, valitsee kohdistuksen ääriviivan toteutushetkellä — yleensä kopioimalla selaimen oletuksen — yleensä tarkistamatta, onko oletuksella 3:1 kontrasti komponentin pintaa vasten sekä vaaleassa että tummassa teemassa, jotka tiedosto toimittaa.

Miltä “ei kohdistustilan suunnittelua” näyttää käytännössä? Se näyttää painike-komponentilta, jossa on kolme varianttia kankaalla — lepotila, hover, painettu — ilman neljättä varianttia. Se näyttää syöttökentältä, jossa on tyylitelty reunus eikä toista reunustyyliä kohdistettuun tilaan. Se näyttää valintaruutu-primitiiviltä, jossa on kohdistusrengas vain lepotilavariantissa, ja kehittäjälle jätetään arvattavaksi, pitäisikö sama rengas esiintyä valitussa tai epämääräisessä tilassa. Kuvio toistuu komponenteista toisiin, tiimistä tiimiin, sektorista sektoriin. Se on aineiston suurin saavutettavuusaukko ja helpoin suunnitella sisälle.

Tiimeillä, jotka suunnittelivat kohdistustilat hyvin, oli toinen kahdesta asiasta. Ensimmäinen oli eksplisiittinen design-system-sääntö: jokaisen interaktiivisen komponentin on toimitettava variantti, jonka nimi alkaa focus-:lla, eikä komponenttia julkaista kirjastoon ennen kuin variantti on olemassa. Toinen oli Figma-komponentin ominaisuus nimeltä state, jossa focus, focus-visible ja focus-within ovat lueteltuja arvoja, joten tiedoston komponenttiselain tuo puuttuvat variantit visuaalisesti esiin. Tiimeillä, joilla ei ollut kumpaakaan rakennetta, kohdistustila jäi kehittäjälle noin yhdeksän kertaa kymmenestä.

60 %
interaktiivisista komponenteista toimitettiin ilman kohdistustilan suunnittelua
noin 720
komponenttia läpäisi kohdistustilavaatimuksen koko aineistossa
2
rakennetta, jotka sulkivat aukon: tila-variantin nimeäminen tai komponentin ominaisuusenumerointi
12 / 50
tiedostoa ei käyttänyt kumpaakaan rakennetta eikä näyttänyt kohdistustiloja lainkaan
Figma-komponentti kohdistustilan kanssa vs ilman
Kanssa — neljä nimettyä varianttia, kohdistusspesifikaatio on tiedostossa

Painike-komponentti, neljä varianttia: state=default, state=hover, state=pressed, state=focus-visible. Focus-visible-variantti näyttää 2 px ääriviivan, 2 px siirtymän, väri-tokenin —focus-ring (joka itsessään on kartoitettu heksakoodiksi, joka läpäisee 3:1 painikkeen pintaa vasten molemmissa teemoissa). Kehittäjä lukee tarkastuspaneelin ja kopioi token-viittauksen; mitään ei tarvitse keksiä.

Ilman — kolme varianttia, kohdistus jätetty kehittäjälle

Sama painike-komponentti, kolme varianttia: default, hover, pressed. Ei focus-varianttia kankaalla. Suunnittelijan muistilappu sanoo “käytä järjestelmän kohdistusrengasta.” Kehittäjä etsii design-system-kirjastosta, löytää kaksi kohdistusrengas-ehdokasta (yksi painikkeista, yksi syöttökentistä, hieman eri leveyksiä), valitsee toisen, toimittaa sen, ja laadunvarmistusajo kolme viikkoa myöhemmin liputtaa sen, koska valittu rengas alittaa 3:1 poistetun mutta edelleen kohdistettavissa olevan toissijaisen painikkeen pinnalla.

Selaimen oletuksen ansa

Kun kohdistustila ei ole tiedostossa, kehittäjät toimittavat usein selaimen oletuksen — ja selaimen oletuksen ohittaa globaali *:focus { outline: none } useimmissa CSS-nollauksissa, jonka sama kehittäjä lisäsi kuusi kuukautta aiemmin eri tarkistuskommentin vuoksi. Tuloksena on komponentti, joka näyttää hyvältä Figma-esikatselmassa, näyttää hyvältä kehitysympäristössä nollaus poistettuna, ja toimitetaan ilman näkyvää kohdistusilmaisinta.


3. Alt-tekstimerkinnät: lähes tyhjiä

Aineiston tiedostoista, jotka sisälsivät sisältökuvia — tuotekuvia, hero-illustraatioita, kuvake-painikkeita, infograafikuvia — 78 %:lla ei ollut alt-tekstimerkintöjä kuvakerrostumilla. Kuva oli sijoitettu, mitoitettu ja tyylitelty; tekstivastine, jonka kehittäjän odotettiin asettavan renderöityyn <img>-elementtiin, ei ollut tiedostossa. Kahdeksalla 50:stä tiedostosta oli alt-teksti joissain kuvissa muttei kaikissa — yleensä hero-illustraatio oli merkitty ja sisältökuvat olivat tyhjiä. Kolmella tiedostolla oli alt-teksti kaikissa kuvissa. Kehittäjän odotettiin 47:ssä tiedostossa 50:stä keksivän alt-teksti itse — ja käytännössä se usein periytyi tiedostonimestä, kuvatekstistä tai merkkijonosta, joka sopi visuaaliseen rytmiin.

Aukko on rakenteellinen Figma:n kuvaprimiitiivissä. Kuvatäytöllä tai kuvakerrostumalla ei ole natiivista “alt”-ominaisuutta; alt-teksti täytyy kuljettaa kerrostuman nimenä, kommenttina, muistilapuna, erillisenä spesifikaatioasiakirjana tai liitännäisen lisäämänä kenttänä. Mikään näistä ei kulje tarkastuspaneelin kautta oletuksena, joten tiedoston tarkastusnäkymässä lukeva kehittäjä ei näe alt-tekstiä vaikka suunnittelija olisi kirjoittanut sen muualle. Tiimit, jotka sulkivat aukon johdonmukaisesti, käyttivät yhtä kolmesta kiertoratkaisusta: liitännäisenhallinnoidut alt-tekstikentät jokaisessa kuvavariantissa, dokumentoitu käytäntö, jonka mukaan kerrostuman nimi on alt-teksti, tai erillinen alt-tekstilaskentataulukko kuvanimiä avaimina käyttäen, joka toimitettiin tiedoston rinnalla.

Kuvake-painikkeet olivat alatason epäonnistuminen tässä vikakuviossa. 41:ssä 50:stä tiedostosta kuvake-painikkeilla — haku-suurennuslasilla, hampurilaisvalikolla, sulku-X:llä, jako-nuolella — ei ollut saavutettavaa nimeämismerkintää, jolloin kehittäjälle jäi kirjoittaa aria-label=“Haku” visuaalisesta kontekstista ilman vahvistusta, että “Haku” oli oikea sana brändin äänessä (oliko se “Etsi”? “Selaa”? ei mitään, koska painike avaa muualla nimetyn paneelin?). Kuvakkeiden nimeäminen on täsmälleen sellainen mikrotekstin päätös, josta hyötyisi suunnittelijan kynä, ja täsmälleen se, jonka käsikirjoitus menettää.

78 %
tiedostoista ei sisältänyt alt-tekstimerkintöjä sisältökuvissa
41 / 50
tiedostoa jätti kuvake-painikkeiden saavutettavat nimet kehittäjälle
3 / 50
tiedostoa merkitsi alt-tekstin jokaiseen kuvaan alusta loppuun
3
kiertoratkaisua sulkevat tiimit käyttivät: liitännäiskenttä, kerrostuman nimi -käytäntö, laskentataulukko
Koristelun vs informaation erottaminen on suunnittelupäätös

Jokainen kuva on joko koristeellinen (alt pitää olla tyhjä, ruudunlukuohjelma ohittaa sen) tai informatiivinen (alt kantaa visuaalin välittämän tiedon). Tämä valinta on sisältöpäätös, ja se kuuluu suunnittelijalle tai kirjoittajalle, ei kehittäjälle, joka arvailee puoliyössä. Tiedosto, joka ei sano mitään kuvien koristeellisuudesta, toimittaa joko liikaa alt-tekstiä (jokainen kuva kuvataan seikkaperäisesti, myös puhdas koriste) tai liian vähän (hero-illustraatio on kuvattu, jokaisessa sisältökuvassa on alt="", koska kehittäjä pelasi varman päälle).


4. Lukemisjärjestys, liike ja tummaväriteeman kontrasti

Kolmella muulla ominaisuudella oli erilaiset epäonnistumismuodot. Lukemisjärjestys — järjestys, jossa ruudunlukuohjelma kertoo sivun, joka modernien responsiivisten layouttien tapauksessa ei enää välttämättä vastaa visuaalista ylhäältä-alas-järjestystä — oli dokumentoitu 16 %:ssa tiedostoista. Dokumentaatio, jos sellainen oli, oli yleensä numeroitu peite kankaalla (1, 2, 3 …) lisättynä liitännäisellä. Muut 84 % jättivät kehittäjälle kartoittaa lukemisjärjestyksen sattumalta kirjoittamastaan DOM-järjestyksestä, joka CSS Grid -layoutissa eksplisiittisellä rivi-ja-sarake-sijoittelulla voi poiketa visuaalisesta layoutista kokonaisen sarakkeen verran.

Liikeasetusten käsittely pärjäsi heikoiten. Kymmenessä prosentissa tiedostoista mainittiin prefers-reduced-motion lainkaan. Loput 90 % määrittelivät animaatioita ja siirtymiä — modaalin sisääntuloja, akkordeonin laajennuksia, väliaikaisten ilmoitusten liukuksia, sivujen siirtymiä — ilman, että määrittelivät, mitä saman komponentin pitäisi tehdä, kun käyttäjä on ottanut käyttöön vähennetyn liikkeen. Kehittäjä joko rakensi vähennetyn liikkeen tapauksen toteutushetkellä (usein ilman visuaalista viitettä) tai toimitti saman animaation kaikille, mikä on oletusarvo ja joka rikkoo 2.3.3 (Animation from Interactions) käyttäjille, jotka asettivat kyseisen asetuksen.

Tummaväriteeman kontrasti oli määritelty 30 %:lle komponenteista tiedostoissa, jotka toimittivat molemmat teemat. Loput 70 % määrittelivät vaalean teeman kontrastin — yleensä Stark- tai kontrastin tarkistus -merkinnällä tiedostossa — ja julkaisivat sitten tumman teeman heksadesimaalien peilatulla paletilla, jolloin kehittäjälle jäi tarkistaa, läpäiseekö käännetty pari edelleen 4,5:1 leipätekstillä ja 3:1 käyttöliittymäkomponenteilla. Noin viidenneksessä 31:stä kaksiteemaisesta tiedostosta ainakin yksi komponentti alitti kontrastitason tummassa teemassa, koska tumma pinta ja tumma teksti oli viritety vaalean teeman kontrastimatemaatikkaan eikä tumman teeman.

Alla oleva matriisi tiivistää viisi aukkoa

Matriisi seuraa kunkin ominaisuuden “täydentymisastetta” koko aineistossa — osuutta tiedostoista, joissa ominaisuus oli dokumentoitu kehittäjä-lukee-ja-toteuttaa-vaatimukseen. Sarakkeet jakavat osuuden sen mukaan, oliko tiedosto tiimiltä, jolla on erillinen design-system-käytäntö, vai tuotetasolta komponentteja itse rakentavilta tiimeiltä; kahden sarakkeen ero on järjestelmä-vs-ei-järjestelmä -delta.

SaavutettavuusominaisuusKaikki 50 tiedostoaDesign-system-tiimit (12)Tuotantotiimit (38)Järjestelmä-vs-tuotanto-delta
Kohdistustilan suunnittelu (interaktiiviset komponentit)40 %75 %29 %+46 pp
Alt-tekstimerkinnät (sisältökuvat)22 %50 %13 %+37 pp
Lukemisjärjestys (kankaan taso)16 %42 %8 %+34 pp
Liikeasetukset (animoidut elementit)10 %33 %3 %+30 pp
Tummaväriteeman kontrasti (vain kaksiteemaiset tiedostot, n=31)30 %55 %19 %+36 pp

”Design-system-tiimit dokumentoivat saavutettavuuspäätökset noin kaksinkertaisella tahdilla verrattuna tuotantotiimeihin — mutta järjestelmätiimitkään eivät läpäise vaatimuksia kuin yhdessä ominaisuudessa viidestä useimpina kertoina.”

— disabilityworld.org-tekniikkatiimi, auditoinnin muistiinpanot

5. Stark ja Able: epätasainen käyttöönotto

Kaksi liitännäistä, jotka esiintyvät aineistossa useimmin, ovat Stark ja Able. Molemmat ovat kypsymättömiä, molempia pidetään arvossa, ja molemmat toimittavat ominaisuuksia, jotka sulkevat useita edellä dokumentoituja aukkoja. Stark lisää kontrastin tarkistimen, kohdistusjärjestyksen peittokuvan, vähennetyn liikkeen esikatselun ja alt-tekstimerkintäkentän kuvakerrostumilla. Able lisää värikontrasti-inspektoijan, näkösimulaatioperittokuvan ja kosketusmaalin tarkistimen. Kumpi tahansa liitännäinen, johdonmukaisesti tiedostossa käytettynä, nostaisi sen tiedoston pois aineiston alimmasta neljänneksestä.

Johdonmukaisesti käytettynä on operatiivinen lause. 50:stä tiedostosta Stark oli asennettu ja näkyvästi käytetty 18:ssa ja Able 11:ssä. Tiedostoissa, joissa liitännäistä käytettiin, sitä käytettiin yleensä hero-komponentissa ja ensisijaisessa CTA:ssa — komponenteissa, jotka todennäköisimmin olivat kankaalla, kun suunnittelija avasi liitännäisen — ja muualla vain satunnaisesti. Kuusi tiedostoa käytti Starkia globaaliin läpikäyntiin; yksi käytti Ablea globaaliin läpikäyntiin. Kuvio on: liitännäiset ovat olemassa, suunnittelijat tietävät niistä, ne vedetään esiin pikatarkistuksia varten, ja sitten pikatarkistus pysähtyy komponentteihin, joita suunnittelija sattui katsomaan liitännäisen ollessa auki.

Kaksi tiimiä, jotka sulkivat auditoinnin liitännäisten käytön osalta, tekivät yhden asian toisin: he ajoi liitännäisen auditoiniominaisuuden jokaisella tiedoston sivulla julkaisuportin askeleena ennen kuin tiedosto jaettiin suunnittelutiimille. Auditointi ajettiin tiedostossa, tuotti raportin, ja raportin piti olla tyhjä (tai sen poikkeukset dokumentoitu) ennen kuin tiedosto siirtyi “suunnittelussa” -tilasta “valmis kehitykseen” -tilaan. Tämä on liitännäinen-työnkulkuna eikä liitännäinen-pikatarkistuksena, ja se on ero 80 %:n kattavuuden ja 20 %:n kattavuuden välillä meidän otoksessamme.

Stark
Stark Lab · kontrasti, kohdistusjärjestys, liike, alt
noin 1,4 M asennusta Figma + Sketch + Adobe XD:ssä (toukokuu 2026)
Käyttöönotto aineistossa18 / 50 tiedostoa (36 %)
Käytetty työnkulkuna
Aukon kattavuus käytettynä päästä päähän4/5 ominaisuudesta suljettavissa (kohdistus, kontrasti, alt, liike)
Able
Able · kontrasti, näkösimulaatio, kosketusmaalit
noin 320 000 asennusta Figma-yhteisössä (toukokuu 2026)
Käyttöönotto aineistossa11 / 50 tiedostoa (22 %)
Käytetty työnkulkuna
Aukon kattavuus käytettynä päästä päähän2/5 ominaisuudesta suljettavissa (kontrasti, tummaväriteeman kontrasti)
Liitännäiset ovat välttämättömiä, mutta eivät riittäviä

Liitännäinen nostaa lattian: kontrastin tarkistin tarttuu ilmeisiin 2,1:1-virheisiin, alt-tekstikenttä antaa suunnittelijalle paikan kirjoittaa. Mikään tästä ei auta, jos liitännäinen ajetaan kolmessa komponentissa eikä jäljellä olevassa 27:ssä. Korjaus on liitännäisen sijoittaminen työnkulkuun — julkaisuportin askel, ennakkokäsikirjoituksen tarkistuslista, Figma-haara, jota ei voi yhdistää ilman tyhjää liitännäisraporttia — eikä suunnittelijan harkintaan sillä hetkellä, kun hän muistaa liitännäisen olemassaolosta.


6. Käsikirjoituksen tarkistuslista ja token-sopimus

Auditointi tuottaa tarkistuslistan ja sopimuksen. Tarkistuslista on se, mitä suunnittelijan pitäisi pystyä rastittamaan ennen kuin tiedosto jaetaan kehitykselle. Sopimus on muoto, jossa design-tokeneja kuljetetaan tiedoston rinnalla, jotta kehittäjä kartoittaa Figma-muuttujat CSS-mukautettuihin ominaisuuksiin keksimättä välittäviä arvoja. Molemmat ovat tarkoituksella lyhyitä: jokainen tarkistuslistan kohta on ominaisuus, jota auditointi mittasi, ja jokainen sopimuksen token on arvo, joka sulki aukon aineistossa.

1

Jokainen interaktiivinen komponentti toimittaa state=focus-visible -variantin.

Ei “järjestelmässä on kohdistusrengas.” Variantti nimeltä focus-visible komponentissa itsessään, ääriviivan väri, leveys ja siirtymä sidottuna kohdistusrengas-tokeniin. Variantti on se, jonka kehittäjä kopioi toteutukseen; ilman sitä kehittäjä arvailee.

2

Jokaisessa sisältökuvassa on alt-teksti liitännäisenhallinnoidussa kentässä tai dokumentoidussa kerrostuman nimi -käytännössä.

Valitse yksi sijainti ja pakota se. Starkin alt-tekstikenttä, kerrostuman nimi alt-tekstinä tai sidecar-laskentataulukko — mikä tahansa kolmesta toimii, mutta vain jos jokainen kuva tiedostossa käyttää samaa. Kuvake-painikkeet saavat myös saavutettavan nimeämismerkinnän samassa sijainnissa, tarkalla merkkijonolla, jonka kehittäjä laittaa aria-label:iin.

3

Lukemisjärjestys on dokumentoitu kaikilla sivuilla, joilla DOM-järjestys poikkeaa visuaalisesta järjestyksestä.

Yksinkertaisin dokumentaatio on numeroitu peite lisättynä liitännäisellä (Starkissa on sellainen, useissa yhteisön liitännäisissä myös). Sivuilla, joiden järjestys on triviaalisesti ylhäältä-alas-vasemmalta-oikealle, peittokuvan voi jättää pois; missä tahansa CSS Grid -sijoittelua, nimettyjä alueita tai absoluuttista sijoittelua käyttävillä sivuilla peittokuva on pakollinen.

4

Jokaisella animoidulla tai siirtyvällä elementillä on vähennetyn liikkeen variantti kankaalla.

Toinen kehys, toinen variantti tai dokumentoitu “ei animaatiota” -versio. Kehittäjän ei pidä keksiä vähennetyn liikkeen tapausta — suunnittelijan pitää määritellä, hiipuuko modaali liukumisen sijaan, ilmestyykö väliaikainen ilmoitus välittömästi liukumisen sijaan, jätetäänkö sivun siirtymä kokonaan pois.

5

Kaksiteemaisissa tiedostoissa kontrasti tarkistetaan erikseen tummassa teemassa, ei johdettuna vaaleasta teemasta.

Tummaväriteeman kontrastimatemaatikka on oma ongelmansa; paletin kääntäminen ei riitä. Aja Stark tai Able jokaiselle komponentille tummassa tilassa, ei vain vaaleassa. Dokumentoi kontrastisuhde variantin muistiinpanoihin, jotta kehittäjä voi vahvistaa toteutuksen vastaavan sitä.

6

Tiedosto toimitetaan token-sopimuksen kanssa: tasainen lista kaikista Figma-muuttujista kartoitettuna CSS-mukautettuihin ominaisuuksiin.

Sopimus on silta tiedoston ja koodipohjauksen välillä. Tyypillinen sopimus näyttää alla olevan taulukon kaltaiselta: jokainen rivi nimeää Figma-muuttujan, CSS-mukautetun ominaisuuden, johon kehittäjän pitäisi sitoa se, arvon vaaleassa teemassa, arvon tummassa teemassa ja WCAG-kriteerin, johon token osallistuu.

Figma-muuttujaCSS-mukautettu ominaisuusVaalea arvoTumma arvoWCAG-yhteydet
color/focus-ring—focus-ring#0B57D0#A8C7FA2.4.7, 1.4.11
color/text/body—text-body#1F1F1F#E3E3E31.4.3 (4,5:1 pinnalla)
color/surface/raised—surface-raised#FFFFFF#1F1F1F1.4.11 (3:1 naapuria vasten)
size/touch-target/min—touch-target-min44px44px2.5.5, 2.5.8
motion/duration/standard—motion-standard200ms200ms2.3.3 (ohita vähennetyn liikkeen tapauksessa)
motion/duration/reduced—motion-reduced0ms0ms2.3.3
Miksi sopimus on vipuvarsi

Kun sopimus on olemassa, kehittäjän työ on mekaanista: sido CSS-mukautettu ominaisuus Figma-muuttujaan, toimita toteutus, auditoi vertaamalla renderöityjä arvoja sopimukseen. Ilman sopimusta jokainen sidonta on harkintapäätös, ja harkintapäätökset kumuloituvat 60 %:n aukoksi. Sopimus on se yksittäinen artefakti, joka siirtää saavutettavuuden “kehittäjä on vastuussa käsikirjoitushetkellä” -tilasta “järjestelmä on vastuussa suunnitteluhetkellä” -tilaan.


Johtopäätös: tiedosto on sopimus

50 tiedoston auditointi päättyy yksinkertaiseen havaintoon. Käsikirjoitus epäonnistuu saavutettavuudessa ei siksi, että suunnittelijat eivät välitä, eikä siksi, että kehittäjät eivät välitä, vaan siksi, että tiedosto — Figma-tiedosto, se yksittäinen artefakti, jota kaikki osapuolet lukevat — ei kanna saavutettavuuspäätöksiä ensisijaisina ominaisuuksina. Kohdistustilat, alt-tekstit, lukemisjärjestys, liikeasetukset, tummaväriteeman kontrasti: jokainen on suunnittelupäätös, jokainen kuuluu tiedostoon, jokainen on tällä hetkellä muualla. Muistilapussa, Slack-viestissä, erillisessä laskentataulukossa, kehittäjän päässä perjantai-iltapäivänä kello 16.

Korjaus ei ole sankarillinen suunnittelija tai sankarillinen kehittäjä. Se on työnkulun muutos tiimitasolla: jokainen interaktiivinen komponentti toimittaa focus-variantin, jokaisessa kuvassa on alt-teksti yhdessä liitännäisenhallinnoidussa sijainnissa, lukemisjärjestys on peitetty ei-triviaalilla sivulla, animaatiot määrittelevät vähennetyn liikkeen vastineensa, tummaväriteeman kontrasti tarkistetaan erikseen vaaleasta, ja tiedosto toimitetaan token-sopimuksen kanssa, joka nimeää jokaisen muuttujan, johon toteutus sitoutuu. Mikään näistä vaiheista ei ole uusi, mikään ei vaadi työkalua, jota meillä ei jo ole, ja mikä tahansa tiimi, joka omaksuu ne julkaisuportin askeleina, sulkee suurimman osan mittaamistamme aukoista yhdessä julkaisukierroksessa.

Syvempi havainto on, että design-system-tiimit tekevät tämän jo noin kaksinkertaisella tahdilla verrattuna tuotantotiimeihin. Nosto, jonka design-system-tiimit tarjoavat, on täsmälleen se nosto, jonka järjestelmän rakentamisen kurinalaisuus pakottaa: komponentit nimetään, ominaisuudet luetellaan, variantit ovat näkyvissä, tokenit ovat eksplisiittisiä. Saman kurinalaisuuden tuominen tuotetason tiedostoihin — edes ilman täydellistä design-järjestelmää alla — sulkee suurimman osan käsikirjoitusaukosta. Se ei ole enää työkaluongelma. Se on työnkulun valinta.

”Tiedoston pitäisi saapua saavutettavuuspäätökset jo tehtyinä. Mikä tahansa muu jättää kehittäjälle niiden keksimisen pahimmalla mahdollisella hetkellä, vähimmällä mahdollisella kontekstilla, tiukimmalla mahdollisella aikataululla.”

— disabilityworld.org-tekniikkatiimi, päätösmuistiinpano