Jordan Moore Intuition-led Designer

Building for Content Choreography using Flexbox

On July 14th 2011 Trent Walton published an article introducing the concept of Content Choreography. The article opened my mind and made me question some of the limitations we face in how we build responsive experiences. At the time content reordering and reflow hadn’t been widely explored beyond JavaScript-based solutions and I had been experimenting a lot with flexbox to reorder and arrange items horizontally for Typecast’s UI. When Trent spoke about content stacking, I started to think what was achievable for reordering content along the y-axis in a single column layout.

A tale of two syntaxes

The flexible box model landscape has been through a series of fundamental changes since its introduction in 2009. The original syntax for declaring the property in CSS is still recognised in a lot of today’s popular browsers. The following 3 years brought two significant changes to the syntax mainly around the language used to specify flexbox properties.

The flexbox specification has been finalised since I wrote about using flexbox to tackle content choreography concerns in May 2012 so it’s a good time to revisit the approach. Although the new flexbox syntax has been agreed it has not been widely implemented. Since the spec was settled we have witnessed the release of new mobile operating systems like iOS 6 that boasted numerous updates to Safari - one of which refrained from implementing the new syntax and reverted to the old 2009 syntax. At the time of writing it is unclear whether iOS 7 will feature the updated syntax. Android’s default browser still uses the old syntax although Chrome on Android uses the new syntax like its desktop counterpart. That leaves us in some sort of syntax-purgatory between the final specification and the 2009 syntax.

Luckily the changes between old and new flexbox won’t affect how we use it to reorder blocks of content, just how we write the code. Some repetition is required, much like writing vendor prefixes.

The bottom line is that flexbox is safe to use on the web today for content choreography. According to caniuse.com’s global browser usage statistics 76.52% of users would be able to view a flexbox-based solution to content choreography at the time of writing. 23.48% might seem like a considerable amount of people, but when we break that figure down further it’s not quite so big. 23.48% takes the desktop versions of Internet Explorer into consideration and we don’t intend to use this solution that demographic.

Content choreography using flexbox is most reliable at the first major breakpoint (usually in a single column). It’s also easiest at this level because we are (largely) dealing with moving element blocks around vertically on the y-axis. When we approach content choreography from this angle we can assume most desktop browsers won’t see our reordered page. Looking again at the browser statistics for flexbox support among mobile browsers only 14.4% of users won’t see choreographed content.

I don’t usually make decisions based on browser statistics, especially project-specific decisions, but for gauging a general sense of browser support for something previously thought of as an edge-case CSS property, I think it’s worth pointing out that it is as safe to use in this context as something trivial like the text-shadow property.

A note about screenreaders

Before we dive into code specifics, we need to talk about accessibility. Screen readers will not read an altered source order changed by flexbox. Instead they will read the original document order which makes for a jarring and confusing experience for users requiring a service like VoiceOver.

Some feel that for this reason it is better to make source order changes in JavaScript rather than CSS although others counter that this hinders innovation and screen readers simply must follow our lead in pushing the web forward as a platform.

I am firmly in favour of a CSS-based approach as this is fundamentally a layout change after the effect. Using JavaScript instead of CSS to achieve a layout goal that can otherwise be achieved in CSS feels like a Frankenstein approach. I feel it’s dragging us back to the dark ages instead of helping our platform mature. If we choose to remain stagnant on issues like this then it would be like encouraging the use of JavaScript for rollover states in 2013. The fact is we have flexbox at our disposal and specced for use in CSS, avoiding it is only going to encourage the makers of screen reading software to do the same.

A solution for past, present and future

Now that we have covered the fundamentals, there are a few simple considerations to account for when building with flexbox to achieve content choreography. I have found the following mindset helps:

  • Start designing and building for mobile first (no-brainer)
  • Your DOM order is your definitive order. Build for this order first before addressing content choreography concerns. If you are unsure about your definitive source order, this is the DOM order shown when your layout has enough space to show everything you want to show in a sensible hierarchy.
  • This requires foresight — one of the most difficult skills in a responsive designer’s arsenal. The DOM order will act as the fallback order on devices with limited screen space and where flexbox doesn’t work (Opera Mini, Opera Mobile < 12.0 etc). Use content choreography only if your layout needs it in your first breakpoint.
  • Address the past, present and future devices by using both flexbox syntaxes.

All things considered the revised flexbox code for a definitive specification looks like something this1:


