<?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>cssgallery.info &#187; Accessibility</title>
	<atom:link href="http://cssgallery.info/category/accessibility/feed/" rel="self" type="application/rss+xml" />
	<link>http://cssgallery.info</link>
	<description>Resources for web and mobile developers</description>
	<lastBuildDate>Mon, 09 Jan 2012 18:54:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>How screen readers speak a page with HTML5 and ARIA</title>
		<link>http://cssgallery.info/how-screen-readers-speak-a-page-with-html5-and-aria/</link>
		<comments>http://cssgallery.info/how-screen-readers-speak-a-page-with-html5-and-aria/#comments</comments>
		<pubDate>Mon, 24 Jan 2011 05:57:46 +0000</pubDate>
		<dc:creator>Lucica Ibanescu</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[ARIA]]></category>
		<category><![CDATA[ARIA roles]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[landmarks]]></category>
		<category><![CDATA[NVDA]]></category>
		<category><![CDATA[screen readers]]></category>
		<category><![CDATA[WAI ARIA]]></category>

		<guid isPermaLink="false">http://cssgallery.info/?p=1741</guid>
		<description><![CDATA[After seeing <a href="http://cssgallery.info/testing-the-accessibility-of-the-css-generated-content/"><strong>how AT reads a content generated with CSS pseudo-elements</strong></a> I was thinking to move on to HTML5. And since there are a lot of people saying <strong>we should mix HTML5 with ARIA in order to increase the accessibility of a website</strong>, then why not test and see what happens?]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop --><!-- End Shareaholic LikeButtonSetTop --><!--S-ButtonZ 1.1.5 Start--><!--S-ButtonZ 1.1.5 End--><div class="tweetmeme_button" style="float: right; margin: 10px !important;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcssgallery.info%2Fhow-screen-readers-speak-a-page-with-html5-and-aria%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcssgallery.info%2Fhow-screen-readers-speak-a-page-with-html5-and-aria%2F&amp;source=dan_tamas&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>After seeing <a href="http://cssgallery.info/testing-the-accessibility-of-the-css-generated-content/"><strong>how AT reads a content generated with CSS pseudo-elements</strong></a> I was thinking to move on to HTML5. And since there are a lot of people saying <strong>we should mix HTML5 with ARIA in order to increase the accessibility of a website</strong>, then why not test and see what happens?</p>
<h2>A piece of code&#8230;</h2>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">...
&nbsp;
&lt;header id=&quot;header&quot; role=&quot;banner&quot;&gt;  
    &lt;div id=&quot;logo&quot;&gt;Logo here&lt;/div&gt;
    &lt;nav role=&quot;navigation&quot;&gt;
        &lt;ul id=&quot;mainnav&quot;&gt;........&lt;/ul&gt;
    &lt;/nav&gt;
&lt;/header&gt;
&nbsp;
&lt;section id=&quot;content&quot; role=&quot;main&quot;&gt;  
&nbsp;
    &lt;h1&gt;A level one heading here please&lt;/h1&gt;
&nbsp;
    &lt;div role=&quot;application&quot;&gt;&lt;p&gt;Here is where an application will be coded. &lt;/p&gt;&lt;/div&gt; 
&nbsp;
    &lt;article role=&quot;article&quot;&gt;             
            &lt;h2 class=&quot;index-headings&quot;&gt;Blog entry no 1&lt;/h2&gt;
            &lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit...&lt;/p&gt;
    &lt;/article&gt;
&nbsp;
    &lt;article role=&quot;article&quot;&gt;
            &lt;h2 class=&quot;index-headings&quot;&gt;Blog entry no 2&lt;/h2&gt;
            &lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit...&lt;/p&gt;
    &lt;/article&gt;
&nbsp;
&lt;/section&gt; 
&nbsp;
&lt;aside role=&quot;complementary&quot;&gt;  
    &lt;h2&gt;Sidebar&lt;/h2&gt;
    &lt;ul&gt;......................&lt;/ul&gt;
&lt;/aside&gt;
&nbsp;
&lt;footer id=&quot;footer&quot;  role=&quot;contentinfo&quot;&gt;This is where the footer will stay.&lt;/footer&gt;     
...</pre></div></div>

<p>This is the page containing both <strong>HTML5 elements</strong>:</p>
<ul>
<li>header</li>
<li>nav</li>
<li>section</li>
<li>article</li>
<li>aside</li>
<li>footer</li>
</ul>
<p> and <strong>ARIA roles</strong> (<a href="http://cssgallery.info/useful-10-minutes-of-wai-aria/">learn about ARIA</a>):</p>
<ul>
<li><strong>role=&#8221;banner&#8221;</strong> &#8211; for the header element</li>
<li><strong>role=&#8221;navigation&#8221;</strong> &#8211; for the nav element</li>
<li> <strong>role=&#8221;main&#8221;</strong> &#8211; attached to the section</li>
<li><strong>role=&#8221;application&#8221;</strong> &#8211; in case I need to add a widget</li>
<li> <strong>role=&#8221;article&#8221;</strong> &#8211; for the article element</li>
<li><strong>role=&#8221;complementary&#8221;</strong> &#8211; for the aside</li>
<li><strong>role=&#8221;contentinfo&#8221;</strong> &#8211; for the footer</li>
</ul>
<h2>How NVDA, JAWS and Window Eyes read the HTML5-only version</h2>
<p>Long story short, <strong>no screen reader noticed the HTML5 elements</strong> &#8211; as expected. They all behaved like those elements were simple DIVs and read the webpage accordingly. </p>
<p><iframe title="YouTube video player" class="youtube-player" type="text/html" width="485" height="349" src="http://www.youtube.com/embed/oW0KFCNeFA4" frameborder="0" allowFullScreen></iframe></p>
<h2>How NVDA, JAWS and Window Eyes read the HTML5 + ARIA version</h2>
<p>Much better this time, <strong>ARIA is doing wonders</strong> although I don&#8217;t understand why Window Eyes doesn&#8217;t even pronounce the existence of the headers&#8230;I am a newbie in this field so maybe I did something wrong? I do not want to do WE any injustice so let&#8217;s say the results are inconclusive regarding this software.</p>
<p><iframe title="YouTube video player" class="youtube-player" type="text/html" width="485" height="349" src="http://www.youtube.com/embed/LP3zLrOjQSY" frameborder="0" allowFullScreen></iframe></p>
<h2>The difference</h2>
<p>So what was the difference between the two versions? What ARIA brought from this point of view?</p>
<h3>The banner area: role=&#8221;banner&#8221;</h3>
<p><strong>NVDA</strong> &#8211; &#8220;<em>banner landmark</em> logo here <em>navigation landmark</em> list with 4 items visited link home&#8230;&#8230;. &#8221;<br />
<strong>JAWS</strong> &#8211;  &#8220;<em>banner landmark</em> logo here <em>navigation landmark</em> list with 4 items visited link home&#8230;&#8230;. &#8221; At the beginning it also says that there are 8 landmarks, hurray!!!</p>
<h3>The main area: role=&#8221;main&#8221;</h3>
<p><strong>NVDA</strong> &#8211; &#8220;<em>main landmark</em> heading level one &#8230;&#8221;<br />
<strong>JAWS</strong> &#8211; &#8220;<em>main landmark</em> heading level one &#8230;&#8221;</p>
<h3>The application area: role=&#8221;application&#8221;</h3>
<p><strong>NVDA</strong> &#8211; the application role was not read at all.<br />
<strong>JAWS</strong> &#8211; &#8220;<em>application landmark</em> here is where&#8230;.&#8221;</p>
<h3>The articles: role=&#8221;article&#8221;</h3>
<p><strong>NVDA</strong> &#8211; the article was not mentioned in any way.<br />
<strong>JAWS</strong> &#8211; &#8220;<em>article landmark</em> heading level&#8230;.&#8221;</p>
<h3>The sidebar: role=&#8221;complementary&#8221;</h3>
<p><strong>NVDA</strong> the sidebar was read like this: &#8220;<em>complementary landmark</em> heading level 2&#8230;..&#8221;<br />
<strong>JAWS</strong> &#8211; &#8220;<em>complementary landmark</em> heading level 2&#8230;..&#8221;</p>
<h3>The footer: role=&#8221;contentinfo&#8221;</h3>
<p>- and the footer: &#8220;<em>content info landmark</em> this is where the&#8230;.&#8221;<br />
<strong>JAWS</strong> &#8211; &#8220;<em>content info landmark</em> this is where the&#8230;.&#8221;</p>
<p>So far <strong>JAWS was the only one able to speak all the landmarks</strong> while <strong>NVDA missed the article and the application</strong>. Like I mentioned before, Window Eyes din not read ARIA elements but maybe it&#8217;s just me being a newbie&#8230;<strong>Your opinion is much appreciated</strong>, maybe together we can make it work <img src='http://cssgallery.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong class="spanish">Check the Spanish version of this post:<br />
 <a href="http://nosoloweb.es/como-leen-los-lectores-de-pantalla-una-pagina-con-html5-y-aria/ rel="me">Cómo leen los lectores de pantalla una página con HTML5 y ARIA</a></strong></p>
<div style="clear:both;">&nbsp;</div><div class="shr-publisher-1741"></div><!-- Start Shareaholic LikeButtonSetBottom --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' shr_layout='button_count' shr_showfaces='false' shr_href='http%3A%2F%2Fcssgallery.info%2Fhow-screen-readers-speak-a-page-with-html5-and-aria%2F'></a><a class='shareaholic-fbsend' shr_href='http%3A%2F%2Fcssgallery.info%2Fhow-screen-readers-speak-a-page-with-html5-and-aria%2F'></a><a class='shareaholic-googleplusone' shr_size='medium' shr_count='true' shr_href='http%3A%2F%2Fcssgallery.info%2Fhow-screen-readers-speak-a-page-with-html5-and-aria%2F'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom -->

<h3>Related posts:</h3><ol><li><a href='http://cssgallery.info/useful-10-minutes-of-wai-aria/' rel='bookmark' title='Useful 10 minutes of WAI ARIA'>Useful 10 minutes of WAI ARIA</a></li>
<li><a href='http://cssgallery.info/testing-the-accessibility-of-the-css-generated-content/' rel='bookmark' title='Testing the accessibility of the CSS generated content'>Testing the accessibility of the CSS generated content</a></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://cssgallery.info/how-screen-readers-speak-a-page-with-html5-and-aria/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Testing the accessibility of the CSS generated content</title>
		<link>http://cssgallery.info/testing-the-accessibility-of-the-css-generated-content/</link>
		<comments>http://cssgallery.info/testing-the-accessibility-of-the-css-generated-content/#comments</comments>
		<pubDate>Wed, 19 Jan 2011 20:38:23 +0000</pubDate>
		<dc:creator>Lucica Ibanescu</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[:after]]></category>
		<category><![CDATA[:before]]></category>
		<category><![CDATA[assistive technology]]></category>
		<category><![CDATA[CSS generated content]]></category>
		<category><![CDATA[pseudo-elements]]></category>
		<category><![CDATA[screen readers]]></category>

		<guid isPermaLink="false">http://cssgallery.info/?p=1725</guid>
		<description><![CDATA[This article is about how screen readers speak the content added with <strong>CSS pseudo-elements :before</strong> and <strong>:after</strong> (in CSS3 they are ::before and ::after). 

I am trying to learn to use AT when developing websites and recently I saw that no matter how W3C wants us to use a certain CSS element, there will always be developers/designers who will try to push the limits of the specification.

While I do advise you to <strong>NOT use pseudo-elements to generate useful content</strong> (limit yourself to generating quotes or design elements), just in case somebody thinks that the cool resides in generating content with CSS because everything else is already old, let's see how people using screen readers will "benefit" from the idea.]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop --><!-- End Shareaholic LikeButtonSetTop --><!--S-ButtonZ 1.1.5 Start--><!--S-ButtonZ 1.1.5 End--><div class="tweetmeme_button" style="float: right; margin: 10px !important;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcssgallery.info%2Ftesting-the-accessibility-of-the-css-generated-content%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcssgallery.info%2Ftesting-the-accessibility-of-the-css-generated-content%2F&amp;source=dan_tamas&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>This article is about how screen readers speak the content added with <strong>CSS pseudo-elements :before</strong> and <strong>:after</strong> (in CSS3 they are ::before and ::after). </p>
<p>I am trying to learn to use AT when developing websites and recently I saw that no matter how W3C wants us to use a certain CSS element, there will always be developers/designers who will try to push the limits of the specification.</p>
<p>While I do advise you to <strong>NOT use pseudo-elements to generate useful content</strong> (limit yourself to generating quotes or design elements), just in case somebody thinks that the cool resides in generating content with CSS because everything else is already old, let&#8217;s see how people using screen readers will &#8220;benefit&#8221; from the idea.</p>
<h2>A piece of code&#8230;OK, maybe two&#8230;</h2>
<p>The HTML is really simple, an innocent paragraph of text:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;h1&gt;Example of content added with CSS pseudo-elements&lt;/h1&gt;
&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit..and so on.&lt;/p&gt;</pre></div></div>

<p>and the CSS is also quite simple:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#content</span> p<span style="color: #3333ff;">:before </span><span style="color: #00AA00;">&#123;</span>
<span style="color: #000000; font-weight: bold;">content</span><span style="color: #00AA00;">:</span><span style="color: #ff0000;">&quot;This is before the text, you can style it&quot;</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#content</span> p<span style="color: #3333ff;">:after</span><span style="color: #00AA00;">&#123;</span>
<span style="color: #000000; font-weight: bold;">content</span><span style="color: #00AA00;">:</span><span style="color: #ff0000;">&quot;This is after the text&quot;</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<h2>Let&#8217;s hear voices</h2>
<p>The video will show how NVDA, Jaws and Window Eyes read the page &#8211; I set NVDA to read at a lower rate in order for you to follow, but the other 2 are a bit faster. </p>
<p><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/BmMrOfsXXEU?fs=1&amp;hl=en_US"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/BmMrOfsXXEU?fs=1&amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></p>
<h2>The conclusion</h2>
<p>There&#8217;s no need for me to tell you how bad the idea is, <strong>DON&#8217;T use these pseudo-elements for generating useful content</strong>, limit its use to generating quotes, breadcrumb icons, fluffy snowflakes or whatever. But keep it presentational in order for other people to have access to the useful stuff.</p>
<p><strong class="spanish">Check the Spanish version of this post:<br />
 <a href="http://nosoloweb.es/probando-la-accesibilidad-del-contenido-generado-por-css/ rel="me">Probando la accesibilidad del contenido generado por CSS</a></strong></p>
<div style="clear:both;">&nbsp;</div><div class="shr-publisher-1725"></div><!-- Start Shareaholic LikeButtonSetBottom --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' shr_layout='button_count' shr_showfaces='false' shr_href='http%3A%2F%2Fcssgallery.info%2Ftesting-the-accessibility-of-the-css-generated-content%2F'></a><a class='shareaholic-fbsend' shr_href='http%3A%2F%2Fcssgallery.info%2Ftesting-the-accessibility-of-the-css-generated-content%2F'></a><a class='shareaholic-googleplusone' shr_size='medium' shr_count='true' shr_href='http%3A%2F%2Fcssgallery.info%2Ftesting-the-accessibility-of-the-css-generated-content%2F'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom -->

<h3>Related posts:</h3><ol><li><a href='http://cssgallery.info/how-screen-readers-speak-a-page-with-html5-and-aria/' rel='bookmark' title='How screen readers speak a page with HTML5 and ARIA'>How screen readers speak a page with HTML5 and ARIA</a></li>
<li><a href='http://cssgallery.info/useful-10-minutes-of-wai-aria/' rel='bookmark' title='Useful 10 minutes of WAI ARIA'>Useful 10 minutes of WAI ARIA</a></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://cssgallery.info/testing-the-accessibility-of-the-css-generated-content/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Useful 10 minutes of WAI ARIA</title>
		<link>http://cssgallery.info/useful-10-minutes-of-wai-aria/</link>
		<comments>http://cssgallery.info/useful-10-minutes-of-wai-aria/#comments</comments>
		<pubDate>Fri, 17 Dec 2010 20:50:02 +0000</pubDate>
		<dc:creator>Lucica Ibanescu</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[accessible]]></category>
		<category><![CDATA[accessible lightbox]]></category>
		<category><![CDATA[accordions]]></category>
		<category><![CDATA[ARIA live regions]]></category>
		<category><![CDATA[ARIA Live Regions Screen Reader Demo]]></category>
		<category><![CDATA[ARIA properties]]></category>
		<category><![CDATA[ARIA roles]]></category>
		<category><![CDATA[aria-live="polite"]]></category>
		<category><![CDATA[aria-live="rude"]]></category>
		<category><![CDATA[carousels]]></category>
		<category><![CDATA[forsm]]></category>
		<category><![CDATA[progress bars]]></category>
		<category><![CDATA[sliders]]></category>
		<category><![CDATA[tables]]></category>
		<category><![CDATA[tabs]]></category>
		<category><![CDATA[trees]]></category>
		<category><![CDATA[WAI ARIA]]></category>

		<guid isPermaLink="false">http://cssgallery.info/?p=1705</guid>
		<description><![CDATA[I would like to post here a selection of resources that might help you start using ARIA in your web applications or websites - although ARIA is still a draft. you can start using it and some AT will know how to read it.

<h2>Try some demos: ARIA Live Regions Screen Reader Demo </h2>
<object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/9nZnTdSAkH0?fs=1&#38;hl=en_US&#38;rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/9nZnTdSAkH0?fs=1&#38;hl=en_US&#38;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object>

And more resources...]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop --><!-- End Shareaholic LikeButtonSetTop --><!--S-ButtonZ 1.1.5 Start--><!--S-ButtonZ 1.1.5 End--><div class="tweetmeme_button" style="float: right; margin: 10px !important;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcssgallery.info%2Fuseful-10-minutes-of-wai-aria%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcssgallery.info%2Fuseful-10-minutes-of-wai-aria%2F&amp;source=dan_tamas&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>I would like to post here a selection of resources that might help you start using ARIA in your web applications or websites &#8211; although ARIA is still a draft. you can start using it and some AT will know how to read it.</p>
<h2><a href="http://dev.opera.com/articles/view/introduction-to-wai-aria/">Introduction to WAI ARIA</a></h2>
<p>Written by Gez Lemon for Opera Developer, this article is the best post you can start with. You will understand <strong>why ARIA was created</strong> in the first place and you will understand some<strong> basic terms like: roles, states, properties, </strong>and my favorite, <strong>ARIA regions</strong>.</p>
<h2><a href="http://www.webteacher.ws/2010/10/14/aria-roles-101/">ARIA Roles 101</a></h2>
<p>Now that you know the basics of ARIA, you can start implementing <strong>ARIA roles</strong> in your applications. A full list of the roles definitions can be seen here, at the <a href="http://www.w3.org/TR/wai-aria/roles#role_definitions">W3C WAI ARIA 1.0 specs website</a>.</p>
<h2><a href="http://www.w3.org/TR/wai-aria/states_and_properties">Supported states and properties</a></h2>
<p>Learning about <strong>ARIA properties </strong>is the next logical step, and the W3C WAI ARIA specifications are really helpful even if the first impression is that you read the Constitution or something <img src='http://cssgallery.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Try some demos: ARIA Live Regions Screen Reader Demo </h2>
<p><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/9nZnTdSAkH0?fs=1&amp;hl=en_US&amp;rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/9nZnTdSAkH0?fs=1&amp;hl=en_US&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></p>
<p>A very useful video by Aaron Cannon (from <a href="http://www.cannonaccess.com/">cannonaccess.com</a>) about <strong>using ARIA live regions</strong> in a correct way, the difference between <strong>aria-live=&#8221;polite&#8221;</strong> and <strong>aria-live=&#8221;rude&#8221;</strong> and how this whole thing works. You need to know that now aria-live=&#8221;rude&#8221; is not part of the specs anymore (it was really too rude) and we are left with &#8220;off&#8221;, &#8220;polite&#8221; and &#8220;assertive&#8221;.</p>
<p>You might wanna read <a href="http://www.alistapart.com/articles/aria-and-progressive-enhancement/">ARIA and Progressive Enhancement</a> written by Derek Featherstone for A List Apart because the small examples that you will find there will help you understand better the roles and the properties of ARIA.</p>
<p>If you wanna go back to reading the Constitution, <a href="http://www.w3.org/TR/wai-aria-practices/">WAI-ARIA 1.0 Authoring Practices &#8211; An author&#8217;s guide to understanding and implementing Accessible Rich Internet Applications</a> is the next step, a page full of examples for you to learn from and best practices when it comes to implementing ARIA &#8211; pay special attention to  <strong>Section 3: Keyboard and Structural Navigation</strong>, <strong>Section 4: Relationships</strong> and <strong>Section 5: Managing Dynamic Changes</strong> which is really really important. </p>
<h2>Learn from examples</h2>
<ul>
<li><a href="http://hanshillen.github.com/aegisdemo/"><strong>JQuery Widget Samples</strong></a> &#8211; a collection of common JQuery widgets made accessible with ARIA: sliders, progress bars, accordions, trees, carousels, tabs, etc&#8230;.</li>
<li><a href="https://github.com/fnagel/jQuery-Accessible-RIA"><strong>jQuery-Accessible-RIA</strong></a> &#8211; adds some more ARIA examples: a form, a lightbox, tables, etc.</li>
</ul>
<h2>Update with more minutes of WAI ARIA</h2>
<p><a href="/aarongustafson">Aaron Gustafson</a> also has a video with NVDA reading his now famous <a href="http://easy-designs.github.com/tabinterface.js/">TabInterface</a>.<br />
<iframe src="http://player.vimeo.com/video/10489058" width="550" height="400" frameborder="0"></iframe>
<p><a href="http://vimeo.com/10489058">TabInterface in Firefox using NVDA screenreader</a> from <a href="http://vimeo.com/aarongustafson">Aaron Gustafson</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p><strong class="spanish">Check the Spanish version of this post:<br />
 <a href="http://nosoloweb.es/10-minutos-utiles-de-wai-aria/ rel="me">10 minutos útiles de WAI ARIA</a></strong></p>
<div style="clear:both;">&nbsp;</div><div class="shr-publisher-1705"></div><!-- Start Shareaholic LikeButtonSetBottom --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' shr_layout='button_count' shr_showfaces='false' shr_href='http%3A%2F%2Fcssgallery.info%2Fuseful-10-minutes-of-wai-aria%2F'></a><a class='shareaholic-fbsend' shr_href='http%3A%2F%2Fcssgallery.info%2Fuseful-10-minutes-of-wai-aria%2F'></a><a class='shareaholic-googleplusone' shr_size='medium' shr_count='true' shr_href='http%3A%2F%2Fcssgallery.info%2Fuseful-10-minutes-of-wai-aria%2F'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom -->

<h3>Related posts:</h3><ol><li><a href='http://cssgallery.info/how-screen-readers-speak-a-page-with-html5-and-aria/' rel='bookmark' title='How screen readers speak a page with HTML5 and ARIA'>How screen readers speak a page with HTML5 and ARIA</a></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://cssgallery.info/useful-10-minutes-of-wai-aria/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Good for you you&#8217;re coding accessible websites, but do you actually know any blind user?</title>
		<link>http://cssgallery.info/good-for-you-youre-coding-accessible-websites-but-do-you-actually-know-any-blind-user/</link>
		<comments>http://cssgallery.info/good-for-you-youre-coding-accessible-websites-but-do-you-actually-know-any-blind-user/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 11:44:47 +0000</pubDate>
		<dc:creator>Lucica Ibanescu</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[accessible]]></category>
		<category><![CDATA[accessible websites]]></category>
		<category><![CDATA[assistive technologies]]></category>
		<category><![CDATA[detect blind users]]></category>
		<category><![CDATA[detect user agents]]></category>

		<guid isPermaLink="false">http://cssgallery.info/?p=470</guid>
		<description><![CDATA[What can you answer to your client when you try to explain that your code is W3c, semantic, crossbrowser and&#8230;accessible and your client asks you &#8220;Good for you you&#8217;re coding accessible websites, but do you actually know any blind user?&#8221; Meaning, why should someone care about how you code a site as long as table-based [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop --><!-- End Shareaholic LikeButtonSetTop --><!--S-ButtonZ 1.1.5 Start--><!--S-ButtonZ 1.1.5 End--><div class="tweetmeme_button" style="float: right; margin: 10px !important;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcssgallery.info%2Fgood-for-you-youre-coding-accessible-websites-but-do-you-actually-know-any-blind-user%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcssgallery.info%2Fgood-for-you-youre-coding-accessible-websites-but-do-you-actually-know-any-blind-user%2F&amp;source=dan_tamas&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>What can you answer to your client when you try to explain that your code is W3c, semantic, crossbrowser and&#8230;accessible  and your client asks you <em>&#8220;Good for you you&#8217;re coding accessible websites, but do you actually know any blind user?&#8221;</em> Meaning, why should someone care about how you code a site as long as table-based code is still ok and cheap?</p>
<p>Well&#8230;you may remain speechless. Cause I really don&#8217;t know any blind person nor a person using assistive technology altough I do know people that need to increase the font-size or lower the screen resolution to be able to read better. But even if I did not &#8220;see&#8221; one that should not mean they don&#8217;t exist &#8211; but how can this be proved?</p>
<p>Since assistive technologies do not leave traces, maybe a solution is to see who&#8217;s clicking the a+ a++ buttons. This surely will leave some trace, right?</p>
<p>So we started an experiment: we wrote a script counting the number of clicks performed on the a+ a++ buttons (I know it&#8217;s not very scientific &#8211; anyone can click &#8211; but we&#8217;re counting on the fact that our users do not know about the experiment and that at least a small percentage of the clicks will be genuine). Every click is counted and written in a file. We compare it to the Google Analytics stats and hope to obtain some information about this aspect of the sites.</p>
<p>After a month of comparing both methods we saw that the a+/ a++ navigation was clicked on a daily basis (even though one site was selling Christmas decorations !!! ) and most of the time a++ was the star ! Between 5% and 8% of the visitors were clicking these links and that is more than the number of clicks on &#8220;about&#8221; or &#8220;contact&#8221; links.</p>
<p>Now, the question that started this article remains &#8211; what is the best answer for the client asking  &#8220;Good for you you&#8217;re coding accessible websites, but do you actually know any blind user?&#8221;</p>
<div style="clear:both;">&nbsp;</div><div class="shr-publisher-470"></div><!-- Start Shareaholic LikeButtonSetBottom --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' shr_layout='button_count' shr_showfaces='false' shr_href='http%3A%2F%2Fcssgallery.info%2Fgood-for-you-youre-coding-accessible-websites-but-do-you-actually-know-any-blind-user%2F'></a><a class='shareaholic-fbsend' shr_href='http%3A%2F%2Fcssgallery.info%2Fgood-for-you-youre-coding-accessible-websites-but-do-you-actually-know-any-blind-user%2F'></a><a class='shareaholic-googleplusone' shr_size='medium' shr_count='true' shr_href='http%3A%2F%2Fcssgallery.info%2Fgood-for-you-youre-coding-accessible-websites-but-do-you-actually-know-any-blind-user%2F'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom -->

<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://cssgallery.info/good-for-you-youre-coding-accessible-websites-but-do-you-actually-know-any-blind-user/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A third way to write and validate forms &#8211; HTML5</title>
		<link>http://cssgallery.info/a-third-way-to-write-and-validate-forms-html5/</link>
		<comments>http://cssgallery.info/a-third-way-to-write-and-validate-forms-html5/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 11:53:47 +0000</pubDate>
		<dc:creator>Lucica Ibanescu</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[accessible]]></category>
		<category><![CDATA[html 5]]></category>
		<category><![CDATA[HTML5 forms]]></category>
		<category><![CDATA[PHP validation]]></category>
		<category><![CDATA[server side validation]]></category>
		<category><![CDATA[validate forms]]></category>

		<guid isPermaLink="false">http://cssgallery.info/?p=425</guid>
		<description><![CDATA[After writing an accessible form in XHTML and validating it with a PHP server side script &#38; after that with a Mootools client-side script, I write today about a third way of approaching the subject &#8211; using future-to-come HTML5 (by saying that, I really hope to be able to use it waaaay before 2011). The [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop --><!-- End Shareaholic LikeButtonSetTop --><!--S-ButtonZ 1.1.5 Start--><!--S-ButtonZ 1.1.5 End--><div class="tweetmeme_button" style="float: right; margin: 10px !important;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcssgallery.info%2Fa-third-way-to-write-and-validate-forms-html5%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcssgallery.info%2Fa-third-way-to-write-and-validate-forms-html5%2F&amp;source=dan_tamas&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>After writing an <a title="Accessible contact form with PHP server side validation" href="http://dev.rborn.info/accessible-contact-form/">accessible form in XHTML</a> and validating it with a PHP server side script &amp; after that with a <a title="Accessible contact form with Mootools client side validation" href="http://">Mootools client-side script</a>, I write today about a third way of approaching the subject &#8211; using future-to-come HTML5 (by saying that, I really hope to be able to use it waaaay before 2011).</p>
<p>The beauty consists in having all the above mentioned validation inside HTML code:  we&#8217;ll have</p>
<ul>
<li>input type=&#8221;email&#8221; for email addresses</li>
<li>type=&#8221;url&#8221; for urls</li>
<li>type=&#8221;date&#8221; and &#8220;datetime&#8221; for date fields (usually done with JS calendars until now), or &#8220;month&#8221;, &#8220;week&#8221;, &#8220;time&#8221;</li>
<li>type=&#8221;number&#8221;  for number only inputs</li>
<li>accessible sliders, with type=&#8221;range&#8221;</li>
<li>datalists</li>
<li>ability to add extra validation conditions after writing the tag, like: required, read-only,disabled, autofocus, a minimum value, a maximum accepted value/length</li>
</ul>
<h2>The code for our simple contact form will be much lighter:</h2>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;form action=&quot;index.php&quot; method=&quot;post&quot; name=&quot;contactform&quot; id=&quot;contact&quot;&gt;
&nbsp;
&lt;label for=&quot;name&quot;&gt;Name &lt;span&gt;(required)&lt;/span&gt;&lt;/label&gt;
&lt;input  tabindex=&quot;1&quot; type=&quot;text&quot; name=&quot;name&quot; id=&quot;name&quot; required /&gt;
&nbsp;
&lt;label for=&quot;mail&quot;&gt;Email &lt;span&gt;(required)&lt;/span&gt;&lt;/label&gt;
&lt;input  tabindex=&quot;2&quot; type=&quot;email&quot; name=&quot;mail&quot; id=&quot;mail&quot; required /&gt;
&nbsp;
&lt;label for=&quot;phone&quot;&gt;Telephone&lt;/label&gt;
&lt;input tabindex=&quot;3&quot; type=&quot;text&quot; name=&quot;phone&quot; id=&quot;phone&quot; /&gt;
&nbsp;
&lt;label for=&quot;message&quot;&gt;Message&lt;/label&gt;
&lt;textarea tabindex=&quot;4&quot; cols=&quot;30&quot; rows=&quot;10&quot; name=&quot;message&quot; id=&quot;message&quot;&gt;&lt;/textarea&gt;
&nbsp;
&lt;button tabindex=&quot;5&quot; type=&quot;submit&quot; name=&quot;submit&quot; id=&quot;send&quot;&gt;Submit&lt;/button&gt;
&nbsp;
&lt;/form&gt;</pre></div></div>

<p>The result will be a much easier way of writing and validating forms in an accessible manner, without adding extra load/code with PHP/JS scripts. All you have to do is place <em><strong>&#8220;required&#8221;</strong> </em> to all the required fields and use the above mentioned <em><strong>minimum value, maximum accepted value</strong></em>, etc to control the user&#8217;s input. </p>
<p>The entire list of types and useful tables with the methods that apply to each state can be found on <a href="http://www.w3.org/TR/html5/forms.html#forms" target="_self">W3C site</a></p>
<p>The problem right now is the inabilityof the browsers to work with lots of HTML5 features. And the future does not look good either. So far the only browser that supports the new forms is Opera 9.5+.  Internet Explorer 8 and below is not compatible and IE9 probably won&#8217;t be either (we&#8217;re talking about 2010).  Chrome 2+, Safari 4+ will partially support some features while Mozilla won&#8217;t do it even in its 4.0 version (due to launch in 2010).</p>
<p>Now, the same contact form we used to play with, but written in HTML5, will look the same but behave much more nicely (the code is lighter too). It&#8217;s saving us a lot of time and headaches and it&#8217;s much more user friendly.  <a title="Accessible form using HTML5" href="http://cssgallery.info/wp-content/accessible-contact-form-html5/" target="_blank">Play with the new example</a> &#8211; in Opera 9.5+ &#8211;  and drop us a feedback if you consider that the subject is interesting enough to come back with more code-examples.</p>
<p><strong class="spanish">Check the Spanish version of this post:<br />
<a href="http://nosoloweb.es/una-tercera-manera-de-escribir-y-validar-formularios-htmll5/" rel="me">Una tercera manera de escribir y validar formularios – HTML5</a></strong></p>
<div style="clear:both;">&nbsp;</div><div class="shr-publisher-425"></div><!-- Start Shareaholic LikeButtonSetBottom --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' shr_layout='button_count' shr_showfaces='false' shr_href='http%3A%2F%2Fcssgallery.info%2Fa-third-way-to-write-and-validate-forms-html5%2F'></a><a class='shareaholic-fbsend' shr_href='http%3A%2F%2Fcssgallery.info%2Fa-third-way-to-write-and-validate-forms-html5%2F'></a><a class='shareaholic-googleplusone' shr_size='medium' shr_count='true' shr_href='http%3A%2F%2Fcssgallery.info%2Fa-third-way-to-write-and-validate-forms-html5%2F'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom -->

<h3>Related posts:</h3><ol><li><a href='http://cssgallery.info/useful-10-minutes-of-wai-aria/' rel='bookmark' title='Useful 10 minutes of WAI ARIA'>Useful 10 minutes of WAI ARIA</a></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://cssgallery.info/a-third-way-to-write-and-validate-forms-html5/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Clientside validation for accessible forms with mootools</title>
		<link>http://cssgallery.info/clientside-validation-for-accessible-forms-with-mootools/</link>
		<comments>http://cssgallery.info/clientside-validation-for-accessible-forms-with-mootools/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 17:11:27 +0000</pubDate>
		<dc:creator>Dan Tamas</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[MooTools]]></category>
		<category><![CDATA[accessible forms]]></category>
		<category><![CDATA[class required]]></category>
		<category><![CDATA[clientside validation]]></category>
		<category><![CDATA[form validator class]]></category>
		<category><![CDATA[javascript validation]]></category>
		<category><![CDATA[mootools validation]]></category>
		<category><![CDATA[validate forms]]></category>

		<guid isPermaLink="false">http://cssgallery.info/?p=421</guid>
		<description><![CDATA[Validate forms client side with MooTools.]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop --><!-- End Shareaholic LikeButtonSetTop --><!--S-ButtonZ 1.1.5 Start--><!--S-ButtonZ 1.1.5 End--><div class="tweetmeme_button" style="float: right; margin: 10px !important;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcssgallery.info%2Fclientside-validation-for-accessible-forms-with-mootools%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcssgallery.info%2Fclientside-validation-for-accessible-forms-with-mootools%2F&amp;source=dan_tamas&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>As we discussed in a previous article about forms -<a title="Basic copy-paste accessible contact form" rel="bookmark" href="http://cssgallery.info/basic-copy-paste-accessible-contact-form/">Basic copy-paste accessible contact form</a> -  we made the form validation accessible using a class that will highlight and point to the elements that need to be filled or corrected in case the validation failed.</p>
<p>Now, the only weak point form the user&#8217;s point of view is the fact that we need to refresh the page every time he hits submit, this being somehow annoying. Nowadays most browsers offer a client-side processing capabilities ( javascript ) that can be used for local validation &#8211; avoiding the refresh of the page.</p>
<p>Don&#8217;t get me wrong. The server side part needs to remain intact for accessibility purposes. </p>
<p>The last MooTools version offers a validation plugin in the mootools-more package, that will help us to solve our task. Basicaly we need to add some classes to out inputs, to reflect the type of validation we want. For our form, we need only name &#8211; mandatory, and email &#8211;  mandatory + correct email formating.</p>
<p>So we&#8217;ll use <strong>required</strong> and <strong>validate-email</strong> from the <a title="Mootools validators" href="http://mootools.net/docs/more/Forms/FormValidator#Validators" target="_blank">list of the validators</a> already included, like this:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;label for=&quot;name&quot;&gt; Name &lt;span&gt; (required) &lt;/span&gt;&lt;/label&gt;
&lt;input  tabindex=&quot;1&quot; type=&quot;text&quot; name=&quot;name&quot; id=&quot;name&quot; class=&quot;required&quot; /&gt;
&lt;label for=&quot;mail&quot;&gt; Email &lt;span&gt; (required)&lt;/span&gt;&lt;/label&gt;
&lt;input  tabindex=&quot;2&quot; type=&quot;text&quot; name=&quot;mail&quot; id=&quot;mail&quot; class=&quot;validate-email required&quot; /&gt;</pre></div></div>

<h2>The next step is to create the code that does the validation:</h2>
<p>On the <strong>domready</strong> event of the window (we need to allow the html to load and therefore to be able to access it)  we attach the validator to our form with the methods needed to show the user what he did wrong (in case he did it). To keep the presentation and the accessibility intact &#8211; as in the back-end validation &#8211; we  will add the next code:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">window.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'domready'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> myFormValidator <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> FormValidator<span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'contact'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
		onFormValidate<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>ok<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'error_wrapper'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getElements</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'a'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">dispose</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>ok<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'contact'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getElements</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.validation-failed'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>el<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
					<span style="color: #003366; font-weight: bold;">var</span> a <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Element<span style="color: #009900;">&#40;</span> <span style="color: #3366CC;">&quot;a&quot;</span><span style="color: #339933;">,</span><span style="color: #009900;">&#123;</span><span style="color: #3366CC;">'href'</span> <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;#add&quot;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
                            .<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> el.<span style="color: #000066;">focus</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
                            .<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'text'</span><span style="color: #339933;">,</span> el.<span style="color: #660066;">get</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'id'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">capitalize</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
                            .<span style="color: #660066;">inject</span><span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'error_wrapper'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
&nbsp;
				$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'error_wrapper'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">setStyle</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'display'</span><span style="color: #339933;">,</span><span style="color: #3366CC;">'block'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
			<span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
				$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'error_wrapper'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">setStyle</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'display'</span><span style="color: #339933;">,</span><span style="color: #3366CC;">'none'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
		stopOnFailure<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
		evaluateFieldsOnBlur<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">false</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span></pre></div></div>

<p>Ok, it&#8217;s a little long but basically it&#8217;s validating each field it needs to, as specified in the class, and  attach in the error_wrapper the labels to the erroneous inputs.  It&#8217;s better  to study the code and see exactly how it&#8217;s done.</p>
<p><strong>Now, what is happening?</strong></p>
<p>The MooTools library is validating each field we specified on the <strong>submit event</strong> of the form and adds by default a class <strong>validation-failed</strong> or <strong>validation-passed</strong> to each field that was submitted to the validation routine.</p>
<p>We can use these two classes to visually improve the form &#8211;  here I just made the faulty ones red. If the validation failed the <strong>submit event</strong> of the form is stopped  and the incomplete data is not reaching the server.</p>
<p><strong>Next step:</strong> to complete the correct data, and resubmit.</p>
<p><a href="http://cssgallery.info/wp-content/accessible-contact-form/index_mootools_validation.php">Here is the DEMO</a></p>
<p>The form validator class is more powerful than this so take a look at the documentation on the MooTools site.<br />
Anyway, no matter what you do, <strong>do not forget</strong> to make the server side validation too. It is mandatory for your (server&#8217;s ) security.</p>
<div style="clear:both;">&nbsp;</div><div class="shr-publisher-421"></div><!-- Start Shareaholic LikeButtonSetBottom --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' shr_layout='button_count' shr_showfaces='false' shr_href='http%3A%2F%2Fcssgallery.info%2Fclientside-validation-for-accessible-forms-with-mootools%2F'></a><a class='shareaholic-fbsend' shr_href='http%3A%2F%2Fcssgallery.info%2Fclientside-validation-for-accessible-forms-with-mootools%2F'></a><a class='shareaholic-googleplusone' shr_size='medium' shr_count='true' shr_href='http%3A%2F%2Fcssgallery.info%2Fclientside-validation-for-accessible-forms-with-mootools%2F'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom -->

<h3>Related posts:</h3><ol><li><a href='http://cssgallery.info/how-to-make-a-glowing-menu-with-mootools-in-3-easy-steps/' rel='bookmark' title='How to make a glowing menu with MooTools in 3 easy steps'>How to make a glowing menu with MooTools in 3 easy steps</a></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://cssgallery.info/clientside-validation-for-accessible-forms-with-mootools/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Basic copy-paste accessible contact form</title>
		<link>http://cssgallery.info/basic-copy-paste-accessible-contact-form/</link>
		<comments>http://cssgallery.info/basic-copy-paste-accessible-contact-form/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 11:36:43 +0000</pubDate>
		<dc:creator>Lucica Ibanescu</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[accessible contact form]]></category>
		<category><![CDATA[accessible form]]></category>
		<category><![CDATA[labels]]></category>
		<category><![CDATA[PHP server side validation]]></category>
		<category><![CDATA[validate forms]]></category>
		<category><![CDATA[WCAG]]></category>
		<category><![CDATA[WCAG1]]></category>

		<guid isPermaLink="false">http://cssgallery.info/?p=411</guid>
		<description><![CDATA[A good way to learn about accessibility is through examples and discussions. In this post I will try to translate the WCAG sometimes-hard-to-get rules into a copy-paste real contact form example.  You can check the test link, download the code and/or keep reading a bit more. As I mentioned before, contact forms are in great [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop --><!-- End Shareaholic LikeButtonSetTop --><!--S-ButtonZ 1.1.5 Start--><!--S-ButtonZ 1.1.5 End--><div class="tweetmeme_button" style="float: right; margin: 10px !important;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcssgallery.info%2Fbasic-copy-paste-accessible-contact-form%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcssgallery.info%2Fbasic-copy-paste-accessible-contact-form%2F&amp;source=dan_tamas&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>A good way to learn about accessibility is through examples and discussions. In this post I will try to translate the WCAG sometimes-hard-to-get rules into a copy-paste real contact form example.  You can <a href="http://dev.rborn.info/accessible-contact-form/">check the test link</a>, <a href="http://dev.rborn.info/accessible-contact-form/accessible-contact-form.zip">download the code</a> and/or keep reading a bit more.</p>
<p>As I mentioned <a href="http://cssgallery.info/common-sense-accessibility-20/">before,</a> contact forms are in great need of special markup in order to be accessible. And it seems that there&#8217;s always room for improvements &#8211; in case you have suggestions or your approach is different,  I&#8217;d love to hear from you.</p>
<p>My suggestion is a simple 4 fields contact form with PHP server side validation. After the user submits the required information the page is reloaded and new messages are displayed depending on the user actions.  Of course you all know that the form needs</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;label for=&quot;name&quot;&gt;</pre></div></div>

<p> tag and some sort of validation &#8211; everybody is writing about the need to display  in an accesible way which fields are required and also the error messages (usually indicating the missing fields)  &#8211; but few actually offer a simple straightforward code to copy-paste in our sites.</p>
<p>The stylesheet is very light &#8211; we have to style the form &#8211; but the novelty is a class for the fields that are required and not yet filled. This way after we validate we return the error message with links to the missing fields but we also hightlight them for a more usable and intuitive experience. The PHP part is reading the inputs, checks them and sees if the required ones were filled.  A thank you message is displayed in case the user filled all the required fields.</p>
<p>The number of fields can easily be increased but don&#8217;t forget to validate them -when someone understands how the form works and which were the accessibility elements that were included then buiding more complex forms becomes just a matter of typing.</p>
<p><strong class="spanish">Check the Spanish version of this post:<br />
<a href="http://nosoloweb.es/un-basico-copia-y-pega-de-un-formulario-de-contacto-accesible/" rel="me">Un básico copia y pega de un formulario de contacto accesible</a></strong></p>
<div style="clear:both;">&nbsp;</div><div class="shr-publisher-411"></div><!-- Start Shareaholic LikeButtonSetBottom --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' shr_layout='button_count' shr_showfaces='false' shr_href='http%3A%2F%2Fcssgallery.info%2Fbasic-copy-paste-accessible-contact-form%2F'></a><a class='shareaholic-fbsend' shr_href='http%3A%2F%2Fcssgallery.info%2Fbasic-copy-paste-accessible-contact-form%2F'></a><a class='shareaholic-googleplusone' shr_size='medium' shr_count='true' shr_href='http%3A%2F%2Fcssgallery.info%2Fbasic-copy-paste-accessible-contact-form%2F'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom -->

<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://cssgallery.info/basic-copy-paste-accessible-contact-form/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Common sense accessibility 2.0</title>
		<link>http://cssgallery.info/common-sense-accessibility-20/</link>
		<comments>http://cssgallery.info/common-sense-accessibility-20/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 21:50:20 +0000</pubDate>
		<dc:creator>Lucica Ibanescu</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[accessibility tips]]></category>
		<category><![CDATA[accessible]]></category>
		<category><![CDATA[accessible tables]]></category>
		<category><![CDATA[alternative text for images]]></category>
		<category><![CDATA[caption]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[image replacement]]></category>
		<category><![CDATA[lists]]></category>
		<category><![CDATA[semantic]]></category>
		<category><![CDATA[summary]]></category>
		<category><![CDATA[transcriptions for video]]></category>
		<category><![CDATA[trick]]></category>
		<category><![CDATA[WCAG1]]></category>

		<guid isPermaLink="false">http://cssgallery.info/?p=389</guid>
		<description><![CDATA[When it comes to accessibility, every coder is a small guru. On the websites where I bid for projects everybody is an accessibility and usability expert (including myself, I admit). Altough these rules exist for quite a while there are coders who find it difficult to implement them &#8211; so I am trying to find [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop --><!-- End Shareaholic LikeButtonSetTop --><!--S-ButtonZ 1.1.5 Start--><!--S-ButtonZ 1.1.5 End--><div class="tweetmeme_button" style="float: right; margin: 10px !important;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcssgallery.info%2Fcommon-sense-accessibility-20%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcssgallery.info%2Fcommon-sense-accessibility-20%2F&amp;source=dan_tamas&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>When it comes to accessibility, every coder is a small guru. On the websites where I bid for projects everybody is an accessibility and usability expert (including myself, I admit).</p>
<p>Altough these rules exist for quite a while there are coders who find it difficult to implement them &#8211; so I am trying to find here what are the tricks that you use in writing your code to make it accessible.  For example, altough writing semantic code helps (a lot !) it is not always enough.  Some try to view their pages with CSS and images disabled, some don&#8217;t.  Some of us have tricks that we do not want to share to other coders.  Some of us share. We&#8217;re not all gurus, right? Someone has to start from somewhere.</p>
<p>So if you have something interesting to say, add your own rules here.</p>
<h2>Let&#8217;s start with basic common sense:</h2>
<ol>
<li> write semantic and valid code &#8211; use correct tags while trying to satisfy Google&#8217;s needs &#8211; adapt the tags to the context</li>
<li>use lists for navigation and for consecutive link blocks</li>
<li>write accessible forms : use labels, server-side validation, even fieldset where necessary. Should I use <strong>type=&#8221;image&#8221; with alt text </strong>instead of submit? I don&#8217;t know&#8230;.I like submit. Camino does not <img src='http://cssgallery.info/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> (</li>
<li>use the <strong>skip to content</strong> or <strong>skip navigation</strong> links. Everybody say you should&#8230;.</li>
<li>using a <strong>.wai class</strong> to hide text that might help screen readers &#8211; some people use display:none (not so good), some use negative indent.</li>
<li>provide transcriptions for video files (does Google do that for YouTube?), alt tags, longdesc tags, explanation for graphics (the coders who built Forex sites did that?), audio CAPCHA (do you do that???)</li>
<li>other common-sense ideas &#8211; use <strong>em</strong> or <strong>percent</strong> instead of px (altough Mozilla is a very good fellow and knows how to increase em, px, % and also images), use big text on buttons, appropriate contrast colours,  no animated gifs/blinking/flickering elements, align text on the left side,  don&#8217;t use &#8220;<strong>click here</strong>&#8221; links cause they ALL are click here&#8230;</li>
<li>write <strong>accessible tables</strong> : use th scope=&#8221;row&#8221; and &#8220;column&#8221;, id and header atributes to associate data cells with header cells,  use summary and caption to give extra clues about the content of the table (altough usually tables are preceded by headings and short paragraphs of text). Use tables to display data only.</li>
<li>provide a search function  &#8211; altough I build small brochure sites and I don&#8217;t embed search in them.  Do you? For small sites?</li>
<li>provide buttons to increase font size.  Sometimes  I do, sometimes I don&#8217;t, depending on what clients ask. I believe that people who have special needs know the CTRL + combination and use it, the A-, A+ buttons seem to me like a bit redundant.  Maybe I&#8217;m wrong&#8230; Also I do not provide a button to increase the line-height and other white spaces, I set the line-height in CSS to be bigger that the default. Is it good, is it bad? You tell me, I&#8217;m keen to know.</li>
</ol>
<p>Beside these rules there are lots more, some that make sense and are used, some that I don&#8217;t remember here. I&#8217;m having a short list of elements that I don&#8217;t use mainly because I do not have contact with them and I forget (or want to forget that)  they exist.  I&#8217;m still learning about more sensible elements for the  people in need so maybe I&#8217;m ignoring some details.</p>
<h2>So, the next accessibility rules are not my favourites:</h2>
<ol>
<li>use altkeys for navigation &#8211; a lot of people still argue about it, I&#8217;m waiting to see who wins</li>
<li>use title for frames &#8211; it shoud say &#8220;avoid frames&#8221;, but for who&#8217;s using them&#8230;.use titles</li>
<li>target=&#8221;_blank&#8221; issue &#8211; there is still a lot of arguing about forcing the user to an action that he/she does not want. It&#8217;s common-sense too, but for the coders not respecting the above rules this is too &#8230;. in-depth. For me, it&#8217;s like somebody adding sugar in my coffee when I mentioned that I like it black. What if I have diabetes?</li>
<li>use the focus indicator &#8211; I recognize I don&#8217;t bother too much to style it, altough I do tab sometimes through navigation links or form elements. <img src='http://cssgallery.info/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </li>
</ol>
<p>That&#8217;s it for now, these are some basic rules I have in mind when I code.  I do try to visualize the site with the CSS/images disabled but I am aware that this is not enough. The simple fact that I&#8217;m trying to improve my knowledge is my excuse. But I know it&#8217;s not enough and if you have similar sets of rules that guide you please share them here &#8211; to guide everyone who is trying to learn something useful.</p>
<p>Ohhh, I forgot: use image replacement techniques, it&#8217;s a great invention <img src='http://cssgallery.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong class="spanish">Check the Spanish version of this post:<br />
<a href="http://nosoloweb.es/accesibilidad-con-sentido-comun-20/" rel="me">Accesibilidad con sentido común 2.0</a></strong></p>
<div style="clear:both;">&nbsp;</div><div class="shr-publisher-389"></div><!-- Start Shareaholic LikeButtonSetBottom --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' shr_layout='button_count' shr_showfaces='false' shr_href='http%3A%2F%2Fcssgallery.info%2Fcommon-sense-accessibility-20%2F'></a><a class='shareaholic-fbsend' shr_href='http%3A%2F%2Fcssgallery.info%2Fcommon-sense-accessibility-20%2F'></a><a class='shareaholic-googleplusone' shr_size='medium' shr_count='true' shr_href='http%3A%2F%2Fcssgallery.info%2Fcommon-sense-accessibility-20%2F'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom -->

<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://cssgallery.info/common-sense-accessibility-20/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic (User is logged in)
Page Caching using disk: basic (User agent is rejected)
Database Caching using disk: basic

Served from: www.cssgallery.info @ 2012-02-04 19:57:16 -->
