For AI agents: the complete documentation index is available at /next/zh/llms.txt, the full documentation bundle is available at /next/zh/llms-full.txt, and this page is available as Markdown at /next/zh/api/css/media-query.md.
Lynx
  • 简体中文
  • 媒体查询

    Lynx 实现了 CSS Media Queries Level 4 的一个子集。可以使用 @media 规则,根据视口和其他运行时环境值应用不同的样式。

    启用 CSS Rule 编码

    媒体查询需要启用 CSS Rule 编码。在 lynx.config.mjs 已有的 plugins 数组中添加 pluginLynxConfig

    import { pluginLynxConfig } from '@lynx-js/config-rsbuild-plugin';
    
    export default defineConfig({
      plugins: [
        pluginLynxConfig({
          enableCSSRule: true,
        }),
      ],
    });

    enableCSSRule 要求 Lynx SDK 或 Clay 4.0 及更高版本。未启用时,@media 规则不会被编码到模板中,也不会在运行时生效。

    语法支持

    媒体类型

    类型Lynx 行为Web 行为
    all始终匹配始终匹配
    screen始终匹配,Lynx 只有屏幕渲染上下文仅屏幕设备匹配
    print始终不匹配仅打印上下文匹配
    其他(speechtty 等)始终不匹配各自匹配对应上下文

    逻辑修饰符和运算符

    Lynx 支持 notonly、逗号分隔的查询列表(OR 语义),以及 andornot 媒体条件。与 CSS 语法一致,不能在同一层级中混用 andor;需要混用时,应通过圆括号嵌套条件。

    /* and / or / not 组合 */
    @media (min-width: 600px) and (orientation: portrait) { ... }
    @media (hover) or (pointer) { ... }
    @media not (prefers-color-scheme: dark) { ... }
    
    /* Level 4 范围语法 */
    @media (300px <= width <= 600px) { ... }
    @media (width > 400px) { ... }
    @media (100px < width < 500px) { ... }

    范围语法应使用未加前缀的 feature 名称,例如 width,而不是 min-width

    支持的媒体特征

    视口尺寸

    Feature支持形式说明
    widthplain / min- / max- / range视口宽度,单位为 CSS 像素
    heightplain / min- / max- / range视口高度,单位为 CSS 像素
    device-widthplain / min- / max- / rangewidth 等价
    device-heightplain / min- / max- / rangeheight 等价

    布尔形式 (width) 在视口宽度大于零时匹配。

    宽高比

    Feature支持形式说明
    aspect-ratioplain / min- / max- / range视口宽度除以视口高度
    device-aspect-ratioplain / min- / max- / rangeaspect-ratio 等价

    值可以是 16/9 形式的比例,也可以是单纯数字,后者会被视为 N/1

    分辨率和像素密度

    Feature支持形式说明
    resolutionplain / min- / max- / range设备像素比
    device-pixel-ratioplain / min- / max- / range无单位的设备像素比

    resolution 支持 dppxxdpidpcm 单位,其中 xdppx 的别名。

    方向

    Feature说明
    orientationportrait / landscape当 height >= width 时为 portrait

    正方形视口被视为 portrait

    交互能力

    Note

    当前宿主不注入 hover 或 pointer 环境值;不含 not 的相关查询均不匹配。

    Feature说明
    hoverhover / none主输入是否支持悬停
    pointerfine / coarse / none是否存在主指针;当前不区分 finecoarse

    用户偏好

    宿主可通过 UpdateColorScheme 更新系统颜色模式。默认值为 light

    Feature说明
    prefers-color-schemelight / dark系统颜色模式偏好

    色深

    Note

    当前宿主不注入实际色深;运行时固定按每个颜色分量 8 位求值。

    Feature支持形式说明
    colorplain / min- / max- / range每个颜色分量的位数

    支持的值单位

    长度单位

    单位说明
    pxCSS 像素
    em相对当前字号
    rem相对根元素字号
    %在媒体查询中相对视口宽度的百分比
    vw视口宽度百分比
    vh视口高度百分比
    vminvwvh 中较小的值
    vmaxvwvh 中较大的值

    分辨率单位

    单位说明
    dppx每个 CSS 像素的点数
    xdppx 的别名
    dpi每英寸的点数;除以 96 后得到 dppx
    dpcm每厘米的点数;除以 37.795 后得到 dppx

    与 Web 的关键差异

    device-* 尺寸使用视口值

    与 Web 不同,Lynx 不会通过媒体查询暴露物理设备尺寸。device-widthdevice-heightdevice-aspect-ratio 分别使用与 widthheightaspect-ratio 相同的视口值。

    不支持的 Feature 采用 Fail Closed 策略

    未列在本文档中的媒体特征不会被识别,查询结果恒为 false。

    媒体类型始终是 screen

    Lynx 只有屏幕渲染上下文:

    • @media print { ... } 永远不生效。
    • @media not print { ... } 永远生效。
    • @media screen { ... } 等同于 @media all { ... }

    无效查询列表会使用 not all

    当整个媒体查询列表都无效时,Lynx 会将其替换为 not all,因此不会匹配。对于逗号分隔的列表,无效项会被丢弃,合法项仍以 OR 语义参与匹配。

    使用示例

    /* 响应式布局 */
    @media (min-width: 768px) {
      .container {
        flex-direction: row;
      }
    }
    
    /* 暗色模式 */
    @media (prefers-color-scheme: dark) {
      .card {
        background-color: #1a1a1a;
      }
    }
    
    /* 高 DPR 设备 */
    @media (min-resolution: 2dppx) {
      .logo {
        background-image: url('logo@2x.png');
      }
    }
    
    /* Level 4 范围语法 */
    @media (400px <= width <= 800px) {
      .sidebar {
        display: none;
      }
    }

    兼容性

    LCD tables only load in the browser

    除非另有说明,本项目采用知识共享署名 4.0 国际许可协议进行许可,代码示例采用 Apache License 2.0 许可协议进行许可。