.container {
display: -moz-box;
display: -webkit-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-moz-box-orient: vertical;
-webkit-box-orient: vertical;
-ms-flex-direction: column;
-webkit-flex-direction: column;
flex-direction: column;
}

.nav {
  -webkit-box-ordinal-group: 1;
  -moz-box-ordinal-group: 1;
  -ms-flex-order: 1;
  -webkit-order: 1;
  order: 1;
}

...

I have updated the original demo so it considers the new syntax.

Flexbox is no longer the volatile experimental property it once was, now that we have a final specification in place and widespread support on mobile devices flexbox is a robust solution for content choreography exactly where we want it to be — where space is confined and some layout adjustment is required.


  1. Inspiration heavily borrowed from Chris Coyier’s excellent Using Flexbox article 

Beyond the Canvas

When we design we generally do so in two dimensions — length and width. They are the physical constraints of what our technology is currently capable of. Our dimensional restraints are then realised on the devices used to experience our design.

Beyond the two dimensional screen exists the third dimension (and many other theorised dimensions) — the physical space in which our designs exist beyond the canvas. Here, all sorts of physical parameters affect how a person uses our design.

Consider the user’s physical space around them — perhaps they are lying on their side on the sofa or in bed and holding a mobile device with one hand. Can the design be enjoyed when a user’s is physically restricted from using two hands? Luke Wroblewski further elaborates on this idea in his Testing One Thumb, One Eyeball article detailing the test procedure for Polar.

If people can get things done in time sensitive, limited dexterity situations, they’ll be even more efficient when we have their full attention and two-hands focused on our designs.

In a separate article Luke details the reach of one thumb with the diagram below to show the considerations for positioning navigation. This is relevant to anything you want people to reach easily, for example if you had a single purpose web app, you might want to position the primary action in the safe zone just like Instagram does with their primary action (take picture).

Image from Luke Wroblewski’s Responsive Navigation: Optimizing for Touch Across Devices article

Beyond the canvas take into account where the thumb might hover while the device is in use. Sometimes people rest their thumb along the ridge of the hardware while others hover it over a portion of the screen poised to press something. This emphasises the importance of testing with real devices. Real hardware considers space in three dimensions whereas on-screen emulators put themselves into the two dimensional canvas free from physical distractions — it’s not really representative of the physical world we live in beyond the canvas.

Book Review: Combining Typefaces

The craft of combining typefaces can feel like a daunting prospect. It’s easy to shy away from the adventurous cross-pollination of different typefaces and stick to families and superfamilies to achieve typographic harmony.

Thankfully Five Simple Steps’ latest addition to their helpful Pocket Guides series from Tim Brown seeks to offer reassurance and open-mindedness when it comes to making typographic decisions. Tim approaches the subject from a web designer’s perspective:

We need to think about compositions not as layouts, but as coordinated chunks of typeset elements that do specific jobs and exist in many states simultaneously shifting dynamically among those states.

The book itself is the living realisation of Tim’s own words. The methodology described within its pages is broken down into digestible chunks for quick reference and assurance. There are recurring themes of pausing, stepping back and patience. Combining typefaces is an intricate craft that is more rewarding with practice and knowledge about the faces you work with. Tim expresses the importance of absorbing the type, its purpose, its features, the relationships between spaces and rhythms at a micro and a macro level. The deeper you know about the characteristics of different typefaces and the content that the typefaces are going to represent, the easier it is to find harmony between both entities.

Here’s the bottom line: absorb the text and the author’s or client’s intentions with vigor, because it is integral to your success. If the visual decisions you make aren’t meaningfully connected to the ideas they represent, then your typeface combinations don’t matter.

It’s a purposely open-ended book, because with design there are few definitives. The skill of combining typefaces is nourished with learning from, documenting and critiquing work. A few years ago I naively believed there were certain formulas for this practice. After reading Tim’s words I am excited about looking at typography through a more meaningful lens. Combining Typefaces is valuable addition to any web designer’s desk — one that I’ll be keeping within reach.

Thoughts on Toggling a Responsive Design On and Off

Earlier today Roger Johansson posted an article about potential scenarios for disabling a responsive design along with a demo. As noted in the article, this isn’t new thinking as both Bruce Lawson, Chris Coyier and various others have spoken about it before — the purpose was to introduce the demo along with scenarios where it would be useful.

I can’t figure out what my stance is on the approach. I’m leaning more towards thinking that this is a good idea. Some view the inclusion of an off-switch as an admission of failure in the implementation of a responsive design — I’m not so sure it is. Chris Armstrong put it nicely on Twitter:

