无法在任何Web语言(HTML/CSS/JS)中设置DPI设置。
但对于模拟,您可以将代码放置在iframe或甚至div中,
然后在iframe内加载您的网站,然后可以使用CSS transform:scale()根据您的手机PPI缩放整个页面。
例如,如您所见, iPhone6s 的 750 x 1334
本地分辨率(像素) 但 375 x 667
UIKit 大小(点数) 和 本地比例因子为2.0。您也可以在 CSS 媒体查询 中看到,它在 375 x 667 上呈现,然后使用本地因子(这里是2.0)进行缩放以适应设备显示(这会导致在此操作之间发生柔和的抗锯齿效果)。
现在我想在我的iMac 27" 2012上使用分辨率为326 ppi的屏幕模拟iPhone6s,而该设备的像素密度通常为96,但显然它是108.79 ppi。因此,我们需要使用比例尺来缩放,这个比例尺的因子是108.79/326
。所以最终我们应用于transform:scale
的比例尺因子为:
with iframe of 375 x 667 pixels size
108.79/326 * 2.0 = 0.667 : as scale factor
所以:
.iPhone6S {
width:375px;
height:667px;
transform-origin: 0 0;
transform:scale(0.67);
}
<iframe src="https://www.w3schools.com/" class="iPhone6S"></iframe>
此外,w3.org on orientation也提供了相关信息。
当“height”媒体特性的值大于或等于“width”媒体特性的值时,“orientation”媒体特性为“portrait”。否则,“orientation”为“landscape”。
如果我们谈论的是一般的模拟器,那么您应该考虑user-agent device detection,因为某些网站仍然依赖它,无论是在服务器端还是客户端。因此,您需要使用XMLHTTPRequest
手动获取页面,然后使用XMLHTTPRequest.setRequestHeader设置用户代理为某种类似于手机的设备外观。
以下是翻译内容:
这里是一个iPhone6s用户代理字符串的示例:
Mozilla/5.0(iPhone; CPU iPhone OS 6_1_3 like Mac OS X)
AppleWebKit/536.26(KHTML, like Gecko)Version/6.0 Mobile/10B329
Safari/8536.25
我还发现了一个非常值得一提的网站:
https://www.mydevice.io/