Javascript HTML&;CSS:在不同的屏幕/设备中,固定像素高度的渲染方式似乎有所不同

Javascript HTML&;CSS:在不同的屏幕/设备中,固定像素高度的渲染方式似乎有所不同,javascript,html,css,resolution,pixels,Javascript,Html,Css,Resolution,Pixels,我已经为div设置了一个固定的高度,比方说: div.box { height: 250px; } 使用测量屏幕像素的工具(Meazure),我注意到在我的台式电脑上,显示器分辨率为1680x1050像素,盒子的像素为250px(正确值);然而,在我的笔记本电脑中,它有一个1920x1280分辨率的显示器,使用Meazure测量的像素是不同的!它显示539像素 对于以像素为单位的偏移值,也会发生同样的情况。。。我注意到不同屏幕和设备之间的不同行为(在我的智能手机上,这种效果放大了很多…)

我已经为div设置了一个固定的高度,比方说:

div.box {
   height: 250px;
}
使用测量屏幕像素的工具(Meazure),我注意到在我的台式电脑上,显示器分辨率为1680x1050像素,盒子的像素为250px(正确值);然而,在我的笔记本电脑中,它有一个1920x1280分辨率的显示器,使用Meazure测量的像素是不同的!它显示539像素

对于以像素为单位的偏移值,也会发生同样的情况。。。我注意到不同屏幕和设备之间的不同行为(在我的智能手机上,这种效果放大了很多…)

如何设置一个“固定”值,使每个设备都显示相同的值

(注意:我不想使用100%的宽度,因为我希望框即使在调整窗口大小后也有一个固定的值)

如何设置一个“固定”值,使每个设备都显示相同的值

不过,这就是问题所在:“固定”像素值不会在每个设备上都相同,因为高密度屏幕是存在的

在72ppi屏幕上看起来很好的250px框在高密度300ppi屏幕上会显得很小(具体来说是预期大小的24%)。浏览器使用设备像素比率将指定的像素值调整为最小值来补偿这一点。(你的“meazure”工具似乎没有考虑这个像素比例,这似乎限制了它的实用性,因为它只能在传统的低密度屏幕上给出准确的结果。)

理论上,您可以通过将元素的大小乘以当前
devicePixelRatio
的倒数来撤销此操作,但结果与您想要的相反:元素的物理像素数相同,但在每个设备上看起来完全不同

实际上,完全可以忽略这种情况,并相信浏览器能够正确调整指定的大小。(使用密度感知工具或浏览器自己的开发工具进行测量。)您真正需要考虑这一点的唯一情况是,如果您包括用于更高密度屏幕的高分辨率位图图像;在这些情况下,您可以使用@media查询来确定浏览器应该使用的图像,例如

@media (-webkit-min-device-pixel-ratio: 2),  (min-resolution: 192dpi) { 
    /* 2x-res images here */
}
/* low-res images here */
(当然,
-webkit
前缀值是特定于供应商的;
分辨率
是尚未普遍支持的。)

如何设置一个“固定”值,使每个设备都显示相同的值

不过,这就是问题所在:“固定”像素值不会在每个设备上都相同,因为高密度屏幕是存在的

在72ppi屏幕上看起来很好的250px框在高密度300ppi屏幕上会显得很小(具体来说是预期大小的24%)。浏览器使用设备像素比率将指定的像素值调整为最小值来补偿这一点。(你的“meazure”工具似乎没有考虑这个像素比例,这似乎限制了它的实用性,因为它只能在传统的低密度屏幕上给出准确的结果。)

理论上,您可以通过将元素的大小乘以当前
devicePixelRatio
的倒数来撤销此操作,但结果与您想要的相反:元素的物理像素数相同,但在每个设备上看起来完全不同

实际上,完全可以忽略这种情况,并相信浏览器能够正确调整指定的大小。(使用密度感知工具或浏览器自己的开发工具进行测量。)您真正需要考虑这一点的唯一情况是,如果您包括用于更高密度屏幕的高分辨率位图图像;在这些情况下,您可以使用@media查询来确定浏览器应该使用的图像,例如

@media (-webkit-min-device-pixel-ratio: 2),  (min-resolution: 192dpi) { 
    /* 2x-res images here */
}
/* low-res images here */

(当然,
-webkit
前缀值是特定于供应商的;
分辨率
尚未得到普遍支持。)

我建议首先检查实际的CSS属性。右键->检查元件,查看您的PC和笔记本电脑上的div.box高度是否实际设置为250px

可能是由于不同的分辨率,应用了不同的样式。
如果你有一个www.页面要查看,请在评论中发布它。我建议你首先检查一下实际的CSS属性。右键->检查元件,查看您的PC和笔记本电脑上的div.box高度是否实际设置为250px

可能是由于不同的分辨率,应用了不同的样式。
如果您有一个www.页面要查看,请将其发布在评论中

尽管有许多因素可能导致这种行为,但您能否在遇到此类问题的地方分享您的html。您的问题来自浏览器呈现。。。您可以使用真正的winform应用程序覆盖浏览器层?设备(尤其是手机和平板电脑)的硬件分辨率可能与浏览器报告的分辨率不同。你真的无能为力,最好的办法是相信设备制造商做了正确的事情。使用
rem
,它会根据设备和基于字体大小显示高度。尽管有很多因素可能导致这种行为,你可以分享你的html以及你在哪里遇到这样的问题。你的麻烦来自浏览器渲染。。。您可以使用真正的winform应用程序覆盖浏览器层?设备(尤其是手机和平板电脑)的硬件分辨率可能与浏览器报告的分辨率不同。你真的无能为力,最好的办法是相信设备制造商做了正确的事情。使用
rem
,它将根据设备和基于字体大小显示高度,以获取帮助。我知道