RWD involves making assumptions on the user’s behalf, why not allow them to be overriden?

I wish I had a toggle for the bad responsive designs, the ones that “don’t get it” (i.e they hide content and bastardise the experience rather than adapt it appropriately). Even if we have examined and tested our assumptions thoroughly, there is always a chance that we’ll get something wrong and I think users deserve a chance to undo something we impose on them (with good intent).

Roger’s article discusses the language around the toggle switch:

The trickiest part is probably what to call the switch. Phrases like “View desktop layout”, “Go to desktop version” and “View full site” seem like saying that what you’re currently viewing is missing something. So instead I called it “View fixed width layout” (and “View flexible width layout” to toggle back). I don’t really know if it helps end users understand the difference, but I think it’s a more accurate description than using “desktop” and “mobile”. Someone’s browser window being narrower than 960 pixels, or 1200 pixels, or wherever you choose to draw the line, does not necessarily mean they’re using a “mobile” device.

After years of m-dot websites users have been conditioned to feel that “View desktop site” means that the page is hiding something from them. That’s why I think trying to add language to the switch won’t work, it may create the feeling of deception that exists with many m-dot sites. Also using terms like “fluid” and “fixed” will mean nothing to the average user. The language would need to feel familiar and create an expectation — although in this situation, the user’s expectation is that the button will reveal a “full version” revealing the stuff that the page is hiding.

I think we could do something visually rather than give it confusing and misguided terms. I’m not saying this suggestion is the definitive approach, it’s more of a rough idea. The image below gives you an idea of what an icon might look like before and after it is toggled.

The left icon shows what it might look like in a standard responsive layout with the option to toggle a fixed width layout, the right shows how it would look from the fixed width layout if the user wanted to switch back to a responsive layout.

Again — this is just a rough idea using a couple of repurposed icons, if you do decide to implement an off switch, then I suggest trying a visual reference rather than potentially confusing wording.

Under the Microscope

When designing for small screens keep in mind that everything you do is under the microscope - design patterns, interactions, usability, speed — everything. These wonderful little devices that we cup in our hands offer a small, personal and intimate window in which to enjoy the web.

It is more important than ever that we get the little details right. A small screen space is limited in what we can show at any particular moment - and that’s what we are dealing with here, lots of tiny moments. By contrast a large screen offers plenty of room for design problems to hide or go mostly unnoticed. Small displays don’t allow that. They are unforgiving to poor design decisions which is why a lot of designers are quick to scrutinise and attack a poorly implemented responsive design. This type of scrutiny is more often than not about the design and technical aspects whereas users scrutinise with a different lens which generally concerns more important aspects content and value.

I suggest looking at a confined layout as a series of moments. Ask difficult questions of it: "Does this moment achieve what I want it to achieve?", "Does this particular moment offer any value?”, "Does this moment facilitate or distract from the overall message/objective/goal?", "Does this moment make sense independently or does it require the bigger picture to give it context?"

Our design decisions are magnified in this personal space. It’s a rewarding space that can offer intimacy and undivided attention - small screens deserve good experiences and a responsive approach1 can allow that good experience to permeate any device or dynamic that it is faced with.


  1. Aside: responsive design doesn’t just mean making things work on small displays. 

The Scourge of Social Plug-Ins

Maybe I am a bit of a control freak. When I make something, I want full editorial control over the visuals and the content. And maybe it’s the minimalist in me thinking “if it doesn’t add any value — remove it. Everything else is distraction”. I just can’t bring myself to switch on comments or social sharing buttons on this website — I can’t do it. I’ll start with those shiny little not-quite-visually-similar-enough social buttons that tally up how many times your page has been shared on their networks via their JavaScript generated buttons.

First of all, unless you are The Next Web, Mashable or another web giant attracting heaps of traffic on a daily basis, a social count button isn’t going to do you or your brand any favours. Picture this scenario: you arrive at a random article on this website, you notice social buttons and note that the article has been shared 0 times on Facebook, 1 time on Twitter and 0 on Google Plus. What is your first instinctive thought? Here’s what I think — if I spot the buttons before reading the content and notice that it hasn’t been shared, I immediately doubt the integrity of the author and the trust of the message from the website as a whole. I read a lot of articles on a daily basis and sometimes I’ll gauge the usefulness of article on the recency of the post vs the share count. Yes, it’s shallow, like judging a book by it’s cover although in my defence, there are a lot of “books” to get through, whether intentional or not a social button can read like a review.

