我想找到CSS像素和设备像素之间的比例。
编辑:我应该意识到这只是缩放级别。我已经在标准参考文献中添加了一个答案,讲述了缩放级别。
CSS像素是我们几乎用于所有内容的单位--它是element.style.width、element.clientWidth、element.offsetWidth等的含义。设备像素是浏览器实际绘制的像素。一些属性是以设备像素为单位进行测量的,例如窗口屏幕宽度window.screen.width(例如1024),当用户缩放时不会更改。
动机:当用户缩放时,我希望增加画布的宽度和高度(同时保持style.width和style.height相同的CSS像素值),对上下文进行scale()操作,并在更清晰的放大画布上重新绘制。
我已经阅读了Quirksmode的“两个视口的故事”和Surfin' Safari上的高DPI网站,但它们都没有说如何获得比例。我目前唯一的想法是收集mousemove事件并测量event.clientX变化除以event.screenX的变化,或者通过编程方式创建使用moz--min-device-pixel-ratio
的媒体查询,使用getComputedStyle()
测试规则是否匹配,并通过二分搜索缩小范围。希望有更简单/可靠的方法。
编辑:我尝试在Chrome、Safari和Firefox 4中使用@media (-webkit-min-device-pixel-ratio:1)
查询,显然Webkit将该属性视为常数设备像素与屏幕像素比(缩放时不会改变),而Firefox 4将其视为设备像素与CSS像素比(缩放时会增加)。因此,在Firefox 4中,我可以使用二进制搜索发现CSS像素/设备像素比,但在Webkit中则不行。