ADVANCED DRAFT COPY
Page Author Guidelines - Version 8
Unified Web Site Accessibility Guidelines
December 1, 1997
Compiled by:
Gregg C. Vanderheiden Ph.D., Wendy A. Chisholm, M.S.,
Trace R and D Center, University of Wisconsin - Madison
For the Web Accessibility Initiative Guidelines Working Group
(This is a final Trace Center Guidelines Document.
It is compiled in preparation for transfer of the Guidelines to the Web Accessibility
Initiative of the W3C.
This guideline reflects recent work of the WAI as well as previous contributions of many
other guidelines developers (listed in the appendix)).
Contributors include: Jim Bell, Jane Berliss, Harvey Bingham, Judy Brewer, Kevin Carey,
John Churchill, David Clark, Dan Connolly, Daniel Dardailler, Judith Dixon, Martin Durst,
Paul Fontaine, Geoff Freed, Alfred S. Gilman, Larry Goldberg, Jon Gunderson, Markku
Hakkinen, Scott Isaacs, Scott Isensee, Jun Ishikawa, Steve Jacobs, Phill Jenkins, Alan
Karben, Hiroshi Kawamura, George Kerscher, Peter Korn, Josh Krieger, Chuck
Letourneau, Edmund MacKenty, Murray Maloney, Aya Matsui, Gabriel Michel, Jim Miller,
Masafumi NAKANE, Charles Oppermann, Mike Paciello, David Pawson, Michael Pieper, Dave
Ragget, T.V. Raman, Jan Richards, Madeleine Rothberg, Jutta Treviranus, Steve Tyler, Jaap
Van Lelieveld, Jason White, Tom Wlodkowski, ATRC, CAST, InfoUse, NCR, WGBH, WINGS,
and the WAI IG and GL Working groups
(If you have contributed and your name or organization is missing from
the above list, inform us via e-mail so that we may correct our omission - and we
apologize in advance.)
Prepared under funding from
the National Institute on Disability and Rehabilitation Research (NIDRR),
Office of Special Education and Rehabilitation Services (OSERS),
US Department of Education
The US Postal Service's WINGS project and
the NCSA-PACI Universal Design / Disability Access Project.
(This is a living document. Comments and suggestions are solicited.)
Rating System
[Required] - Required for some groups of users to
access the information on a page.
[Recommended] - Makes page easier to understand and use.
Classification System
[Interim] - Strategies needed to make pages accessible for today's browsers
and assistive technologies
[New] - Strategies that will take advantage of new features being incorporated
into supported tomorrow's browsers and assistive technologies (which incorporate Web
Access Initiative recommendations).
If a recommendation has several possible strategies, the strategies are classified, if
not the recommendation itself is classified. Those recommendations and strategies
that have no classification work for both old and new browsers.
Style Sheets - Controlling the presentation of an HTML document
- [Required]
Use style sheets to position text and objects within pages, rather than physically
marking up text and graphics (e.g. <B>
or the "align
"
attribute of <IMG
>) (However, continue to use logical elements such as STRONG,
H1
, etc. to provide semantic coding within the body of the page) [New]
Use style sheets rather than:
- converting text to images or alternative text file formats (such as PDF)
- using tables or PRE elements to layout pages
- using proprietary extensions
- using "invisible" images to layout pages
- writing a program to accomplish something that is possible with style sheets or plain
HTML
Use style sheets to:
- position text and graphics
- create drop caps, subscripts and superscripts
- avoid uncommon typographic characters or constructions (such as ASCII art, etc.)
- create alternative versions of a page. Whether or not you anticipate your page being
viewed on alternative media, such as a PDA, a speech-based browser or paper (printed), it
is a good idea to create style sheets for alternative media to facilitate readability.
Example media types are screen, print, projection, braille, and speech.
- highlight sections of a document with font size, formatting or color
- [Required]
Ensure that your pages are readable and usable without style sheets (e.g.
when the browser does not support or the user prefers not to load). Since style
sheets are a new phenomenon, older browsers will not support them and it will take a while
for new browsers to support them in a standard way.
Images and Image maps
- [Required]
Provide alternative text for all images and image maps.
All images should have alternative text that describes the function of the graphic.
Examples of possible alt-text are, "Section Title: Banana Products," "Graph
of population versus age," or "Search Button." Possible solution
strategies include:
- The "
alt
" attribute is mandatory for the <AREA
>
and <IMG>
elements, but should also be used for <APPLET>
,
and <INPUT>
. For example, <IMG SRC="logo.gif"
alt="XYZ Logo">
.
- [New] If
<OBJECT>
is used, text can be provided in the body of the
<OBJECT>
element. For example, <OBJECT data="logo.gif"> XYZ Logo
</OBJECT>
- [Required]
Provide a link to a longer description (i.e., via D-link, or longdesc, etc.) for
graphics that present important information (especially charts, tables and diagrams).
(Include internal text in image file formats that support it).
Alternative text descriptions (recommendation #1) are usually short and define the basic
purpose of graphic elements. To describe the graphic itself in more detail a link to a
longer description should be provided.
- [Interim] Provide a D-link next to the graphic that links to a page or a phrase
at the bottom of the page with a longer description of the graphic. For example,
<IMG
SRC="logo.gif" alt="XYZ logo"><A
HREF="logo.html">D</A>
- [New] Use the
"longdesc
" attribute of the <IMG>
element or provide text within the body of the <OBJECT >
element.
For example, <IMG SRC="logo.gif" alt="XYZ logo"
longdesc="logo.html">
- [Required]
Use client-side (instead of server-side) image maps.
Client-side image maps are similar to server-side image maps except that the information
for all of the "hot-spots" within the image are sent to the browser along with
the image map picture. Descriptions provided with the URLs can be displayed rather than
the graphic. If server-side image maps can not be avoided, see the 5th strategy of the
next recommendation.
- [Required]
Provide a description for each link in an image map.
Depending on how you've created your image map you have several possibilities:
- Use the "
alt
" attribute of the <AREA
> element
(with the IMAGE, MAP and AREA
elements)
<IMG src="welcome.gif" alt="Image map of areas in the
library" usemap="#map1">
<MAP name="map1">
<AREA coords="0,0,30,30" href="reference.html"
alt="Reference">
<AREA coords="34,34,100,100" href="media.html" alt="Audio
Visual lab">
</MAP>
- [New] Use the "
alt
" attribute of the <AREA
>
element (with the OBJECT, MAP and AREA
elements)
<OBJECT data="welcome.gif" usemap="#map1">
alt="Image map of areas in the library" </OBJECT>
<MAP name="map1">
<AREA coords="0,0,30,30" href="reference.html"
alt="Reference">
<AREA coords="34,34,100,100" href="media.html" alt="Audio
Visual lab">
</MAP>
- [New] Use the "
title
" attribute of the <A
> element (with the OBJECT and SHAPES
elements)
<OBJECT data="welcome.gif" shapes>
Areas in the library
<A coord="0,0,30,30" href="reference.html"
title="Reference">Reference</A>
<A coords="34,34,100,100" href="media.html" title="Audio
Visual lab">Audio Visual Lab</A>
</OBJECT>
- [New] Create a descriptive paragraph within the
<OBJECT
>
element that includes the links (using the OBJECT
and A
elements)
<OBJECT data="welcome.gif" shapes>
There are several areas in the library including <A coord="0,0,30,30"
href="reference.html">Reference</A> and <A
coords="34,34,100,100" href="media.html"> the Audio Visual
Lab</A>. More text can follow or precede.
</OBJECT>
- If a server-side image map has to be used, provide a list of the image
map choices (links) as text links on the same page, on an alternative page that is
accessible, or within the body of the
<OBJECT>
element (similar to
method #4 above). To avoid confusion, if providing the list of links following the image
map, you should indicate within the alt-text of the image map that this is so.
- [Recommended]
Provide descriptive titles for all images used as links.
Use the "title"
attribute of the <A>
element to provide more information about images
used as links (usually a graphical button). For example, <A HREF="home.html" title="XYZ company home
page"><IMG SRC="logo.gif" alt="XYZ logo"></A>
Applets and Scripts
- [Required]
Provide a <NOSCRIPT>
option for all scripts.
For example:
<SCRIPT type="text/tcl">
...some Tcl script to show a billboard of sports scores...
</SCRIPT>
<NOSCRIPT>
<P> To access today's scores <A href="scores.html">visit our
text-only version.</A>
</NOSCRIPT>
- [Required]
Provide a mechanism for the user to freeze any
moving or blinking text.
In the following example created by Mark Novak, if the user presses the escape key while
the Java marquee has focus, the text will be displayed statically. View the example.
- [Required]
Provide alternative text for all applets.
- [Interim]
<APPLET code="Hello.class" width="500"
height="500" alt="Java applet that prints a message">Hello
World!</APPLET>
- [New]
<OBJECT classid="Hello.class" width="500"
height="500" title="Java Applet that prints a message">Hello
World!</OBJECT>
- [Required]
Provide descriptions of applets that present
important information.
- [Interim] Use the <
APPLET
> element to provide a description
(see the previous example). Complete text descriptions could be substituted for the
"Hello World!" message.
- [New] Use the <
OBJECT
> element (see the previous
example). Complete text descriptions and other accessible objects (see
recommendation #5) could be substituted for the "Hello World!" message.
- [Required]
If an applet gathers information, provide an alternative mechanism to gather the
information.
As with the previous two recommendations, an alternative such as a user-input form, e-mail
address, phone or fax number could be provided within the alternative text of either the
<APPLET
> or <OBJECT
> elements.
- [Required]
If an applet requires a user interaction (e.g. the ability to manipulate a physics
experiment) that can not be duplicated in an alternative format, make the applet directly
accessible.
The guidelines for accomplishing this are included within the Java Accessibility project,
and are not yet complete.
- [Recommended]
For applets embedded with the <OBJECT>
element, provide
alternative, accessible presentations of information within the <OBJECT>
element body. [New]
In HTML4.0 the <APPLET>
element has been replaced by the <OBJECT>
element. The <OBJECT>
element supports nesting of objects for
alternative renderings. For example:
<!-- First, try the pressure applet -->
<OBJECT title="How temperature affects pressure"
classid="Press.class" width="500" height="500">
<!-- Else, try the MPEG video -->
<OBJECT data="pressure.mpeg" type="application/mpeg">
<!-- Else, try the GIF image -->
<OBJECT data="Pressure.gif">
<!-- Else render the description and an alternative exercise -->
As temperature increases the molecules in the balloon...
</OBJECT></OBJECT></OBJECT>
- [Recommended]
Make scripts and applets keyboard operable
(using standard conventions).
- More exploration is needed in this area. Please stay tuned.
Audio and Video
- [Required]
Provide a text transcript file for all information
presented auditorally.
A transcript is a textual representation of all dialogue, and audio information.
- [Required]
Provide descriptions of all video information in an
auditory form.
Audio descriptions of video action provide additional information during breaks in
the dialogue of a movie about the actions that are occurring.
- [Required]
Provide a separate text transcript file of all
video descriptions.
A text transcript of video action provides the same information as in recommendation #2
but in a format accessible to those with no audio access.
- [Required]
Synchronize transcript and video description
information with audio/video information, either directly or via a synchronization file.
Some media formats such as QuickTime (for Macintosh) movies provide alternative tracks
that can be used to add captioning and video descriptions.
- [Interim] Until the format you are using supports alternative tracks, two
versions of the movie could be made available, one with captions (and descriptive video)
and one without.
- [New] Future technologies will allow separate audio/visual files to be combined
with text files via a synchronization file to create captioned audio and movies. It will
also allow the user to choose from multiple sets of captions to match their reading
skills. For more information see the SMIL
specification.
- TBD
Provide visual notification of sounds that are
played automatically.
This can be provided in the form of a text phrase on the page that links to a text
transcript or description of the sound file. The link to the transcript should appear in a
highly visible location like the top of the page. However, if a script is automatically
loading a sound, it should also be able to automatically load a visual indication that the
sound is currently being played and provide a description or transcript of the sound. The
controversy surrounding this recommendation is that the browser should load the semantic
information instead of the auditory if the user preferences are set to do so. However, how
do we resolve this so it will work with today's browsers.
- Design Trick: Use the
"TITLE"
attribute to
provide a brief description within the link to very short sounds.
For example, <a href="mittens.wav"
title="meow"></a>
Text - Paragraphs, Horizontal Lines, Phrases, Punctuation and Symbols
- Refer to the section about Style Sheets for information about
formatting and positioning text and graphics.
- [Recommended]
Use logical styles rather than physical
markups. Do no misuse logical elements.
Logical: DFN, EM, CITE, CODE, KBD, SAMP, STRONG, VAR, H1, H2, etc.
Physical: size=14, B, I.
This makes it easier for users to adjust the look of the screen (e.g., larger print, color
contrast, etc.) when they apply their own style sheets or for browsers to adjust the
presentation of the document based on user settings. The other advantage of logical
elements is that they help enforce consistency in your documents. It also leaves
open the possibility for more sophisticated uses of the semantic encodings in the
future. For example, the Lycos indexing system can take advantage of semantic
encoding to create abstracts of documents. Alternatively, browsers can navigate through a
document by logical styles, such as headers. Only use logical elements for what they
represent. For example, avoid using <cite
> to undent a paragraph.
- [Recommended]
Avoid using the BLINK
and MARQUEE
elements. [Interim]
Use another method to draw attention to text such as text size or color.
- [Recommended]
Properly nest headings. (Use style sheets for
formatting [New] ).
Testing tips
- To test if the text and background contrast is sufficient enough to be read by people
with color deficiencies or on low resolution monitors, view your pages with a monochrome
monitor.
- To get a better understanding of what a screen reader would present to a user, do not
load the images on a page when viewing with a graphical browser or use a text-based
browser such as Lynx.
Lists and Outlining
- [Recommended]
Correctly encode list structure and list items with
proper HTML elements (UL, OL, LI
). (Use style sheets to adjust item spacing
[New]).
Tips and tricks:
- Using a numbered (ordered) list makes it easier for people accessing the page
auditorally to keep track of where they are within a list.
Tables
- [Required]
Provide semantic tagging of table and cell data. [New]
Future browsers and assistive technologies will be able to automatically translate table
data into linear fashions if tables are tagged appropriately. Since the debate is
ongoing about what provisions will be supported in HTML 4.0 this item will be revisited
when the specification has solidified.
- [Required]
Avoid using tables or <PRE>
elements to arrange text documents in columns or otherwise layout a page. (Use style
sheets to position graphics and text [New]).
- [Recommended]
Ensure that alt-text does not wrap within tables
used to position graphics. [Interim]
Test for wrapping using the equivalent window size as that which can maximally fit on a
15-inch monitor using a common resolution such as 800x600 pixels.
- TBD
For tables of text and numbers, provide an
alternative page which presents the table information in a linear fashion.
[Interim]
There are several ways to link to alternative pages which are described in more detail in Methods for linking to alternative pages. This has not been
rated because we couldn't decide if this was required or recommended.
- [Recommended]
Provide a phone or fax number or e-mail address if
tables can not be made accessible.
Testing tips
- To predict how one of today's screen readers might read your table, hold a piece of
paper up to your monitor. As you slide the paper down the monitor, read the
words above the line the paper creates as a sentence. Ask another person to listen
as you read the page out loud without pausing for column gaps. Can he or she make
sense out of what you have read?
- Another method, to predict how a screen reader will interpret your page, is to save it
as a text-only file then open it with a word processing program. This function is
available in the "File" menu in most browsers.
Links - Hypertext and Media-Independent Links
- [Recommended]
Create link phrases that make sense when read out
of context (but they are not too verbose).
A user should be able to select a link from a list of all of the links on a page without
reading the context in which the link was used. For example, using "click here"
as the text phrase for several links requires a user viewing the page with a screen reader
to scout out each link to determine the context before selecting one. However, replacing
"click here" with something more descriptive solves this problem. For example,
"download this document in ASCII text," "view the full version in
HTML," or "to view the text version, click here."
- [Recommended]
Place non-link, printable characters
(surrounded by spaces) between links which occur consecutively to keep
separate links from being read as one by screen readers. [Interim]
- Methods for linking to alternative pages:
- Provide a visible link at the top of each page to allow a user to move back and
forth between the graphic and alternative versions of the page.[Interim]
- Provide the appropriate information in the header of the page so that the
browser loads it automatically.[New]
If the user has set their default media type to "speech" this will load
the alternative page automatically:
<HEAD><LINK title="Text-only version" rel="alternate"
href="text_only.html" media="speech"></HEAD>
Frames - Multi-view presentation of documents
- [Required]
Provide a <NOFRAME>
option for
each <FRAMESET>
.
When using the <NOFRAME>
option it is easiest to include all essential
information on the bottom of the main frame.
- [Recommended]
Title each frame.[New]
For example:
<FRAMESET cols="10%,90%" title="Our library of electronic
documents">
<FRAME src="nav.html" title="Navigation bar">
<FRAME src="doc.html" title="Documents">
</FRAMESET>
User-Input Forms
- [Required]
Do not use image maps to create graphical
"submit" buttons.
- [Required]
Explicitly associate labels with their control.
[New]
For example:
<FORM action="http://somesite.com/adduser" method="post"
<FIELDSET>
<LEGEND align="top">Personal information</LEGEND>
<LABEL for="firstname">First name: </LABEL>
<INPUT type="text" id="firstname" tabindex="1">
<LABEL for="lastname">Last name: </LABEL>
<INPUT type="text" id="lastname" tabindex="2">
...more personal information...
</FIELDSET>
<FIELDSET>
<LEGEND align="top">Medical History</LEGEND>
...medical history information...
</FIELDSET>
</FORM>
- [Required]
Provide alternative text for images used as
"submit" buttons.
For example, <INPUT type="image" name="submit"
src="button.gif" alt="Submit">
- [Recommended]
Specify a logical tab order with "tabindex"
.[New]
For example, (taken from the HTML 4.0 draft)
<INPUT tabindex="1" type="text" name="field1">
<INPUT tabindex="2" type="text" name="field2">
<INPUT tabindex="3" type="submit" name="submit">
- [Recommended]
Group related controls with the <FIELDSET>
element.[New]
see the example for #2 - "Explicitly associate labels with their control."
- [Recommended]
Label a group of controls with the <LEGEND
>
element. [New]
see the example for #2 - "Explicitly associate labels with their control."
- [Recommended]
Include default, place-holding characters in edit
boxes and text areas. [Interim]
- [Recommended]
Include a phone number, e-mail address, postal
address or fax number for submitting information.
- [Recommended]
Create keyboard shortcuts for form elements.
[New]
This example assigns "U" as the access key. Typing "U" gives focus to
the label which gives focus to the control then the user can input text.
<FORM action="submit" method="post">
<label for="user" accesskey="U">user name</label>
<input type="text" name="user">
</FORM>
Tips and tricks to further enhance the usability of pages
- If, after best efforts, any page is still not accessible, provide a link to an
alternative page which is accessible, has equivalent information, and is maintained with
the same frequency as the inaccessible page.
- Use the "
title
" attribute on horizontal rules <hr
title="new section">
- Use the "
title
" attribute for acronyms and abbreviations <abbr>title="World
wide web">WWW</abbr>
- Use the "
title
" attribute for very short sounds <a
href="mittens.wav" title="meow"></a>
- Avoid using ASCII art or replace it with an image and alternative text.
Common typographic characters or constructions to be avoided are emoticons, arrows
consisting of dashes and greater than signs -->, etc..
- Provide keyboard shortcuts for links.
The "accesskey "
attribute of <LABEL>, <A>,
<CAPTION> and <LEGEND>
allows an author to associate a keyboard
shortcut with the phrase. For example, when associated with a link, it takes the user to
the associated document. <A accesskey="C"
href="doc.html">Press C to go to XYZ page</A>
- Front-load link phrases in lists.
Good Web Site Design Practices