I don’t want to tread over any ground that Oliver Reichenstein has already covered in his fantastic Sweep the Sleaze article and follow up (and you should read it next if you haven’t already) so I’ll talk about things from user perceptions rather than usage and mechanics1. A low button count is damaging. That’s my opinion and you’ll have trouble convincing me otherwise. The low count can be a result of people sharing the article by other means, like using the native sharing options in an operating system like iOS or just through good old fashioned manual sharing by copying and pasting a link into your preferred social network. These methods aren’t going to add anything to the button count, it’ll remain embarrassingly low like a poor review. According to Oliver Reichenstein’s piece around 20% links shared on websites he surveyed were completed via a social button, the other 80% were manual shares. So we can conclude that the ROI is poor.

As I mentioned before, if you are a running high traffic site and you want to use the buttons as some sort of demonstration of popularity, then I guess that’s a viable use case albeit a bit egotistical. I would wager though that the people that use them are passive sharers and wouldn’t add any value to the piece you want them to share and they probably don’t have the influence you would like to spread your message further and to the right people.

Social buttons are tools created by social networks to benefit… social networks. They want to take the conversation off your page and onto their network. I’m fine with that because I made the conscious decision to leave comments off on my website, but just think about that for your project.

Speaking of comments, they can be as damaging and in some cases more damaging than a poor share count. For comments to work right you need to stay out of the user’s way and that means leaving them completely unfiltered and moderating later. Obviously this leaves your site open to trolling — but that’s the nature of the beast, the danger of comment roulette.

Think about it this way — we are publishers. Would the New York Times let someone wander into their offices off the street and write an unsolicited remark at the end of one of their articles? Imagine reading the front page of the New York Times and at the end of a finely written piece you find the words “First!” or “Great article thanks!”. It just looks trashy. Compliments are nice to receive but to publicly display them amongst a list of generic back-pats just doesn’t sit right with me. I don’t need someone to essentially say “Good hustle Moore!” after my content.

By now you have probably guessed my opinion of comment models on the web — it’s not that I think the standard comments model is broken, I just feel like it’s not a one-size-fits-all solution. If I wanted to open up a commenting system for my website, I would potentially do something like this:

  1. Write the article (no brainer)
  2. Associate a hashtag with the article (or all articles) — a hook that I can look for on social networks
  3. Make the effort to find people’s opinions on the piece on social networks (if they use the hashtag, then this is step is easy, if not, so what — just keep looking. Valuable opinions are worth mining for)
  4. Revisit the article having gathered opinions and use the insightful thoughts to add value to my original content and credit the necessary people
  5. Profit

You might be thinking, that sounds like a lot of work — it is. But take note that while digging for opinions, I’m engaging with my audience, maybe asking them to elaborate on some comments, while building trust and integrity with my work. The beauty of an approach like this is that if something you write is completely wrong or you have missed a crucial point then you can find people that disagree (trolls or otherwise) engage with them and maybe even correct the original article with their views. The important part is you maintain full editorial control, not by altering their comments, but building upon their input and giving credit where it’s due.

People can add value to an article without the article being incorrect, they can elaborate on points which you can add to the end of the piece and improve it. I call it editorial comments.

When talking to clients about this stance on social interactions, I talk about it as part of a larger social media strategy. The old/common approach is a plug-in social media strategy — shiny buttons won’t carry out your social media strategy for you. You need to do that, it requires effort to do it properly. It’s not enough to slap some cheap JavaScript buttons onto your page and mark off the social media box of your project goals. A social button cannot become the voice of your brand, that’s a human’s job.


  1. They’re a performance hog too. In general a web page gains around 100kb of useless bloat with social media buttons (depending on how many networks you add). Update — in the spirit of editorial comments Jake Bresnehan mentioned on Twitter that Nicolas Gallagher has produced a lightweight social plugin script that weighs in at 4kb minified — a great deal lighter than the official editions. 

Responding to Language

Recently Vasilis van Gemert authored a very useful article on Smashing Magazine about Logical Breakpoints For Your Responsive Design. The article touches on how it you could theoretically produce different reading lengths and breakpoints for different languages. To support this idea Vasilis introduces an insightful little tool showing how the contrasting word length between different languages influences reading length.

Cropped screenshot of The International Measure Slider

This tool is worth bookmarking if you are designing multi-lingual layouts. You can take it a step further by responding to the user’s language using CSS.

