A few ways to define breakpoints in a responsive site

There are a few ways to determine the breakpoints for layout in a responsive design. The first one is based on the size of common screen sizes. The second one adds breakpoints when the content breaks. The third one is based on things like font-size. And there’s another one which uses a system of predefined columns.

When the content breaks

Stephen Hay says that defining breakpoints is easy. You start with a small window. You make sure things look good on this small window. Then you slowly make this window bigger until the content doesn’t look good anymore. There’s your breakpoint. This works only if you have a good feeling for proportion. Good designers might have this feeling. I don’t think all developers have this. Developers like systems.

Using typographic rules

Robert Bringhurst says that anything between 45 and 75 characters is a good length of line. And Josef Müller-Brockmann says that 10 words is a good measure. These are simple rules that can be translated to code. As soon as the body copy becomes wider than 10 words, something should happen. Unfortunately there’s no words unit, so we can’t do something like this: p {max-width: 10words}. We’ll need a tool for that. This results in logical breakpoints based on the content, and based on the typography.

Using columns

A while ago I saw a brilliant talk by Wilhelm JoysAndersen. In it he promoted to use predefined columns. He decided to use columns that are 300px wide. Which, he said, somehow corresponds with common screen sizes. Any component in this system has a few different states, all based on multiples of 300. A system like this is much easier to design, and much easier to maintain. I think he has a good point. Instead of 300px I would advice to use 10em or 20em as the base width of your columns, though. It turns out that most common screen sizes are multiples of 10em. And 10em is easy to work with.

An example

If we design a media component in a modular gridsystem like this it could have a few appearances. A media component consists of an image with some text. One of the appearances could be a 20em wide image with the text below it.

An example of a media component of 20em wide.

It could also exist like a 20em wide image with the text in a 20em wide column next to it. This would look something like this:

An example of a media component of 40em wide.

If you must, you could create a version that’s 60em wide, but this would probably be in conflict with the rules about the ideal length of line.

An example of a media component of 60em wide.

This is not just the design for different screen sizes. The small media component could look exactly like this in an aside, next to the 40em wide main content as well. I really like this modular idea. It’s very clever.

Wilhelm also promoted the idea of not creating fluid layouts. Using columns with a fixed, yet logical width is much easier to design, and to maintain, he says. And you are sure it will always look good. I can’t really think of any reasons why this would be a bad idea. Actually, I think I like this approach to defining breakpoints as well.

Device sizes

I still believe defining breakpoints based on device sizes is silly. There are thousands of devices that don’t fit in the multiples of 10em size. So if you’re fluent in fluid thinking, I think creating your breakpoints based on simple typographic rules is the best idea. But the idea of working with columns is clever as well. And if you do choose to use columns, why not base them on some value that’s pretty common? Like the easy to work with width of 20em.