前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
首页程序员面试题库CSS media query resolution device-pixel-ratio
CSS响应式设计

高分辨率屏幕该用 resolution 还是设备像素比?

标准媒体特性是 resolution,可用 dppx、dpi 等单位描述输出设备每 CSS 像素对应的像素密度。(min-resolution: 2dppx) 常用于在高密度屏幕上替换背景资源;-webkit-min-device-pixel-ratio 是历史前缀写法。一般图片优先用 srcset 让浏览器按密度与布局宽度选资源,不必为每张图片单写媒体查询。

前端进阶之旅 · 一题精讲更新于 2026.09.29
CSS#响应式设计
先看核心答案读代码示例
理解线索

`resolution` 描述像素密度

  1. resolution衡量输出设备的像素密度,不描述视口的 CSS 宽度
  2. dppx二倍资源可塞进相同 CSS 尺寸,但下载体积要控制
  3. srcset内容图片还要考虑布局宽度,浏览器可自行挑选候选

它描述分辨率密度,不是页面有多少 CSS 像素宽。

核心回答

先记住这个答案

resolution 查询的是输出密度,2dppx 相当于每个 CSS 像素约对应两个设备像素,适合选择清晰度不同的背景图。普通内容图片更适合交给 srcset,因为浏览器还要综合实际显示宽度与候选资源。把高密度图片无条件发给所有屏幕会浪费下载量。

  • 标准查询使用 resolution
  • 2dppx 不等于两倍视口宽
  • 内容图片优先考虑 srcset
  • 高密度位图不必放大 CSS 尺寸

高密度背景图保持相同显示尺寸

品牌 logo 用 CSS 背景图,普通资源在高密度屏幕上发虚。可以在 @media (min-resolution: 2dppx) 下换高密度素材,但 CSS 中显示尺寸保持相同,让更密的像素用于细节。若是内容图片,<img> 配 srcset 更合适,浏览器可以同时考虑布局尺寸、像素密度和下载策略。不要把设备像素比当成视口宽度,它们回答的是不同问题。

高密度屏替换背景资源CSS
.logo {
  width: 120px; height: 40px;
  background: url("/logo.png") center / contain no-repeat;
}
@media (min-resolution: 2dppx) {
  .logo { background-image: url("/logo@2x.png"); } /* 显示尺寸不变 */
}

1dppx 相当于 96dpi,但实际资源选择不应只靠这个换算。 示例中 .logo 的 CSS 显示尺寸始终是 120×40,替换的是背景文件,而不是把盒子放大两倍。若 logo@2x.png 的源像素是 240×80,background-size: contain 会把它缩进同一盒子。开发者常误以为“2 倍图”就该把 CSS 宽高也乘二,结果页面图标变大;实际要保持布局尺寸,增加的是源文件的采样密度。

resolution 描述像素密度

浏览器页面缩放、设备设置和输出介质都可能改变媒体特性的结果;更重要的是图片是否有足够的源像素覆盖它在页面中的 CSS 尺寸。密度描述符如 2x 放在 srcset 中是候选资源声明,由浏览器选择,和强制命中某条 CSS 背景规则不同。对于矢量图,SVG 往往能避开多份位图的维护。

显示尺寸与文件像素尺寸要分开看:CSS 把背景画成 100×100 CSS 像素时,密度为 2 的屏幕可使用 200×200 像素文件,使细线和文字不易发虚。若文件本身只用于大面积渐变或没有高频细节,盲目上高分辨率版本可能只增加下载量。还应看压缩格式与文件体积,而不是只看像素倍数。

回答前,多想一步

容易答错的地方

把 2dppx 当成两倍视口宽
它描述分辨率密度,不是页面有多少 CSS 像素宽。
给高密度图同时放大 CSS 宽高
高密度资源通常在相同 CSS 显示尺寸下提供更多源像素,不应把布局尺寸也加倍。
试着用自己的话回答

面试官还会怎么问?

dppx 与 dpi 怎样换算?

在 CSS 分辨率单位里,1dppx 等于 96dpi;选择资源时仍要看图片实际显示尺寸。

内容图片为什么更推荐 srcset?

浏览器可结合候选资源、布局宽度和屏幕密度选图,不需手写很多背景媒体查询。

SVG 还需要 2x 版本吗?

普通矢量图可按显示尺寸栅格化,通常不需要为了像素密度再做一份位图式的 2x 文件。

从一道题,走向一组知识

把知识连起来

响应式设计

JavaScript 怎么知道媒体查询是否匹配?

图片密度切换若涉及脚本状态,可用 matchMedia 读当前查询结果。

响应式设计

移动优先具体怎么写,为什么也有人反对?

移动优先的断点看可用宽度,像素密度是另一条独立条件。

参考资料

  • CSS:响应式设计参考资料

示例用于理解所注明的运行环境与边界;延伸学习可结合原文中的更多案例。

本题目录
  1. 先记住这个答案
  2. 高密度背景图保持相同显示尺寸
  3. resolution 描述像素密度
  4. 容易答错的地方
  5. 面试官还会怎么问
  6. 把知识连起来
读懂,再试着讲出来

先看核心答案,再读代码。最后展开追问,检查自己有没有遗漏边界。

试着回答追问
浏览全部面试题理解原理,也关注真实的使用场景。回到顶部 ↑