在以像素为单位指定 div 的大小时,我在 iphone 4s 设备上看到了奇怪的行为。
我的 iphone 在纵向方向是 980 像素宽。
作为第一个测试,我刚刚创建了一个普通的 html 实现。这完全符合预期 - div 占据了我屏幕的整个宽度,但并不宽:
<body>
<div style="width:980px; height: 30px; background-color: red;"></div>
</body>
现在在 GWT 中,我尝试了同样的事情(至少我认为它是等价的):
FlowPanel fp = new FlowPanel();
fp.setWidth("980px");
fp.setHeight("30px");
fp.getElement().getStyle().setBackgroundColor("red");
RootPanel.get().add(fp);
但是在我的 iphone 上加载时,div 似乎是屏幕宽度的两倍。GWT 是否会自动进行某种缩放?我知道 iphone 4S 是视网膜显示器,因此它的像素比是 2 倍。是不是和那件事有关?
我无法检查 iphone 上的输出 html,但是当我在 Firefox 中查看 GWT 版本时,我可以看到 GWT 确实在输出我指定的 980px 大小:
// What GWT outputs - looks the same as my hand-written version:
<div style="width: 980px; height: 30px; background-color: red;"></div>
那么为什么 GWT 版本会将 div 渲染为 2x 宽呢?
- - - 更新 - - - - -
正如 Woojah 建议的那样,我尝试通过样式定义:
.sanityTest {
width: 980px;
height: 30px;
background-color: green;
}
FlowPanel fp = new FlowPanel();
fp.setStyleName("sanityTest");
但仍然是相同的行为 - 在 iphone 4s 屏幕上,div 是显示屏宽度的两倍。dom 看起来和我的手写版本完全一样。尺寸在非视网膜设备上表现正确。
谢谢