<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Accessibility Tips</title>
	<atom:link href="http://accessibilitytips.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://accessibilitytips.com</link>
	<description>A collection of tips, guidance and practical suggestions in developing accessible websites</description>
	<lastBuildDate>Sat, 02 May 2009 05:07:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Using fieldsets outside of forms</title>
		<link>http://accessibilitytips.com/2009/04/30/using-fieldsets-outside-of-forms/</link>
		<comments>http://accessibilitytips.com/2009/04/30/using-fieldsets-outside-of-forms/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 04:59:07 +0000</pubDate>
		<dc:creator>Isofarro</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[accessibility]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[buttons]]></category>
		<category><![CDATA[fieldsets]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[gallery]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[input]]></category>
		<category><![CDATA[interactive]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[legend]]></category>
		<category><![CDATA[markup]]></category>
		<category><![CDATA[progressive enhancement]]></category>
		<category><![CDATA[rich media]]></category>
		<category><![CDATA[screenreaders]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://accessibilitytips.com/?p=27</guid>
		<description><![CDATA[The focus on using the most appropriate markup in JavaScript enhanced pages has raised an interesting problem about the use of form elements outside of a form. And using a fieldset to group these elements together is proving to be a very useful way of making them accessible.
Using form elements outside of a form
Why would [...]]]></description>
			<content:encoded><![CDATA[<p>The focus on using the most appropriate markup in JavaScript enhanced pages has raised an interesting problem about the use of form elements outside of a <code>form</code>. And using a <code>fieldset</code> to group these elements together is proving to be a very useful way of making them accessible.</p>
<h3>Using form elements outside of a form</h3>
<p>Why would form elements appear outside of a <code>form</code>? Our typical use-case is an image carousel. In bare plain markup this is nothing more than an list of linked image elements. When we introduce JavaScript we can turn this plain list into an animated photo-gallery. A carousel of images a visitor can either let auto-scroll, or offer the visitor the option of manually scrolling through the images.</p>
<h3>The practical use of image carousels</h3>
<p>One particularly elegant use of scrollable image carousels is Flickr&#8217;s picture sorting tool. It allows a visitor to sort his uploaded photographs into sets and then annotate them either individually or in groups. The image carousel is a powerful metaphor for navigating through potentially thousands of images. </p>
<p>Another top notch demonstration of an image carousel is Apple&#8217;s Coverflow implementation which first surfaced as a means of scanning album covers in it&#8217;s much regarded iTunes media application.</p>
<h3>Using the appropriate markup</h3>
<p>It is clear we need buttons for navigating forwards and backwards through our list of images. Many developers use anchor links styled to emulate buttons, but a better method is to use a <code>button</code> element. The <code>button</code> element offers all the functionality of the simple link, plus you get the default button states for free. So semantically, a <code>button</code> element is the appropriate element to use as a button.</p>
<h3>Is it valid?</h3>
<p>The immediate retort I hear is that form elements only belong inside a <code>form</code>, because otherwise it isn&#8217;t valid HTML. Surprisingly, the HTML 4.01 Strict Recommendation doesn&#8217;t impose this limitation at all. Form elements are not limited to being children of a <code>form</code>. The <abbr title="Document Type Definition">DTD</abbr> also doesn&#8217;t impose this limitation, and an English translation of it goes something like this:</p>
<blockquote cite="http://www.w3.org/TR/REC-html40/sgml/dtd.html">
<p>All input related-elements (<code>input</code>, <code>select</code>, <code>textarea</code>, <code>label</code>, <code>button</code>) belong to a group called &#8216;Form Controls&#8217;. The Form Control group is just a subset of inline elements.</p>
<p>This means that anywhere an inline element can validly go, so too can a form control element.</p>
<p>There are some exceptions, for example you can&#8217;t place a form control inside of a <code>button</code> element.</p>
</blockquote>
<p>What is even more surprising is that the <code>fieldset</code> element also doesn&#8217;t have to be inside a <code>form</code>.</p>
<p>I suspect that allowing form elements and fieldsets to exist validly outside of a form isn&#8217;t an error by the HTML Working Group, but a particularly insightful forward thinking about the various alternate uses of these form input elements.</p>
<h3>Multiple video-player like widgets</h3>
<p>Many rich media pages on the web contain not just one single image carousel, but sometimes more than one. They also can contain similar enhanced widgets like video players, audio players, animation. </p>
<p>HTML5&#8217;s Canvas will probably be used as a means of visualising realtime data, like showing the spread of &#8220;swine flu&#8221; across the globe over time (with time annotated text-equivalents). It would be immensely useful to be able to move forward and backward through time and understand how the infection spreads at each time point. We would need buttons to allow a visitor to do that.</p>
<h3>Multiple remote controls</h3>
<p>We quickly land in a situation where we may have more than one set of video-player controls, each one controlling a different widget or collection of content. (Much like every living room having multiple remote controls, and it&#8217;s a perennial game to remember which remote controls which device).</p>
<p>On the web we run into a two fold problem for screen reader users in particular:</p>
<ul>
<li>It is difficult to determine which set of video player controls controls which group of content. Being adjacent to the actual content is sometimes not sufficient</li>
<li>In forms mode these buttons are perceivable to the visitor, and without the surrounding context it is difficult to understand the purpose of these buttons.</li>
</ul>
<h3>The forms mode issue</h3>
<p>It could be argued that buttons outside of forms should not be accessible in forms mode, but I find that argument has little merit because the buttons on the page still have a purpose to the user, and that equivalent should still be available to the screenreader user.</p>
<p>Otherwise we are not providing an equivalent experience. The interaction with video-player like controls doesn&#8217;t automatically mean that the output is visual only. We must not make that mistake.</p>
<h3>Grouping <code>button</code>s by <code>fieldset</code>s</h3>
<p>To improve the accessibility of groups of buttons we wrap each group of <code>button</code>s in its own <code>fieldset</code>. And every <code>fieldset</code> has to have a <code>legend</code> element that provides a succinct and short description of the collection of buttons.</p>
<h3>Carefully chosen <code>legend</code></h3>
<p>The <code>legend</code> text must be carefully thought out. It must be long enough to remove doubt about the purpose of the set of buttons that follow, but short enough for it not to be frustrating when prefixed before the description of every button.</p>
<h3>Dynamic <code>legend</code> text</h3>
<p>But at this point, the <code>button</code>s only make sense in a JavaScript context because the behaviour depends on JavaScript being available. Which means those buttons should added to the page by JavaScript, and consequently we can do the same for the <code>legend</code> and <code>fieldset</code> elements.</p>
<p>This adds another dimension to the <code>legend</code> text; it can be altered on the fly by JavaScript through a corresponding set of JavaScript events.</p>
<p>For example, when the visitor first focuses on an element inside of a <code>fieldset</code>, the default <code>legend</code> text can be an appropriate description of the purpose of these <code>button</code> controls. As the visitor then interacts with the <code>button</code>s the <code>legend</code> can be updated on the fly to present more pertinent information, like the date of the currently displayed epidemic growth map, or some state information like the user is seeing the <samp>first four pictures of twenty</samp>.</p>
<h3>Building on previous ideas</h3>
<p><a href="http://blog.ginader.de/">Dirk Ginader</a> used this technique of updating <code>legend</code> text on the fly very successfully in Yahoo Finance&#8217;s <a href="http://developer.yahoo.net/blog/archives/2009/01/accessible_converter.html">accessible currency converter</a>.</p>
<h3>Acknowledgements</h3>
<p>Once again, as with so many other fine accessibility innovations at Yahoo, the credit and initial idea of using <code>fieldset</code>s in this way was suggested by fellow Yahoo colleague, <a  href="http://twitter.com/DesignedByBlind">Artur Ortega</a>, one of the real practical experts in web accessibility. He is a fertile source of excellent and creative ideas of improving the accessibility of interactive and rich media components. A true gem of an engineer.</p>
]]></content:encoded>
			<wfw:commentRss>http://accessibilitytips.com/2009/04/30/using-fieldsets-outside-of-forms/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Aiding keyboard usage with :focus cues</title>
		<link>http://accessibilitytips.com/2009/02/09/aiding-keyboard-usage-with-focus-cues/</link>
		<comments>http://accessibilitytips.com/2009/02/09/aiding-keyboard-usage-with-focus-cues/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 16:34:08 +0000</pubDate>
		<dc:creator>Isofarro</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[accessibility]]></category>
		<category><![CDATA[active]]></category>
		<category><![CDATA[aid]]></category>
		<category><![CDATA[background]]></category>
		<category><![CDATA[colour]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[cue]]></category>
		<category><![CDATA[fields]]></category>
		<category><![CDATA[focus]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[input]]></category>
		<category><![CDATA[keyboard]]></category>
		<category><![CDATA[links]]></category>
		<category><![CDATA[movement]]></category>
		<category><![CDATA[navigation]]></category>
		<category><![CDATA[order]]></category>
		<category><![CDATA[outline]]></category>
		<category><![CDATA[pseudo-class]]></category>
		<category><![CDATA[specificity]]></category>
		<category><![CDATA[visited]]></category>
		<category><![CDATA[visual]]></category>

		<guid isPermaLink="false">http://www.accessibilitytips.com/?p=26</guid>
		<description><![CDATA[Knowing where the keyboard focus is at any time is critical for keyboard users to navigate through and to a particular page. It&#8217;s not only screen reader users who don&#8217;t use a mouse, many disabilities leave the keyboard as the only viable way to interact with a computer whilst still using a monitor.
The dotted outline [...]]]></description>
			<content:encoded><![CDATA[<p>Knowing where the keyboard focus is at any time is critical for keyboard users to navigate through and to a particular page. It&#8217;s not only screen reader users who don&#8217;t use a mouse, many disabilities leave the keyboard as the only viable way to interact with a computer whilst still using a monitor.</p>
<p>The dotted outline on links is the main visual cue to where the current keyboard focus is on a page at any one time. By tabbing or shift-tabbing through the document the focus is set on the next or previous focusable elements.</p>
<p>This focus rectangle is removed because it makes things look unsightly, but they serve a very useful purpose. And that purpose is critical for a keyboard user to find their way through a page.</p>
<p>So it is essential that there is a clear focus indicator, both on links and form fields. Clear enough that a visitor looking at the page for the first time can spot where the keyboard focus is as quickly as possible.</p>
<p>We do this though CSS&#8217; <code>:focus</code> pseudo-class on the target element. For example, to change the background colour of a link when it receives focus we use the following:</p>
<pre><code>
a:focus {
    background-color: #aaf;
}
</code></pre>
<p>We can do the same with input fields:</p>
<pre><code>
input:focus {
    background-color: #aaf;
}
</code></pre>
<p>In each case, the background colour of the focusable element changes colour when it received focus, and that background colour changes back when the element loses focus. By making this background color change enough it is possible for a visitor to find the focused region of the page.</p>
<p>The same argument can also apply to when links are active, using the <code>:active</code> pseudo-class. An active link is one that is in the process of being clicked, so for example when the mouse-button is being held down when over a link and just about to be lifted, this link is seen to be active. Using this active pseudo-class to style an element that is active provides a visible cue about what is going to happen.</p>
<pre><code>
a:active { color: red; }
</code></pre>
<p>And, we often overlook the usefulness of setting a visited link colour (with the <code>:visited</code> pseudo-class). This proves very helpful in distinguishing destinations a visitor has already been to, thus simplifying the choice of which link to try next.</p>
<pre><code>
a:visited { color: purple; }
</code></pre>
<p>A common pitfall is that certain browsers need these pseudo-classes in a specific order so as not to have one pseudo-class override the styles of another. The safest pseudo-class order is <code>:link</code>, <code>:visited</code>, <code>:hover</code>, <code>:focus</code> and then <code>:active</code>:</p>
<pre><code>
a:link { color: blue; }
a:visited { color: purple; }
a:hover { color: magenta; }
a:focus { color: magenta; }
a:active { color: red; }
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://accessibilitytips.com/2009/02/09/aiding-keyboard-usage-with-focus-cues/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Punctuating text-equivalents</title>
		<link>http://accessibilitytips.com/2009/01/02/punctuating-text-equivalents/</link>
		<comments>http://accessibilitytips.com/2009/01/02/punctuating-text-equivalents/#comments</comments>
		<pubDate>Fri, 02 Jan 2009 19:09:33 +0000</pubDate>
		<dc:creator>Isofarro</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[accessibility]]></category>
		<category><![CDATA[alt]]></category>
		<category><![CDATA[alt attribute]]></category>
		<category><![CDATA[content]]></category>
		<category><![CDATA[fallback]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[meaning]]></category>
		<category><![CDATA[null alt]]></category>
		<category><![CDATA[screenreaders]]></category>
		<category><![CDATA[text]]></category>
		<category><![CDATA[text-equivalent]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.wp-dev.isolutia.com/?p=22</guid>
		<description><![CDATA[When we have an image on a web page and that image conveys content, then we know it is important to provide a text equivalent of the content that image offers. The most typical (but not only) way of doing this is to add the text equivalent content in an alt attribute on that image. [...]]]></description>
			<content:encoded><![CDATA[<p>When we have an image on a web page and that image conveys content, then we know it is important to provide a text equivalent of the content that image offers. The most typical (but not only) way of doing this is to add the text equivalent content in an <code>alt</code> attribute on that image. The text content of this attribute should convey the equivalent information that the image contains.</p>
<h3>Altered meaning</h3>
<p>When a screen reader user, for example, reads the page all of the images are replaced with their text equivalents, and the resulting block of text is what the visitor gets. The two conceptually independent sources of text are merged into one block.</p>
<p>We need to consider the state of the merged content when that happens. Is the content still accurate, is the meaning and intention still clear.</p>
<p>When applying text equivalents to images we sometimes fail to consider how this new text will change the existing adjacent text content. The implications of this are:</p>
<ul>
<li>the content is not understandable</li>
<li>the content becomes unintelligible</li>
<li>the content changes meaning</li>
<li>the content loses it&#8217;s accuracy</li>
<li>the content becomes invalid or incorrect</li>
<li>the content conveys a message that was not intended</li>
</ul>
<h3>Unintentional humour</h3>
<p>Sometimes the end result is humourous. The late Dr. Alan Flavell in his notes on <a href="http://web.archive.org/web/20060518005758/http://ppewww.ph.gla.ac.uk/~flavell/alt/alt-text.html#howlers">alt attribute howlers</a> noted a real world example of two adjacent images, one was a picture of the page author in a canoe, and the other was a picture of a herd of buffalo. Two images of what interested the page author, and both with decent text equivalents. Unfortunately, in context, the block of text became: <q>Photo of a buffaloes in the water canoeing</q>, which was not quite the intended meaning.</p>
<p>Some simple punctuation would have avoided this unintentional joke.</p>
<h3>Punctuating or extra markup</h3>
<p>For this reason it is important to consider punctuating an image&#8217;s text-equivalent. A well-thought out comma or full stop, or parenthesis may be enough to protect the meaning and intention of existing text content from being changed when an image&#8217;s text equivalent is inserted where an image used to be.</p>
<p>If the text-equivalent can&#8217;t be written in a way that doesn&#8217;t hinder the meaning of the text content around it, then we need to consider moving the text-equivalent elsewhere; whether that means moving the image markup somewhere else, or leaving the image in place, and moving the text-equivalent to a more suitable spot (by using a null <code>alt</code> attribute and then inserting the text as a block of markup in the page).</p>
]]></content:encoded>
			<wfw:commentRss>http://accessibilitytips.com/2009/01/02/punctuating-text-equivalents/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Avoiding redundant title attributes</title>
		<link>http://accessibilitytips.com/2008/04/14/avoiding-redundant-title-attributes/</link>
		<comments>http://accessibilitytips.com/2008/04/14/avoiding-redundant-title-attributes/#comments</comments>
		<pubDate>Tue, 15 Apr 2008 04:01:04 +0000</pubDate>
		<dc:creator>Isofarro</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[accessibility]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[duplicate]]></category>
		<category><![CDATA[links]]></category>
		<category><![CDATA[redundant]]></category>
		<category><![CDATA[screen magnifiers]]></category>
		<category><![CDATA[screenreaders]]></category>
		<category><![CDATA[title]]></category>
		<category><![CDATA[understanding]]></category>

		<guid isPermaLink="false">http://www.wp-dev.isolutia.com/?p=20</guid>
		<description><![CDATA[The title attribute is one of the overlooked attributes in the HTML collection. It&#8217;s most often used to mark up abbreviations with their expanded forms. Sometimes it&#8217;s used to rout around Internet Explorer&#8217;s tooltip behaviour of image alt attributes.
The attribute itself is meant to supply optional supplementary information. The most beneficial example is in conjunction [...]]]></description>
			<content:encoded><![CDATA[<p>The <code>title</code> attribute is one of the overlooked attributes in the <abbr title="Hypertext Markup Language">HTML</abbr> collection. It&#8217;s most often used to mark up abbreviations with their expanded forms. Sometimes it&#8217;s used to rout around Internet Explorer&#8217;s tooltip behaviour of image <code>alt</code> attributes.</p>
<p>The attribute itself is meant to supply optional supplementary information. The most beneficial example is in conjunction with the <code>abbr</code> element, providing the knowing user with an expansion of an abbreviation. A second practical example is using it with forms to provide additional relevant information. (We also looked at <a href="http://www.accessibilitytips.com/2008/03/25/using-titles-on-form-fields/">using titles with form fields</a>.)</p>
<p>But there are many examples of a title attribute being used to provide the same information that&#8217;s already available and accessible. The most common example is links, especially in navigation you see the following piece of markup:</p>
<pre title="An example of a redundant title.">
<code>
&lt;a href="/sitemap/" title="Visit our sitemap"&gt;Sitemap&lt;/a&gt;
</code>
</pre>
<p>Here the title attribute is just a plain duplication of the link text. Sure, it may have two extra words of <q>Visit our</q> which don&#8217;t appear elsewhere, but this explains what a link does, and is just as redundant and irrelevant to site visitors. Most of them would need to have understood what a hypertext link is and what it does before even arriving at your site. Its just not necessary.</p>
<p>The extra text is a variant of the <a href="http://www.w3.org/QA/Tips/noClickHere"><q>click here</q> problem</a>, it explains about how to activate a text link rather than succinctly describing the destination.</p>
<p>Some users have their screenreaders configured to read out both the link text and the title attribute. In this case, the above link would read out &#8220;Sitemap visit our sitemap&#8221;, and either prefix that with the word &#8220;Link&#8221;, or switch to a different voice to indicate the presence of a link. The duplication slows down the reading of the page, and is <a href="http://www.paciellogroup.com/blog/?p=37#comment-944">an unnecessary hiccup</a>.</p>
<p>There is very little benefit to the title attribute in this code example. It is better, accessibility wise, to just drop the title attribute altogether in this instance.</p>
<h2>Creating barriers for screen magnifiers</h2>
<p>Screen magnifiers have the tendancy to make all title attributes appear when they have a titled element within the view of the magnifier. Any title, be it on a div, or a header, or a paragraph or a link, will appear in a tooltip like fashion. A significant use of titles may distract a screen magnifier user, even prevent them from seeing a particular piece of content because it has been obstructed by a tooltip.</p>
<p>There&#8217;s just no positive accessibility benefit to using a <code>title</code> attribute to duplicate existing content. The <code>title</code> attribute. when it offers no extra value, hinders more than it helps.</p>
]]></content:encoded>
			<wfw:commentRss>http://accessibilitytips.com/2008/04/14/avoiding-redundant-title-attributes/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Using titles on form fields</title>
		<link>http://accessibilitytips.com/2008/03/25/using-titles-on-form-fields/</link>
		<comments>http://accessibilitytips.com/2008/03/25/using-titles-on-form-fields/#comments</comments>
		<pubDate>Wed, 26 Mar 2008 05:29:49 +0000</pubDate>
		<dc:creator>Isofarro</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[accessibility]]></category>
		<category><![CDATA[form fields]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[input]]></category>
		<category><![CDATA[labels]]></category>
		<category><![CDATA[progressive enhancement]]></category>
		<category><![CDATA[screen magnifiers]]></category>
		<category><![CDATA[screenreaders]]></category>
		<category><![CDATA[title]]></category>
		<category><![CDATA[tooltips]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[visual cues]]></category>

		<guid isPermaLink="false">http://www.wp-dev.isolutia.com/?p=18</guid>
		<description><![CDATA[Form elements provide a decent range of accessibility options: label elements match up label text with their corresponding field elements, fieldsets group together similar input elements and the legend provides a succinct title for these groupings of fields. With those elements alone, forms are fairly simple to mark up in an accessible manner.
The difficulty comes [...]]]></description>
			<content:encoded><![CDATA[<p>Form elements provide a decent range of accessibility options: <code>label</code> elements match up label text with their corresponding field elements, <code>fieldset</code>s group together similar input elements and the <code>legend</code> provides a succinct title for these groupings of fields. With those elements alone, forms are fairly simple to mark up in an accessible manner.</p>
<p>The difficulty comes when you need to add some supplementary information to an input field, or you need to provide a text equivalent to a non-text way of labelling a form field. Sometimes having one label per form field is a little messy, and can create accessibility problems when a visual requirement needs to be met.</p>
<p>The <code>title</code> attribute is mostly overlooked and underused. It is little known, but <a href="http://www.paciellogroup.com/resources/articles/WE05/forms.html">screenreaders read out the <code>title</code> attribute on form fields</a> when in forms mode, even if titles are not read out by default. It&#8217;s an exception to the general configuration.</p>
<h2>Multiple choice questions</h2>
<p>Many surveys offer a list of multiple choice questions where the possible answers are the same for each question. This type of form is normally marked up in a tabular-looking fashion, where the question is a row header, and the possible answers are labeled by a column header.</p>
<p>Marking this up as a table may be the correct semantic way, but the implicit association is not available to a screenreader in forms mode. The only elements that are available in forms mode are form elements (and their attributes). Thus, a form with a tabular structure needs additional markup to make it accessible to screenreader users.</p>
<h3>Multiple labels, one per form field</h3>
<p>One downside of <code>label</code>s is that one <code>label</code> can only be associated with one input field, so it proves a challenge to markup such a form without resorting to duplicate labels which then need to be <a href="http://www.accessibilitytips.com/2008/03/04/positioning-content-offscreen/" title="The right way to hide content from view but not from screenreaders.">hidden from view</a> (and creating a unique <code>id</code> to map each label to its corresponding input field).</p>
<h3>Implying column and row headings</h3>
<p>Hiding most of the form labels brings another problem to the fore. When column and row headers are used visually to label a field it is <em>visually</em> fairly obvious that a relationship applies horizontally or vertically. There&#8217;s a visual cue going on, and sighted people grok this cue almost immediately.</p>
<p>Unfortunately, this cue fails when the entire table cannot be seen in one go. People using screen magnifiers, or very large text sizes, only see a portion of this tabular form. They may not be able to make the visual connection because the column or row header may not be within the viewing region of the screen magnifier when the focus is on a particular form element. The further separated the form element is from its column and row headers, the more difficult it is for the screen magnifier user to figure out what information is being requested by the current form field. Scanning to find the column and row headers for a form field is prone to error, and makes the form more difficult to fill out.</p>
<h3>Title attribute as a text equivalent</h3>
<p>The overlooked <code>title</code> attribute provides a neat solution to this problem. Screenreaders will read out the <code>title</code> attribute on form elements in forms mode. Every form field with a <code>title</code> has a label that can explicitly identify a particular form field.</p>
<p>Screen magnifiers have the feature of displaying the title attribute when an element receives focus, so when a form field has focus, the <code>title</code> is presented as a tooltip adjacent to the form element. This alleviates the problem of the screen magnifier user scrolling around to determine the purpose of a form field.</p>
<h2>Supplementary form field information</h2>
<p>Another use of a form field <code>title</code> attribute is to provide supplementary information to a particular field. This can be, for example, a more descriptive variant of an existing <code>label</code>, a reminder that a field is mandatory, an example of a valid input (like the format of a date), or brief help text.</p>
<p>This supplementary information appears as a tooltip when that input field receives focus. This tooltip can be progressively enhanced, or stylistically improved, using JavaScript. The Content Management System <a href="http://plone.org/">Plone</a> makes excellent use of the title attribute and JavaScript to present a visual cue for each for field on a form. This makes a form a little more usable, with very little cost, and that content is available to screenreader users too.</p>
<h2>More accessible and usable forms</h2>
<p>The <code>title</code> attribute offers an extra avenue for associating text to a form field. It should not be used as the first means of associating a label text with a corresponding form field. In situations where supplementary information is useful, the <code>title</code> attribute is helpful. In some situations where using <code>label</code>s results in masses of duplicated and redundant text that need to be hidden offscreen, it makes sense to use a <code>title</code> attribute instead. As with all accessibility problems, use the solution that best serves the needs of your visitors.</p>
]]></content:encoded>
			<wfw:commentRss>http://accessibilitytips.com/2008/03/25/using-titles-on-form-fields/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Avoid skipping header levels</title>
		<link>http://accessibilitytips.com/2008/03/10/avoid-skipping-header-levels/</link>
		<comments>http://accessibilitytips.com/2008/03/10/avoid-skipping-header-levels/#comments</comments>
		<pubDate>Tue, 11 Mar 2008 01:39:07 +0000</pubDate>
		<dc:creator>Isofarro</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[accessibility]]></category>
		<category><![CDATA[headers]]></category>
		<category><![CDATA[navigation]]></category>
		<category><![CDATA[outline]]></category>
		<category><![CDATA[repurpose]]></category>
		<category><![CDATA[screenreaders]]></category>
		<category><![CDATA[semantics]]></category>
		<category><![CDATA[skip]]></category>
		<category><![CDATA[structure]]></category>

		<guid isPermaLink="false">http://www.wp-dev.isolutia.com/?p=16</guid>
		<description><![CDATA[There have been various discussions in web development circles about whether we can skip heading levels for various reasons, including structural consistency.
Repurposing headers
One of the benefits of a proper and consistent heading structure in an HTML page is that they can be repurposed to improve access to the content. For example, the heading structure could [...]]]></description>
			<content:encoded><![CDATA[<p>There have been various discussions in web development circles about whether we can skip heading levels for various reasons, including structural consistency.</p>
<h2>Repurposing headers</h2>
<p>One of the benefits of a proper and consistent heading structure in an HTML page is that they can be repurposed to improve access to the content. For example, the heading structure could be extracted into a Table of Contents or an outline, providing in-page navigation or overview.</p>
<p>Screenreader users have header navigation, which allows them to go through the document on a header by header basis. It&#8217;s not perfect, but its very useful to find a piece of information quickly. The screenreader exposes a means of navigation to next or previous headers of a particular level, so a visitor can, for example, jump to the next second-level heading. So far there&#8217;s no indication of what header levels are available unless the user enquires.</p>
<h2>Barriers in skipping headers</h2>
<p>This means that if heading levels are skipped they may not be found by a screen reader user. For example, if a screenreader user is navigating down the second level headings (<code>h2</code>), and finds one that comes close to what he&#8217;s looking for, he may elect to navigate through the third level headings(<code>h3</code>). If this level is skipped in the header structure, the user will be informed that there are no third level headings. Without third level headings, the expectation is that there will be no fourth, fifth or sixth level headings there either. So those headings will typically not be found by a screenreader user.</p>
<p>Skipping a header level makes navigating by headers less usable for screenreader users.</p>
]]></content:encoded>
			<wfw:commentRss>http://accessibilitytips.com/2008/03/10/avoid-skipping-header-levels/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Signpost forms with headers</title>
		<link>http://accessibilitytips.com/2008/03/10/signpost-forms-with-headers/</link>
		<comments>http://accessibilitytips.com/2008/03/10/signpost-forms-with-headers/#comments</comments>
		<pubDate>Tue, 11 Mar 2008 01:04:40 +0000</pubDate>
		<dc:creator>Isofarro</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[accessibility]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[headers]]></category>
		<category><![CDATA[navigation]]></category>
		<category><![CDATA[screenreaders]]></category>
		<category><![CDATA[signpost]]></category>

		<guid isPermaLink="false">http://www.wp-dev.isolutia.com/?p=14</guid>
		<description><![CDATA[The typical websites of today commonly have small forms in various locations on the page. These forms could be logins, subscribing to mailing lists, site search, blog comment form; they are ubiquitous because they tend to cover important use cases on a site.
It makes sense to inform screenreader users of these forms &#8211; particularly login [...]]]></description>
			<content:encoded><![CDATA[<p>The typical websites of today commonly have small forms in various locations on the page. These forms could be logins, subscribing to mailing lists, site search, blog comment form; they are ubiquitous because they tend to cover important use cases on a site.</p>
<p>It makes sense to inform screenreader users of these forms &#8211; particularly login and search, because they form an important part of getting things done on the site, or navigating to a personalised part of the site.</p>
<p>For that reason, preface all of these forms with a header. This allows screenreader users to use headers as a way of navigating all the elements in the page. Make the header text descriptive, for example &#8220;Login to your account&#8221;, or &#8220;Search this site&#8221;. It would be better to integrate these headings as part of the design, but they can be <a href="http://www.accessibilitytips.com/2008/03/04/positioning-content-offscreen/">hidden by positioning it off-left</a> if needed.</p>
<p>It&#8217;s more natural for this heading is placed before the start of the form, outside the opening <code>form</code> tag. That way a screenreader user can find the relevant header in heading navigation mode, and when they switch back to the normal page navigation mode the first thing immediately after the header is the form.</p>
<p>Ensure that the heading level makes sense in the document structure, and <a href="http://www.accessibilitytips.com/2008/03/10/avoid-skipping-header-levels/">don&#8217;t skip a heading level</a>. Use an <code>h2</code> header for forms that appear before the <code>h1</code> header; there ideally should be only one <code>h1</code> header per page.</p>
<h3>Related info</h3>
<ul>
<li><a href="http://www.youtube.com/watch?v=AmUPhEVWu_E">YouTube: Importance of HTML headings for accessibility</a>: shows how useful headers can be as a way of navigating a page of content in a screenreader (JAWS), and the difference when headers are not marked up.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://accessibilitytips.com/2008/03/10/signpost-forms-with-headers/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Deciding when display: none is appropriate</title>
		<link>http://accessibilitytips.com/2008/03/05/deciding-when-display-none-is-appropriate/</link>
		<comments>http://accessibilitytips.com/2008/03/05/deciding-when-display-none-is-appropriate/#comments</comments>
		<pubDate>Thu, 06 Mar 2008 01:19:53 +0000</pubDate>
		<dc:creator>Isofarro</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[accessibility]]></category>
		<category><![CDATA[display]]></category>
		<category><![CDATA[display: none]]></category>
		<category><![CDATA[dropdown]]></category>
		<category><![CDATA[dynamic]]></category>
		<category><![CDATA[enhancement]]></category>
		<category><![CDATA[hide content]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[menu]]></category>
		<category><![CDATA[progressive enhancement]]></category>
		<category><![CDATA[screenreaders]]></category>

		<guid isPermaLink="false">http://www.wp-dev.isolutia.com/?p=12</guid>
		<description><![CDATA[It&#8217;s common knowledge that screenreaders won&#8217;t read out content styled with display: none, but that doesn&#8217;t mean content should not be styled this way. There are times when it is appropriate to style content this way, but we need to be careful.
Progressive enhancement with display: none
Core content should never be styled with display: none when [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s common knowledge that screenreaders won&#8217;t read out content styled with <code>display: none</code>, but that doesn&#8217;t mean content should not be styled this way. There are times when it is appropriate to style content this way, but we need to be careful.</p>
<h2>Progressive enhancement with <code>display: none</code></h2>
<p>Core content should never be styled with <code>display: none</code> when JavaScript is not available. When JavaScript is enabled, it can hide content using <code>display: none</code> as long as there is an accessible means of reaching that content.</p>
<p>There are advantages to using <code>display: none</code>. We can make a page cleaner and easier to understand for screenreader users by hiding chunks of content that are not absolutely essential to be always available. And by having an accessible means of displaying that content, the screenreader user can chose to make that content available and read.</p>
<h2>Drop-down navigation</h2>
<p>A typical scenario of when <code>display: none</code> is appropriate is sub navigation in a drop-down menu. A screenreader user can then quickly skip through the top-level navigation items, or he can activate one of them, undoing the <code>display: none</code> on the sub navigation, and then navigate into that top-level&#8217;s sub navigation.</p>
<p>The benefit for the screenreader user here is that they are not forced to wade through all the links of a navigation bar. They can deal with the navigation in discrete and easier to understand chunks of links. It makes a difference offering links in groups of seven, rather than expose the screenreader user to all 150 plus links in the navigation.</p>
]]></content:encoded>
			<wfw:commentRss>http://accessibilitytips.com/2008/03/05/deciding-when-display-none-is-appropriate/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Avoiding visibility hidden</title>
		<link>http://accessibilitytips.com/2008/03/05/avoiding-visibility-hidden/</link>
		<comments>http://accessibilitytips.com/2008/03/05/avoiding-visibility-hidden/#comments</comments>
		<pubDate>Wed, 05 Mar 2008 21:06:16 +0000</pubDate>
		<dc:creator>Isofarro</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[accessibility]]></category>
		<category><![CDATA[hidden]]></category>
		<category><![CDATA[hide content]]></category>
		<category><![CDATA[offscreen]]></category>
		<category><![CDATA[screenreaders]]></category>
		<category><![CDATA[viewport]]></category>
		<category><![CDATA[visibility]]></category>

		<guid isPermaLink="false">http://www.wp-dev.isolutia.com/?p=10</guid>
		<description><![CDATA[Hiding content from view with visibility: hidden in many cases prevents the screenreader from reading the content, so content styled this way is inaccessible. This technique is not appropriate for hiding content on screen because no screenspace is saved by styling this way &#8211; the visitor is left looking at a blank region the size [...]]]></description>
			<content:encoded><![CDATA[<p>Hiding content from view with <code>visibility: hidden</code> in many cases prevents the screenreader from reading the content, so content styled this way is inaccessible. This technique is not appropriate for hiding content on screen because no screenspace is saved by styling this way &#8211; the visitor is left looking at a blank region the size of the hidden content.</p>
<p>In a number of cases <code>visibility: hidden</code> is used in conjunction with positioning the content offscreen (<code>position: absolute; left: -999em;</code>). This is unnecessary since positioning content off the viewport is sufficient to hide the content, and the <code>visibility: hidden</code> makes the content unavailable to screen readers.</p>
<p>There&#8217;s no reason to use <code>visibility: hidden</code>. Positioning the content offscreen is safer and has far less accessibility implications. If you fee that <code>visibility: hidden</code> is appropriate for your requirements, I strongly recommend revisiting the requirement and finding an altogether different solution.</p>
]]></content:encoded>
			<wfw:commentRss>http://accessibilitytips.com/2008/03/05/avoiding-visibility-hidden/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Providing link text</title>
		<link>http://accessibilitytips.com/2008/03/04/providing-link-text/</link>
		<comments>http://accessibilitytips.com/2008/03/04/providing-link-text/#comments</comments>
		<pubDate>Wed, 05 Mar 2008 05:25:44 +0000</pubDate>
		<dc:creator>Isofarro</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[accessibility]]></category>
		<category><![CDATA[alt]]></category>
		<category><![CDATA[alt attribute]]></category>
		<category><![CDATA[fallback]]></category>
		<category><![CDATA[image links]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[link text]]></category>
		<category><![CDATA[links]]></category>
		<category><![CDATA[null alt]]></category>
		<category><![CDATA[readable links]]></category>
		<category><![CDATA[redundant links]]></category>
		<category><![CDATA[screenreaders]]></category>

		<guid isPermaLink="false">http://www.wp-dev.isolutia.com/?p=8</guid>
		<description><![CDATA[In websites offering news, it&#8217;s common for there to be a story title and an image both linking to the actual story. The design requirement, or even a tracking requirement, may force there to be two separate links, one for the story title, and one for the story image.
Image links
A common mistake is to correctly [...]]]></description>
			<content:encoded><![CDATA[<p>In websites offering news, it&#8217;s common for there to be a story title and an image both linking to the actual story. The design requirement, or even a tracking requirement, may force there to be two separate links, one for the story title, and one for the story image.</p>
<h2>Image links</h2>
<p>A common mistake is to correctly determine that the text equivalent for the image is already present on the screen, in the form of the story title, and go from there to inserting a null <code>alt</code> attribute (<code>alt=""</code>) for the image. When that image is the sole child of an anchor we are left with an anchor with no link text. And that&#8217;s an accessibility barrier.</p>
<p>The screenreader fallback when there is no link text for an image link is to extract something from the image&#8217;s <code>src</code> attribute &#8211; a <abbr title="Uniform Resource Locator">URL</abbr> &#8211; and this typically results in something unintelligble being read out by a screenreader.</p>
<p>What we need to do here instead is to populate the <code>alt</code> attribute with something that can be used as link text. In the case where the only appropriate (and succinct) text is the story title, it is fine to use that.</p>
<h2>Redundant links</h2>
<p>Its true that having two links with the same perceived link text linking to the same page is a redundancy, but this is much less of an evil than a text-less link. And much less of an accessibility barrier too.</p>
]]></content:encoded>
			<wfw:commentRss>http://accessibilitytips.com/2008/03/04/providing-link-text/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.307 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-03-10 09:06:05 -->
