0% found this document useful (0 votes)
575 views

Responsive Web Design

The document discusses responsive web design and how it allows websites to automatically adjust their layout depending on device characteristics like screen size. It introduces media queries, which are CSS techniques that use different style rules depending on features of the device viewing the content. Media queries allow testing properties like screen width and resolution, and designing layouts that adapt for different devices like phones, tablets and desktops. The article provides examples of using media queries to serve different style sheets or CSS rules for different device widths. This makes websites responsive and allows a single site to work well on many devices.

Uploaded by

Fernando MG
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
575 views

Responsive Web Design

The document discusses responsive web design and how it allows websites to automatically adjust their layout depending on device characteristics like screen size. It introduces media queries, which are CSS techniques that use different style rules depending on features of the device viewing the content. Media queries allow testing properties like screen width and resolution, and designing layouts that adapt for different devices like phones, tablets and desktops. The article provides examples of using media queries to serve different style sheets or CSS rules for different device widths. This makes websites responsive and allows a single site to work well on many devices.

Uploaded by

Fernando MG
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 12

alistapart.

com

http://www.alistapart.com/articles/responsive-web-design/

Responsive Web Design


by Ethan Marcotte

May 25, 2010

by Ethan Marcotte

The control which designers know in the print medium, and often desire in the web medium, is simply a function of the limitation of the printed page. We should embrace the fact that the web doesnt have the same constraints, and design for this flexibility. But first, we must accept the ebb and flow of things. John Allsopp, A Dao of Web Design

The English architect Christopher Wren once quipped that his chosen field aims for Eternity, and theres something appealing about that formula: Unlike the web, which often feels like aiming for next week, architecture is a discipline very much defined by its permanence. A buildings foundation defines its footprint, which defines its frame, which shapes the facade. Each phase of the architectural process is more immutable, more unchanging than the last. Creative decisions quite literally shape a physical space, defining the way in which people move through its confines for decades or even centuries. Working on the web, however, is a wholly different matter. Our work is

defined by its transience, often refined or replaced within a year or two. Inconsistent window widths, screen resolutions, user preferences, and our users installed fonts are but a few of the intangibles we negotiate when we publish our work, and over the years, weve become incredibly adept at doing so. But the landscape is shifting, perhaps more quickly than we might like. Mobile browsing is expected to outpace desktop-based access within three to five years. Two of the three dominant video game consoles have web browsers (and one of them is quite excellent). Were designing for mice and keyboards, for T9 keypads, for handheld game controllers, for touch interfaces. In short, were faced with a greater number of devices, input modes, and browsers than ever before. In recent years, Ive been meeting with more companies that request an iPhone website as part of their project. Its an interesting phrase: At face value, of course, it speaks to mobile WebKits quality as a browser, as well as a powerful business case for thinking beyond the desktop. But as designers, I think we often take comfort in such explicit requirements, as they allow us to compartmentalize the problems before us. We can quarantine the mobile experience on separate subdomains, spaces distinct and separate from the non-iPhone website. But whats next? An iPad website? An N90 website? Can we really continue to commit to supporting each new user agent with its own bespoke experience? At some point, this starts to feel like a zero sum game. But how can weand our designsadapt?

A flexible foundation
Lets consider an example design. Ive built a simple page for a hypothetical magazine; its a straightforward two-column layout built on a fluid grid, with not a few flexible images peppered throughout. As a long-time proponent of nonfixed layouts, Ive long felt they were more future proof simply because they were layout agnostic. And to a certain extent, thats true: flexible designs make no assumptions about a browser windows width, and adapt beautifully to devices that have portrait and landscape modes.

Huge images are huge. Our layout, flexible though it is, doesnt respond well to changes in resolution or viewport size. But no design, fixed or fluid, scales seamlessly beyond the context for which it was originally intended. The example design scales perfectly well as the browser window resizes, but stress points quickly appear at lower resolutions. When viewed at viewport smaller than 800600, the illustration behind the logo quickly becomes cropped, navigation text can wrap in an unseemly manner, and the images along the bottom become too compact to appear legible. And its not just the lower end of the resolution spectrum thats affected: when viewing the design on a widescreen display, the images quickly grow to unwieldy sizes, crowding out the surrounding context. In short, our flexible design works well enough in the desktop-centric context for which it was designed, but isnt optimized to extend far beyond that.

