前置知识: CSS

特性查询

00:00
1 min Intermediate 2026/6/14

@supports

1. @supports 语法

@supports (display: grid) {
  .container {
    display: grid;
  }
}

@supports not (display: grid) {
  .container {
    display: flex;
  }
}

逻辑操作符

@supports (display: grid) and (gap: 1rem) {
}
@supports (display: flex) or (display: grid) {
}
@supports not (display: grid) {
}

2. 常用检测

@supports (backdrop-filter: blur(10px)) {
  .glass {
    backdrop-filter: blur(10px);
  }
}
@supports (aspect-ratio: 1/1) {
  .square {
    aspect-ratio: 1/1;
  }
}
@supports (selector(:has(*))) {
  .card:has(.badge) {
    border-color: gold;
  }
}

3. JavaScript 检测

if (CSS.supports('display', 'grid')) {
  /* 使用 Grid */
}
if (CSS.supports('(display: grid) and (gap: 1rem)')) {
  /* 使用 Grid + gap */
}

4. 渐进增强策略

/* 基础样式 */
.container {
  display: flex;
  flex-wrap: wrap;
}
.item {
  width: 50%;
}

/* 增强样式 */
@supports (display: grid) {
  .container {
    display: grid;
    grid-template-columns: 1fr 1fr;
  }
  .item {
    width: auto;
  }
}

知识检测

学习进度

-- 已学文档
--% 知识覆盖率

学习推荐

专注模式