How to build standards-compliant responsive design using @viewport

Wdd Logo.
August 13, 2013
How to build standards-compliant responsive design using @viewport.

thumbnailOne of the key concepts in any responsive design is the change of viewport size. That's because mobile viewports vary greatly from desktop viewports. To control the viewport size we traditionally use the viewport meta tag.

However, the viewport meta tag, like all the worst browser developments of the last forever, isn't W3C valid. It was originally introduced by Apple in Safari and has since been adopted by other browsers. This results in an inconsistent implementation.<!--more>

Happily, the W3C have ridden to our rescue once again by introducing the @viewport CSS rule.

Old school

Using the old meta tag approach, this is how we'd tell the browser what size the viewport should seen as:

<meta name='viewport' content='width=device-width'>

The CSS rule

Quite apart from being invalid, the viewport instruction isn't data, it's presentation. So, sticking to our data and presentation separation principles, the viewport instruction needs to be in CSS, not HTML.

The W3C solution in CSS looks like this:

@viewport {
width: device-width;
}

Or alternately, you can set the viewport with a number, like so:

@viewport {
width: 640px;
}

You can use the @viewport rule in conjunction with @media queries to force any viewport larger than 960 to shrink to 960px, like so:

@media screen and (min-width: 960px){
@viewport {
width: 960px;
}
}

Additional properties

The @viewport rule also allows us to zoom into a page by default, and even set the maximum zoom:

@viewport {
width: 960px;
zoom: 1;
max-zoom: 3;
}

It is possible to block zooming altogether by setting the user-zoom property to fixed. However zooming, especially on smartphones, is necessary for accessibility and I would recommend using this property.

One more very useful property allows us to lock our web page into landscape or portrait mode:

@viewport {
orientation: landscape;
}

Browser support

Here's the bad news: currently this rule is only supported by Internet Explorer 10 and Opera, and requires the -ms- and -o- browser prefixes respectively.

Whilst that is disappointing to say the least, the fact that viewport functionality is already available in most browsers should mean this is a simple rule to pick up. Hopefully we'll start seeing it introduced in nightly builds very shortly.

Do you care about standards-compliance? Do the W3C help or hinder progress on the web? Let us know in the comments.

Featured image/thumbnail, window image via LostBob Photos

WDD Staff

WDD staff are proud to be able to bring you this daily blog about web design and development. If there's something you think we should be talking about let us know @DesignerDepot.

Read Next

15 Best New Fonts, July 2024

Welcome to our monthly roundup of the best fonts we’ve found online in the last four weeks. This month, there are fewer…

20 Best New Websites, July 2024

Welcome to July’s round up of websites to inspire you. This month’s collection ranges from the most stripped-back…

Top 7 WordPress Plugins for 2024: Enhance Your Site's Performance

WordPress is a hands-down favorite of website designers and developers. Renowned for its flexibility and ease of use,…

Exciting New Tools for Designers, July 2024

Welcome to this July’s collection of tools, gathered from around the web over the past month. We hope you’ll find…

3 Essential Design Trends, July 2024

Add some summer sizzle to your design projects with trendy website elements. Learn what's trending and how to use these…

15 Best New Fonts, June 2024

Welcome to our roundup of the best new fonts we’ve found online in the last month. This month, there are notably fewer…

20 Best New Websites, June 2024

Arranging content in an easily accessible way is the backbone of any user-friendly website. A good website will present…

Exciting New Tools for Designers, June 2024

In this month’s roundup of the best tools for web designers and developers, we’ll explore a range of new and noteworthy…

3 Essential Design Trends, June 2024

Summer is off to a fun start with some highly dramatic website design trends showing up in projects. Let's dive in!

15 Best New Fonts, May 2024

In this month’s edition, there are lots of historically-inspired typefaces, more of the growing trend for French…

How to Reduce The Carbon Footprint of Your Website

On average, a web page produces 4.61 grams of CO2 for every page view; for whole sites, that amounts to hundreds of KG…

20 Best New Websites, May 2024

Welcome to May’s compilation of the best sites on the web. This month we’re focused on color for younger humans,…