Becoming responsive
Recently, an emergent discipline called responsive architecture has begun asking how physical spaces can respond to the presence of people passing through them. Through a combination of embedded robotics and tensile materials, architects are experimenting with art installations and wall structures that bend, flex, and expand as crowds approach them. Motion sensors can be paired with climate control systems to adjust a rooms temperature and ambient lighting as it fills with people. Companies have already produced smart glass technology that can automatically become opaque when a rooms occupants reach a certain density threshold, giving them an additional layer of privacy. In their book Interactive Architecture, Michael Fox and Miles Kemp described this more adaptive approach as a multiple-loop system in which one enters

into a conversation; a continual and constructive information exchange. Emphasis mine, as I think thats a subtle yet powerful distinction: rather than creating immutable, unchanging spaces that define a particular experience, they suggest inhabitant and structure canand shouldmutually influence each other. This is our way forward. Rather than tailoring disconnected designs to each of an ever-increasing number of web devices, we can treat them as facets of the same experience. We can design for an optimal viewing experience, but embed standards-based technologies into our designs to make them not only more flexible, but more adaptive to the media that renders them. In short, we need to practice responsive web design. But how?

Meet the media query


Since the days of CSS 2.1, our style sheets have enjoyed some measure of device awareness through media types. If youve ever written a print style sheet, youre already familiar with the concept:

<link rel="stylesheet" type="text/css" href="core.css" media="screen" /> <link rel="stylesheet" type="text/css" href="print.css" media="print" />

In the hopes that wed be designing more than neatly formatted page printouts, the CSS specification supplied us with a bevy of acceptable media types, each designed to target a specific class of web-ready device. But most browsers and devices never really embraced the spirit of the specification, leaving many media types implemented imperfectly, or altogether ignored. Thankfully, the W3C created media queries as part of the CSS3 specification, improving upon the promise of media types. A media query allows us to target not only certain device classes, but to actually inspect the physical characteristics of the device rendering our work. For example, following the recent rise of mobile WebKit, media queries became a popular client-side technique for delivering a tailored style sheet to the iPhone, Android phones, and their ilk. To do so, we could incorporate a query into a link ed style

sheets

media attribute:

<link rel="stylesheet" type="text/css" media="screen and (max-device-width: 480px)" href="shetland.css" />

The query contains two components: 1. a media type ( screen ), and 2. the actual query enclosed within parentheses, containing a particular media feature ( max-device-width ) to inspect, followed by the target value ( 480px ). In plain English, were asking the device if its horizontal resolution ( max-device-width ) is equal to or less than 480px . If the test passes in other words, if were viewing our work on a small-screen device like the iPhonethen the device will load shetland.css . Otherwise, the link is ignored altogether. Designers have experimented with resolution-aware layouts in the past, mostly relying on JS-driven solutions like Cameron Adams excellent script. But the media query specification provides a host of media features that extends far beyond screen resolution, vastly widening the scope of what we can test for with our queries. Whats more, you can test multiple property values in a single query by chaining them together with the and keyword:

<link rel="stylesheet" type="text/css" media="screen and (max-device-width: 480px) and (resolution: 163dpi)" href="shetland.css" />

Furthermore, were not limited to incorporating media queries in our We can include them in our CSS either as part of a @media rule:

link s.

@media screen and (max-device-width: 480px) { .column { float: none; } }

Or as part of an @import directive:

@import url("shetland.css") screen and (max-devicewidth: 480px);

But in each case, the effect is the same: If the device passes the test put forth by our media query, the relevant CSS is applied to our markup. Media queries are, in short, conditional comments for the rest of us. Rather than targeting a specific version of a specific browser, we can surgically correct issues in our layout as it scales beyond its initial, ideal resolution.

Adapt, respond, and overcome


Lets turn our attention to the images at the base of our page. In their default

layout, the relevant CSS currently looks like this:

.figure { float: left; margin: 0 3.317535545023696682% 1.5em 0; / 633px */ width: 31.121642969984202211%; 197px / 633px */ } li#f-mycroft, li#f-winter { margin-right: 0; }

/* 21px /*

Ive omitted a number of typographic properties to focus on the layout: Each .figure element is sized at roughly one third of the containing column, with the right-hand margin zeroed out for the two pictures at the end of each row ( li#f-mycroft, li#f-winter ). And this works fairly well, until the viewport is either noticeably smaller or wider than our original design. With media queries, we can apply resolution-specific spotfixes, adapting our design to better respond to changes in the display. First of all, lets linearize our page once the viewport falls below a certain resolution thresholdsay, create a new 600px . So at the bottom of our style sheet, lets

@media block, like so:

@media screen and (max-width: 600px) { .mast, .intro, .main, .footer { float: none; width: auto; } }

If you view our updated page in a modern desktop browser and reduce the size of your window below 600px , the media query will disable the floats

on the designs major elements, stacking each block atop each other in the document flow. So our miniaturized design is shaping up nicely, but the images still dont scale down that intelligently. If we introduce another media query, we can alter their layout accordingly:

@media screen and (max-width: 400px) { .figure, li#f-mycroft { margin-right: 3.317535545023696682%; / 633px */ width: 48.341232227488151658%; / 633px */ } li#f-watson, li#f-moriarty { margin-right: 0; } }

