responsive design/flipping the coin

published on:
September 13, 2011
comments

Responsive design is all the rage these days, and with good reason. The concept itself is a solid (though not very flexible) solution when dealing with different devices under different circumstances. In theory responsive design allows us to provide tailored experiences using only one single html code base and some fancy css an maybe some javascript, but there is also a darker side to responsive design. Read on.

hype the hype

The web development community has grown considerably these past few years. While definitely not a bad thing, it introduces a couple of fresh problems that need to be dealt with. One of those problems is visibility. Everyone wants to be noticed and with more and more people competing for attention there has been a surge in boiler plates, mini frameworks, code projects and artificial hypes, ... whatever is necessary to make your work feel big and important. Where you used to just share a bit of code in a blog article, you now need a project on github with a fancy version number and a snappy project name, otherwise people won't pick it up.

All this hyping has lead us to a less critical perception of some of the tools we promote so vehemently. Last week I caught an audio interview between Jeffrey Zeldman and Faruk Ates discussing modernizr. I say "discussing", but what I real mean is promotional talk. They didn't even raise the issue of partial/faulty browser implementations of new features, instead they sold the framework as universally future-proof. I guess you just can't be critical of your own work anymore or people will look elsewhere. Stuff like this bothers me, which is why I think it is time to point at some of the dangers of responsive design. Because even though the concept of responsive design holds a lot of promise, it can go horribly wrong too if you're not careful.

responsive

So what is responsive design? Well, leave out all the subtleties, cut out the buts and ifs and what Joe Average remembers is my site looks different on my phone. In reality though, things are a bit more complex. The idea of responsive (in contrast with adaptive) design is to define a couple of different contexts up front. Think of it as having several cubes with different sizes where your site should be made to fit in. For each cube you need to decide how to reorganize your webpage so it fits as nicely as possible.

To accomplish this we use css media queries. Using a list of possible parameters we define a set of contexts. For each context we (over)write some css rules to change the structure and visualization of certain components. We can even add some fancy javascript if needed to make the transitions between different states a little easier. As you can see, the whole concept of responsive design leans on the flexibility of the css media queries, which at this time is rather poor. You can play around with dimensions, orientation and color depth (yay!), but that's about it.

translating mobile to media queries

So going back to our example of developing a site for mobile devices, where do we start? Well, the "mobile" experience is usually defined by three parameters that differ greatly from the desktop experience. The most visible is screen estate, the second (and equally important) one is performance and the third one is interaction. Looking at the media query options we have though, there's only widths and heights to toy around with.

