CSS Media Queries
The CSS media queries module enables testing and querying of viewport values and browser or device features, to conditionally apply CSS styles based on the current user environment. Media queries are used in the CSS @media
rule and other contexts and languages such as HTML and JavaScript.
Media queries are a key component of responsive design. They enable conditional setting of CSS styles depending on the presence or value of device characteristics. It's common to use a media query based on viewport size to set appropriate layouts on devices with different screen sizes — for example three columns on a wide screen or a single column on a narrow screen.
Other common examples include increasing the font size and hiding navigation menus when printing a page, adjusting the padding between paragraphs when a page is viewed in portrait or landscape mode, or increasing the size of buttons to provide a larger hit area on touchscreens.
In CSS, use the @media at-rule to conditionally apply part of a style sheet based on the result of a media query. To conditionally apply an entire style sheet, use @import.
When designing reusable HTML components, you may also use container queries, which allow you to apply styles based on the size of a containing element rather than the viewport or other device characteristics.
Some Example Code
The following CSS will apply if the viewing area is smaller than 600px.
@media screen and (max-width: 600px) { .class { background: #ccc; } }
If you want to link to a separate stylesheet, put the following line of code in between the <head>
tag.
<link rel="stylesheet" media="screen and (max-width: 600px)" href="small.css"/>
Minimum Width with min-width
The following CSS will apply if the viewing area is greater than 900px.
@media screen and (min-width: 900px) { .class { background: #666; } }
Multiple Media Queries
You can combine multiple media queries. The following code will apply if the viewing area is between 600px and 900px.
@media screen and (min-width: 600px) and (max-width: 900px) { .class { background: #333; } }
Device Width
The following code will apply if the max-device-width is 480px (eg. iPhone display). Note: max-device-width means the actual resolution of the device and max-width means the viewing area resolution.
@media screen and (max-device-width: 480px) { .class { background: #000; } }
A Template for Different Device Widths
/* BASE (MOBILE) SIZE These are the mobile styles. It's what people see on their phones. Remember, keep it light: Speed is Important. */ /* LARGER MOBILE DEVICES This is for mobile devices with a bit larger screens. */ @media only screen and (min-width: 481px) { } /* TABLET & SMALLER LAPTOPS The average viewing window and preferred media query for those is 768px. But I think that some more breathing space is good:) */ @media only screen and (min-width: 920px) { } /* DESKTOP This is the average viewing window. So Desktops, Laptops, and in general anyone not viewing on a mobile device. Here's where you can add resource intensive styles. */ @media only screen and (min-width: 1030px) { } /* LARGE VIEWING SIZE This is for the larger monitors and possibly full screen viewers. */ @media only screen and (min-width: 1240px) { } /* RETINA (2x RESOLUTION DEVICES) This applies to the retina iPhone (4s) and iPad (2,3) along with other displays with a 2x resolution. */ @media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min--moz-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5) { } /* iPHONE 5 MEDIA QUERY iPhone 5 or iPod Touch 5th generation styles (you can include your own file if you want) */ @media (device-height: 568px) and (-webkit-min-device-pixel-ratio: 2) { } /* PRINT STYLESHEET */ @media print { }