Home | Blog | Web Development

Resolution Dependence, or why it’s ok to have different layouts

July 30, 2010 @ 4:38pm

by Jeff Byrnes

Recently, I came across a really brilliant technique, resolution dependent layout. I’ve been exploring this technique a little bit, and definitely want to discuss & highlight some awesome uses of it.

This is especially useful for tailoring a site to a mobile device, and since all of them run on a WebKit-based browser, they can all understand @media queries, which is the crux of this particular way to accomplish this.

With that said, there’s two ways to do this:

  1. Using @media queries in a <link> for a resolution-specific CSS file
  2. Using @media queries inside a single CSS file.

I prefer the second method, but others who prefer multiple files vs. a single file for CSS can use the other. And we can do anything based on different devices, not just change widths, layout, etc. As another note, you can do checks for device-width or width (i.e., viewport width). Both will be useful, as we can use device-width queries to check for a particular device or class of devices.

As an example of a site that has a different layout based on the viewport width, check out Simon Collison’s website, Colly. If your viewport is set to ~950px wide or greater, we have the default layout: full-width, four-columns. However, as your shrink your viewport down width-wise, the layout changes to a two-column display, then finally to a one-column display where the single item is slightly larger in width than the single items are in the two- or four-column views. All-in-all, a rather lovely design to my eyes, but I’m sure my colleague Kyung could offer a more thorough critique in that arena. It’s a fascinating aesthetic, the whole “Celebrated Miscellany” idea. It reminds me of an old science journal, like something Darwin or Audubon might have drawn.

So how does he do it? Well, in this case, “Colly” has a series of @media rules at the very end of his stylesheet. Here’s one of the bits we’re talking about (edited for brevity):

@media (min-device-width:1024px) and (max-width:989px),
       screen and (max-device-width:480px),
             (max-device-width:480px) and (orientation:landscape),
       (min-device-width:481px) and (max-device-width:1024px) and (orientation:portrait) {
    div#page { width:468px; }
    .home ul#navigation_pri, .home ul#subnav-b { padding-bottom:30px; }
    …
        div#siteinfo p { font-size:14px; }
}

First off, to have this work at all, all of the CSS rules that would apply for this particular @media query need to be encapsulated between the brackets for the query, as if it were regular CSS rule itself. As for the query, it’s asking a number of different questions to cover quite a few bases; this particular piece of CSS covers the “less than ~950px viewport” eventuality. On a mobile device, this view comes into play if an iPhone is in landscape mode, or if an iPad is in portrait mode. The other, single-column view comes to pass if an iPhone is in portrait mode (and it fits just right), or if you shrink the viewport of your browser down far enough.

The second @media query looks like this:

@media (min-device-width:1024px) and (max-width:509px),
       (max-device-width:480px) and (orientation:portrait) {
    div#page { padding:30px 0px 10px 0px; width:306px; }
    …
}

It’s considerably simpler, as it doesn’t have to ask as many questions about your viewport or device width, since it’s really only going to activate on either an iPhone or other mobile phone, or if you shrink the viewport on a desktop browser; the iPad can’t change it’s viewport size, so it will never be presented this view. With that in mind, the first part of the query takes care of desktops, while the second handles the smaller display devices.

So there you have it folks, the ability to craft resolution dependent layouts and styles. Pretty spiffy stuff.

Tags

CSS, CSS3, iOS, iPhone, resolution dependent design

Comments

Leave a Reply




RSS Feed

Be notified of all our tweets, news stories, blog entries, and support articles.

Categories

Click below to filter blog entries.

Blog Archives

More Info

Are you using today's web platforms to engage your target audience and boost profits?

From designing web sites and brands to social media marketing and public relations, Elative has you covered.