The language of an HTML document is defined by the ‘lang’ attribute in the ‘<html>’ tag at the root of the document. This gives us a hook that we can use in CSS to apply globally to the document.

Imagine a scenario where we had a blog that has a language switcher between English and German. Generally German words are longer than English so we might want to set the reading length on the German version of our article to a slightly wider value.

The CSS might look something like this:

article {
   max-width:33em;
}
:lang(de) article {
  max-width:40em;
}

As soon as the ‘lang’ attribute is changed from the default ‘en’ to ‘de’ (through a mechanism like a language select dropdown) the width of the ‘<article>’ changes to a wider reading length making a (potentially) easier read for our German readers.

You could extend this technique to tweak the rest of the layout to adapt to the changing line-length. The fact that the language attribute is at the root of the document makes for a nice and clean base to apply global rules that respond to different languages.

Be careful who you build for

This hilarious animated gif crafted by Tiago Franco (@Alarka) has probably been viewed by the entire web development community by now. It shows the responsive web designer’s instinctive grabbing of the browser handles whenever they open a new website. We all do it and there’s nothing wrong with that.

It illustrates a real problem in situations where web designers and developers try to design for this eventuality - to dazzle and amaze their industry colleagues while losing sight of the project’s audience. If you are building a website (responsive or otherwise) and your project personas become industry heroes rather than those you painstakingly identified at the beginning of a project then it’s time to worry. The project is in danger of losing sight of it’s original goals, the purpose it set out to serve and the value it was supposed to deliver. I would wager that this mostly happens around the concious incompetence and concious competence stages of the responsive dip.

Don’t get me wrong - I don’t have an issue with testing layouts in this manner for the right reasons, in fact I would strongly recommend stress testing your layout at random viewport widths. Try closing your eyes whilst dragging the browser handles to alter the window width, stop dragging at a random point and then open your eyes again. This removes any transitional1 hocus-pocus from the changing layout and gives you an idea of the state in which real users will load your product. Real users aren’t going to see changing layouts, the chances are they will see only one layout state2.

Don’t lose sight of who you are really building this for.


  1. And speaking of transitions, they are probably good indicators of the worst offenders. 

  2. Per browsing session, it’s perfectly reasonable to assume a user may load your page on different devices at different times, in fact - almost a cert. Will they see the layout dynamically change between these sessions? No. Design for one state per session. 

The Airfix Responsive Workflow

I had an epiphany recently regarding one of the biggest concerns around adopting a responsive methodology for web projects — workflow.

People have been stating that responsive design projects require a fundamental shift in the web design workflow we have become accustomed to from years of building fixed layouts based on flat images that try to represent a website. I believe the shift is actually relatively small, in fact you might be working this way already.

After a critical evaluation of my previously established workflow, I came to the same conclusion a lot of pundits have already arrived at: flat compositions just don’t work. They are as useful as a photograph of a web page, they don’t represent interactions, the infinite canvas, how typography behaves, and so on. Compositions set an unrealistic goal, a rainbow for web developers to chase to the end of a project with scattered showers of compromise and disappointment along the way.

I realised an additional enlightening thought: the design phase is ethereal throughout the project, an entity that permeates through the different stages of a project lifecycle. It moves, it’s supple, it adapts. Sound familiar? Allow me to walk you through my refined process for responsive projects1.

Wireframes

When I wireframe I usually iterate from very low fidelity sketches with initial ideas up to a medium fidelity sketch with general layout decisions, content considerations and components to document in a functional specification2.

This is where the small changes to my process begin. After annotating my wireframes to correspond with the functional specification I use an additional copy of the wireframes to label typography and modular components with reference numbers. Similar pieces can be labeled with the same colour or other categorisation techniques to help with the next step of the process.

The wireframe begins to resemble a set of instructions for an Airfix kit. Identical pieces of the wireframe that are intended to be reused are given the same reference number. The reference numbers correspond to the next part of the process which may be the biggest change depending on how you work.

Style Guide

The wireframe numbers correspond to components in the live HTML style guide. This is the heart of the design phase. After accounting for all pieces in the wireframe, you will be in a position to construct a complete style guide covering typography and modular components ready for use throughout the website. It serves a similar purpose to the pieces of an Airfix kit.

We are now in the ideal position to design in the browser — there will almost certainly be assets you still need a graphics package to create, I’m not dismissing their effectiveness for quickly testing colour and type combinations altogether either. Photoshop/Fireworks still serves a definitive purpose in my workflow albeit a much less significant role than before — mainly asset generation.

