Simple, accessible “more” links

Date: 20 July 2005
Author: Russ Weakley

The scenario

You have a series of introductory paragraphs on a page. You want to send users off to more detailed information at the end of each introductory paragraph. You could link the heading itself, but let’s assume that you or the client would prefer to use a variation of a “More” link at the bottom of each paragraph.

The problem

Phrases like “more” or “find out more” are not very informative (and possibly highly irritating) for screen reader users. Having a link read out as “more” gives them no idea what they will link off to. This is even more confusing if there are numerous instances of “more” links on the page.

A solution

CSS can be used to hide the full description of the link (from CSS-supporting browsers) while allowing older devices and screen readers to receive the entire content.

Without CSS applied

With CSS applied

How can it be achieved?

One method that can be used is to wrap a span around link information content that is important to screen readers, but unimportant to CSS supporting browsers.

More<span> about Worldwide Status of Human Rights</span>

Then, CSS can be used to “hide” this content. This can be done by setting the span to “position: absolute”, and then forcing it to sit off the left side of the screen using “left: -1000px”. A width is then set to make sure it doesn’t appear in the left side of the screen if extremely large font size is used – “width: 900px”.

span
{
	position: absolute;
	left: -1000px;
	width: 900px;
}

Why not simply use “display: none”

While using “display: none” seems simpler and easier, this method is not currently supported by many screen readers. For this reason, using absolute positioning to push the text off the screen is one preferred option.

Comments so far

  1. Dmitry D. Khlebnikov says:

    JFYI, the link to Florian’s solution is broken.