Formelement som kryssrutor och radioknappar ser olika ut beroende på användarens webbläsare och operativsystem. Av denna anledning har designers och utvecklare länge stylat sina egna kryssrutor och radioknappar, syftar till konsistens oavsett webbläsare eller OS.
Det här är helt bra, men samtidigt måste vi se till att våra kryssrutor och radioknappar är tillgängliga för hjälpteknik (AT) och tangentbordsbrukare. I den här handledningen ska jag förklara vad det betyder och hur vi kan göra saker på rätt sätt på några olika sätt.
Denna handledning är en del av Web Accessibility: den fullständiga lärarhandboken, där vi har samlat in en rad tutorials, artiklar, kurser och e-böcker, för att hjälpa dig att förstå webbåtkomst från början.
Låt oss börja med att titta på hur din webbläsare gör kryssrutor som standard. Som sagt kommer det du ser här att bero på din webbläsare och operativsystem.
Du kommer märka att du kan använda musen för att slå av och på kryssrutorna, plus du kan använda tangentbordet (hoppa genom att använda FLIK och växla med RYMDEN, men det kan ändras beroende på dina inställningar).
Tiden att bygga vår egen. Vi ska visuellt "gömma" standardrutorna, placera anpassade versioner överst. Det första vi behöver titta på är markeringen.
Markera för en enda kryssruta ser så här ut:
Vi använder en Detta döljer våra kryssrutor visuellt, så att vi kan gå vidare och skapa vår egen. Det är viktigt att vi inte gömmer det med hjälp av Du märker det, även om vi gömmer det, ger vi kryssrutan en höjd och bredd på 40px. Detta ger oss ett tydligt och funktionellt målområde under vår tillverkade kryssruta. Omslaget Vi saknar fortfarande en visuell kryssruta. För att lösa detta använder vi först a Jag har använt en 2px solid gräns och ärftlig färg, men du kan använda en annan kantfärg om du vill. Observera att vi placerar och storlekar detta på samma sätt som vår genomskinliga kryssruta. Med några extra marginaler för att etiketterna ger oss lite avstånd, så ser det här som våra kryssrutor ser ut på denna punkt: Nästa steg är att använda Vi skapar kontrollen med hjälp av ett element som vi ger en fyra pixelgräns för nederst och höger. Sedan roterar vi 45 grader: bingo! En anpassad check. Du kan också använda olika kantfärger för att matcha din design. På detta stadium kan du inte se någonting; vi döljer fortfarande kontrollen visuellt med De Med det gjort är det här vad vi har: Notera: Det finns en annan sak som vi behöver inkludera i detta, och det är "fokusstilar". Vi diskuterar dem i nästa demo. Låt oss ta saker på en nivå. I stället för ett pseudoelement kunde vi använda en anpassad SVG-ikon för vår kontroll. För att göra det skulle vi placera SVG inuti etiketten: I de flesta fall är SVG bara dekorativt, så Vi måste ange ett par stilar till SVG-elementet så att det placeras och storlek korrekt. Vi kan också använda Inspiration för mina exempel i kryssrutan stiler togs från de som finns i GOV.UKs designsystem för formelement (en lysande resurs, ta en titt). Fokusstilarna är lika viktiga som i något fokusabelt element: Vi använder en Windows High Contrast Mode tar bort boxskuggningsregler, så därför måste vi också lägga till transparenta konturstilar: Den här transparenta konturen visas som en extra kant i hög kontrastläge. Förutom att använda SVG-kod inline kan vi också återskapa en version av de första anpassade kryssrutorna som vi har gjort, med SVG som bakgrund för pseudoelementet istället för att bygga vår egen "check" med gränser. Vi har täckt alla tekniker du behöver veta för detta, så här är demo för dig att dissekera: Nästan alla de stilar och logik vi har använt för våra kryssrutor hittills är desamma för radioknappar. Ta en titt på demo och se själv (för att navigera med tangentbordet, använd Piltangenter): Den enda uppenbara skillnaden är att vi använder Testning är en viktig del av processen när du tinkar med inbyggda HTML-element. Mina tester är långt ifrån perfekt men det här var hur jag gjorde saker för denna handledning: Förmodligen saknar den här listan röstigenkänningssoftware som Dragon, eller byter enheter. Men i alla mina tester uppträdde de anpassade kryssrutorna och radioknapparna på samma sätt som inbyggda element. Förhoppningsvis har denna handledning gett dig en förståelse för hur du skapar anpassade stilar för kryssrutor och radioknappar, samtidigt som du bygger för tillgänglighet. Jag rekommenderar starkt att lära mer om anpassade formulärelement från dessa resurser: med hjälp av CSS-regeln
opacitet: 0
..wrapper position: relative; .wrapper input height: 40px; vänster: 0; opacitet: 0; position: absolut; topp: 0; bredd: 40px;
display: none
eftersom det skulle gömma kryssrutan från både användare av webbläsare och assistentteknik (AT), och vi skulle också förlora tangentbordets interaktioner.position: relativ
CSS-regeln. Detta hjälper oss att placera kryssrutan och etiketten ::innan
och ::efter
pseudo-element som använder position: absolut
. Lägg till visuell kryssruta med pseudoelement
etikett :: innan
element för att lägga till en kant:.wrapper inmatning + etikett :: före border: 2px solid; innehåll: ""; höjd: 40px; vänster: 0; position: absolut; topp: 0; bredd: 40px;
etikett :: efter
pseudoelement för att ställa in "checken":.wrapper-inmatning + etikett :: efter innehåll: ""; gräns: 4px solid; gränsen till vänster: 0; border-top: 0; höjd: 20px; vänster: 14px; opacitet: 0; position: absolut; topp: 6px; transformera: rotera (45deg); övergång: ogenomskinlighet 0.2s lätt-i-ut; bredd: 12px;
opacitet: 0
. Låt oss åtgärda det! Avvisa anpassad kontroll med
:kontrollerade
Pseudo Selector:kontrollerade
pseudovelectoren riktar sig till en kryssruta när den växlas till "on" -läget. Vi kan använda detta för att ändra opaciteten hos vår anpassade check:.wrapper-inmatning: kontrollerad + etikett :: efter opacitet: 1;
2. Anpassad kryssruta med Inline SVG
aria dolda = "true"
gömmer det från AT-enheter.Lägg till SVG-stilar
fylla
egenskap för att ändra dess färg (blå
I detta fall):.wrapper inmatning + etikett svg border: 0; fyll: blå; höjd: 20px; bredd: 20px; opacitet: 0; position: absolut; vänster: 10px; topp: 10px; övergång: ogenomskinlighet 0.2s lätt-i-ut;
Kom ihåg fokuseringsstilar
.wrapper input: fokus + label :: före box-shadow: 0 0 0 3px # ffbf47;
box-shadow
för fokus stilar eftersom det kommer att respektera avrundade gränser, som vi också kommer att använda för radioknappar senare Lägg till fokus stilar för Windows "High Contrast Mode"
.wrapper input: fokus + label :: före box-shadow: 0 0 0 3px # ffbf47; kontur: 3px solid transparent; / * För högt kontrastläge i Windows. * /
3. SVG som Pseudo Element Bakgrund
4. Anpassade radioknappstilar
border-radius
och styling the :kontrollerade
Ange lite annorlunda. Du kan säkert också använda en SVG-ikon i det här fallet, jag lämnar det som läxor för dig! Visa oss dina resultat i kommentarfältet. 5. Test för tillgänglighet
Slutsats och referenser