Graceful Degradation
I recently launched a web update for Susan’s business site, up in the air somewhere, and I took it as an opportunity to improve the semantics and aesthetics of the HTML and CSS.
We were having problems with the Blackberry web browser, because I had her product images loading into the background of a div via CSS. Blackberry just ignored the CSS, so the product images wouldn’t come up. Also, all of the navigation menus would come up first, so every time you loaded a page, you’d have to scroll down to see the content. It was also annoying if you listened to it on a screen reader; you had to listen to every menu option before you could hear the content, for every page.
The first problem was solved by loading the product images with a standard img tag, as it should have been all along. However, on pages where the image is just a background (such as the “info” pages), the image remains a CSS background, so it doesn’t load the unnecessary image on non-CSS browsers.
The second problem was solved simply by rearranging the HTML so that the image comes first, then the product information, then the product menu, finally followed by the less-used menu items like “info” and “links.”
This is essentially how the site is supposed to look, as rendered in Firefox. You can make the browser window as large as you like, and the image will appear to go on forever. (Click for large image)
Here it is on the iPhone. Under duress, I added a meta tag to the HTML to change the viewport width. Apple, I’m speechless. This should so obviously be a CSS property instead.

Finally, here’s how it looks in elinks, a text-based browser. The site remains understandable and navigable. elinks is even listening to some CSS, floating the right-side menu items to the right!

This is my favorite site I’ve designed. It feels like a full, rich experience, with big images and a catalog feel. Yet the entire site—all 51 pages and their images—takes up less than 2MB (it would fit on a floppy!), so it’s quick to browse, even over slow mobile connections. I love it.

