HTML/CSS - 移动端页面初始缩放问题

6

在开始时,所有移动设备都被缩小了50%,除了iPad之外的每个设备都是如此。尝试进行PHP检查,以便在除iPad之外的所有设备上缩小50%的比例,但当您从横向模式转换到纵向模式再转换到横向模式时,它会再次缩小50%。

这是我当前的元标记:

<meta name="HandheldFriendly" content="true" />
<meta name="viewport" content="width=640, height=700, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" />

我的HTML没有使用任何宽度为100%的像素。总体内容不超过640宽和700高。

有人有什么想法可以避免这个问题吗?

编辑

得出结论,@hakre关于像素比例的说法是正确的。我的解决办法是将每个宽度设置为百分比而不是像素。这样它会自动调整大小。需要注意的一点是我移除了比例。原因是它似乎会在某些设备上破坏布局。再次感谢@hakre。


这里有一些答案元素:https://dev59.com/SG855IYBdhLWcg3wNhd1 - Thomas Guillory
是的,我本来想说 <meta content="initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" name="viewport" /><meta content="width=device-width" name="viewport" /> 但你的链接中有这个。 - Mr Carl
不,那不是答案。然后你只需禁止用户缩放页面。但由于我建筑中的每个设备都会自动设置比例而无需任何用户交互,因此这不是解决方案。无论如何,感谢您的尝试 :) - user1027444
2个回答

4

我只在 Android 的默认浏览器和 Opera Mobile 上测试过,但它似乎效果不错。遗憾的是,在 Android 浏览器上仍然没有办法禁用缩放...

<meta name="viewport" content="width=device-width, initial-scale=1.0"/> 
<meta name="viewport" content="target-densitydpi=device-dpi" /> 
<meta name="HandheldFriendly" content="true"/>

1
在CSS中,px是一种绝对长度单位。当输出环境已知时,它们非常有用。

对于CSS设备,这些尺寸要么通过将物理单位[in、cm、mm、pt、pc]与其物理测量相关联来锚定(i),要么通过将像素单位[px]与参考像素相关联来锚定(ii)。[由我添加和突出显示]

如果参考像素是设备显示的物理像素的一半,则700px的CSS值将转换为在显示器上为350px,或者说是您问题中的50%。

因此,您在这里体验到的完全正确,CSS在选择px单位方面是正确的,只是您错过了CSS中的px不同于显示器上的像素。由于它不是但您希望它是,看起来您选择了错误的单位。

再次强调:只有在已知输出环境的情况下,绝对长度 单位才非常有用。

也许您可以找到一种方法来告诉浏览器修改那个参考像素?这将解决您的问题。或者现在您已经知道发生了什么,可以检测设备并相应地更改长度。

作为替代方案,您可以将绝对长度替换为相对长度(em、ex)。由于它们是相对的,您只需要更改它们相对的元素的长度即可更改整个页面。

通常使用在 <html> 和/或 <body> 元素上使用绝对长度,而在其他所有元素上使用相对长度来实现此目的。

这种方法也可能有助于解决您的问题。


不,那不是问题所在。问题在于移动浏览器的加载缩放为50%。然后您可以缩小回来,但元素的宽度/高度完全正确。一个可能的解决方案是要么使其一开始就缩小,要么根本不缩小。感谢您的撰写,但我已经知道了这一点 :) 我的问题只是似乎在加载时处于缩放状态。元素的显示是正确的。 - user1027444
只是另一个输入。已经为所有元素设置了宽度,没有一个元素会扩展此宽度。再次感谢您尝试。 - user1027444
在你的情况下,zoom是CSS属性吗?如果是,你能把客户端样式表粘贴出来吗?此外,你是否了解CSS设备适配?你可能需要使用供应商特定的模块,因为它仍然是一个草案。 - hakre
我根本不使用CSS中的缩放属性。我也尝试了那些视口属性,但没有成功。无论我做什么,视口始终在初始时缩小了50%。由于最大比例为1.0,并且我能够在一开始就缩小,因此似乎初始比例属性未正确运行。如果它从一开始就设置为1.0,并且用户应该从一开始查看1-> 1像素,则他/她不应该能够缩小。但是由于他/她正在这样做,这意味着初始比例未设置或存在错误。有什么想法吗? - user1027444
我并不是指你使用缩放属性,而是浏览器,这就是为什么我要求客户端CSS(而不是用户或作者CSS)。因此,如果您可以在该平台上显示页面的初始CSS规则,那就很好了解。目前手头没有安卓设备,如果您知道我可以在Windows电脑上运行的官方安卓模拟器,请给我一个链接,我可以看一下。 - hakre
得出结论,你关于像素比例的规模是正确的。我的解决方法是将每个宽度设置为百分比而不是像素。这样它可以自动调整大小,无论什么情况。需要注意的一点是我删除了比例尺。原因是它似乎会在某些设备上破坏布局。感谢您的帮助,已更新问题并得出结论。 - user1027444

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接