Programming4us
         
 
 
Programming

CSS for Mobile Browsers : Where to Insert the CSS (part 2) - Media queries

12/12/2010 3:30:30 PM
1.2. Media queries

CSS3 comes to our help with media queries. These complex media definitions include conditions about the screen size and media values allowed.

For example, we can say: “Apply this stylesheet for devices supporting only screen and with a maximum device width of 480.” This will apply to an iPhone, because in landscape mode it has a screen width of 480px and it doesn’t support print, handheld, or any other media type. Here’s how to write this as a conditional media query:

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

We can then target non-iPhone desktop devices with a filter saying: “Apply this stylesheet for browsers supporting at least screen and with a minimum device width of 481.” This query is written as follows:
<link media="screen and (min-device-width: 481px)" href="notiphone.css"
type="text/css" rel="stylesheet" />


Warning:

Internet Explorer (through version 8) does not understand CSS media queries, so it will apply the iPhone stylesheet by default. That is why we need to add IE conditional comments:

<!--[if !IE]>-->
<link type="text/css" rel="stylesheet" media="only
screen and (max-device-width: 480px)"
href="iphone.css" />
<!--<![endif]-->


Some browsers also understand CSS media queries inside the same stylesheet file. For example, the following code will change the background color displayed on an iPhone (and other similar devices):

@media only screen and (max-device-width: 480px) {
body {
background-color: red;
}
}

An extension for conditional media queries is the orientation media query, which allows us to define different styles for different orientations. There are two possibilities: orientation:portrait and orientation:landscape. For a device running iOS 3.2 or later, you can use the orientation media query as follows:

<link rel="stylesheet" media="all and (orientation:landscape)" href="land.css" />
<link rel="stylesheet" media="all and (orientation:portrait)" href="port.css" />


iPhone 4 and Pixel-Ratio

iPhone 4 comes with a 326-DPI screen, twice the original iPhone screen. This means that this new device has double width, double height in the same physical screen size. That is why Apple decided to give its browser the same CSS, viewport, and JavaScript dimensions as the low-DPI device, 320×480, and created a pixel-ratio of 2. This means that for every pixel, four real pixels will be drawn (a 2× zoom). Therefore, your website will render equally in iPhone 3GS or iPhone 4 beyond the clearer text. If you still want to show something different for iPhone 4 (as a high-DPI image) you can use the new media query condition -webkit-min-device-pixel-ratio:

<link media="all and (-webkit-min-device-pixel-ratio:2)"
href="iphone4.css" type="text/css" rel="stylesheet" />


The orientation query also works in Android from 2.0, in MicroB for MeeGo devices like the Nokia N900, and in Firefox Mobile. Table 2 provides a more complete list of browser compatibility for CSS media queries and the orientation extension.

Table 2. CSS3 conditional media queries compatibility table
Browser/platformConditional media queries compatibilityOrientation support
SafariYesYes, from OS 3.2
Android browserYesYes from 2.0
Symbian/S60Yes from 5th edition No before 5th editionNo
Nokia Series 40Yes from 6th edition No before 6th editionNo
webOSYesNo
BlackBerryNoNo
NetFrontNoNo
Openwave (Myriad)NoNo
Internet ExplorerNoNo
Motorola Internet BrowserNoNo
Opera MobileYesNo
Opera MiniYesNo

Other -----------------
- Developing an SEO-Friendly Website : Keyword Targeting (part 4)
- Developing an SEO-Friendly Website : Keyword Targeting (part 3)
- Developing an SEO-Friendly Website : Keyword Targeting (part 2)
- Developing an SEO-Friendly Website : Keyword Targeting (part 1) - Title Tags
- The Art of SEO : Optimization of Domain Names/URLs
- Cloud Security and Privacy : Regulatory/External Compliance (part 2)
- Cloud Security and Privacy : Regulatory/External Compliance (part 1)
- Developing an SEO-Friendly Website : Root Domains, Subdomains, and Microsites (part 2)
- Developing an SEO-Friendly Website : Root Domains, Subdomains, and Microsites (part 1)
- Parallel Programming with Microsoft .Net : Parallel Aggregation - An Example
- Parallel Programming with Microsoft .Net : Parallel Aggregation - The Basics
- Developing an SEO-Friendly Website : Creating an Optimal Information Architecture (part 4)
- Developing an SEO-Friendly Website : Creating an Optimal Information Architecture (part 3)
- Developing an SEO-Friendly Website : Creating an Optimal Information Architecture (part 2)
- Developing an SEO-Friendly Website : Creating an Optimal Information Architecture (part 1)
- Cloud Security and Privacy : Governance, Risk, and Compliance (GRC)
- Cloud Security and Privacy : Internal Policy Compliance
- jQuery 1.3 : Improving a basic form (part 8) - Checkbox manipulation
- jQuery 1.3 : Improving a basic form (part 7)
- jQuery 1.3 : Improving a basic form (part 6)
 
 
Top 10
- WCF Security Concepts
- Windows Azure : Programming Access Control Service (part 2)
- Manage Windows Server 2008 : Work with Preconfigured MMCs
- Windows Phone 7 : Making Conference Calls
- Windows Azure Storage : Message Operations (part 2) - Get Messages
- Programming with SQL Azure : WCF Data Services (part 3)
- Windows Server 2008 : Configuring Terminal Services (part 1)
- Exchange 2007 : Perform a Mailbox Active/Passive Installation
- Windows 7 : Customizing Startups Using the Boot Configuration Data
- Scripting Windows 7 with WSH : Programming the Windows Management Instrumentation Service
Most view
- Windows Server 2008 : Installing the Web Server Role (part 9) - Using Windows System Resource Manager
- Protecting SQL Server Data : CELL-LEVEL ENCRYPTION - Special Considerations
- Optimizing SQL Server for SharePoint 2010 (part 4) - Pre-Creating Your Content Databases
- Software Testing with Visual Studio Team System 2008 : Debug and running web test (part 2) - Running the test
- Mobile Game Networking Essentials : Network Programming and J2ME
- Navigating the Central Administration Home Page (part 2)
- Setting Up Your Windows Home Server 2011 Network : Troubleshooting Network Problems (part 2)
- Building Android Apps : Animation - Adding the New Entry Panel
- SharePoint 2010 : Create a Subsite (part 2) - Create a Subsite Without Microsoft Silverlight Installed
- SQL Server 2008 : Data Encryption - Column-Level Encryption