WHAT - 屏幕 dpr 设备像素比率

目录

  • 一、设备像素比率 (DPR)
  • 二、DPR 与每英寸点数 (DPI)
  • 三、dpr=2 和 dpr=1 有什么区别
    • 设备像素比率为 1 (DPR = 1)
    • 设备像素比率为 2 (DPR = 2)
    • 实际区别
    • 示例代码
    • 例子

一、设备像素比率 (DPR)

DPR(设备像素比率)常常在讨论屏幕分辨率和显示质量时使用。

设备像素比率(DPR, Device Pixel Ratio)表示物理像素(device pixels)与 CSS 像素(CSS pixels)之间的比例。它反映了设备的屏幕密度,通常用来调整网页元素在高分辨率屏幕上的显示效果。

  • 物理像素:屏幕上实际存在的像素点。
  • CSS 像素:网页设计中使用的抽象单位,通常与逻辑像素相关。

在高 DPI 设备上,DPR 通常大于 1。例如:

  • 在常规 96 DPI 显示器上,DPR 为 1。
  • 在 Retina 显示器上,DPR 可能为 2 或更高。

你可以使用以下 JavaScript 代码获取设备像素比率:

var dpr = window.devicePixelRatio || 1;
console.log("Device Pixel Ratio: " + dpr);

二、DPR 与每英寸点数 (DPI)

每英寸点数(DPI, Dots Per Inch)表示每英寸内有多少个像素点,是衡量屏幕分辨率的一个物理指标。DPI 越高,图像越清晰,细节越丰富。

计算 DPI 的方法需要知道屏幕的物理尺寸和分辨率:

  1. 屏幕分辨率:屏幕的宽度和高度(以像素为单位)。
  2. 屏幕尺寸:屏幕的对角线长度(以英寸为单位)。

计算公式为:

请添加图片描述

以下是一个完整的 JavaScript 示例代码,用于获取设备像素比率和估算屏幕的 DPI:

// 获取屏幕的宽度和高度(以像素为单位)
var screenWidth = window.screen.width;
var screenHeight = window.screen.height;// 获取设备像素比率
var devicePixelRatio = window.devicePixelRatio || 1;// 获取调整后的屏幕宽度和高度(考虑 DPR)
var adjustedScreenWidth = screenWidth * devicePixelRatio;
var adjustedScreenHeight = screenHeight * devicePixelRatio;// 假设的屏幕对角线尺寸(以英寸为单位)
var diagonalSizeInInches = 15; // 你需要根据实际情况调整这个值// 计算 DPI
var dpi = Math.sqrt(Math.pow(adjustedScreenWidth, 2) + Math.pow(adjustedScreenHeight, 2)) / diagonalSizeInInches;console.log("Screen Width: " + screenWidth + "px");
console.log("Screen Height: " + screenHeight + "px");
console.log("Device Pixel Ratio: " + devicePixelRatio);
console.log("Adjusted Screen Width: " + adjustedScreenWidth + "px");
console.log("Adjusted Screen Height: " + adjustedScreenHeight + "px");
console.log("Estimated DPI: " + dpi);

注意事项

  • diagonalSizeInInches 是屏幕对角线尺寸,你需要根据你的显示器的实际尺寸来调整这个值。
  • 估算的 DPI 仅是一个近似值,实际 DPI 可能会有所不同。

三、dpr=2 和 dpr=1 有什么区别

我们日常设备,一般 Mac 显示器 dpr 为 2,外置显示器 dpr 为 1,那他们有什么区别?

设备像素比率(DPR, Device Pixel Ratio)为 2 和 1 之间的主要区别在于屏幕上显示内容的清晰度和缩放方式。

以下是具体区别:

设备像素比率为 1 (DPR = 1)

  • 物理像素与 CSS 像素:1 个 CSS 像素等于 1 个物理像素。
  • 显示效果:适用于标准分辨率显示器,如大多数非 Retina 显示器或传统显示器。
  • 图像与文本:图像和文本的大小与在网页设计中定义的尺寸一致,不会进行额外缩放。

设备像素比率为 2 (DPR = 2)

  • 物理像素与 CSS 像素:1 个 CSS 像素等于 2 个物理像素。
  • 显示效果:适用于高分辨率显示器,如 Retina 显示器或高 DPI 显示器。
  • 图像与文本:图像和文本的大小会按比例缩小,因为一个 CSS 像素实际由 2x2(共 4 个)物理像素表示。显示内容更清晰细腻。

