Everything is a Progressive Enhancement

Posted November 28th, 2007 by Mike Cherim

Mention progressive enhancement as it pertains to web development and many people are going to immediately think of proper and accessible methods of adding JavaScript to a web page. In reality, though, everything is a progressive enhancement. From the addition of styles, imagery, and aesthetic touches, to layout, links, to the aforementioned scripting, even the content can play a role in this category. All of it can enhance a web site, and all of it must be applied progressively. Let’s explore this further…

Most readers here will agree that a basic web site consisting of valid markup used properly — semantically — is a reasonably accessible medium right out of the box. Until, that is, we start adding to it. It is then that we sometimes inadvertently start making a good thing less so. To better understand this, let’s dissect a few typical site enhancements and how we make sure they are progressive:

Content

The styling of the content will fall under styling, so this item relates to the actual content itself. Remember it’s already marked up properly so this item is hard to get wrong, but some do. Content must be readable (again, I’m not talking about line lengths, contrast, or any of these style related issues). It must be readable in that the words used must be understood by your audience. Thus, progressively enhancing raw content is a simple matter of using the proper level of grammar for your readers, adding a glossary if this isn’t entirely possible, and spell checking your text. You don’t have to be an [insert your language here] major. I’ve been on some sites that while fundamentally accessible, were loaded with poorly written content chock full of grammatical and spelling issues. An analogy for a site like this would be a dry well: sure, I can drop my bucket into it, it’s accessible, but I can’t get anything of value out of it.

Styles

A lot of accessible sites suffer in this area. Not to say they lack style, that’s not the point I’m trying to make, but the makers apply styles either excessively in inappropriate ways or in such a way that doesn’t enhance the site but rather degrades it. Too wide or too narrow (layout), too light or too dark (tone or contrast), too small or too large (text). To avoid this malady, look at the site without styles, then think about all that you’re adding. Considerations need to be made along the way. Don’t get me wrong, you can apply high style and still enhance, there’s just a few things that need to be considered then avoided… detailed in the “too this and thats” above.

Images

Imagery is another type of enhancement. One that falls into both of the categories above — the imagery can be content or style. It doesn’t make a difference to me whether either is applied as an embedded image or a background, both can be used to these ends successfully if done right (I don’t subscribe to the popular rule that all decorative images should be backgrounds). What is important is that any content imagery is suitably backed up so as to convey the image’s content value. Otherwise the image isn’t a universally accessible enhancement. The consideration used in content images can also be extended to decorative images in that they should be [file]-sized in such a way that enhances the site, instead of creating a too-long-to-download bandwidth hog. I once visited a site that had four very small images used as supporting decoration. It would have been a nice and progressive enhancement if the images were sized before being embedded, but they weren’t. These image were over a megabyte each. It’s was a simple rather sparse web page with four megabytes of decorative imagery. Not a progressive enhancement.

Scripts

This is the obvious one everyone thinks of, and I will reiterate its implications here with a simple rule: Unless the script is guaranteed to be supported server-side, the same script language must be used to add the enhancement to the page. And if it cannot be supported by the user, make sure that the site’s primarily usability and accessibility is intact. In other words, it you want to add a bit of JavaScript functionality to a web page, use JavaScript to do so, and don’t rely on said script — or noscript element — to make the site usable and accessible. Not everyone’s equipment who can a respond to a JavaScript call, can use the script (see Tommy’s article to better understand this).

The Point

What I hope to convey is that if everything is thought of as a progressive enhancement, a solidly applied embellishment if you wish, then the chance of adding this stuff smartly increases. If we save this type of thinking for the cool scripting phase, it’s easier to overlook some of the more fundamental steps that need to be considered along the way.


7 Responses to: “Everything is a Progressive Enhancement”

  1. On the usability of contextual URLs - Joe Dolson Accessible Web Design responds:
    Posted: November 29th, 2007 at 5:48 pm

    […] Of course, this is better dealt with by making use of smart styling. Like Mike Cherim mentions in a recent Accessites article: […]

  2. John Faulds responds:
    Posted: November 29th, 2007 at 11:23 pm

    I’ve been on some sites that while fundamentally accessible, were loaded with poorly written content chock full of grammatical and spelling issues.

    I came across one the other day that thought that not bothering with capital letters would be cool. Ever tried to read blocks of content with no capitalis? :/

    I didn’t stay very long.

  3. Craig Francis responds:
    Posted: November 30th, 2007 at 4:37 am

    Can’t be fixed with Find and Replace either

    Although there not perfect, regular expressions might help here, even if it just gets the majority of the conversion out of the way.

    For example, in TextMate, you can search for:

    (^|\.\W+)([a-z])

    and replace with:

    $1\u$2

  4. Joe Dolson responds:
    Posted: November 30th, 2007 at 11:11 pm

    Although I haven’t tested it, I’m pretty sure that your example RegEx wouldn’t really fix the problem — it would fix a large number of specific cases, but wouldn’t find acronyms, proper nouns, etc.

    I can’t help but think I’d still just send it back to the client for remediation. I’m perfectly willing to fix typos and grammar as I notice them, but I’m not about to spend any considerable effort searching out this kind of mistake.

  5. Craig Francis responds:
    Posted: December 1st, 2007 at 6:04 am

    @Joe - Hence why I said “if it just gets the majority of the conversion”… I don’t think any computer (yet) has perfect natural language processing, this will simply get the ~80% done, so you can focus on the exceptions. It really depends on what your trying to do, if you have the ability to send back to the client, then great, but sometimes this will help you get started.

    @Mike - I suggested using TextMate, its a text editor, like Notepad, but a hell of allot more powerful… its defiantly out of the scope for PHP to do all the changes - and unfortunately the “\u” tag does not work in PHP yet :-(

Sorry. Comments are closed.




Note: This is the end of the usable page. The image(s) below are preloaded for performance only.