-
Notifications
You must be signed in to change notification settings - Fork 0
Accessible footnotes
This component provides a consistent, accessible way of handling footnotes across websites.
Project Lead: Eric Dunsworth (@EricDunsworth)
This component allows developers to easily embed footnotes into their Web pages, and helps to achieve WCAG 2.0 compliance when providing such footnotes.
The purpose of this component is to help ensure footnotes on Web pages conform to WCAG 2.0 requirements. Its main concept is to place footnotes in a definition list, within a dedicated section. A supporting plugin is used to enhance navigation, accessibility, and provide backwards compatibility to supported legacy browsers.
Throughout the web, many websites implement footnotes in inconsistent and/or inaccessible manners. This component aims to alleviate such issues on websites that implement WET.
Please refer to this section for guidance on how to implement this component.
Working examples of an implementation (based on this section's guidance) can be found on the following pages:
This section discusses how to link to footnotes.
Use the following code to link to a footnotes section.
<a href="#fnb">Footnotes</a>
Use the following code as a basis to link to a particular footnote.
<sup id="fnb1-ref"><a class="footnote-link" href="#fnb1"><span class="wb-invisible">Footnote </span>1</a></sup>
Note: The ID attributes of links to a multi-referenced footnote should contain an alphabetically-ordered letter just after the number (e.g. id="fnb2a-ref"
, id="fnb2b-ref"
, id="fnb2c-ref"
, etc) to make it possible to programmatically distinguish one referrer link from another.
This section explains how to set-up a dedicated footnotes section.
Use the following code as a basis to create the section:
<div class="wet-boew-footnotes" role="note"> <section> <h2 id="fnb" class="wb-invisible">Footnotes</h2> <dl> <!--PLACE FOOTNOTES HERE--> </dl> </section> </div>
This section explains how to create different types of footnotes, which are expected to be placed within the footnotes section.
This is a footnote that is referenced only once within a given page's content.
Use the following code as a basis to create a standard footnote:
<dt>Footnote 1</dt> <dd id="fnb1"> <p>Example of a standard footnote.</p> <p class="float-left"><a href="#fnb1-ref"><span class="wb-invisible">Return to footnote </span>1<span class="wb-invisible"> referrer</span></a></p> </dd>
This is a footnote that is referenced two or more times within a given page's content. By default, its return link should point to (and explicitly identify) the first reference to the footnote. If JavaScript support is available, a supporting plugin will automatically remove the explicit identifier in the return link text, in addition to managing the return link's destination when the footnote is accessed via a different reference from the content.
Use the following code as a basis to create a footnote that can be referenced by multiple pieces of content:
<dt>Footnote 2</dt> <dd id="fnb2"> <p>Example of a footnote being referenced by multiple pieces of content.</p> <p class="float-left"><a href="#fnb2a-ref"><span class="wb-invisible">Return to <span>first</span> footnote </span>2<span class="wb-invisible"> referrer</span></a></p> </dd>
Note 1: The href
attributes of return links in multi-referenced footnotes should always contain an "a" after the footnote number (e.g. href="#fnb2a-ref"
).
Note 2: The return link text of multi-referenced footnotes should always contain <span>first</span>
, to specifically denote their default destinations when JavaScript support isn't present.
Footnotes containing two or more paragraphs are supported. They can take the form of either a standard or multi-referenced footnote.
Use the following code as a basis to create a footnote containing multiple paragraphs:
<dt>Footnote 3</dt> <dd id="fnb3"> <p>Example of a footnote containing multiple paragraphs (first paragraph).</p> <p>Example of a footnote containing multiple paragraphs (second paragraph).</p> <p>Example of a footnote containing multiple paragraphs (third paragraph).</p> <p class="float-left"><a href="#fnb3-ref"><span class="wb-invisible">Return to footnote </span>3<span class="wb-invisible"> referrer</span></a></p> </dd>
If a WET 2.x implementation of this component is migrated into WET 3.x, the following HTML mark-up changes should be applied:
- ID attributes of footnote links are no longer placed on
<a>
elements; they should be now be placed on<sup>
elements (as of version 1.01 in WET 2.3) - Footnotes section's class name has changed from
footnotes-container
towet-boew-footnotes
- Footnotes section (or its
<div>
container) should be wrapped within a<section>
element - Footnote IDs are now declared directly on
<dd>
elements (instead of<dt>
elements) - Multi-referenced footnotes now use additional nested spans around the "first" text in their hidden return links (i.e.
first
now becomes<span>first</span>
) - Multi-paragraph footnotes no longer require a container
<div>
to render properly
This component's source code can be found within the following files under the WET repository:
The following issues are currently known to exist within this component:
- Print CSS may break in Opera (appears to be a general problem with the browser itself)
- HTML mark-up may change from version to version, breaking backwards-compatibility; long-term maintenance strategies should be considered
The following enhancements are slated to be implemented in future versions of this component:
- Update dummy content in working example pages
- Leverage placeholder selectors in SCSS (requires SASS 2.3.0 or higher; wasn't available in WET 3.0)
- Properly "reset" dynamic return links in multi-referenced footnotes upon getting clicked
- Fade-in/fade-out effect on highlighted footnotes via CSS3
transition
property (and jQuery for supported legacy browsers) - Optional footnote "pop-up"" feature (tentative)
The following consists of this component's full version history in both its current (WET 3.x) and previous (WET 2.x) incarnations.
This component's WET 3.x source file commit histories can be found below:
- History of jQuery plugin
- History of SCSS
- History of SCSS overrides for IE8
- History of SCSS overrides for IE7
The following table contains an overview of this component's WET 2.x history:
Version | Date released | Highlights |
---|---|---|
1.01 | 2012-03-02 |
IDs are now set directly on <sup> elements instead of <a> elements (see issue |
Increased space before footnotes container (spacer divs have been removed from example pages) | ||
Fixed broken links in certain example pages (see issue | ||
Corrected return link text typo in certain example pages (see issue | ||
Additional content paragraph removed from advanced example pages | ||
Dummy content in example pages has been updated | ||
1.0 | 2012-02-06 | Initial release |