<?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>jasoncorns.com</title>
	<atom:link href="http://www.jasoncorns.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jasoncorns.com</link>
	<description>A few words from an avid HTMLer</description>
	<lastBuildDate>Thu, 15 Sep 2011 16:48:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Jason vs. jealousy &#8211; a quick look at the Response Redesign of the Boston Globe</title>
		<link>http://www.jasoncorns.com/posts/jason-vs-jealousy-a-quick-look-at-the-response-redesign-of-the-boston-globe/</link>
		<comments>http://www.jasoncorns.com/posts/jason-vs-jealousy-a-quick-look-at-the-response-redesign-of-the-boston-globe/#comments</comments>
		<pubDate>Thu, 15 Sep 2011 16:38:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML Development]]></category>
		<category><![CDATA[Responsive Web Design]]></category>
		<category><![CDATA[web standards]]></category>
		<category><![CDATA[Boston Globe]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[Planning]]></category>
		<category><![CDATA[Site Design]]></category>

		<guid isPermaLink="false">http://www.jasoncorns.com/?p=103</guid>
		<description><![CDATA[Reading time: 2 &#8211; 4 minutes Why jealousy?  I have not had the opportunity to work on a responsive redesign yet; REALLY jealous of all parties involved! A short while ago, the Boston Globe rolled out a redesigned website. To say that it was just redesigned is an understatement, though &#8211; the new entity is [...]]]></description>
			<content:encoded><![CDATA[
<p>Reading time: 2 &#8211; 4 minutes</p>
<p>Why jealousy?  I have not had the opportunity to work on a responsive redesign yet; REALLY jealous of all parties involved!</p>
<p>A short while ago, the Boston Globe rolled out a redesigned website. To say that it was just redesigned is an understatement, though &#8211; the new entity is the result of Responsive Web Design.</p>
<p>This very buzzwordy descriptor is a new philosophy in web design where content is delivered in principally the same manner to all devices but its presentation is adjusted to accommodate the browser&#8217;s screen size and orientation. There is a single site that works for both desktop and mobile displays in both portrait and landscape. In the past, this has been accomplished by developing a site per visitor type &#8211; one site for the iPhone visitors, one for Blackberry visitors, a &#8216;main&#8217;/'regular&#8217;/'desktop&#8217; site, etc. Sure, designers and developers could combine some of the views and use a generic &#8216;mobile&#8217; site, but the idea was the same.</p>
<p><span id="more-103"></span></p>
<p>The Boston Globe site is one of the first big names to implement a full redesign using this responsive philosophy, which is why the new site has garnered so much attention. Take a look for yourself &#8211; open the site, then resize your browser and watch the content shift. Image sizes adjust; column widths shrink; eventually columns start to drop down to be pillars, instead of side-by-side; the navigation shrinks and eventually starts to drop items. The whole thing is just a marvel of web design.</p>
<p>The point of responsive web design is not to accommodate this type of resizing &#8211; a lot of sites now use fluid layouts, so as you expand your browser the line lengths increase &#8211; rather the point is that the site naturally respects your browser size and remains device agnostic. You&#8217;ll get a slightly different experience if you move from the Droid to your desktop, or rotate your iPad from portrait to landscape, but you&#8217;ll never get a different site. You still have access to all the same content without having to click the &#8220;full site&#8221; link from your mobile browser.</p>
<p>Upstatement, the Filament Group and a few contractors (notably, <a title="Ethan Marcotte" href="http://www.twitter.com/beep" target="_blank">Ethan Marcotte</a>, <a title="Ethan Marcotte on his role in the Boston Globe redesign" href="http://unstoppablerobotninja.com/entry/the-boston-globe/" target="_blank">write-up</a>) worked together to create this masterpiece. <a title="bostonglobe.com - A NEWSPAPER FOR THE FUTURE" href="http://upstatement.com/portfolio/boston-globe/" target="_blank">Upstatement&#8217;s write-up</a> is pretty thorough. If you&#8217;re into it, give it a read. <a title="Jeremy Keith's Twitter page" href="http://twitter.com/adactio" target="_blank">Jeremy Keith</a> has another great <a title="Boston Globe Scope" href="http://adactio.com/journal/4862/" target="_blank">journal article</a> about the Boston Globe&#8217;s new site, and the response he&#8217;s witnessed.</p>
<p><a title="BostonGlobe.com - hooray for responsive web design" href="http://www.bostonglobe.com" target="_blank">http://www.bostonglobe.com</a></p>

]]></content:encoded>
			<wfw:commentRss>http://www.jasoncorns.com/posts/jason-vs-jealousy-a-quick-look-at-the-response-redesign-of-the-boston-globe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jason vs. Semantic CSS &#8211; establishing a visual outline in your stylesheet</title>
		<link>http://www.jasoncorns.com/posts/jason-vs-semantic-css-establishing-a-visual-outline-in-your-stylesheet/</link>
		<comments>http://www.jasoncorns.com/posts/jason-vs-semantic-css-establishing-a-visual-outline-in-your-stylesheet/#comments</comments>
		<pubDate>Sat, 16 Oct 2010 21:02:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML Development]]></category>
		<category><![CDATA[code sample]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://jasoncorns.com/?p=49</guid>
		<description><![CDATA[Keep your HTML, CSS and self sane by maintaining a semantic layout in your CSS]]></description>
			<content:encoded><![CDATA[
<p>Reading time: 4 &#8211; 6 minutes</p>
<p>Before we begin, let me say that the delivered stylesheet should be minified and free of excess spaces, tabs, semicolons and lengths of 0px instead of &#8220;0&#8243;, using tools like the <a title="Yahoo! YUI Compressor" href="http://developer.yahoo.com/yui/compressor/">YUI compressor</a> or the <a title="CSS Drive Gallery - CSS Compressor" href="http://www.cssdrive.com/index.php/main/csscompressor/">CSS Drive Online CSS Compression Utility</a>.</p>
<p>I have read and been part of many <a title="StackOverflow discussion for organizing a CSS document" href="http://stackoverflow.com/questions/72911/whats-the-best-way-to-organize-css-rules">discussions about the format of a CSS document</a>.  I happen to prefer to keep my declarations on one line, alphabetized.  I also like to keep the entire ruleset on one line, unless the ruleset is too long (I know, that&#8217;s subjective, but it <em>is </em>my blog).</p>
<p>Recently, though, I&#8217;ve had to work on some interesting and complex designs.  As the DOM depth grew, I found myself getting lost in my own HTML.  The solution, for me, was a simple one, both easy to implement and easy to back out of (especially when using the tools listed above).</p>
<p><span id="more-49"></span></p>
<p>My CSS formatting rules were category based:</p>
<ol>
<li><a title="YUI CSS reset library" href="http://developer.yahoo.com/yui/reset/">Reset CSS</a>, if necessary/desired (note, I don&#8217;t always use a full reset library)</li>
<li>HTML declarations</li>
<li>ID rules</li>
<li>class rules</li>
</ol>
<p>Beyond that, I found my formatting rules lacking.  Last-in mental flow within category left me lost and confused.  To buttress my existing formatting rules, I adopted a visual outline in my stylesheet that matched the indent rules of my HTML.  For example, the following HTML:</p>
<pre class="brush:[html]">&lt;div id="nav"&gt;
   &lt;ul&gt;
      &lt;li&gt;&lt;a href="http://www.google.com" title="some local navigation link"&gt;Navigation Item 1&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://www.google.com" title="some local navigation link"&gt;Navigation Item 2&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://www.google.com" title="some local navigation link"&gt;Navigation Item 3&lt;/a&gt;
         &lt;ul&gt;
            &lt;li&gt;&lt;a href="http://www.google.com" title="some local navigation link"&gt;Sub-Navigation Item 1&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href="http://www.google.com" title="some local navigation link"&gt;Sub-Navigation Item 2&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href="http://www.google.com" title="some local navigation link"&gt;Sub-Navigation Item 3&lt;/a&gt;
         &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;&lt;a href="http://www.google.com" title="some local navigation link"&gt;Navigation Item 4&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://www.google.com" title="some local navigation link"&gt;Navigation Item 5&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="http://www.google.com" title="some local navigation link"&gt;Navigation Item 6&lt;/a&gt;&lt;/li&gt;
   &lt;/ul&gt;
&lt;/div&gt;</pre>
<p>Would be supported by this CSS:</p>
<pre class="brush:[css]">	#nav {border:1px solid #ccc;}
		#nav ul {list-style-type:none;margin:0;padding:0;}
			#nav ul li {display:inline;list-style-type:none;margin:0;padding:0;}
			#nav ul li:hover {position:relative;}
				#nav ul li a {display:inline-block;color:#000;padding:4px 12px;text-decoration:none;}
				#nav ul li a:hover {text-decoration:underline;}
				#nav ul li ul {background-color:#666666;border:1px solid #333333;display:none;position:absolute;left:5px;top:100%;width:200px;}
				#nav ul li ul li {display:block;width:200px;}
				#nav ul li:hover ul {display:block;}
				#nav ul li ul li a {color:#fff;}</pre>
<p>There&#8217;s nothing new or magical here.  In fact, this isn&#8217;t even a very pretty implementation of a flyout menu.  The point here, though, is that my CSS has been formatted to mimic the indentation and format of the HTML.  Clearly, &#8220;li&#8221; is a child of &#8220;ul&#8221; is a child of &#8220;#nav&#8221; and so on.  As your style sheet grows, you&#8217;ll be glad you took the extra steps to maintain a mock of your HTML formatting.</p>
<p>Don&#8217;t forget &#8211; the final step before publishing to production should, at the very least, be minification!</p>
<p>Bonus content: this concept can be rewritten to use Object Oriented CSS (<a title="Object Oriented CSS right from the source: Stubbornella via github" href="http://github.com/stubbornella/oocss/wiki">stubbornella@github</a>, <a title="jqconn/oocss thread on twitter" href="http://twitter.com/#search/%23jqcon">#jqconn #oocss</a>, <a title="Object Oriented CSS org site" href="http://oocss.org/">object-oriented CSS</a>).  Check back later for that post!</p>

]]></content:encoded>
			<wfw:commentRss>http://www.jasoncorns.com/posts/jason-vs-semantic-css-establishing-a-visual-outline-in-your-stylesheet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jason vs. Anchor Tags &#8211; Getting Results with the preventDefault method</title>
		<link>http://www.jasoncorns.com/posts/jason-vs-anchor-tags-getting-results-with-the-preventdefault-method/</link>
		<comments>http://www.jasoncorns.com/posts/jason-vs-anchor-tags-getting-results-with-the-preventdefault-method/#comments</comments>
		<pubDate>Fri, 14 May 2010 04:50:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[modal]]></category>
		<category><![CDATA[preventDefault]]></category>

		<guid isPermaLink="false">http://jasoncorns.com/?p=19</guid>
		<description><![CDATA[eventMarker.preventDefault()
This is the moment we've been waiting for.  We have been following happily along wherever the DOM actions will take us but now, we are going to take control of the clicked anchor tag, and force it to do what we want.  ]]></description>
			<content:encoded><![CDATA[
<p>Reading time: 6 &#8211; 10 minutes</p>
<p>In another post, <a title="Jason vs. Page Weight - a brief discussion on planning and managing page size" href="http://www.jasoncorns.com/posts/jason-vs-page-weight-accessibility-series-pt-2">Jason vs. Page Weight – Accessibility Series, pt. 2</a>, I talked about a <a title="MarketingExperiments.com article on page weight and download speed" href="http://www.marketingexperiments.com/improving-website-conversion/page-weight.html#1b">page weight</a> problem I had with a client.  In the end, the client decided to put a lot of data on a single page.  In my opinion, this would have been a great time to use AJAX to pull in the data rather than just pushing it all to the page at load.  The problem with AJAX is that it relies on <a title="Wikipedia definition of JavaScript scripting language" href="http://en.wikipedia.org/wiki/Javascript">JavaScript</a> (reliance may, in fact, be too weak a term, honestly) and so would not have been ideal for search engines and would not have provided accessible page content.  We could fix that by linking to pages with additional content, but we really want to use AJAX to show the data on a single page for all visitors with <a title="A W3Schools report of Web Statistics and Trends, including the statistics of JavaScript usage" href="http://www.w3schools.com/browsers/browsers_stats.asp">JavaScript enabled</a>.  So, we just do both.</p>
<p><span id="more-19"></span></p>
<p>By leveraging the <a title="jQuery's event system normalizes the event object according to W3C standards.  The preventDefault method prevents the browser from executing the default action." href="http://docs.jquery.com/Events/jQuery.Event#event.preventDefault.28.29">preventDefault method</a> available in the <a href="http://www.jquery.com">jQuery</a> library (this is actually a JavaScript call, and exists outside of jQuery.  See the <a href="http://www.w3.org/TR/2001/WD-DOM-Level-3-Events-20010823/events.html#Events-Event-preventDefault">W3C write up</a>.) we can provide a page that is static, accessible HTML content by default, but picks up some dynamic interest at page load.  Note: some of the following examples presuppose a single domain; using AJAX to load content from other pages can easily get into <a href="http://en.wikipedia.org/wiki/Cross-site_scripting">cross-site scripting</a> issues.  This can be overcome with some sparse use of iframes.</p>
<p>Take the following HTML code for example:</p>
<pre class="brush:[xml]">&lt;div class="targetLinks"&gt;
	&lt;ul&gt;
		&lt;li&gt;&lt;a href="somepage.html"&gt;Some Page&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="anotherpage.html"&gt;Another Page&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;
&lt;/div&gt;</pre>
<p>No magic here.  Two links to two different pages (for simplicity, these are two pages within the same domain).</p>
<p><strong>The Task</strong></p>
<p>Our task is to display content from a different page in a modal dialog.  Just to make it more fun, we&#8217;ll pull a specific part of the target page in our modal (denoted in each page by a div with ID of &#8220;target&#8221;).  To add that last little bit of shine to the action, we&#8217;ll prevent the URL from changing (more appropriately, we&#8217;ll stop any calls to <em>window.location.href</em>).</p>
<p>We&#8217;ll need three things for this tutorial:</p>
<ul>
<li><a href="http://code.google.com/p/jqueryjs/downloads/detail?name=jquery-1.3.2.min.js">jQuery v 1.3.2 (preferably minified)</a></li>
<li><a href="http://jqueryui.com/download">jQuery UI Core v 1.7.3</a></li>
<li><a href="http://jqueryui.com/download">jQuery Modal code base v 1.7.3</a></li>
</ul>
<p>Let&#8217;s take a look at the code required to attain our goal, then we&#8217;ll break it down piece by piece.</p>
<pre class="brush:[js]">$(document).ready(function() {
	$('.targetLinks ul li a').click(function(eventMarker) {
		var $dialog = $('&lt;div&gt;&lt;/div&gt;')
			.load($(this).attr('href') + " #target")
			.dialog({
				autoOpen: false,
				modal:true,
				title: $(this).attr('title'),
				width: 500,
				height: 300
			});
		$dialog.dialog('open');
		eventMarker.preventDefault();
	});
});</pre>
<p>If you&#8217;ve seen jQuery snippets before, you should be familiar with the <em>$(document.ready)</em>, which executes the wrapped code only after the document has finished loading.</p>
<pre class="brush:[js]">$('.targetLinks ul li a').click(function(eventMarker) {</pre>
<p>This line of code does two things:</p>
<ol>
<li>Traverses the DOM to find the elements with class &#8220;targetLinks&#8221; that also contain the UL LI A descendant path and establishes a jQuery array of elements representing the matched &lt;a&gt; tags.</li>
<li>Assigns a click event to each &lt;a&gt; in the returned array of elements.  The click event is an anonymous function that takes the DOM Event and assigns it to an argument called &#8220;eventMarker&#8221;.</li>
</ol>
<pre class="brush:[js]">var $dialog = $('&lt;div&gt;&lt;/div&gt;')</pre>
<p>Next, we establish a variable, <em>$dialog</em>, as a pointer to a newly created DIV element. Why a new div?  The jQuery UI dialog, like many other jQuery plugins, destroy the element used as the selector when the dialog closes.  We could target an existing DIV as the dialog, but when the modal closes, the existing DIV will be destroyed (lost for all script).</p>
<pre class="brush:[js]">.load($(this).attr('href') + " #target")</pre>
<p>We continue the method chain, established on our newly created div, by calling the <a href="http://api.jquery.com/load/">jQuery .load() method</a>.  Load expects a URL (same site URI, of course), which we have passed by calling <em>$(this)</em> (the clicked anchor) and calling the <em><a href="http://api.jquery.com/attr/">.attr()</a><span style="font-style: normal;"> method asking for the href.</span></em></p>
<pre class="brush:[js]">.dialog({
	autoOpen: false,
	modal:true,
	title: $(this).attr('title'),
	width: 500,
	height: 300
});</pre>
<p>Still continuing the method chain, we call the <em><a href="http://jqueryui.com/demos/dialog/">.dialog()</a></em> method on the <em>$dialog </em>variable (div that was created).  This established the UI Framework necessary to make the dialog work.  We set a few options to the dialog (see the <a href="http://jqueryui.com/demos/dialog/#options">UI documentation for the dialog</a> for more options), again referencing <em>$(this)</em> (the clicked anchor) and calling the <em><a href="http://api.jquery.com/attr/">.attr()</a> </em>method asking for the title of the anchor to set to the dialog title.</p>
<pre class="brush:[js]">$dialog.dialog('open');</pre>
<p>Here, we have separated the <em>open </em> command from the dialog instantiation.  This doesn&#8217;t need to be the case, here, but may prove to be a useful practice later.  If you were waiting to see your dialog, you should see it now.</p>
<pre class="brush:[js]">eventMarker.preventDefault()</pre>
<p>This is the moment we&#8217;ve been waiting for.  We have been following happily along wherever the DOM actions will take us but now, we are going to take control of the clicked anchor tag, and force it to do what we want.  Remember, <em>eventMarker</em> is the event argument passed in initially.  Here, we are calling the JavaScript preventDefault method on the event.  Since our event is the result of the click of an anchor, the default action <em>should</em> be to alter the <em>window.location.href</em>.  Instead, we have truncated the event prior to changing the address bar.  As you might imagine, this same method can be used for bookmark links as well &#8211; in the end, the preventDefault() method will prevent the hash from being appended to the URL.</p>
<p><strong>Why </strong><em><strong>preventDefault()</strong></em><strong> instead of </strong><em><strong>return false;</strong></em><strong>?</strong></p>
<p>Whenever  you run a return from a JavaScript function, you exit the function &#8211; completely preempting any further actions.  With <em>preventDefault()</em>, further processing can be accomplished after the method call, within the same function.  Note that <em>eventMarker.stopPropogation()</em> or <em>eventMarker.cancelBubble=true</em> should be used to completely cancel event bubbling.</p>
<p><strong>So what?</strong></p>
<p>Why would the methods in this post be useful?  With this code,  we are unobtrusively adding click event handlers to targeted links, but we are doing so without actually coding &#8220;onclick=&#8217;&#8230;&#8217;&#8221; or setting href=&#8221;javascript:function()&#8221;.  If your <a href="http://www.webdesignerdepot.com/2010/02/how-to-plan-for-the-absence-of-javascript/">visitors have JavaScript disabled</a>, then they will get the benefit of linked content.  If JavaScript is enabled, they will get the benefit of dynamic content display, without leaving the page.  <em>Win-win.</em></p>
<p><em><span style="font-style: normal;">Download the <a href="http://www.jasoncorns.dreamhosters.com/wp-content/uploads/2010/05/preventDefault_sample_code1.zip">code used in this post</a>.</span></em></p>

]]></content:encoded>
			<wfw:commentRss>http://www.jasoncorns.com/posts/jason-vs-anchor-tags-getting-results-with-the-preventdefault-method/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Jason vs. Page Weight &#8211; Accessibility Series, pt. 2</title>
		<link>http://www.jasoncorns.com/posts/jason-vs-page-weight-accessibility-series-pt-2/</link>
		<comments>http://www.jasoncorns.com/posts/jason-vs-page-weight-accessibility-series-pt-2/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 04:48:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[versus]]></category>
		<category><![CDATA[web standards]]></category>
		<category><![CDATA[Information Architecture]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Planning]]></category>
		<category><![CDATA[Site Design]]></category>

		<guid isPermaLink="false">http://jasoncorns.com/?p=15</guid>
		<description><![CDATA[When the topic of Web Accessibility arises, I immediately think of a standard set of keywords: ADA/508 compliance, information architecture, JavaScript, well-formed HTML, ALT text, etc.  This list represents the things that, as I have been taught over the past few years, have significant impact on the accessibility of a page and a site.

Recently, during an accessibility assessment, I discovered a new factor to consider: page weight.]]></description>
			<content:encoded><![CDATA[
<p>Reading time: 4 &#8211; 7 minutes</p>
<p>When the topic of Web Accessibility arises, I immediately think of a standard set of keywords: ADA/508 compliance, information architecture, JavaScript, well-formed HTML, ALT text, etc.  This list represents the things that, as I have been taught over the past few years, have significant impact on the accessibility of a page and a site.</p>
<p>Recently, during an accessibility assessment, I discovered a new factor to consider: page weight.  <a title="MarketingExperiments.com article on page weight and download speed" href="http://www.marketingexperiments.com/improving-website-conversion/page-weight.html#1b">Page Weight</a> should not be a new concept to any web designer.  Ever since the days of dial-up dominance, we have been scrutinizing every paragraph, abusing calculators to determine the most appropriate image collection, mapping the dimension and location of every new icon and rollover in our <a title="Article from A List Apart, defining image sprite usage - CSS Sprites: Image Slicing’s Kiss of Death" href="http://www.alistapart.com/articles/sprites">sprite</a>, clocking speed tests and ripping out every non-essential bit of <a title="Wikipedia definition of whitespace in computer science and programming" href="http://en.wikipedia.org/wiki/Whitespace_(computer_science)">white-space</a> we could find.  I admit that I have become a little lax, allowing more and larger images on my page for the sake of design, all the while whispering silent apologies to the <a title="Pew Research Center survey - Interest in and adoption of broadband internet usage between October, 2002 and April, 2009" href="http://www.pewinternet.org/Reports/2009/10-Home-Broadband-Adoption-2009/5-Barriers-to-broadband-adoption/2-How-many-dialup-users-want-broadband.aspx?r=1">dial-up community</a>.</p>
<p><span id="more-15"></span></p>
<p>During the aforementioned assessment, we paid special attention to one set of pages in particular.  Our project, the public-facing site of a university, has a section outlining each of the degree programs.  The challenge the client faced is one that many education websites face: how to appropriately define a program and all its structural elements, without destroying the visitor&#8217;s sense of connection to the program itself.  The client&#8217;s decision was to provide all the program details on one page, rather than just linking from the program page to course description pages.  Program details include the course subject, required course list, course descriptions and, in some cases, subject description.  For a full program page, we discovered the amount of information could be&#8230;.daunting.  With nine or ten requirement categories and as many as fourteen course requirements per category, we were looking at a number of pages with an HTML weight of 130 kb.  Once the images were added in, we were well above 200 kb in page weight which could take up to 30 seconds to load on a 56 Kbps modem.</p>
<p>As it turns out, the page weight is a necessary evil for this particular page.  We had two options, in order to maintain an accessible data set: put all the information on one page or link to it all from one page.  All the data on one page makes the navigation of the program easier for the site visitor, but overloads the ideal weight.  Linking from the program page to each course would have delivered a light page but would have forced a lot of usage of the back button.</p>
<p>So what is the ideal solution?  For this client, the massive page was the preferred solution.</p>
<p>Alternatively, we could have used a bit of <a title="JQuery: The Write Less, Do More, JavaScript LIbrary" href="http://jquery.com/">JQuery</a> magic to deliver a lightweight page, with links to additional content, that was also slick and usable.  I cover the details of this option in an upcoming post (<a title="Jason vs. Anchor Tags - Getting Results with the PreventDefault method.  A look at how to leverage this JavaScript method to take control of your anchor tags." href="http://www.jasoncorns.com/posts/jason-vs-anchor-tags-getting-results-with-the-preventdefault-method">Jason vs. Anchor Tags &#8211; Getting Results with the PreventDefault method</a>) but the idea is this:</p>
<p>Provide the user with an appropriate amount of content &#8211; an amount that would adequately describe the program- and supply links to the detail pages of each course.  When a visiting user has <a title="One of my posts at WebDesignerDepot.com: How to Plan for the Absence of JavaScript" href="http://www.webdesignerdepot.com/2010/02/how-to-plan-for-the-absence-of-javascript/">JavaScript disabled</a>, the content would behave as you might expect: the visitor reads the program description, clicks a link and navigates to a course description page.</p>
<p>When JavaScript is available, however, we capture the click event of the anchor and, since we&#8217;re in the same domain as the source content, pull the source content into a modal dialog (like <a title="A light-weight, customizable lightbox plugin for jQuery 1.3 and 1.4" href="http://colorpowered.com/colorbox/">ColorBox</a>, if you&#8217;re in the market for a good one) via AJAX request and prevent the default action of the link from firing.  We&#8217;ll use the HREF property of the anchor as the URI to the source.  Further, we&#8217;ll use the anchor&#8217;s class as the selector target (See<a title="jQuery - write less, do more.  Class Selector." href="http://api.jquery.com/class-selector/"> jQuery&#8217;s class selector</a> for more details).</p>
<p>A few things to note -</p>
<ol>
<li>We did not have to include any onclick property to return false at the click, which helps us maintain our unobtrusive JavaScript.</li>
<li>Since we would be relying on the anchor&#8217;s class when attaching click events, we can flag any anchor to be skipped just by adding another name to a compound class of the anchor OR omitting a target class name.</li>
<li>Degradation is smooth and predictable, since we&#8217;re just talking about anchors with standard href properties.  Without the JavaScript to cause the Modal onclick, the link will fire and redirect the visitor to the uri referenced in the href.</li>
</ol>
<p>With the JavaScript in place, we will have taken a very large page and trimmed it down to a manageable size, and successfully merged accessibility with usability.</p>

]]></content:encoded>
			<wfw:commentRss>http://www.jasoncorns.com/posts/jason-vs-page-weight-accessibility-series-pt-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Jason vs. Accessibility, pt. 1</title>
		<link>http://www.jasoncorns.com/posts/jason-vs-accessibility-pt-1/</link>
		<comments>http://www.jasoncorns.com/posts/jason-vs-accessibility-pt-1/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 03:42:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[versus]]></category>
		<category><![CDATA[web standards]]></category>

		<guid isPermaLink="false">http://jasoncorns.com/?p=10</guid>
		<description><![CDATA[Since January, 2000, the JavaScript statistics have been all over board, as high as an estimated 20% and as low as an estimated 5%.  In the same timeframe JavaScript, and browser support thereof, has improved to the point that it is one of the most useful tools in a designer’s toolbox.  How, then, are we supposed to do without?]]></description>
			<content:encoded><![CDATA[
<p>Reading time: 2 &#8211; 4 minutes</p>
<p>Usability is finally starting to bubble to the top for Web Designers and Information Architects.  We are, as an industry, starting to realize that our audience exists outside of Photoshop canvas and beyond the code.  In fact, I have witnessed an increased focus on <a title="Wikipedia.org definition of Unobtrusive JavaScript, a foundational element of graceful JavaScript degradation" href="http://en.wikipedia.org/wiki/Unobtrusive_JavaScript">JavaScript degradation</a> over the past few months &#8211; an unspoken admission that we, as web design professionals, should and shall provide web content to users of all browsing backgrounds and capabilities.  We have started providing, in earnest, content for the connoisseurs, the design savvy, the critics and the forward thinkers all in tandem with the conservative visitors, the visually impaired, our friends on mobile devices and those that, for whatever reason, just have <a title="A W3Schools report of Web Statistics and Trends, including the statistics of JavaScript usage" href="http://www.w3schools.com/browsers/browsers_stats.asp">JavaScript disabled</a>.</p>
<p><span id="more-10"></span></p>
<p>Personally, I like movement on a web page.  I like my flyout navigation to have some animation, and my repetitive content divs to mimic an accordion as I expand and collapse each panel; the action is interesting  and it adds to my experience.  In fact, I am disappointed, in most cases, when I find no animation where I expect to find it.  Like many of my contemporaries I am quickly discovering that all those things I enjoy about modern web design are also the things that make a webpage into an accessibility nightmare.  What do I, as a conscientious <a title="Wikipedia.org definition of Web Architecture and, by proxy, the web architect" href="http://en.wikipedia.org/wiki/Web_architect">Web Architect</a>, do?  What do I suggest to my clients?  Do I keep my designs and techniques moving forward or do I abandon all the movement and interaction so that the minority of users can browse the web to their own enjoyment?</p>
<p>My answer, flying in the face of the quintessential proclamation about having and eating cake, is simply “do both”.  The analysis phase of every project I accept has increased to allow for accessibility planning.  With so many well-defined best practices for Web Accessibility to be found, the platform for an enjoyable, accessible site is out there; we just have to plan for it.</p>
<p>Throughout this series, I will focus on modern web design trends and how to reconcile these trends with the movement toward, and significant need for, designing websites that are accessible to all audiences.  We may all be surprised as we find a best-of-both-worlds scenario for most design techniques.</p>
<p>I also suggest reading W3C&#8217;s Web Accessibility Initiative&#8217;s article about <a title="'Web Content Accessibility and Mobile Web: Making a Web Site Accessible Both for People with Disabilities and for Mobile Devices', developed by the Web Accessibility Initiative" href="http://www.w3.org/WAI/mobile/">making websites accessible for users with disabilities and for mobile devices</a>.</p>

]]></content:encoded>
			<wfw:commentRss>http://www.jasoncorns.com/posts/jason-vs-accessibility-pt-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