Functional Prototype

This step of the process remains unchanged. Here I build the functionality (not design, not layout) documented in the functional specification. This stage is only complete when all functionality is tested and complete.

Customised Prototype

The wireframes and style guide play a pivotal role in this methodology. They are schematics — instructions for assembling model using pieces from the style guide kit. The typographical components and modules in the HTML style guide are the pieces that you assemble according to the wireframes to build the model. This is where the design in the browser happens.

Using the wireframes as a guide for shaping the layouts in terms of proportions we can then quickly piece together detailed design layouts on top of a fully functional prototype, we can make adjustments to things that don’t work so well and quickly iterate. It’s almost like painting by numbers — it’s that easy.

I wasn’t fully sold on designing in the browser until I tried this approach. By stepping into the browser sooner, you can make more informed design decisions without shooting yourself in the foot down the line. The style guide is key to the success of this approach, the more flexible the pieces are, the better they will fit into the overall model.

In summary, the biggest change is dropping flat compositions as a deliverable — they are a heavy piece of the process that set false expectations. Perhaps they may still be of use internally for quick visualisation purposes, but they are damaging to responsive projects if treated as a deliverable. Wireframes should be given more prominence as a set of instructions that inform both the creation of the style guide as well as informing the shape of the layout when it comes to customising a functional prototype using the style guide. The wireframes should be a conceptual model of the final product, not the definitive model. This process involves greater communication with your clients which is a good thing. The style guide is presented much like Samantha Warren’s Style Tiles with the message that it contains the building blocks of the complete model. Like any process, there is always room for improvement — I would love to hear your thoughts if you have any further ideas or insights from your own process. This works for me, I hope it helps you too.


  1. This isn’t the complete process, I have left out the discovery and planning phase as it will be unaffected by the changes above. 

  2. A functional specification is a document detailing how components work along with corresponding references to the wireframes. It’s a useful deliverable that doubles up as a test plan. 

Where print fits in responsive web design

A stub1 is the part of a document torn off and kept as a record, it usually resides at the end of documents like cheques, receipts and tickets.

I can’t think of a more apt description of this handy little technique I am about to share with you to show you how I would approach print styles in responsive projects.

Print layouts are limiting. There isn’t much you can do in the sense of advanced layouts, even floats can cause problems. For print it’s a matter of reducing the visual noise, extracting the content and determining useful supplementary information.

Lucky for us if we are developing from a mobile first standpoint we can involve print styles at this level too so that most of our layout resets for the print media type are already taken care for us before horizontal layout occurs.

<link rel="stylesheet" href="css/global.css" media="all">
<link rel="stylesheet" href="css/layout.css" media="all and (min-width: 33.236em)">
<!-- Floats and horizontal layout techniques live within layout.css where there is room, global.css contains all styles apart from horizontal layout and any adjustments for large contexts -->

I’m going to generalize for a moment: mobile first layouts are mostly full-width blocks that contain the full set of styles (minus horizontal layout specific styles like floats and widths) with a harmonious vertical rhythm. When making a print stylesheet, we usually cancel floats, reset widths and hide the unnecessary interactive elements like navigation and video. The floats and widths (generally) aren’t set in our global stylesheet so it makes perfect sense for a print media query to live at this level, so at the bottom of your single column stylesheet, you could have:

/* Print stub */

@media only print {
    header, footer, nav, video, .etc, .and-so-forth {
        display: none;
    }
}

Then you would change how you reference your stylesheets in HTML by changing the media type referencing your CSS file for layouts greater than a single column to this:

<link rel="stylesheet" href="css/global.css" media="all">
<link rel="stylesheet" href="css/layout.css" media="screen and (min-width: 33.236em)">
<!-- changed media="all and.." to media="screen and..." so when printing, the device won't look in layout.css for print styles -->

For more fine grain control over the quality over printed material from your project, you can make use of print media query values to map styles to printers with certain levels of detail:

@media print and (min-resolution: 300dpi) {
    /* Styles for printers with a print resolution greater than 300 dots per inch */
}

Putting your print styles at the bottom of your single column stylesheet means you are only pruning the styles set at a this level before horizontal layouts occur meaning they are will be quicker to produce, easier to maintain and lightweight. Responsive web design has a knack for traversing mediums, lets take advantage of that.


  1. Ironically if this short article resided on Wikipedia, it would be classed as a stub