/* 21px /* 306px

Our figures can responsively change their layout to better suit smaller displays. Dont mind the unsightly percentages; were

simply recalculating the widths of the fluid grid to account for the newly linearized layout. In short, were moving from a threecolumn layout to a two-column layout when the viewports width falls below 400px ,

making the images more prominent. We can actually take the same approach for widescreen displays, too. For larger resolutions, we could adopt a sixacross treatment for our images, placing them all in the same row:

@media screen and (min-width: 1300px) { .figure, li#f-mycroft { margin-right: 3.317535545023696682%; / 633px */ width: 13.902053712480252764%; / 633px */ } }

/* 21px /* 88px

Now our images are working beautifully at both ends of the resolution spectrum, optimizing their layout to changes in window widths and device resolution alike.

By specifying a wider

min-width in a new media query, we can shift our

images into a single row layout. But this is only the beginning. Working from the media queries weve embedded in our CSS, we can alter much more than the placement of a few images: we can introduce new, alternate layouts tuned to each resolution range, perhaps making the navigation more prominent in a widescreen view, or repositioning it above the logo on smaller displays.

By designing responsively, we can not only linearize our content on smaller devices, but also optimize its presentation across a range of displays. But a responsive design isnt limited to layout changes. Media queries allow us to practice some incredibly precise fine-tuning as our pages reshape themselves: we can increase the target area on links for smaller screens, better complying with Fitts Law on touch devices; selectively show or hide elements that might enhance a pages navigation; we can even practice responsive typesetting to gradually alter the size and leading of our text, optimizing the reading experience for the display providing it.

A few technical notes


It should be noted that media queries enjoy incredibly robust support among modern browsers. Desktop browsers such as Safari 3+, Chrome, Firefox 3.5+, and Opera 7+ all natively parse media queries, as do more recent mobile browsers such as Opera Mobile and mobile WebKit. Of course, older versions of those desktop browsers dont support media queries. And while Microsoft has committed to media query support in IE9, Internet Explorer currently doesnt offer a native implementation. However, if youre interested in implementing legacy browser support for media queries, theres a JavaScript-tinted silver lining: A jQuery plugin from 2007 offers somewhat limited media query support,

implementing only the min-width and max-width media properties when attached to separate link elements. More recently, css3-mediaqueries.js was released, a library that promises to make IE 5+, Firefox 1+ and Safari 2 transparently parse, test, and apply CSS3 Media Queries when included via @media blocks. While very much a 1.0 release, Ive personally found it to be quite robust, and I plan to watch its development. But if using JavaScript doesnt appeal, thats perfectly understandable. However, that strengthens the case for building your layout atop a flexible grid, ensuring your design enjoys some measure of flexibility in media queryblind browsers and devices.

The way forward


Fluid grids, flexible images, and media queries are the three technical ingredients for responsive web design, but it also requires a different way of thinking. Rather than quarantining our content into disparate, device-specific experiences, we can use media queries to progressively enhance our work within different viewing contexts. Thats not to say there isnt a business case for separate sites geared toward specific devices; for example, if the user goals for your mobile site are more limited in scope than its desktop equivalent, then serving different content to each might be the best approach. But that kind of design thinking doesnt need to be our default. Now more than ever, were designing work meant to be viewed along a gradient of different experiences. Responsive web design offers us a way forward, finally allowing us to design for the ebb and flow of things.

Translations
Italian (italianalistapart.com) French (gobanclub.net) Illustration by Kevin Cornell

Discuss
Was it good for you, too? Join the discussion

About the Author


Ethan Marcotte is a web designer & developer who cares deeply about beautiful design, elegant code, and the intersection of the two. Over the years, Ethan has enjoyed working with such clients as the Sundance Film Festival, Stanford University, New York Magazine and The Today Show. He swears profusely on Twitter, and would like to be an unstoppable robot ninja when he grows up. His most recent book is Responsive Web Design.

You might also like