CSS GridLesson #191

CSS @supports

The `@supports` rule lets you

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

Example Code

css
Try it Yourself
@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

Example Code

css
Try it Yourself
/* 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;

  }

}

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

Example Code

css
Try it Yourself
/* 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;
  }
}

Negating with `not`

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

Example

Example Code

css
Try it Yourself
@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

Example Code

css
Try it Yourself
@supports (display: grid) and (gap: 10px) {

  .container {

    display: grid;

    gap: 10px;

  }

}

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


CSS Reference

At-ruleDescription
@supportsUsed to test whether a browser supports a CSS feature

Interactive Code Examples

CSS Example 1

css
Try it Yourself
Interactive runnable CSS example from EA Academy.
Live Output Preview:

CSS Example 2

css
Try it Yourself
Interactive runnable CSS example from EA Academy.
Live Output Preview:

CSS Example 3

css
Try it Yourself
CSS syntax and property demonstration.
@supports not (display: grid) {

  .warning {

    background-color: pink;

    padding: 10px;

    border: 1px solid red;

  }

}

CSS Example 4

css
Try it Yourself
CSS syntax and property demonstration.
@supports (display: grid) and (gap: 10px) {

  .container {

    display: grid;

    gap: 10px;

  }

}