So targeting "mobile" in responsive design is actually defined by browser/device dimensions. There is no way to decide anything based on connection speed or means of interaction. If you target on device width/height you are somewhat limiting yourself to industry standards (hoping there won't be any exotic variations out there), but if you target on browser width/height you run into the chance of changing the desktop experience too (which can be very bothersom, unnecessary and unwanted).

but that is not all

There are more glaring issue though. Trying to figure out how to define the right amount of different contexts can be quite tricky. I've seen sites that shift layouts every 50 pixels or so, which is damn annoying. But when only defining two separate contexts, you might be limiting yourself a little too much. On top of that, deciding what components to cut and what components to move around is another really tricky issue. Of course these are mostly trademark UI problems, but when done wrong or when handled by people not fully competent to tackle the task, the results can be disastrous for your site.

Another interesting problem revolves around big screen sizes. Nowadays responsive design is mostly targeted at fitting sites in small screen estates, but there's a whole range of possibilities to fill up redundant space on large displays. At least, if such a thing is actually possible without confusing/annoying the hell out of your users with each design transition.

For now I believe it is best to try and match a design per device. This pretty much eliminates the use of browser widths/heights in media queries, but I just don't think it's a good idea to throw around the design of a single site on a single device during a single browser session. When I resize my browser window I'm not hoping to see any structural or visual changes on a webpage, and whenever that does happen I'm usually disappointed with the result.

If we're not careful with this and the current tred continues, I hope they will start introducing browser plugins for ignoring media queries soon.

conclusion

Responsive design is a grave responsibility. You are deciding how and how much of your site a user will see in his current context. It's the first time a designer has to decide on a set of different contexts, where before we just had to deal with the limitations of our tools. This adds a lot of new responsibilities to the task of designing a website and if you get it wrong it can effectively ruin the whole experience of an otherwise good site.

Technically media queries are still very limited and even though the concept of responsive design holds a lot of potential, I'm sure it's way too early to tag it as the new industry standard. For now it works quite well when the use cases lay far apart and are easily distinguishable, but whenever people try to show off more complex stuff the concept falters and the result is nothing more than an impressive tech demo massacring an otherwise decent site.

Comments

Jethro Larson

comment number
date
September 14, 2011 20:02

Also of note is that for every transition you have all the normal browsers you have to test. So if you had one layout. You have to test every layout against all the browsers you officially support.

e.g.:

5 transitions
X
8 Must-test browsers
--------
40 views to test

Worth considering when you add transitions. Responsive design works great in theory but in practice your milage may vary. Still, it's a technique you should consider, even if you have a break-off point for mobile UX.

Niels Matthijs

comment number
date
September 15, 2011 14:53

Yeah, another interesting issue right there. I imagine this is not so much a problem for the initial release of a site (which usually has intense, well-planned test procedures anyway), but can become quite resource-heavy for quick fixes and intermediary updates.

If you're not careful, your site will be full of bugs visual and inconsistencies within a year of initial release.

George Katsanos

comment number
date
September 20, 2011 08:28

I recently finished a redesign and decided to use 3 alternate CSS files for three different browser window widths. Indeed, the maintenance and the cross-browser check part was a pain in the ***. But what I think is the most important problem in RWD is that as many mobile web design specialists have said: YOU CANT SERVE THE SAME CONTENT TO ALL DEVICES. A previous generation Nokia will choke when trying to download 3MB of images, and event an early Smartphone will have great trouble downloading & rendering the page. (because CSS hides stuff, but they are still there). There's also the bandwidth issue - many operators still charge per MB or have a low monthly limit. I would +1 your paragraph regarding promotional talk and how web influences don't bother to discuss problems/disadvantages of certain technology just because they want to push their product. I'm glad I'm not the only one seeing this.

Brett Jankord

comment number
date
September 20, 2011 16:37

I think it's very important to review and dissect new technologies as they come along. I mean, there's room for improvement with everything so it's good to see what issues RWD has and see if we can find solutions.

If you start with a mobile first approach, you results with RWD will be much greater. As you point out, CSS media query support is not that widely supported, "the whole concept of responsive design leans on the flexibility of the css media queries, which at this time is rather poor." I think this is where JavaScript solutions come in to help patch. You could test for media query support, if it exists, use them, if not, us a JS solution. If JS is not enabled, as it's not on most legacy phones, you just default to your mobile first style sheet.

As far as trying to match a design per device, this, to me, is much much more challenging than RWD. There a ton of devices, http://cartoonized.net/cellphone-screen-resolution.php, already out there, and more coming out every day. I would look at your user statistics and see how many mobile users you have and what devices they are using if you do go with a design per device solution. Even then, the amount of code you'll have for designing per device seems like it could easily turn into a nightmare. RWD looks to be as device agnostic as possible, with as little code as possible. It's a nice idea, good for the users and good for the developers.

I do believe testing your break-points in different browsers, hopefully no more than 3-5, is a pain, but is a little effort enough to stop you from trying this solution?

The way I look at it is, the mobile web is here, we have web capable phones, tablets, tvs, who knows what's next. One design obviously doesn't cut it. This is where I think RWD is a good solution, it increase the optimal user experience of your site. However it only gets you so far. If you find you have a lot of iPhone users always on your site, maybe look into offering a mobile experience just for them, either a custom web app or native app. I guess my point is RWD > nothing, where nothing is what most sites are doing now to cater to mobile/tablet users. I don't think it's the solution to mobile web, but it's a step in the right direction.

* required fields

Leave your data
Leave a comment