Accessibility
The following summary has been stolen (with very minor formatting amendments) from the Introduction to Web Accessibility page of the W3C Web Accessibility Initiative site:
Web accessibility means that websites, tools, and technologies are designed and developed so that people with disabilities can use them. More specifically, people can: perceive, understand, navigate, and interact with the Web; and contribute to the Web.
Web accessibility encompasses all disabilities that affect access to the Web, including: auditory; cognitive; neurological; physical; speech; visual; etc.
Web accessibility also benefits people without disabilities, for example:
- People using mobile phones, smart watches, smart TVs, and other devices with small screens, different input modes, etc.
- Older people with changing abilities due to ageing.
- People with "temporary disabilities" such as a broken arm or lost glasses.
- People with "situational limitations" such as in bright sunlight or in an environment where they cannot listen to audio.
- People using a slow Internet connection, or who have limited or expensive bandwidth.
The purpose of this page in the SC Developer Runbook is to look at (some of) the best practice recommendations for creating accessible websites, in particular around how <canvas> elements in the web page can weaken the chances of meeting those recommendations.
This page also considers the functionality repo-devs have built into Scrawl-canvas to help mitigate those weaknesses, and what further work can be done.
tl;dr: SC does not solve the (many!) accessibility issues that
<canvas>elements introduce into a web page; it only tries to make the work of solving those issues as easy as possible for designers and dev-users. A poorly conceived, designed and coded SC<canvas>display IS NOT an accessible<canvas>display!
Key documentation links:
Current guidelines documentation links:
- Web Content Accessibility Guidelines (WCAG) v2.1
- Web Content Accessibility Guidelines (WCAG) v2.2
- WCAG 2 Overview
- Links to all WCAG 2.2 "Understanding" Docs – "Understanding" documents provide detailed explanations for WCAG guidelines and success criteria. They are informative, not part of the "normative" WCAG standard.
- Techniques for WCAG 2.2 – "Techniques" are examples of ways to meet Web Content Accessibility Guidelines (WCAG). They are not required to meet WCAG.
For the future – WCAG 3 drafts links:
Accessibility legislation links:
- EU – European accessibility act
- UK – Meet the requirements of equality and accessibility regulations
- UK – Understanding WCAG 2.2
- USA – Guidance on Web Accessibility and the ADA
- USA – Fact Sheet: New Rule on the Accessibility of Web Content and Mobile Apps
Impact of WCAG requirements on <canvas> elements
No formal guidelines exist for making the HTML5 <canvas> element accessible. Yet the need to make canvas-based displays, animations and applications more accessible is widely accepted:
- Paul J. Adam's essay on
<canvas>accessibility has been around for many years, and still remains accurate and relevant. - The W3C community had lengthy discussions around
<canvas>accessibility while developing the specification. - Those discussions still continue, though intermittently. For example, these issues currently open on the w3c/aria Github.
- Research into
<canvas>element accessibility seems limited, if the results of this Google search can be trusted.
(Note that online searching for standards, essays and investigations around canvas accessibility is made harder by the existence of the Canvas LMS SAAS offering, used widely by schools and colleges. More recently OpenAI launched a product called Canvas which doesn't help the search for relevant information. Not forgetting, of course, the Canva design studio thing.)
Scrawl-canvas is a JavaScript library for working with the HTML5 <canvas> element. The library:
- Defines a set of factory functions for creating a wide range of graphic artefacts and effects, which can be drawn on a canvas.
- Includes an easy-to-use protocol for positioning, displaying and animating artefacts and effects across the canvas.
- Adds functionality to make
<canvas>elements responsive, adapting their size to their surrounding environment while remaining fully interactive. - Helps make
<canvas>elements more accessible for both keyboard and AT users.
Given that one of the stated aims of the SC library centres on making <canvas> elements more accessible, and accepting the dearth of guidance around how this can be achieved, it necessarily becomes the responsibility of repo-devs to identify those accessibility issues and make best effort to add functionality to the library to help address them.
tl;dr: The following comments on the application of WCAG Requirements with respect to the
<canvas>element are the (opinionated) views of the SC repo-devs, currently unsupported by evidence from researchers, experts and users of accessibility tools and technology. If these opinions are misguided or wrong, please raise an issue in the SC GitHub repository for discussion and action.
Text alternatives for non-text content
Text alternatives are equivalents for non-text content. Examples include:
- Short equivalents for images, including icons, buttons, and graphics
- Description of data represented on charts, diagrams, and illustrations
- Brief descriptions of non-text content such as audio and video files
- Labels for form controls, input, and other user interface components
Text alternatives convey the purpose of an image or function to provide an equivalent user experience. For instance, an appropriate text alternative for a search button would be “search” rather than “magnifying lens”.
Text alternatives can be presented in a variety of ways. For instance, they can be read aloud for people who cannot see the screen and for people with reading difficulties, enlarged to custom text sizes, or displayed on braille devices. Text alternatives serve as labels for controls and functionality to aid keyboard navigation and navigation by voice recognition (speech input). They also act as labels to identify audio, video, and files in other formats, as well as applications that are embedded as part of a website.
1.1.1 (A) – Non-text Content
- A canvas-based display or animation is nothing more than a collection of graphical pixels in the browser viewport. It is, by itself, not accessible. Browsers will often consider
<canvas>elements to be images. <canvas>elements can, with effort, present their display as an animation which is, in some ways, analagous to a<video>element. However there is no browser-based functionality specified for supplying such canvas displays with video-like controls to play or pause the animation.<canvas>elements can, with effort, present their display as an user-interactive diagram which includes controls for the user to manipulate that display. Such graphical controls need to be accessible – including keyboard accessibility.<canvas>elements can, with effort, display charts and maps – which may include interactive functionality. While static charts and maps can be treated as images for accessibility purposes, interactive charts and maps need to be accessible – including keyboard accessibility.- Any significant data used to create a canvas display – for example chart data – should also be supplied in alternative formats which an end-user can access (like a table, or a downloadable CSV file).
- If a canvas display is being used purely for decorative purposes such as a space filler or background then it needs to be marked as such so assistive technologies can ignore it.
- Canvas displays used as backgrounds will need to be checked to make sure the content above them remains legible – for example there remains sufficient contrast between the background canvas display and the text placed over it.
SC and <canvas> element children
The HTML specification for the <canvas> element permits the element to contain mainly phrasing content, though it specifically excludes interactive content except for: <a> and <button> elements; and <input> elements whose type attribute is checkbox, radio, or button.
The HTML markup placed between the <canvas> element's opening and closing tags is known as its fallback content. This is the main approach to making the <canvas> element accessible. Decisions about what markup to include in this fallback content need to be made by the designer and dev-user as they develop the web page.
Designers and dev-users should consider supplying an image of the canvas display as minimal fallback content. Many of the SC test demos include example code for such approaches – for instance see test demo Filters-006.
SC performs significant work when importing a <canvas> element into the SC system, which includes mutating the element's DOM markup and adding SC-specific child elements to its fallback content. This work has been documented in the Canvas artefact notes section of the Artefacts and the DOM page of this Runbook. These changes will not replace or modify any existing fallback content that has been defined for the element, nor do they prevent the dev-user from adding, manipulating or deleting such content after SC completes its import work.
To summarise, SC adds the following markup to the <canvas> element as part of the import functionality:
<canvas
[... other existing attributes]
style=[...SC styling markup string]
title=[...SC title string, default: ""]
role=[...SC role string, default: "img"]
aria-labelledby=`${canvas.id}-ARIA-label`
aria-describedby=`${canvas.id}-ARIA-description`
>
[...Existing fallback content markup]
<nav
id=`${canvas.id}-navigation`
aria-live="polite"
aria-busy=[...Update status boolean]
>
[...SC-generated navigation-related content]
</nav>
<div
id=`${canvas.id}-text-hold`
aria-live="polite"
aria-busy=[...Update status boolean]
>
[...SC-generated graphical text content]
</div>
<div
id=`${canvas.id}-canvas-hold`
aria-hidden="true"
style="display: none;"
>
[...Reserved by SC for various purposes eg: text measurement]
</div>
<div
id=`${canvas.id}-ARIA-label`
aria-live="polite"
>
[...SC-generated label content, default: `${canvas.id} canvas element`]
</div>
<div
id=`${canvas.id}-ARIA-description`
aria-live="polite"
>
[...SC-generated description content, default: ""]
</div>
</canvas>
Canvas label, description and title
<canvas> elements should always be provided with meaningful labels (via aria-label or, preferably, aria-labelledby attributes); consider these to be the canvas equivalent of the <img alt="accessible summary of image"> markup.
Descriptions can add supplementary details about what the canvas does, such as a summary of the data contained in a chart, or keyboard shortcuts for interactive canvas functionality. However a better approach would be to supply such information in the text surrounding the <canvas> element as this allows end-users not using accessible technologies to also see/read the information.
The title attribute is defined in the HTML specification as global, thus available on all HTML elements. However the attribute comes with significant accessibility concerns – the general advice is to avoid using it to convey information to the end-user.
Dev-users can tell SC to add labels, descriptions and titles to a <canvas> element by adding the following attributes to the element's HTML markup:
<canvas
id=[...canvas element's unique id string]
width=[...canvas width]
height=[...canvas height]
data-scrawl-canvas
data-label=[...accessible label string]
data-description=[...accessible description string]
title=[...title string]
>
[...fallback content markup]
</canvas>
Once SC has finished importing the <canvas> element into the SC system, dev-users can change the values of the <div> elements containing the label and description strings using normal SC set() functionality. When the update occurs in the DOM the affected <div> element's aria-busy attribute will be set to true, then set back to false when the update completes. The change will be announced to the end-user politely:
<script>
[...other code]
canvas.set({
label: [...new label string]
description: [...new description string]
});
</script>
WARNING: Dev-users should never attempt to set or update the label and description
<div>elements directly! Nor should these elements be removed from the DOM – do not be tempted to update the<canvas>element's contents using.innerHTML=[...new markup]or similar functionality.
Canvas roles
The role of a <canvas> element can vary depending on how it is being used in the web page.
SC, by default, will assign an imported <canvas> element to the ARIA img role. For the most part this seems to work reasonably well with screen reader technology. This is because while most screen readers will consider the element with role="img" set on it to be like a black box (and not access the individual elements inside it), they are far more likely to just disregard the <canvas> element when they encounter it and process its fallback content instead.
However <canvas> elements are eminently adaptable; dev-users can find many use cases for them. Thus it is important for designers and dev-users to carefully consider the work being done by each canvas display in the web page and adapt the element's role value accordingly:
- Static canvas displays should keep the
imgrole if the display is relevant (but not essential) to understanding the surrounding text. - Static or animated canvas displays that don't contribute to the user's understanding of the surrounding text – for instance background or decorative artwork – should use the ARIA
presentationrole, or its synonymnone. - Chart and graph canvas displays should probably be given the ARIA
figurerole. - Similarly, interactive image displays – such as a carousel or before-after component – may benefit from taking the
figurerole. - If the entire
<canvas>element (not just part of it) is being used as a button, best practice is to wrap it in a<button>(or<input type="button">) element, in which case set its role topresentation. If that is not possible, then the element must take the ARIAbuttonrole and at the same time the element's tabindex attribute should be explicitly set to0. - If the entire
<canvas>element (not just part of it) is being used as a navigation link, best practice is to wrap it in an<a href=[...URL]>element, in which case set its role topresentation. If that is not possible, then the element must take the ARIAlinkrole and at the same time the element's tabindex attribute should be explicitly set to0. - If the entire
<canvas>element (not just part of it) is being used as a visual progress bar, or conveying timer information (for instance a video playback progress bar, or a clock readout) then it might be appropriate to give the element an ARIAprogressbarrole or ARIAtimerrole. - Highly interactive
<canvas>elements need to be given the ARIAapplicationrole – but use this role with care! Theapplicationrole should be reserved for app-like canvas displays such as: spreadsheets; monitoring/analytic consoles; image or video editing studios; design suites; (collaborative) whiteboard experiences; etc.
Dev-users can set a <canvas> element's role attribute in the normal way. While SC includes functionality to update the attribute after the canvas import completes, this is (almost certainly) not best practice:
<canvas
id=[...canvas element's unique id string]
width=[...canvas width]
height=[...canvas height]
data-scrawl-canvas
role=[...ARIA role string]
>
[...fallback content markup]
</canvas
Captions and other alternatives for multimedia
People who cannot hear audio or see video need alternatives. Examples include:
- Text transcripts and captions for audio content, such as recordings of a radio interview
- Audio descriptions, which are narrations to describe important visual details in a video
- Sign language interpretation of audio content, including relevant auditory experiences
Well-written text transcripts containing the correct sequence of any auditory or visual information provide a basic level of accessibility and facilitate the production of captions and audio descriptions.
1.2.1 (A) – Audio-only and Video-only (Prerecorded)
<canvas>elements can use<video>elements as a source for their display data. If a<video>element includes accompanying audio data then the<canvas>element will ignore it, though that data will still be available to developers who will need to find a novel way to supply it to end-users in an accessible way.
1.2.2 (A) – Captions (Prerecorded)
<canvas>elements can use<video>elements as a source for their display data. If a<video>element includes accompanying caption data then the<canvas>element will ignore it, though that data will still be available to developers who will need to find a novel way to supply it to end-users in an accessible way.
1.2.3 (A) – Audio Description or Media Alternative (Prerecorded)
<canvas>elements can use<video>elements as a source for their display data. If a<video>element includes accompanying alternative text data then the<canvas>element will ignore it, though that data will still be available to developers who will need to find a novel way to supply it to end-users in an accessible manner.
1.2.4 (AA) – Captions (Live)
- With considerable effort, developers can display live media streams in a
<canvas>element by capturing the stream in a<video>element, which can then act as a source for the<canvas>element's display data. - If the media stream includes caption data, which is captured by the
<video>element, then the<canvas>element will ignore it – though that data will still be available to developers who will need to find a novel way to supply it to end-users in an accessible manner.
1.2.5 (AA) – Audio Description (Prerecorded)
<canvas>elements can use<video>elements as a source for their display data. If a<video>element includes accompanying audio data then the<canvas>element will ignore it, though that data will still be available to developers who will need to find a novel way to supply it to end-users in an accessible way.
1.2.6 (AAA) – Sign Language (Prerecorded)
- Adding human-based or AI generated sign language interpretation to video is a developing field of technology – see (for instance) signapse.ai, signfordeaf.com, etc.
- Given that
<canvas>elements can use<video>elements as a source for their display data, including signed interpretation in the canvas display should not be difficult. However, if chosen solutions include the ability to show/hide the signer then developers will need to find a way to emulate that control for the canvas display.
1.2.7 (AAA) – Extended Audio Description (Prerecorded)
<canvas>elements can use<video>elements as a source for their display data. If a<video>element includes accompanying extended audio data then the<canvas>element will ignore it, though that data will still be available to developers who will need to find a novel way to supply it to end-users in an accessible way.
1.2.8 (AAA) – Media Alternative (Prerecorded)
<canvas>elements can use<video>elements as a source for their display data. If a<video>element includes any accompanying data then the<canvas>element will ignore it, though that data will still be available to developers who will need to find a novel way to supply it to end-users in an accessible way.
1.2.9 (AAA) – Audio-only (Live)
- Not applicable –
<canvas>elements are entirely visual in nature.
SC and accessible multimedia
tl;dr: Many of the above requirements are best met during audio-visual production and post-production, long before the resulting files are supplied to the developer for inclusion in a web page. This includes generating subtitle and caption data in Web Video Text Tracks Format rather than adding them directly to the video as graphical text – which is entirely inaccessible!
SC makes it reasonably easy for dev-users to add video playback to a canvas scene. It achieves this using a set of Asset objects, which load animatable or streamed assets into the SC system and then serve them to Picture entitys and Pattern objects for display in the <canvas> element:
- SC sprite assets take a series of images, or a spritesheet image, and – with the help of a manifest file or definition object – creates small animation loops for display.
- SC noise assets and reaction-diffusion assets use images generated by the SC system for various purposes; given that these images can be animated in various ways they need to be considered as in-scope for accessibility purposes.
- SC includes raw assets as a means to interact with, and display, third-party-generated
<canvas>elements which may themselves be animated. - SC video assets define and control:
– File-based audio-visual sources, either already present in the web page, or from a remote server;
– Media streams generated by device cameras;
– Screen capture streams generated by the user's screen. - SC Cell objects can also be used as an asset which means they, too, may need to meet these requirements (where appropriate).
The requirements listed above are all concerned with making sure a web page can supply aural, visual and textual alternatives for various combinations of animated/streamed media assets. The need to meet these requirements depends on how important the asset is to the user's understanding of the web page's content:
- Text alternatives to supply either verbatim copy of, or additional detail around, a video- or audio-based asset, in particular when the asset supplies the end-user with additional information not mentioned in the text surrounding the
<canvas>element. - Descriptive speech and text (and sign?) for otherwise silent animated assets.
- Additional visual, sign-based recitation and/or commentary on video- or audio-based assets. Given the recent improvements in machine learning and AI computing functionality in this space, this requirement may become easier to meet going forward – in particular by combining video and AI-generated sign language animation in a
<canvas>element.
Managing audio assets
SC does not (at this time) include any functionality to import <audio> elements as SC assets. It is up to the dev-user to find ways to import and make use of such files within the context of an SC-managed canvas display.
For the intrepid developer, check out the Web Audio API page on MDN. If that feels too overwhelming, then the awesome-webaudio page on GitHub has links to many JavaScript libraries that may help a web page meet a designer's audio-related demands.
Managing video asset captions and subtitles
SC functionality for importing video into the SC system as an asset, for use in Picture entitys and Pattern style objects, can be found in the assets page of this Runbook.
SC does not (at this time) include functionality to access or display HTMLTrackElement data. The native <video> element expects to find <track> element children placed between its opening and closing tags. The text supplied in those text tracks are not part of the video stream data itself. Instead the text tends to be displayed in normal HTML elements placed over the <video> element's display.
If dev-users want to play a user-controlled video in an SC-managed <canvas> element, then they need to implement the video controls themselves. The control inputs and buttons should (ideally!) be created using normal HTML <button> and <input> elements, though SC does not prevent the dev-user from creating them using SC entitys – see test demo Canvas-027 for a proof-of-concept example.
Similarly, dev-users can – once they have built the functionality to capture change events emitted by the video's <track> element – display those captions near to (or over) the <canvas> element, preferable in normal HTML elements or, alternatively, in SC Label and EnhancedLabel entitys.
Content can be presented in different ways
For users to be able to change the presentation of content, it is necessary that:
- Headings, lists, tables, input fields, and content structures are marked-up properly
- Sequences of information or instructions are independent of any presentation
- Browsers and assistive technologies provide settings to customize the presentation
Meeting this requirement allows content to be correctly read aloud, enlarged, or adapted to meet the needs and preferences of different people. For instance, it can be presented using custom color combinations, text size, or other styling to facilitate reading. This requirement also facilitates other forms of adaptation, including automatic generation of page outlines and summaries to help people get an overview and to focus on particular parts more easily.
1.3.1 (A) – Info and Relationships
<canvas>elements should never replace the web page.- Where a
<canvas>element is part of a web page, and it is not merely decorative, then developers need to make best effort to describe the contents of the canvas display – ideally through ARIAlabelled-byanddescribed-bymarkup. - Any relevant graphical text contained in the canvas display should be reflected in some way back into the web page DOM so it can be accessed by assistive technologies. Ideally, that text should be part of the surrounding copy so that if the
<canvas>element fails to render for any reason, the information displayed in the graphical text is not lost.
1.3.2 (A) – Meaningful Sequence
- For any relevant graphical text contained in the canvas display, that text should be reflected back into the web page DOM in a way so that it makes sense – both in itself, and in the wider context of the surrounding text – to end users accessing that text using assistive technology.
1.3.3 (A) – Sensory Characteristics
- Probably not applicable –
<canvas>elements are more likely to be the control elements rather than the describers of control elements.
1.3.4 (AA) – Orientation
<canvas>elements are not naturally responsive; developers will need to apply some effort towards making the element fit appropriately into its environment's orientation without distorting the canvas display.
1.3.5 (AA) – Identify Input Purpose
<canvas>elements should NEVER be used as a replacement for form elements!
1.3.6 (AAA) – Identify Purpose
- It is unlikely that a
<canvas>element will represent an entire region of a web page. Doing so is not advised!
SC support for the content presentation requirements
SC supports responsive canvas elements out-of-the-box, which should be good enough to meet the orientation requirement above. See the responsiveness section of the Artefacts and the DOM page of this Runbook for further details.
Canvas roles and ARIA markup are discussed in the Text alternatives for non-text content section above.
See the SC text management functionality section below for details about how SC makes graphical text in a Canvas element accessible.
Content is easier to see and hear
Distinguishable content is easier to see and hear. Such content includes:
- Color is not used as the only way of conveying information or identifying content
- Default foreground and background color combinations provide sufficient contrast
- When users resize text up to 400% or change text spacing, no information is lost
- Text reflows in small windows (“viewports”) and when users make the text larger
- Images of text are resizable, replaced with actual text, or avoided where possible
- Users can pause, stop, or adjust the volume of audio that is played on a website
- Background audio is low or can be turned off, to avoid interference or distraction
Meeting this requirement helps separate foreground from background, to make important information more distinguishable. This includes considerations for people who do not use assistive technologies and for people using assistive technologies who may observe interference from prominent audio or visual content in the background. For instance, many people with color blindness do not use any particular tools and rely on a proper design that provides sufficient color contrast between text and its surrounding background. For others, audio that is automatically played could interfere with text-to-speech or with assistive listening devices (ALDs).
1.4.1 (A) – Use of Color
- This is a design issue. Canvas displays and animations should be designed alongside the rest of the web page on which the
<canvas>elements appear. - Websites should pay attention to user preferences – in particular to:
prefers-contrast,prefers-color-scheme,prefers-reduced-transparency,forced-colors,inverted-colors. Canvas displays and animations should adapt to these user preferences in line with the rest of the web page. Again, this is a design issue which developers then need to implement.
1.4.2 (A) – Audio Control
<canvas>elements can use<video>elements as a source for their display data. If a<video>element includes accompanying audio data then the<canvas>element will ignore it. Developers will need to present the video's audio controls to end-users in an accessible way.
1.4.3 (AA) – Contrast (Minimum)
- This is a design issue. Canvas displays and animations should be designed alongside the rest of the web page on which the
<canvas>elements appear. - Websites should pay attention to user preferences – in particular to:
prefers-contrast. Canvas displays and animations should adapt to this user preference in line with the rest of the web page.
1.4.4 (AA) – Resize Text
<canvas>elements should react in the same way as any other element when the user zooms – not pinch-zooms, which is an entirely different sort of zoom – their browser displays.- Developers need to make sure their canvas displays zoom in the appropriate manner – including making any graphical text appropriately larger.
1.4.5 (AA) – Images of Text
- This requirement only applies to
<canvas>elements whose display includes large amounts of graphical text. - In general, canvas displays should only contain the minimum amount of graphical text to help users make sense of the display. Additional explanatory text should be supplied either in the surrounding web page text, or in the
<canvas>element's ARIAlabelled-byanddescribed-bymarkup.
1.4.6 (AAA) – Contrast (Enhanced)
- This is a design issue. Canvas displays and animations should be designed alongside the rest of the web page on which the
<canvas>elements appear. - Websites should pay attention to user preferences – in particular to:
prefers-contrast. Canvas displays and animations should adapt to this user preference in line with the rest of the web page.
1.4.7 (AAA) – Low or No Background Audio
<canvas>elements can use<video>elements as a source for their display data. If a<video>element includes accompanying audio data then the<canvas>element will ignore it. Developers will need to present the video's audio controls to end-users in an accessible way.
1.4.8 (AAA) – Visual Presentation
- This requirement only applies to
<canvas>elements whose display includes large amounts of graphical text. - In general, canvas displays should only contain the minimum amount of graphical text to help users make sense of the display. Additional explanatory text should be supplied either in the surrounding web page text, or in the
<canvas>element's ARIAlabelled-byanddescribed-bymarkup.
1.4.9 (AAA) – Images of Text (No Exception)
- In general, canvas displays should only contain the minimum amount of graphical text to help users make sense of the display. Additional explanatory text should be supplied either in the surrounding web page text, or in the
<canvas>element's ARIAlabelled-byanddescribed-bymarkup.
1.4.10 (AA) – Reflow
- In general, canvas displays should only contain the minimum amount of graphical text to help users make sense of the display. Additional explanatory text should be supplied either in the surrounding web page text, or in the
<canvas>element's ARIAlabelled-byanddescribed-bymarkup. - This requirement can (arguably) apply to any
<canvas>element containing graphical text. It is up to the designer and developer to develop canvas displays that work appropriately with larger and smaller representations of that graphical text.
1.4.11 (AA) – Non-text Contrast
- Designers using
<canvas>elements to convey graphical information should make an effort to give sufficient contrast between that information and the canvs display background. - If the canvas display includes any graphical controls – links, buttons, draggable controls, etc – then there should be sufficient contrast between those elements and their surrounding graphics and background.
1.4.12 (AA) – Text Spacing
- In general, canvas displays should only contain the minimum amount of graphical text to help users make sense of the display.
- If the canvas display is text-heavy, then that graphical text should make a best effort to respect the surrounding page's CSS markup when it comes to text spacing requirements.
1.4.13 (AA) – Content on Hover or Focus
- If a
<canvas>element is animated and includes behaviour such as adding or removing additional content as a result of a hover or focus interaction, then the designer needs to take this accessibility requirement into consideration when designing those interactions.
SC Color space support
While the use of accessible color is (almost entirely) a design issue, SC does help a little by supporting all legitimate absolute (that is, CSS Color Module Level 4) color strings – including CIELAB LCH and OKLCH color space strings. See test demos Canvas-015 and Canvas-016.
SC does not support CSS Color Module Level 5 relative colors. Dev-users can instead precalculate those colors and store them in CSS custom properties, then extract those variables into code using the JavaScript getPropertyValue() function.
Details about SC's support for wide-gamut color support – display-p3 – can be found at the linked section in the Artefacts and the DOM page of this Runbook.
SC function hooks to adapt to color-based user preferences settings
SC comes with built-in support to action changes to a canvas display based on any preference media settings – forced-colors, inverted-colors, prefers-color-scheme, prefers-contrast, prefers-reduced-transparency – that the end-user may have set on their device. This functionality has been detailed in the Accessibility section of the Artefacts and the DOM page of this Runbook.
SC support for browser zoom (not pinch zoom)
Browser implementations for zoom generally follow the pattern of modifying the browser's window.devicePixelRatio value. This has a direct impact on any <canvas> elements in the web page, which need to adapt to the user interaction as it happens, to maintain the canvas display or animation's clarity.
While SC makes a best effort to manage devicePixelRatio update functionality behind-the-scenes, dev-users are strongly advised to test any <canvas> elements they add to the page across a range of devices and screens at a variety of zoom levels.
Note that browsers operating in touch-enabled environments will generally handle user pinch-zoom gestures in a different way. SC relies entirely on the browser "doing the right thing" in such situations, and makes no effort to listen for, or react to, such events.
Functionality is available from a keyboard
Many people do not use the mouse and rely on the keyboard to interact with the Web. This requires keyboard access to all functionality, including form controls, input, and other user interface components.
Keyboard accessibility includes:
- All functionality that is available by mouse is also available by keyboard
- Keyboard focus does not get trapped in any part of the content
- Web browsers, authoring tools, and other tools provide keyboard support
Meeting this requirement helps keyboard users, including people using alternative keyboards such as keyboards with ergonomic layouts, on-screen keyboards, or switch devices. It also helps people using voice recognition (speech input) to operate websites and to dictate text through the keyboard interface.
2.1.1 (A) – Keyboard
- If a
<canvas>element includes interactive content driven by mouse or touch events, then those interactions should also be actionable through the user's keyboard or other input device.
2.1.2 (A) – No Keyboard Trap
- If a
<canvas>element includes focusable content, then the element's functionality should also include standard methods for moving focus away from the element.
2.1.3 (AAA) – Keyboard (No Exception)
- If a
<canvas>element includes interactive content driven by mouse or touch events, then those interactions should also be actionable through the user's keyboard or other input device.
2.1.4 (A) – Character Key Shortcuts
- The work of meeting this requirement lies with the designer and UX developer.
<canvas>elements that include interactive content should not be ignored in any work to assign keyboard shortcuts, or reassigning those shortcuts to different key strokes.
Keyboard event management for SC Canvas artefacts
The best approach to giving end-users more accessible control over a canvas display is to add a set of <input> elements to the DOM markup next to the <canvas> element, which they can then use to manipulate the canvas output. This approach makes use of the browser's built-in <input> and <select> element accessibility functionality (for selectors, ranges, etc). Many of the test demos include such controls.
Adding <input> and <select> element controls can lead to some convoluted code to wire user updates to the canvas display. SC includes two helper functions which attempt to make this a little easier for dev-users to implement and manage. More detail can be found in the user interaction with form controls section of the Events and Signals page of this Runbook:
scrawl.initializeDomInputs()locates the DOM control elements, sets them to initial values and returns an object of those elements keyed to theiridvalues.scrawl.makeUpdater()adds event listeners to the DOM control elements and manages the process of channeling user updates to the targeted SC artefact, entity or Group object.
While including input controls in the web page may often detract from the page's design and aesthetic, designers can overcome this issue by adding in methods to show/hide the controls – for instance by placing them inside a <details> element. The controls themselves can also be styled to match the surrounding content (because: they're just elements in the DOM). See test demo Canvas-023 for an example.
For more application-like interactive canvas displays – for instance: spreadsheets; monitoring/analytic consoles; image or video editing studios; design suites; etc – best practice is to include keyboard shortcuts for each of the possible interactions. To help dev-users, SC includes a keyboardZone convenience object in which dev-users can define the shortcut and associated action for the targeted <canvas> element. See the following test demos for examples:
- Snippets-005 – Create a responsive, interactive and accessible before/after slider infographic.
- Modules-005 – Accessible GUI-based simple canvas editor.
- Canvas-211 – EnhancedLabel entity – keyboard navigation.
More details about the scrawl.makeKeyboardZone() factory function can be found in the keyboard shortcut management section of the Events and Signals page of this Runbook.
Users have enough time to read and use the content
Some people need more time than others to read and use the content. For instance, some people require more time to type text, understand instructions, operate controls, or to otherwise complete tasks on a website.
Examples of providing enough time include providing mechanisms to:
- Stop, extend, or adjust time limits, except where necessary
- Pause, stop, or hide moving, blinking, or scrolling content
- Postpone or suppress interruptions, except where necessary
- Re-authenticate when a session expires without losing data
2.2.1 (A) – Timing Adjustable
<canvas>elements that have animated displays should also include user-accessble controls to adjust the speed of the animation.
2.2.2 (A) – Pause, Stop, Hide
<canvas>elements that have animated displays should also include user-accessble controls to halt/resume the animation at will. The user should also be able to hide the<canvas>element if they so desire.- Websites should pay attention to user preferences – in particular to:
prefers-reduced-motion. Canvas displays and animations should adapt to these user preferences in line with the rest of the web page – in this case to halt any animation if it runs for more than five seconds.
2.2.3 (AAA) – No Timing
- This is a page design issue, thus not applicable specifically to
<canvas>elements.
2.2.4 (AAA) – Interruptions
- This is a page design issue, thus not applicable specifically to
<canvas>elements.
2.2.5 (AAA) – Re-authenticating
- This is a page design issue, thus not applicable specifically to
<canvas>elements. <canvas>elements should NEVER be used as a replacement for form elements!
2.2.6 (AAA) – Timeouts
- This is a page design issue, thus not applicable specifically to
<canvas>elements.
Managing SC Animations
Each SC generic, Ticker and display animation objects includes an attribute – anim.maxFrameRate which can be used to control the speed of that animation. By default SC sets the value of this attribute to 60 frames-per-second, but this can be changed at any time using the normal anim.set() functionality. For an example, see test demo Canvas-050.
All SC animation objects can be started and stopped at any time using the anim.run() and anim.halt() functions. See the following test demos for inspiration:
- Canvas-027 – Video control and manipulation.
- Canvas-033 – User preferences: prefers-color-scheme; prefers-reduced-motion; JavaScript disabled.
- Canvas-208 – EnhancedLabel entity – text along a path.
- DOM-009 – Stop and restart the main animation loop.
- Snippets-006 – Editable header text colorizer and animation effect snippets.
SC Ticker animation objects are the only time-based animations in the SC system. There is (at this time) no simple way for the dev-user to dilate a Ticker animation (make it run faster or slower) to meet end-user preferences, but there's also nothing to prevent them changing the duration of a Ticker animation at any time.
SC Tween and Action objects can take temporal-relative String% values for their .start and .duration attributes, meaning that a Tween can be defined to start 20% of the Ticker's duration after it starts running, and last for 30% of its duration. This should make the work of dilating a Ticker animation a little easier for the dev-user.
More information about managing SC animations can be found in the Animation and Display cycle page of this Runbook.
Content does not cause seizures and physical reactions
Content that flashes at certain rates or patterns can cause photosensitive reactions, including seizures. Flashing content is ideally avoided entirely or only used in a way that does not cause known risks. Also animations and moving content can cause discomfort and physical reactions.
Examples of avoiding causing seizures and physical reactions:
- Do not include content that flashes at particular rates and patterns
- Warn users before flashing content is presented, and provide alternatives
- Provide mechanisms to switch off animations, unless they are essential
2.3.1 (A) – Three Flashes or Below Threshold
- This is a design issue. If a canvas display includes flashing animation then the user must be made aware of that before the animation plays.
- Explicit user consent for the canvas animation to play is advisable.
2.3.2 (AAA) – Three Flashes
- This is a design issue. If a canvas display includes flashing animation then the user must be made aware of that before the animation plays.
- Explicit user consent for the canvas animation to play is required.
2.3.3 (AAA) – Animation from Interactions
- Websites should pay attention to user preferences – in particular to:
prefers-reduced-motion. Canvas displays and animations should adapt to these user preferences in line with the rest of the web page – in this case to suppress unnecessary animations arising from user interactions with the<canvas>element.
SC function hooks to adapt to motion-based user preferences settings
SC comes with built-in support to action changes to a canvas display based on motion preference media settings – prefers-reduced-motion – that the end-user may have set on their device. This functionality has been detailed in the Accessibility section of the Artefacts and the DOM page of this Runbook.
Users can easily navigate, find content, and determine where they are
Well organized content helps users to orient themselves and to navigate effectively. Such content includes:
- Pages have clear titles and are organized using descriptive section headings
- There is more than one way to find relevant pages within a set of web pages
- Users are informed about their current location within a set of related pages
- There are ways to bypass blocks of content that are repeated on multiple pages
- The keyboard focus is visible, and the focus order follows a meaningful sequence
- The purpose of a link is evident, ideally even when the link is viewed on its own
Meeting this requirement helps people to navigate through web pages in different ways, depending on their particular needs and preferences. For instance, while some people rely on hierarchical navigation structures such as menu bars to find specific web pages, others rely on search functions on websites instead. Some people may be seeing the content while others may be hearing it or seeing and hearing it at the same time. Some people may be using the content with only a mouse or a keyboard, while others may be using both.
2.4.1 (A) – Bypass Blocks
- Not applicable to
<canvas>elements – the expectation should be that the element, if used for such purposes, should be part of a wider header or navigation component to which the requirement applies.
2.4.2 (A) – Page Titled
- Not applicable to
<canvas>elements.
2.4.3 (A) – Focus Order
- Developers can create – with some effort –
<canvas>elements that act as action buttons or links, or which include regions within their display which act as action buttons or links. - For these
<canvas>elements, or the regions within them, all efforts should be made to ensure they respect the web page's focus order. - In particular, the HTML specification allows
<a>and<button>elements to be placed between the<canvas>element's opening and closing tags. Any navigation or action caused by user interaction should be triggered on those elements, not emulated by the<canvas>element.
2.4.4 (A) – Link Purpose (In Context)
- Developers can create – with some effort –
<canvas>elements that act as links, or which include regions within their display which act as links. - The HTML specification allows
<a>elements to be placed between the<canvas>element's opening and closing tags. Any navigation cause by user interaction should be triggered on those elements, not emulated by the<canvas>element. <a>elements contained within the<canvas>element should comply with this requirement.
2.4.5 (AA) – Multiple Ways
- Not applicable to
<canvas>elements.
2.4.6 (AA) – Headings and Labels
- Using
<canvas>elements to act as web page headings and labels is not advisable. They could be used as decorative accompaniments to headings and labels, in which case their application should be consistent and should not obscure those elements in any way.
2.4.7 (AA) – Focus Visible
- Developers can create – with some effort –
<canvas>elements that act as action buttons or links, or which include regions within their display which act as action buttons or links. - When the user focuses on the element, or the graphical region within the display acting as a button or link – for instance through a mouse hover, or a click or tap interaction – then that focussing action should be visibly conveyed to the user.
- This extends to keyboard navigation – when the user focusses on the
<a>or<button>elements contained by the canvas, that action should be visibly indicated to the user in some way.
2.4.8 (AAA) – Location
- Not applicable to
<canvas>elements.
2.4.9 (AAA) – Link Purpose (Link Only)
- Developers can create – with some effort –
<canvas>elements that act as links, or which include regions within their display which act as links. - The HTML specification allows
<a>elements to be placed between the<canvas>element's opening and closing tags. Any navigation cause by user interaction should be triggered on those elements, not emulated by the<canvas>element. <a>elements contained within the<canvas>element should comply with this requirement.
2.4.10 (AAA) – Section Headings
- Using
<canvas>elements to act as web page headings and labels is not advisable. They could be used as decorative accompaniments to headings and labels, in which case their application should be consistent and should not obscure those elements in any way.
2.4.11 (AA) – Focus Not Obscured (Minimum)
- Developers can create – with some effort –
<canvas>elements that act as action buttons or links, or which include regions within their display which act as action buttons or links. - When the user keyboard focusses on the
<a>or<button>elements contained by the canvas, then the<canvas>element should become visible in the browser viewport. If the focussed element is tied to a particular region of the canvas display then that part of the<canvas>element should be entirely visible in the browser viewport.
2.4.12 (AAA) – Focus Not Obscured (Enhanced)
- Developers can create – with some effort –
<canvas>elements that act as action buttons or links, or which include regions within their display which act as action buttons or links. - When the user keyboard focusses on the
<a>or<button>elements contained by the canvas, then the<canvas>element should become visible in the browser viewport. If the focussed element is tied to a particular region of the canvas display then that part of the<canvas>element should be entirely visible in the browser viewport.
2.4.13 (AAA) – Focus Appearance
- Developers can create – with some effort –
<canvas>elements that act as action buttons or links, or which include regions within their display which act as action buttons or links. - When the user keyboard focusses on the
<a>or<button>elements contained by the canvas, then the<canvas>element, or the region within the canvas display tied to that button or link, should change its appearance to meet the requirements of this criterion.
SC link and action regions
SC includes functionality to create regions in the <canvas> element display which can act as links or action buttons. These regions are defined as SC entity objects:
- For action regions the entity will be associated with an HTML
<button>element, stored in a dedicated<div>element within the<canvas>element's fallback content. - Similarly, for link regions the entity will be associated with an HTML
<a>element, stored in a dedicated<nav>element within the<canvas>element's fallback content.
This approach allows SC to leverage the browser's built-in accessibility functionality for the <button> and <a> elements, including keyboard navigation and element focus/blur.
Further details of this functionality can be found in the interactive entitys section of the Scrawl-canvas graphical entity functionality page of this Runbook. Test demo examples include:
- Canvas-009 – Entity web link anchors.
- Modules-001 – Scrawl-canvas modularized code – London crime charts.
- Modules-005 – Accessible GUI-based simple canvas editor.
Apply canvas decoration to HTML headers using SC Snippet functionality
SC includes experimental functionality – SC Snippets – to associate a <canvas> element with normal (non-SC controlled) DOM elements. The results are similar to the Houdini CSS Painting API, though the path to achieving those results is different.
When a dev-user chooses to apply an SC Snippet to a DOM element such as a heading, then they will need to make sure that the added <canvas> does not interfere with the accessibility of the header.
Test demo Snippets-006 investigates this issue, including the need to accommodate end-user preferences (eg: prefers-dark-mode, prefers-contrast), and to include mechanisms to afford end-users control of animated effects.
Users can use different input modalities beyond keyboard
Input modalities beyond keyboard, such as touch activation, voice recognition (speech input), and gestures make content easier to use for many people. Yet not everyone can use each of these input modalities, and to the same degree. Particular design considerations maximize the benefit of these input modalities. This includes:
- Gestures that require dexterity or fine movement have alternatives that do not require high dexterity
- Components are designed to avoid accidental activation, for example by providing undo functionality
- Labels presented to users match corresponding object names in the code, to support activation by voice
- Functionality that is activated by movement can also be activated through user interface components
- Buttons, links, and other active components are large enough to make them easier to activate by touch
Meeting this requirement makes the content easier to use for many people with a wide range of abilities using a wide range of devices. This includes content used on mobile phones, tablet computers, and self-service terminals such as ticketing machines.
Note that most of the requirements below need to be managed at the design stage of website development.
2.5.1 (A) – Pointer Gestures
- This should be handled at the level of the web page.
- Canvas displays and interactions should be designed to take into account the limitiations of various input devices.
2.5.2 (A) – Pointer Cancellation
- This should be handled at the level of the web page.
2.5.3 (A) – Label in Name
- Developers can create – with some effort –
<canvas>elements that act as action buttons or links, or which include regions within their display which act as action buttons or links. - The HTML specification allows
<a>and<button>elements to be placed between the<canvas>element's opening and closing tags. These elements should be given a programmatic name. - Designers should then make best efforts to display the label as graphical text (which is not reflected back into the web page DOM) to meet the requirements of this criterion, should it apply.
<canvas>elements should NEVER be used as a replacement for form elements!
2.5.4 (A) – Motion Actuation
- This is a web page design issue.
<canvas>elements will be affected alongside all other components in the web page.
2.5.5 (AAA) – Target Size (Enhanced)
- Developers can create – with some effort –
<canvas>elements that act as action buttons or links, or which include regions within their display which act as action buttons or links. - Such
<canvas>elements or graphical regions within the canvas display should make best efforts to meet these minimum target dimensions.
2.5.6 (AAA) – Concurrent Input Mechanisms
- Interactive
<canvas>elements are not exempt from this requirement.
2.5.7 (AA) – Dragging Movements
- Developers can create – with some effort – interactive
<canvas>elements which include draggable regions within their display which act as action buttons or links. - For such
<canvas>elements, developers should make best effort to create user interaction methods that do not rely solely on mouse or touch manipulations.
2.5.8 (AA) – Target Size (Minimum)
- Developers can create – with some effort –
<canvas>elements that act as action buttons or links, or which include regions within their display which act as action buttons or links. - Such
<canvas>elements or graphical regions within the canvas display should make best efforts to meet these minimum target dimensions.
Text is readable and understandable
Content authors need to ensure that text content is readable and understandable to the broadest audience possible, including when it is read aloud by text-to-speech. Such content includes:
- Identifying the primary language of a web page, such as Arabic, Dutch, or Korean
- Identifying the language of text passages, phrases, or other parts of a web page
- Providing definitions for any unusual words, phrases, idioms, and abbreviations
- Using the clearest and simplest language possible, or providing simplified versions
Meeting this requirement helps software, including assistive technology, to process text content correctly. For instance, this requirement helps software to read the content aloud, to generate page summaries, and to provide definitions for unusual words such as technical jargon. It also helps people who have difficulty understanding more complex sentences, phrases, and vocabulary. In particular, it helps people with different types of cognitive disabilities.
3.1.1 (A) – Language of Page
- This is a web page design and development issue.
<canvas>elements, which can include graphical text in their displays, will be affected alongside all other components in the web page.
3.1.2 (AA) – Language of Parts
- This is a web page design and development issue.
<canvas>elements, which can include graphical text in their displays, will be affected alongside all other components in the web page.
3.1.3 (AAA) – Unusual Words
- This is a web page design and development issue.
<canvas>elements, which can include graphical text in their displays, will be affected alongside all other components in the web page.
3.1.4 (AAA) – Abbreviations
- This is a web page design and development issue.
<canvas>elements, which can include graphical text in their displays, will be affected alongside all other components in the web page.
3.1.5 (AAA) – Reading Level
- This is a web page design and development issue.
<canvas>elements, which can include graphical text in their displays, will be affected alongside all other components in the web page.
3.1.6 (AAA) – Pronunciation
- This is a web page design and development issue.
<canvas>elements, which can include graphical text in their displays, will be affected alongside all other components in the web page.
SC text management functionality
SC manages graphical text through the Label and EnhancedLabel entitys. In both cases the entitys, by default, replicate their text into dedicated <div> elements which are part of the <canvas> element's fallback content – thus making the text available to accessibility technologies like screen readers. These elements will announce text changes to the end-user politely.
However, not all of the text in a canvas display may be relevant to an end-user's understanding of the wider web page. For instance in a chart, it is often enough to inform the end-user of the start and end values of each axis without the need to tell them the value of each tick displayed in the chart – information which could distract them from the more important information which the chart demonstrates visually. To this end, SC allows dev-users to suppress an entity's text replication into the DOM on a case-by-case basis, controlled by the entity.textIsAccessible boolean attribute.
Furthermore, it is not enough to replicate graphical text into the DOM. That replicated text needs to make coherent sense to the end-user, which means:
- The text may need to be manipulated to turn it into a meaningful phrase; and
- Separate phrases need to be ordered within the DOM generate a coherent sequential output.
To help meet these requirements SC text-related entitys include a vary simple templating system controlled by the entity.accessibleText and entity.accessibleTextPlaceholder attributes. Dev-users can set the order in which multiple text-related entitys present their text to the end-user using the entity.accessibleTextOrder attribute.
A fuller investigation of Label and EnhancedLabel entity functionality can be found in the Text-based entitys page of this Runbook.
Content appears and operates in predictable ways
Many people rely on predictable user interfaces and are disoriented or distracted by inconsistent appearance or behavior. Examples of making content more predictable include:
- Navigation mechanisms that are repeated on multiple pages appear in the same place each time
- User interface components that are repeated on web pages have the same labels each time
- Significant changes on a web page do not happen without the consent of the user
Meeting this requirement helps people to quickly learn the functionality and navigation mechanisms provided on a website, and to operate them according to their specific needs and preferences. For instance, some people assign personalized shortcut keys to functions they frequently use to enhance keyboard navigation. Others memorize the steps to reach certain pages or to complete processes on a website. Both rely on predictable and consistent functionality.
Note that most of the requirements below need to be managed at the design stage of website development.
3.2.1 (A) – On Focus
- Developers can create – with some effort –
<canvas>elements that act as action buttons or links, or which include regions within their display which act as action buttons or links, that can be focussed. - Such interactive
<canvas>elements should make best effort to comply with this requirement.
3.2.2 (A) – On Input
<canvas>elements should NEVER be used as a replacement for form elements!
3.2.3 (AA) – Consistent Navigation
- This is a web page design issue.
3.2.4 (AA) – Consistent Identification
- This is a web page design issue.
3.2.5 (AAA) – Change on Request
- This is a web page design issue.
3.2.6 (A) – Consistent Help
- This is a web page design issue.
Users are helped to avoid and correct mistakes
Forms and other interaction can be confusing or difficult to use for many people, and, as a result, they may be more likely to make mistakes. Examples of helping users to avoid and correct mistakes include:
- Descriptive instructions, error messages, and suggestions for correction
- Context-sensitive help for more complex functionality and interaction
- Opportunity to review, correct, or reverse submissions if necessary
Meeting this requirement helps people who do not see or hear the content, and may not recognize implicit relationships, sequences, and other cues. It also helps people who do not understand the functionality, are disoriented or confused, forget, or make mistakes using forms and interaction for any other reason.
Note that most of the requirements below need to be managed at the design stage of website development.
3.3.1 (A) – Error Identification
- This is a web page design issue.
<canvas>elements should NEVER be used as a replacement for form elements!
3.3.2 (A) – Labels or Instructions
- This is a web page design issue.
<canvas>elements should NEVER be used as a replacement for form elements!
3.3.3 (AA) – Error Suggestion
- This is a web page design issue.
<canvas>elements should NEVER be used as a replacement for form elements!
3.3.4 (AA) – Error Prevention (Legal, Financial, Data)
- This is a web page design issue.
<canvas>elements should NEVER be used as a replacement for form elements!
3.3.5 (AAA) – Help
- This is a web page design issue.
3.3.6 (AAA) – Error Prevention (All)
- This is a web page design issue.
<canvas>elements should NEVER be used as a replacement for form elements!
3.3.7 (A) – Redundant Entry
- This is a web page design issue.
<canvas>elements should NEVER be used as a replacement for form elements!
3.3.8 (AA) – Accessible Authentication (Minimum)
- This is a web page design issue.
<canvas>elements should NEVER be used as a replacement for form elements!
3.3.9 (AAA) – Accessible Authentication (Enhanced)
- This is a web page design issue.
<canvas>elements should NEVER be used as a replacement for form elements!
Content is compatible with current and future user tools
Robust content is compatible with different browsers, assistive technologies, and other user agents. Examples of how this can be achieved include:
- Ensuring markup can be reliably interpreted, for instance by ensuring it is valid
- Providing a name, role, and value for non-standard user interface components
Meeting this requirement helps maximize compatibility with current and future user agents, including assistive technologies. In particular, it enables assistive technologies to process the content reliably, and to present or to operate it in different ways. This includes non-standard (scripted) buttons, input fields, and other controls.
Note that the issues raised below, as they relate to SC Canvas artefacts, have already been discussed above.
4.1.1 Parsing (Obsolete and removed)
- No longer applicable, thus no impact on
<canvas>elements.
4.1.2 (A) – Name, Role, Value
- Any
<canvas>element adapted to perform a purpose other than displaying a static, non-interactive scene in the web page needs to comply with this requirement.
4.1.3 (AA) – Status Messages
- Any
<canvas>element adapted to perform a purpose other than displaying a static, non-interactive scene in the web page needs to comply with this requirement. - Updates to information that the
<canvas>element makes available to the web page about changes in its display should be done in a way to make sense to the user (within the wider context of the page content) while at the same time not overwhelming the user with updated content.