实际区别

  1. 清晰度

    • DPR = 1:图像和文本可能会在高分辨率设备上显得模糊,因为每个 CSS 像素只对应一个物理像素。
    • DPR = 2:图像和文本在高分辨率设备上更加清晰,因为每个 CSS 像素对应四个物理像素。
  2. 资源加载

    • DPR = 1:加载标准分辨率的图像资源,文件大小较小。
    • DPR = 2:通常需要加载高分辨率的图像资源(如 2x 图像),以确保显示效果清晰。这会增加文件大小和加载时间。
  3. 网页设计与开发

    • DPR = 1:开发者设计的所有尺寸和布局在显示器上直接按比例展示,无需额外考虑高分辨率问题。
    • DPR = 2:开发者需要为高分辨率设备提供更高质量的图像资源,并考虑在不同 DPI 设置下的显示效果。

示例代码

以下是一个简单的 JavaScript 示例,演示如何检测和处理不同的设备像素比率:

// 获取设备像素比率
var dpr = window.devicePixelRatio || 1;if (dpr === 1) {console.log("DPR is 1: Standard resolution display.");
} else if (dpr === 2) {console.log("DPR is 2: High resolution (Retina) display.");
} else {console.log("DPR is " + dpr + ": Other resolution display.");
}// 根据 DPR 选择不同的图像资源
var imageUrl = dpr > 1 ? "image@2x.png" : "image.png";
document.getElementById("myImage").src = imageUrl;

例子

假设一个图像的 CSS 尺寸是 100x100 像素:

  • DPR = 1:显示的图像大小为 100x100 个物理像素。
  • DPR = 2:显示的图像大小为 200x200 个物理像素,但在 CSS 中仍然显示为 100x100 像素,这使得图像更加清晰。

通过理解和应用这些区别,可以优化网页在不同设备上的显示效果,确保用户体验的一致性和清晰度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1489486.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

RockyLinux 9 PXE Server bios+uefi 自动化部署 RockLinux 8 9

pxe server 前言 PXE(Preboot eXecution Environment,预启动执行环境)是一种网络启动协议,允许计算机通过网络启动而不是使用本地硬盘。PXE服务器是实现这一功能的服务器,它提供了启动镜像和引导加载程序,…

1.2 单链表定义及操作实现(链式结构)

1.单链表定义 链式存储:用一组任意的存储单元存储线性表中的数据元素。用这种方法存储的线性 表简称线性链表。 为了正确表示结点间的逻辑关系,在存储每个结点值的同时,还必须存储指示其直接 后继结点的地址(或位置)…

故障诊断 | 基于Transformer故障诊断分类预测(Matlab)

文章目录 预测效果文章概述程序设计参考资料预测效果 文章概述 Transformer故障诊断/分类预测 | 基于Transformer故障诊断分类预测(Matlab) Transformer 模型本质上都是预训练语言模型,大都采用自监督学习 (Self-supervised learning) 的方式在大量生语料上进行训练,也就是…

Java解析epub电子书文件实战demo

如何使用 Java、Spring Boot 和 Epublib 库解析存储在阿里云对象存储服务(OSS)上的 EPUB 文件。这里将指导您完成设置必要依赖项、配置 OSS 客户端以及编写服务以读取和提取 EPUB 文件章节的全过程。 步骤1:添加依赖项 首先,将 E…

微信小程序消息订阅处理实践

微信小程序提供订阅消息功能,分为一次性订阅消息、长期订阅消息。长期订阅消息目前只针对民生、金融、教育等有线下服务场景的类目开放。这些只是大类,并不表示所包含的所有二级类目都能申请长期订阅消息,具体看官方文档。 另一个长期订阅消…

RNN(一)——循环神经网络的实现

