标准答案

  1. @media 适合页面级响应式布局,例如不同视口宽度下切换栏位。
  2. @supports 用来检测浏览器是否支持某个 CSS 特性,适合做渐进增强或降级。
  3. Container Query 让组件根据自身容器宽度变化,而不是根据整个视口变化。
  4. 页面布局优先考虑 media query,复用组件在不同容器中适配时更适合 Container Query。
  5. 新特性要配合 @supports 或合理 fallback,避免旧浏览器出现不可用布局。

题目解析

这题要分清条件来源:视口条件、能力条件、容器条件。

Container Query 很适合卡片、侧栏组件和嵌入式模块,因为它们是否拥挤取决于容器。

代码示例

组件可以声明容器,再按容器宽度改变内部布局。

CSS
.card-list {
  container-type: inline-size;
}

@container (min-width: 520px) {
  .card {
    display: grid;
    grid-template-columns: 160px 1fr;
  }
}

常见误区

  • 所有响应式都用视口断点,组件换容器后布局失效。
  • 使用新 CSS 特性时不考虑支持范围和 fallback。
  • 把 @supports 当成媒体查询使用,混淆能力检测和尺寸检测。

作者信息