繁体   English   中英

为什么我的显示分辨率与 screen.width * devicePixelRatio 不同?

[英]Why is my display resolution different from screen.width * devicePixelRatio?

devicePixelRatio上的MDN 文档中,它说:

(devicePixelRatio) 告诉浏览器应该使用多少屏幕的实际像素来绘制单个 CSS 像素。

...所以我希望我的显示水平分辨率为:

window.devicePixelRatio * window.screen.width = 2 * 1792 = 3584

... 但不是。 我的显示器水平分辨率是 3072。

这是为什么?

在我看来,规范在这里不够准确。

(devicePixelRatio) 告诉浏览器应该使用多少屏幕的实际像素来绘制单个 CSS 像素。

它应该是这样的:

(devicePixelRatio) 告诉浏览器应该使用多少屏幕的实际 CSS 像素来绘制单个 CSS 像素。

因为那些“实际像素”实际上并不是真实的。 没有双关语的意思。

我找到了一个类似问题的绝佳答案,但我不喜欢“你不需要它”的言论。 TL;DR - 浏览器这样做主要是出于遗留原因。

此外,我在w3c github上发现了一个关于“解决实际物理尺寸的能力”的巨大话题,在 CSS 中,但无论如何。 而且有这么多“咩,没那么简单……你知道……”的消息。 我喜欢这个:“对于什么是 px 没有明确的概念”。

事实证明,实际上你可以获得真正的纵横比。 至少它对我有用。 我有一台 15 英寸显示屏的 MacBook。 实际分辨率为2880x1800 在设置中,我的分辨率为1680x1050window.screen所依赖的分辨率)。 真正的纵横比是1.6 ,而不是2 (hello window.devicePixelRatio)

MediaTrackConstraints 的 aspectRatio 属性返回实际的纵横比:1.6。

const [track] = (await navigator.mediaDevices.getDisplayMedia()).getVideoTracks();
console.log(track.getSettings().aspectRatio);

但是有一个很大的警告,整个“Media Stream API”是关于从屏幕上捕获视频的,这就是为什么你必须获得权限才能工作。 除了这个,我找不到任何能返回真实纵横比的东西。

这就是我在一个小时左右找到的所有内容,我希望有足够的信息来得出一些结论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM