89 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| title: CSS3 Media Queries
 | |
| ---
 | |
| ## CSS3 Media Queries
 | |
| 
 | |
| Media Queries allow you to have different styles for different devices/screen sizes. Their introduction in CSS3 has greatly eased the building
 | |
| of responsive webpages.
 | |
| 
 | |
| The best approach when designing a responsive website is to think mobile first; meaning that you create your page starting with the design and content
 | |
| of the mobile version. You may think that with some scalable sizes ( %, vw or vh ), your page will adapt perfectly to any device. But it will not. Maybe
 | |
| for some very basic design, but certainly not for more common or complex pages!
 | |
| 
 | |
| When designing your page for smaller devices, you will focus on the main content. On a bigger screen, you will have to adapt some font-sizes, margins,
 | |
| paddings and so on in order to keep your site comfortable and readable, but you will also want/need to add more content, the ones you did not judge
 | |
| fundamental, and fill in the space created by the screen size.
 | |
| 
 | |
| The thought process should be:
 | |
| 1. Which content to show?
 | |
| 2. How to layout the page?
 | |
| 3. Which size to use?
 | |
| 
 | |
| ### The basic syntax
 | |
| 
 | |
| ```css
 | |
|     @media only screen and (min-width: 768px) {
 | |
|       p {padding: 30px;}
 | |
|     }
 | |
| ```
 | |
| 
 | |
| The `p` tag will have a padding of 30px as soon as the screen reaches min 768px width.</p>
 | |
| 
 | |
| ### The AND syntax
 | |
| 
 | |
| 
 | |
| ```css
 | |
|   @media only screen and (min-height: 768px) and (orientation: landscape) {
 | |
|     p {padding: 30px;}
 | |
|   }
 | |
| ```
 | |
| 
 | |
| The `p` tag will have a padding of 30px as soon as the screen reaches min 768px height and its orientation is landscape.
 | |
| 
 | |
| ### The OR syntax
 | |
| 
 | |
| ```css
 | |
|     @media only screen and (min-width: 768px), (min-resolution: 150dpi) {
 | |
|       p {padding: 30px;}
 | |
|     }
 | |
| ```
 | |
| 
 | |
| The `p` tag will have a padding of 30px as soon as the screen reaches min 768px width or its resolution reaches min 150dpi.
 | |
| 
 | |
| ### And beyond!
 | |
| 
 | |
| There are more operators beyond the main two, a full list with examples can be found [https://css-tricks.com/logic-in-media-queries/](in this article from CSS Tricks.)
 | |
| 
 | |
| Beyond the core uses of media queries for mobile-first web design shown above, media queries can do a lot, especially for web accessibility. Here are just a few examples:
 | |
| 
 | |
| 1. Adjusting for screen readers that convert website text to speech for the visually impaired (for example, ignoring non-essential text).
 | |
| ```css
 | |
|     @media speech {
 | |
|       /* ... */
 | |
|     }
 | |
| ```
 | |
| 2. Allowing for more graceful zooming in for the minorly visually impaired, such as many elderly people.
 | |
| 3. Allowing smoother experiences for those who prefer or need less animation to read a page.
 | |
| ```css
 | |
|     @media (prefers-reduced-motion: reduce) {
 | |
|       .animation {
 | |
|         animation: none;
 | |
|         -webkit-animation: none;
 | |
|       }
 | |
|     }
 | |
| ```
 | |
| 4. Restyling a page for when it's printed as opposed to read on a screen.
 | |
| ```css
 | |
|     @media print {
 | |
|       /* ... */
 | |
|     }
 | |
| ```
 | |
| 
 | |
| ### More Information
 | |
| * [MDN - media queries](https://developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/Using_media_queries)
 | |
| * [W3 Schools - @media rule](https://www.w3schools.com/cssref/css3_pr_mediaquery.asp)
 | |
| * [CSS Tricks Standard Device Widths Article](https://css-tricks.com/snippets/css/media-queries-for-standard-devices/)
 | |
| * [Ethan Marcotte A List Apart Atricle on  Responsive Web Design](https://alistapart.com/article/responsive-web-design)
 | |
| * [Brad Frost 7 habits of highly effective media queries](http://bradfrost.com/blog/post/7-habits-of-highly-effective-media-queries/)
 | |
| * [How to make media queries work on older browsers](https://www.templatemonster.com/blog/css-media-queries-for-all-devices-and-browsers-including-ie7-and-ie8/)
 |