文章目录 一、循环神经网络RNN1.RNN是什么2.RNN的语言模型3.RNN的结构形式 二、完整代码三、代码解读1.参数return_sequences2.调参过程 一、循环神经网络RNN 1.RNN是什么 循环神经网络RNN主要体现在上下文对理解的重要性,他比传统的神经网络(传统的神…

04 卷积神经网络

目录 1. 基本概念 1.1 卷积神经网络 1.2 卷积 1.3 汇聚(池化) 2. CNN网络架构及参数学习 2.1 网络架构 2.2 参数学习 3. 典型的卷积神经网络 3.1 LeNet-5 3.2 AlexNet 3.3 Inception网络 3.4 残差网络 4. 其他卷积方式 1. 基本概念 1.1 …

ReentrantReadWriteLock详解

目录 ReentrantReadWriteLock详解1、ReentrantReadWriteLock简介2、ReentrantReadWriteLock类继承结构和类属性3、ReentrantReadWriteLock的读写锁原理分析4、ReentrantReadWriteLock.WriteLock类的核心方法详解非公平写锁的获取非公平写锁的释放公平写锁的获取公平写锁的释放 …

全网最最实用--模型高效推理:量化基础

文章目录 一、量化基础--计算机中数的表示1. 原码(Sign-Magnitude)2. 反码(Ones Complement)3. 补码(Twos Complement)4. 浮点数(Floating Point)a.常用的浮点数标准--IEEE 754(FP32…

ElasticSearch核心之DSL查询语句实战

什么是DSL? Elasticsearch提供丰富且灵活的查询语言叫做DSL查询(Query DSL),它允许你构建更加复杂、强大的查询。 DSL(Domain Specific Language特定领域语言)以JSON请求体的形式出现。目前常用的框架查询方法什么的底层都是构建DSL语句实现的,所以你必…

跨境电商独立站:Shopify/Wordpress/店匠选哪个?

在面对不断增加的平台运营压力时,不少跨境电商的商家逐渐将注意力转向建立自己的独立站。据《中国跨境出口电商发展报告(2022)》所示,中国拥有的独立站数量在2022年已接近20万个,这表明独立站已成为卖家拓展海外市场的…

IndentationError:unindent does not match any outer indentation level

IndentationError:unindent does not match any outer indentation level 目录 IndentationError:unindent does not match any outer indentation level 【常见模块错误】 【解决方案】 原因分析: 解决方法: 示例: 欢迎来到我的主页&am…

正则采集器——前端搭建

前端使用有名的饿了么管理后台,vue3版本vue3-element-admin,首先从gitee中克隆一个vue3-element-admin模板代码vue3-element-admin: Vue3 Element Admin开箱即用的中后台管理系统前端解决方案,然后在此基础上进行开发。 1、修改vite.config.…

matlab仿真 数字信号载波传输(下)

(内容源自详解MATLAB/SIMULINK 通信系统建模与仿真 刘学勇编著第七 章内容,有兴趣的读者请阅读原书) clear all M8; msg[1 4 3 0 7 5 2 6]; ts0.01; T1; %t0:ts:T; t0:ts:T-ts; %x0:ts:length(msg); x0:ts:length(msg)-ts; f…

使用Dumpbin工具查看C++二进制文件的位数、时间戳及dll库的依赖关系

目录 1、Dumpbin简介 2、使用Dumpbin查看二进制文件的位数与时间戳 3、使用Dumpbin查看二进制文件依赖的dll库 4、最后 C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/125529931C/C++基础入…

几种数据库中保存树的常见存储结构

在数据库中存储树时,常见的存储结构有以下几种: 常见存储结构 邻接列表 每个节点都有一个指向其父节点(pid)的引用。这种方法简单直观,也是最容易理解和常用的,但在获取整棵树或子树时可能需要多次查询。 存储结构 一般表结构…

自动驾驶-机器人-slam-定位面经和面试知识系列05之常考公式推导(02)

这个博客系列会分为C STL-面经、常考公式推导和SLAM面经面试题等三个系列进行更新,基本涵盖了自己秋招历程被问过的面试内容(除了实习和学校项目相关的具体细节)。在知乎和牛客(牛客上某些文章上会附上内推码)也会同步…

Android APP 音视频(03)CameraX预览与MediaCodec编码

说明: 此CameraX预览和编码实操主要针对Android12.0系统。通过CameraX预览获取yuv格式数据,将yuv格式数据通过mediacodec编码输出H264码流(使用ffmpeg播放),存储到sd卡上。 1 CameraX 和 MediaCodec简介 1.1 CameraX…

【CN】Argo 持续集成和交付(一)

1.简介 Argo 英 [ˈɑ:ɡəu] 美 [ˈɑrˌɡo] Kubernetes 原生工具,用于运行工作流程、管理集群以及正确执行 GitOps。 Argo 于 2020 年 3 月 26 日被 CNCF 接受为孵化成熟度级别,然后于 2022 年 12 月 6 日转移到毕业成熟度级别。 argoproj.github.i…

基于Xejen框架实现的C# winform鼠标点击器、电脑按键自动点击器的软件开发及介绍

功能演示 文章开始之前,仍然是先来个视频,以便用户知道鼠标连点器的基本功能 软件主界面 多功能鼠标连点器 快速点击: 痕即鼠标点击器可以设定每秒点击次数,让您轻松应对高频点击需求。 切换时长,即每次动作之间的间…