About FAE: Rules Summary
Navigation & Orientation
- The page must contain exactly one
title element.
- The
title element must have text content.
- The page must contain at least one
h1 element.
- The page should contain no more than two
h1 elements.
- The text content of each
h1 element should match all or part of the title content.The matching algorithm for this rule includes the alt text of any img elements the h1 may contain, and ignores case, punctuation and spacing in the text content of both the title and h1 elements.
- Each
h1 element must have text content.Attribution of text content to an h1 element includes the alt attribute values of any img elements it may contain, inserted in document order.
- Each
h1 element should have text content exclusive of the alt text of any img elements it contains.
- Subheading elements that follow the last
h1 should be properly nested.Subheading elements should be used without skipping levels when descending through the sublevels h2..h6. For example, an h2 element should follow an h1 element, an h3 element should follow an h2 element, and so on. Note that this rule does not apply to subheadings of the same level (for example, an h3 may follow another h3), or when ascending the hierarchy (an h2 may follow an h4).
- Each subheading element (
h2..h6) must have text content.Attribution of text content to a subheading element includes the alt attribute values of any img elements it may contain, inserted in document order.
- Each subheading element (
h2..h6) should have text content exclusive of the alt text of any img elements it contains.
- Each
ul or ol element that precedes the last h1 element and appears to be a navigation bar should be immediately preceded by a heading element, preferably an h2.FAE considers a ul or ol element to be a navigation bar if it appears to be a navigation list, defined recursively as follows. A navigation list is a ul or ol element that contains one or more "item with link" li elements, and no more than one li element that does not qualify as an "item with link". An "item with link" is defined as an li element that contains either a single text link (a element) or a link followed by a nested navigation list, optionally preceded by a heading element.
- Each
map element that precedes the last h1 element and appears to be a navigation bar should be immediately preceded by a heading element, preferably an h2FAE considers a map element to be a navigation bar if it contains one or more area elements.
- Each
area element should have a redundant text link (a element) with matching href value.
- Each
input element with type=text | password | checkbox | radio | file and each select and textarea element must either be referenced by the for attribute of a label element via its id attribute, or have a title attribute.Label referencing is implemented by setting the label element's for attribute value equal to that of the form control's id attribute.
- Each
input element with type=button | submit | reset must have either a value attribute or a title attribute.
- Each
input element with type=image must have either an alt attribute or a title attribute.
- Each
label and legend element must have text content.
- Each page must have a
lang attribute on its html element whose value or initial subtag is a valid two-character language code.Valid two-character language codes are defined in the IANA Language Subtag Registry. If the lang attribute value is hyphenated, then the substring preceding the first hyphen is tested for validity.
To qualify as a data table, the table element must (a) contain at least two rows and two columns and (b) have or contain at least one of the following: a summary attribute; a caption element; a thead element; a th element; or a td element with a scope or headers attribute.
To qualify as a complex data table, the table element must (a) qualify as a data table and (b) contain any of the following: a thead element that contains two or more tr elements; a tr element with a td or th element with a rowspan or colspan attribute value greater than 1; a tr element that contains at least one td element and two or more th elements; two or more tr elements that contain only th elements; a tr element with a td or th element with a headers attribute value that contains more than two IDREFs.
- For each data table, the first cell in each column must be a
th element, and each row must contain at least one th element.
- Each data table must have a nonempty
summary attribute.
- The
summary attribute value for each data table on a page should be unique.Uniqueness comparisons are case-insensitive and performed on whitespace-normalized attribute values.
- Each
th element in a complex data table must have an id attribute whose value is unique relative to all ids on the page.
- Each
td element in a complex data table must have a headers attribute that references the id attributes of associated th elements.
- Each
accesskey attribute value on a page should be unique.
- Each
frame element must have a nonempty title attribute.
- The
title attribute value for each frame element within a frameset must be unique.Uniqueness comparisons are case-insensitive and performed on whitespace-normalized attribute values.
Text Equivalents
- Each
img element must have an alt attribute.
- Each
img element with an empty alt attribute should be removed; CSS techniques should be used instead.
- Each
img element with width or height less than 8 pixels should be removed; CSS techniques should be used instead.
- Each
area element must have an alt attribute.
Scripting
Focusable elements are primarily links and form controls. Specifically, they include the a element with an href attribute and/or a tabindex attribute with a value of 0 or greater, and the area, button, input, select and textarea elements.
- The
onclick attribute should not be used on elements that cannot accept keyboard focus.
- Each focusable element with an
onmouseover attribute should also have an onfocus attribute, and their associated event handlers should trigger the same or similar actions.
- Each focusable element with an
onmouseout attribute should also have an onblur attribute, and their associated event handlers should trigger the same or similar actions.
- The
onmouseover and onmouseout attributes should not be used on elements that cannot accept keyboard focus; use CSS techniques instead to provide the desired stylistic effects.
Styling
- The
font and center elements must not be used. Instead use structural markup with CSS for styling.
- The
b element must not be used for bold styling of text content. Instead use heading elements h1..h6 for heading text or the strong element for emphasizing words, phrases or sentences.
- The
i element must not be used to italicize text content. Instead use heading elements h1..h6 for heading text or the em element for emphasizing words, phrases or sentences.
- The
u element must not be used to underline text content. Instead use heading elements h1..h6 for heading text or the em or strong elements for emphasizing words, phrases or sentences.
- The
blink and marquee elements must not be used.Blinking or moving text causes accessibility problems for people with photosensitive epilepsy and visual impairments.
- Tables should be used only for organizing data in rows and columns. Use CSS instead of tables and nested tables to visually layout blocks of related content for graphical rendering.
The existence of deeply nested tables suggests that tables are being used for page layout. Nested tables can cause readability problems when a page is linearized.
HTML Standards
- Each page must include a DOCTYPE declaration to facilitate rendering and validation.
- The character encoding of each page should be specified within the value of the
content attribute (using charset=) on a meta element that also includes an http-equiv attribute set to "content-type".For example, if the character encoding is UTF-8, it could be specified in XHTML with: <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>