Creating a responsive website is all about making your design adapt to different screen sizes and devices. This is where CSS media selectors come in - a powerful tool that helps you control the layout and styling of your website based on various conditions.
One of the most basic media selectors is the `max-width` selector, which applies styles when the screen width is less than a certain value, as seen in the example of `max-width: 768px`. This is a great way to start building responsive designs.
The `min-width` selector, on the other hand, applies styles when the screen width is greater than or equal to a certain value. For example, `min-width: 1200px` would apply styles when the screen is at least 1200 pixels wide.
By using these two selectors together, you can create a responsive design that adapts to different screen sizes, making your website more user-friendly and accessible.
Understanding CSS Media Queries
Understanding CSS Media Queries is a powerful technique that allows you to apply different styles to different devices and screen sizes. Media queries use the @media rule to include a block of CSS properties only if a certain condition is true.
There are several types of media you can target with media queries, including screens, print, speech, and all devices. The default media type is "all", but you can also use "screen" to target devices with screens, or "print" to target print documents.
You can add conditions to media types using media queries, which are called media features. Media features allow you to test conditions like orientation, width, and height. For example, you can use the orientation media feature to apply different styles depending on whether the browser window is in landscape or portrait mode.
Here are some common media features you can use in your media queries:
- orientation: matches landscape or portrait mode
- width: matches the width of the screen
- height: matches the height of the screen
Media queries can be used to hide elements on different screen sizes, or to apply different styles depending on the device width. For example, you can use a max-width media query to apply styles to smaller screens, or a min-width media query to apply styles to larger screens.
What Are
So, you want to know what a media query is? A media query is a CSS technique introduced in CSS3 that uses the @media rule to include a block of CSS properties only if a certain condition is true.
There are several media types you can target, including screens, print, and speech. You can also use the all media type to match all devices.
To define the type of media you're trying to match, you can use one of the following media types:
- all: Matches all devices
- print: Matches documents that are viewed in a print preview or any media that breaks the content up into pages intended to print.
- screen: Matches devices with a screen
- speech: Matches devices that read the content audibly, such as a screenreader.
You can also add conditions to media types, which are called media queries. These conditions are called media features, and they can be used to test things like the viewport width and height.
Here are a few examples of media features you can use:
- orientation: tests whether the viewport is in landscape or portrait mode
- width and max-width: test the viewport width
- height and max-height: test the viewport height
Using media queries can be a powerful way to create responsive designs that adapt to different devices and viewing conditions.
Hide Elements
Hide Elements is a clever way to use media queries. You can hide elements on different screen sizes using media queries, as we've seen in the example of hiding elements with media queries.
For instance, you can use media queries to hide navigation menus on smaller screens. This is useful for decluttering the layout and improving user experience on mobile devices.
By using media queries to hide elements, you can create a more streamlined and user-friendly interface that adapts to different screen sizes. This is especially important for responsive web design.
You can apply this technique to various elements, such as images, videos, or even entire sections of your website.
Choosing the Right Media Query
You should choose your breakpoints based on your content rather than popular device sizes, as those are subject to change with every technology release cycle. This approach is more effective in creating a responsive design.
There are two broad approaches when choosing CSS breakpoints: one is based on devices and the other is based on content. For instance, you can choose breakpoints based on the point at which a media feature condition becomes true, such as when the lines of text become uncomfortably long.
To choose breakpoints based on content, you can use the responsive mode in browser developer tools. This allows you to easily make the viewport smaller or larger to see where the content style could be improved.
Here are some common media types you can target with your media queries:
- all: Matches all devices
- print: Matches documents that are viewed in a print preview or any media that breaks the content up into pages intended to print.
- screen: Matches devices with a screen
- speech: Matches devices that read the content audibly, such as a screenreader
You can use media queries to make sure that your content is displayed correctly in any context and before any user.
Do You Need?
Do You Need CSS Media Queries?
CSS media queries are a powerful tool, but do you really need them? The answer is not a simple yes or no. Media queries can be useful, but they can also make your codebase too complex to maintain. As Laura Kalbag explains, accessible design is about creating a large door for people with disabilities, while universal design is about creating an entry that anyone can fit into, regardless of their abilities.
There are over 18 million possible cases in which your content might be displayed, according to Miriam Suzanne. CSS is like trying to do graphic design on an infinite and unknown canvas, across operating systems, interfaces, and languages. It's impossible to know what we're doing.
You can accommodate your design to every possible situation, but this will lead to a codebase that's too complex to maintain. Ranald Mace's concept of Universal Design is a better approach. It's about designing products to be usable by all people, to the greatest extent possible, without the need for adaptation or specialized design.
Here are the different types of media you can target with media queries:
- all: Matches all devices
- print: Matches documents that are viewed in a print preview or any media that breaks the content up into pages intended to print.
- screen: Matches devices with a screen
- speech: Matches devices that read the content audibly, such as a screenreader.
There are many features you can match with media queries, including width, height, and resolution. But there are also many more features you can match, grouped into 5 categories in Media Queries Level 4.
Choose Based on Content
Choosing breakpoints based on content is a great approach, and it's actually more reliable than relying on popular device sizes. This method involves identifying the point at which your content starts to break or become difficult to read.
You can use the responsive mode in browser developer tools to help you determine where your breakpoints should go. Simply open your HTML code, activate the responsive design mode, and start increasing or decreasing the page width to see where the content style could be improved.
For example, if the line lengths become too long or a section becomes too squashed, that's where you need to consider changing the style. This is where you can use a media query to change the design and make it more responsive.
The media type "screen" is often used in media queries, but it's not the only type you can target. Other types include "print", "speech", and "all", which matches all devices.
To choose breakpoints based on content, identify the point at which your content starts to break or become difficult to read. Then, use the column-count property to divide the text into two columns from that point on.
Here are some common features you can match in media queries, grouped into 5 categories:
- Resolution (width, height, min-width, max-width)
- Orientation (orientation, aspect-ratio)
- Color (color-index, color-gamut)
- Input (inverted-colors, color-space)
- Other (monochrome, reduced-motion)
By choosing breakpoints based on content, you can create a more responsive design that adapts to the needs of your users.
Prefers Color Scheme
The prefers-color-scheme feature is a game-changer for adapting to user preferences. It allows us to tap into a user's system or browser settings to determine whether to serve a "dark" or "light" theme based on their preferences.
This feature takes two values: light and dark. Light is used when a user has selected a light theme or has no active preferences, while dark is used when a user has selected a dark display in their settings.
Using prefers-color-scheme can be more complex than just changing the color of the background, so it's essential to have a smart implementation strategy. CSS variables can help make it easier to maintain a codebase.
To detect a user's system settings, we can use the prefers-color-scheme feature in combination with CSS custom properties. This allows us to define an alternate set of colors for the rendered UI based on the user's settings.
Here's a quick rundown of the values prefers-color-scheme can take:
- light: When a user has selected a light theme or has no active preferences
- dark: When a user has selected a dark display in their settings
This makes it easy to swap colors by changing the custom property value, which updates everywhere.
Media Query Types
Media Query Types are used to target different types of devices and outputs, such as screens, print, and speech.
You can use the @media rule to define the type of media you're trying to match, and there are several types to choose from, including all, print, screen, and speech.
Print is used to match documents viewed in a print preview or any media that breaks up content into pages intended to print.
Screen is used to match devices with a screen, which is the most common type used.
Speech is used to match devices that read content audibly, such as screen readers.
Other media types like tty, tv, projection, handheld, braille, embossed, and aural have been deprecated and should be avoided.
Here's a list of the main media types and their uses:
- all: Matches all devices
- print: Matches documents viewed in a print preview
- screen: Matches devices with a screen
- speech: Matches devices that read content audibly
These media types can be combined with other conditions, such as min-width and max-width, to create more complex media queries.
Responsive Design
Responsive design is all about creating a website that adapts to different screen sizes and devices. HTML is fundamentally responsive, but it's up to us to intervene and adapt the style to the screen based on the content and layout of our webpage.
To create a responsive design, we can use media queries, which allow us to apply different styles based on the viewport size. We can use the min-width and max-width media features to apply styles when the browser window is wider or narrower than a certain width.
For example, we can use the min-width media feature to apply styles when the browser window is wider than a certain width, and the max-width media feature to apply styles below a certain width. This allows us to create a responsive design that looks great on both desktop and mobile devices.
Media queries can be combined to apply more than one condition, using the word "and" to combine them. This allows us to create complex responsive designs that adapt to different screen sizes and devices.
In modern CSS, we have a range of tools at our disposal to create responsive designs. We can use the clamp() function to allow typography and spacing to be responsive to the viewport width, container queries to enable an HTML element to be responsive based on its dimensions, and logical properties to permit spacing to be responsive to the language of the website.
Here are some common media query breakpoints that we can use to create responsive designs:
These breakpoints can be used to create responsive designs that adapt to different screen sizes and devices. By using media queries and these breakpoints, we can create websites that look great on a range of devices and provide a great user experience.
Responsive design is not just about making a website look good on different devices, it's also about providing a good user experience. By creating a responsive design, we can ensure that our website is accessible and usable on a range of devices, from desktop computers to mobile phones.
In the past, web designers typically tested responsive breakpoints just by resizing the browser window. Now, every popular browser offers an inbuilt responsive testing mode, and cloud-based website testing tools let developers use real devices for testing responsive websites.
To test responsive breakpoints, we can use the device mode feature in Chrome DevTools, which simulates device resolution, device orientation, and user agent string with various pre-defined device profiles. We can also use simulators/emulators if we target specific devices.
By using these tools and techniques, we can create responsive designs that adapt to different screen sizes and devices, and provide a great user experience for our users.
Targeting Devices
Targeting devices is a crucial aspect of CSS media selector. You can target specific devices by using the exact dimensions of a device, like targeting the iPhone X in landscape mode.
The orientation media feature tests whether a device is rotated the wide way (landscape) or the tall way (portrait). This feature is useful for ensuring that your website looks good on different devices.
You can also target different types of output, such as screens and printers. By using the @media at-rule or the media attribute on a link element, you can apply different styles based on the output device.
For example, you can set the background color to grey on screens, but to transparent on printers to save ink. This is a simple yet effective way to tailor your website's appearance to different devices.
Here are some common media types:
- all: applies to all devices
- screen: applies to screens and other visual devices
- print: applies to printers and other output devices
By understanding how to target devices, you can create a more user-friendly and responsive website that adapts to different devices and output types.
Viewport/Page Characteristics
The viewport is the visible area of a web page on a device, and understanding its characteristics is crucial for creating a good user experience.
The width of the viewport can be a specific number, such as 400 pixels, or a range, using min-width and max-width.
The height of the viewport can also be a specific number or a range, using min-height and max-width.
The aspect ratio of the viewport defines the width-to-height ratio, and can be set to a specific value.
The orientation of the viewport can be either portrait or landscape, depending on how the device is rotated.
Here are the possible values for the orientation property:
The overflow-block property checks how the device treats content that overflows the viewport in the block direction, which can be scroll, optional-paged, paged, or none.
The overflow-inline property checks if content that overflows the viewport along the inline axis can be scrolled, which is either none or scroll.
Devices
Targeting devices can be a bit tricky, but it's essential to get it right. You can target specific devices like the iPhone X, which has a unique screen size and orientation.
The orientation media feature can detect whether a device is in landscape or portrait mode. This is useful for designing websites that adapt to different screen sizes and orientations.
You can also target specific email clients using media queries. With the help of websites like howtotarget.email, you can find out how to target different email clients and their specific requirements.
Websites are not just displayed on screens, but also on other devices like printers. To save printer ink, you can use the @media at-rule in your stylesheet to change the background color when the page is printed.
Determining breakpoints based on devices can be challenging due to the wide range of screen sizes available. However, you can group devices based on form factor, such as mobile devices, tablets, and laptops.
Here are some common screen resolutions:
- Worldwide stats for the most common screen resolutions
- Data analytics from your website
- Breakpoints selected by CSS frameworks
There is no strict rule for defining responsive breakpoints, so it's up to you to choose the best approach for your design.
Media Query Examples
We can match all devices using the 'all' media type, which is a great starting point for designing a responsive website.
There are several media types to choose from, including 'print', 'screen', and 'speech'. We can match devices with a screen using the 'screen' media type, which is perfect for designing a website that adapts to different screen sizes.
To preview print styles in a screen, all major browsers can emulate the output of a print stylesheet using DevTools.
Here are some common media types and their uses:
- 'all': Matches all devices
- 'print': Matches documents that are viewed in a print preview or any media that breaks the content up into pages intended to print.
- 'screen': Matches devices with a screen
- 'speech': Matches devices that read the content audibly, such as a screenreader.
By combining media types with features and operators, we can create complex media queries that adapt to different devices and screen sizes.
Breakpoints and Widths
You can add as many breakpoints as you like by adding one more media query for each new breakpoint you want to create, like we did with a breakpoint at 600px in addition to the one at 768px.
A max-width media query triggers styles for smaller screens when the viewport or device width is less than a certain number of pixels, for example, 600px. This query is essentially saying, "If the device width is less than or equal to 600px, then do {...}."
You can use a max-width media query to make your desktop screens the default and change the layout when viewed on a mobile device, shrinking down and resizing the content for smaller screens. This approach is often used in email coding.
A min-width media query prioritizes smaller screens, which is a better option for mobile-first coding. It's a more flexible approach that allows you to build an optimal design for smartphones and then have your emails adapt and expand for larger screens.
Max-width and min-width media queries can be used together to target a specific range of screen resolutions or viewport sizes, giving you more control over how your design adapts to different screen sizes. This is especially useful when you want to target certain mobile devices with known widths.
Best Practices and Tips
When designing for responsive web development, it's essential to consider the optimal breakpoint-defining strategy. This involves carefully studying your design and thinking about your design team's productivity.
Selecting the optimal breakpoint-defining strategy is crucial, and it's not just about creating device breakpoints. Consider creating content-based breakpoints, which can provide the highest usability on various screen sizes.
Designing for mobile first is a good approach, as approximately half of overall web traffic comes from mobile devices. This prioritizes design for mobile screens and ensures that key constraints are tackled early.
Avoid breakpoints that push devices into much smaller or larger ranges, as this can be problematic. Researching common device resolutions and existing CSS framework breakpoint definitions can help you select your responsive breakpoints optimally.
The CSS container query feature is a modern option for creating content-based breakpoints, and using both media queries and container queries together can bring the best productivity for building complete responsive websites.
Here are some key considerations for creating responsive breakpoints:
- Select the optimal breakpoint-defining strategy
- Design for mobile first
- Avoid breakpoints that push devices into much smaller or larger ranges
- Choose the media/container query option properly
Frequently Asked Questions
What is the difference between @media and @media screen CSS?
@media" is the media query itself, while "@media screen" adds conditions to target specific devices, such as screens with a maximum width of 360px. Understanding the difference between these two is key to crafting effective and device-specific CSS rules.
Sources
- https://css-tricks.com/a-complete-guide-to-css-media-queries/
- https://web.dev/learn/design/media-queries
- https://www.w3schools.com/css/css_rwd_mediaqueries.asp
- https://www.emailonacid.com/blog/article/email-development/emailology_media_queries_demystified_min-width_and_max-width/
- https://blog.logrocket.com/css-breakpoints-responsive-design/
Featured Images: pexels.com