bugl
bugl
HomeLearnPatternsPathsSearchPremium
HomeLearnPatternsPaths
Learn/CSS/Modern Layout
CSS•Modern Layout

CSS @supports Rule

The CSS @supports Rule

The @supports rule lets you check if the browser supports a specific CSS property or value, and to define fallback styles if the feature is not supported.

This is useful for applying styles only when the browser can handle them.

Basic Syntax

@supports (property: value) {
 /* CSS rules to apply if condition is true */
}

Example: Using @supports with grid and flex

You can combine @supports with regular CSS to provide fallback styling.

Here, if the browser supports display: flex, the CSS inside the @supports rule will be applied. If not, the .container class outside the @supports rule will be applied:

Example

Formatted code
/* use this CSS if the browser does not support display: flex */
.container {
  float: left;
  width: 100%;
}
/* use this CSS if the browser supports display: flex */
@supports (display: flex) { .container {
    display: flex;
  }
}

Live preview

Here, if the browser supports display: grid, the CSS inside the @supports rule will be applied. If not, the .container class outside the @supports rule will be applied:

Example

Formatted code
/* use this CSS if the browser does not support display: grid */
.container {
  display: table;
  width: 90%;
  background-color: #2196F3;
  padding: 10px;
}
/* use this CSS if the browser
supports display: grid */
@supports (display: grid) { .container {
    display: grid;
    grid: auto;
    grid-gap: 10px;
    background-color: #2196F3;
    padding: 10px;
  }
}

Live preview

Negating with not

You can use not to apply styles only when a feature is not supported:

Example

@supports not (display: grid) {
 .warning {
 background-color: pink;
 padding: 10px;
 border: 1px solid red;
 }
}

Combining Conditions

You can use and , or , and not for multiple conditions:

Example

@supports (display: grid) and (gap: 10px) {
 .container {
 display: grid;
 gap: 10px;
 }
}

Note

Always provide fallback styles outside of @supports , for older browsers.

Previous

CSS 12-Column Grid Layout

Next chapter

Advanced Styling

Start with CSS Rounded Corners

This chapter

Overview
24

Lessons

64m

Read time

1. CSS Flexbox2. CSS Grid Layout3. Responsive Web Design4. CSS Flex Container5. CSS Grid Container6. Responsive Web Design - The Viewport7. CSS Flexbox justify-content8. CSS Grid Tracks9. Responsive Web Design - Building a Grid View10. CSS Flexbox Align11. CSS Grid Gap12. Responsive Web Design - Media Queries13. CSS Flex Items14. CSS Grid Container - Align Grid Content15. Responsive Web Design - Images16. CSS Responsive Flexbox17. CSS Grid Items18. Responsive Web Design - Frameworks19. CSS Naming Grid Items20. Responsive Web Design - Templates21. CSS Grid Items - Alignment22. CSS Grid Items - Order23. CSS 12-Column Grid Layout24. CSS @supports Rule

On this page

The CSS @supports RuleBasic SyntaxExample: Using @supports with grid and flexNegating with notCombining Conditions