当前位置: 首页 > news >正文

什么是物理像素和逻辑像素?设备像素比(DPR)是什么?

物理像素和逻辑像素

物理像素

物理像素是指设备屏幕上实际存在的发光点,是屏幕显示的最小物理单位。例如:

  • iPhone 14 Pro 的屏幕分辨率为 2556×1179,这意味着它有 2556×1179 个物理像素
  • 物理像素是硬件固定的,无法通过软件改变

逻辑像素

逻辑像素是 CSS 像素,是 Web 开发中使用的抽象单位。它是一个相对单位,浏览器会根据设备的特性将其映射到物理像素上。例如:

  • 当你设置width: 100px时,这里的 100px 指的是逻辑像素
  • 逻辑像素的大小会根据设备的 DPI(每英寸点数)自动调整

设备像素比(DPR)

定义

设备像素比(Device Pixel Ratio,简称 DPR)是物理像素与逻辑像素的比值:

DPR = 物理像素 / 逻辑像素

常见设备的 DPR 值

设备类型DPR 值说明
普通显示器11个逻辑像素 = 1个物理像素
iPhone 6/7/821个逻辑像素 = 2×2个物理像素
iPhone 14 Pro31个逻辑像素 = 3×3个物理像素
MacBook Pro (Retina)21个逻辑像素 = 2×2个物理像素

DPR 的作用

  1. 保持视觉一致性:通过 DPR,不同设备上相同逻辑像素的元素看起来大小相近
  2. 提高显示清晰度:高 DPR 设备用更多物理像素显示一个逻辑像素,使图像更清晰
  3. 响应式设计:开发者可以根据 DPR 调整图片和布局

在 JavaScript 中获取 DPR

// 获取设备像素比constdpr=window.devicePixelRatio||1;console.log('设备像素比:',dpr);

在 CSS 中处理 DPR

/* 针对高 DPR 设备加载高清图片 */@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){.logo{background-image:url('logo@2x.png');background-size:100px 50px;}}/* 针对普通 DPR 设备 */@media(-webkit-max-device-pixel-ratio:1.5),(max-resolution:191dpi){.logo{background-image:url('logo.png');}}

在 Canvas 中处理 DPR

constcanvas=document.getElementById('myCanvas');constctx=canvas.getContext('2d');constdpr=window.devicePixelRatio||1;// 获取 CSS 设置的逻辑尺寸constrect=canvas.getBoundingClientRect();// 设置 canvas 的物理像素尺寸canvas.width=rect.width*dpr;canvas.height=rect.height*dpr;// 缩放绘图上下文,使绘图操作使用逻辑像素ctx.scale(dpr,dpr);// 现在可以使用逻辑像素进行绘图ctx.fillRect(0,0,100,100);// 实际上会在 200×200 的物理像素区域绘制

实际应用场景

  1. 图片适配:为不同 DPR 设备提供不同分辨率的图片(如image.pngimage@2x.pngimage@3x.png
  2. Canvas 绘图:确保 Canvas 在高 DPI 屏幕上清晰显示
  3. 移动端开发:处理不同设备的显示差异
  4. 响应式设计:根据设备特性调整布局和字体大小

理解这些概念对于开发跨设备、跨平台的高质量 Web 应用非常重要!

http://www.cnnetsun.cn/news/784522.html

相关文章:

  • 大模型微调全解析:GPT/Gemini/Qwen专业化的关键技术
  • 论文开题“神器”大揭秘:书匠策AI如何让你的研究赢在起点?
  • 深度测评10个AI论文写作软件,本科生毕业论文必备!
  • 从0到1!AI提示工程架构师助力智能营销腾飞
  • DeepSeek MODEL1架构级跃迁:从Transformer到状态空间模型的革命性突破
  • AI产品经理vs传统产品经理:大模型时代必备技能与学习路线
  • 【跨端技术React Native】入门学习随笔记录
  • AI原生应用中的多模态交互:从理论到实践
  • 支撑百万级定时任务!深扒 Kafka 与 Netty 的“时间轮”神技 (内附硬核图解)
  • 基于希尔伯特变换与带通滤波的滚动轴承振动信号包络谱故障诊断算法(Python,jupyter nootbook文件)
  • 技术已到位,失业潮为何还未爆发?决策层的认知盲区才是真正的“缓冲带”
  • PCI9x5x驱动移植支持PCI9054在win7下使用4
  • 入门篇--人工智能发展史-10-从MCP协议到AI Agent:从静态知识到动态智能,智能体的全面演进之路
  • 【Elasticsearch】OpenDistro Security 中 backend_roles 的设计哲学(含实战验证)
  • Redis复盘总结
  • langchain 快速入门(三):搭建RAG知识库
  • 守住 Java AI 生命线:优先级与熔断降级工程化实战
  • 国产大模型第一梯队!
  • Java计算机毕设之 基于Spring Boot的助农扶贫综合服务平台开发基于springboot的助农扶贫系统(完整前后端代码+说明文档+LW,调试定制等)
  • 小视频平台源码,ElementUI 本地分页
  • 从零构建轻量级企业考勤订饭系统:Node.js + SQLite 全栈实战复盘
  • C 语言基础:输入输出、运算符与流程控制全梳理
  • 【毕业设计】基于springboot的助农扶贫系统(源码+文档+远程调试,全bao定制等)
  • 【CTF Writeup】Reverse题型之恶意代码逆向分析入门
  • Java计算机毕设之基于springboot的智慧生产安全系统基于SpringBoot的智慧工厂安全生产监督管理系统(完整前后端代码+说明文档+LW,调试定制等)
  • Mermaid简记
  • 学长亲荐2026TOP9AI论文软件:专科生毕业论文必备测评
  • 【计算机毕业设计案例】基于springboot的植物养护系统基于SpringBoot+Vue的植物健康系统管理系统设计与实现(程序+文档+讲解+定制)
  • 一文带你读懂SDK测试
  • Java毕设项目:基于springboot的植物养护系统(源码+文档,讲解、调试运行,定制等)