想象一下以下设置:
<meta name="viewport" content="user-scalable=yes, width=640" />
默认 CSS:
body { width: 100%; }
某些元素上的CSS更改(我们称之为button-X
)单击:
body {
margin: 0 0 0 -webkit-calc(100% - 100px);
min-width: 640px;
overflow-x: hidden;
}
这在桌面浏览器中有什么作用?
它几乎将整个身体向右移动100%。不显示水平滚动条。您只能看到位于屏幕最右侧的body
的左侧部分(100px)。
这在iPhone 4S iOS 6.0.1中有什么作用?
实际上有两种行为:
- 不正确:如果您只是运行 Safari 并单击
button-X
它将开始以 1200 像素而不是 640 像素显示您的网站。移位body
将使整个viewport
有 630px 的空白空间 + 正文宽度 = ~1200px。即使body
有position: absolute;
或position: fixed;
理论上应该允许在视口之外定位元素,但事实并非如此。iOS 使视口变得如此之大,以至于您应该不在屏幕上的元素都在屏幕上。 - 正确:我不会问这个问题,因为也许这就是它的工作原理并且无法更改,但是可以解决此问题,因此我认为这是iOS的错误。如果我运行 Safari 并用两根手指点击它并将它们一起移动(例如缩小),然后单击
button-X
它就可以完美运行。这种用两根手指点击的动作不会改变视口的任何内容。由于视口设置为 640px,因此在释放手指后它将保持 640px,因此文学上没有任何变化......但是在这个简单的动作之后,它开始工作得很好。
问题是 - 如何以编程方式执行此操作 (2)?我试过:
jQuery(window).trigger('resize');
-webkit-transform-origin: 0px 0px; -webkit-transform: scale3d(1,1,1); zoom: 1;
- 如何在 iPhone 上的方向更改上重置网络应用程序的比例/缩放比例?
- 有趣:即使您设置了视口,它也会使视口~1200px
user-scalable: no
这并没有改变任何事情。基本上,我希望绝对定位的元素(或带有overflow: hidden;
)像在桌面浏览器中一样离开视口。
你试过initial-scale=1, maximum-scale=1, user-scalable=no
吗?另外,我认为您正在尝试向后修复它。你到底想做什么?不是视口或 DOM 元素的行为,而是结果网站/网络应用程序。
无论如何 - 一般来说,视口是body
.使body
比视口更宽并期望body
自行剪辑是很奇怪的。尝试将body
设置为固定width
(不是最小值,因为这样它可以根据需要变宽),并将div
容器放在body
内,并将margin
CSS 更改应用于div
,而不是body
-body
应该设置width
并overflow-x:hidden
。