Responsive design methods are very helpful to developers because they allow us to serve content to the widest range of devices without having to maintain separate versions of the site and without some of the negative drawbacks to other methods such as scaling and fluid layouts.
Scaling vs. fluid vs. responsive
There is a lot of confusion over these terms and designers often incorrectly use them interchangeably. In truth, each of these are distinct evolutionary steps in layout technique that have emerged over time in line with advances in technology.
Scaling layouts are designed to scale every element relative to every other element. They are responsive in the sense that they will scale the content dynamically in response to changes in the size of the viewport. The layout itself remains static, changing the size of every element to maintain a consistent appearance.
Above: example of a scaling layout at different resolutions: the design sacrifices readability for consistency.
Fluid layouts are different because they scale container elements relative to the size of the viewport. This is achieved by using relative units such as ems to overcome the problem of shrinking text. The design can be broken by the user scaling it.
Above: example of a fluid layout at different resolutions: the design sacrifices consistency for readability.
Responsive layouts don’t scale anything. Instead, they change what is displayed depending on the size of the viewport.
Above: an example of a responsive layout at different resolutions.
Disaster 1) Wrapping menus
If you use a navbar at the top of your page, a responsive design is supposed to “snap” it to a more compact format when the page is displayed on a small screen. But this does not always work perfectly if the display area is wider than the break point, but too small to display all the menu items in a single line. The result is a menu that wraps.
There are several ways to solve this problem. The first is to reduce the number of items displayed horizontally on the navbar by sorting them into categories and sub-categories. You can then use drop-down items to display the sub-categories when a category is selected.
The second way is to change the break point to a lower value. The actual number to use is the width at which your navbar starts to fail, not a specific device size.
The third way is to use a different menu for devices, such as a sliding drawer.
Disaster 2) Using fixed width images
Content areas are usually set to a size relative to the viewport. So when a fixed-width image is wider than the size of the area, image cropping occurs.
Above: example of a bad fixed-width image that is too large: now it has scroll bars and content is pushed off-screen.
You can avoid this problem by using relative units to set the width of the image, or if you use a framework that supports it (such as Bootstrap) you can use a responsive image class (eg: class=”img-responsive”).
Above: The same element with a responsive image class approach: now scroll bar is gone.
Disaster 3) Element distortion
This one is a bit more obscure, but essentially what happens when your layout is displayed on a small viewport is that any unhandled columns behave like rows. This is a problem because the distortion of the content unintentionally changes the hierarchy of your design.
Above: column becomes a row, distorting content.
The solution is obvious, yet it is surprising how many people struggle with it: simply set the height, width, and padding of the element explicitly. If it moves out of position and covers other elements, you can force it to be where you want by wrapping it in a div and setting margins.
Planning helps avoid mistakes
This article has discussed only the 3 most commonly encountered responsive design disasters, but there are plenty of other ways for a good design to go wrong. Preventing errors is not too difficult. Modern browsers have built-in responsive layout testing, so plan your design well and test often.