编辑: 因为这一直被评论,我们都知道我们不应该这样做。问题是我应该怎么做,而不是我应该不应该这么做。
把这个代码加入你的移动设备头部。然后用百分比设置宽度就可以了:
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
对于无法使用视口的设备,请添加以下内容:
<meta name="HandheldFriendly" content="true" />
这将阻止用户在iOS Safari中进行任何缩放操作,并且还会防止“缩放到选项卡”功能:
document.addEventListener('gesturestart', function(e) {
e.preventDefault();
// special hack to prevent zoom-to-tabs gesture in safari
document.body.style.zoom = 0.99;
});
document.addEventListener('gesturechange', function(e) {
e.preventDefault();
// special hack to prevent zoom-to-tabs gesture in safari
document.body.style.zoom = 0.99;
});
document.addEventListener('gestureend', function(e) {
e.preventDefault();
// special hack to prevent zoom-to-tabs gesture in safari
document.body.style.zoom = 0.99;
});
jsfiddle:https://jsfiddle.net/vo0aqj4y/11/
这就是我需要的全部:
<meta name="viewport" content="user-scalable=no"/>
我认为你可能需要的是CSS属性touch-action。只需添加如下CSS规则:
html, body {touch-action: none;}
您会发现它有很好的支持(https://caniuse.com/#feat=mdn-css_properties_touch-action_none),包括Safari,以及回到IE10。
对于所有认为这是一个不好的想法的人,我想说并不总是不好的。有时候需要缩小界面才能看到所有的内容,例如在iOS上输入时,它会自动缩放以将其置于屏幕中央,此后你需要缩小来关闭键盘,因为关闭键盘不能完成该任务。此外,当你花费很多时间来制作一个出色的布局和用户体验时,你不希望它被缩放影响布局。
但另一个观点也很有价值,对于视力问题的人来说尤其如此。然而,在我看来,如果你的眼睛有问题,你已经在使用系统的缩放功能,因此没有必要打扰内容。
很不幸,提供的解决方案在Safari 10+中无效,因为苹果决定忽略user-scalable=no
。此帖子有更多细节和一些JS黑科技:disable viewport zooming iOS 10+ safari?
在这里找到了可以使用user-scalable=no
的方法:
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
禁用iOS捏合缩放
window.addEventListener(
"touchmove",
function (event) {
if (event.scale !== 1) {
event.preventDefault();
event.stopImmediatePropagation();
}
},
{ passive: false }
);
在 Safari 和 Brave 中测试过 iOS 15.3。
http://msdn.microsoft.com/en-us/library/ie/hh771891(v=vs.85).aspx
:root
/html
,不是 body
。 - phk对于仍需要这个功能的人,其他答案在较新版本的iOS中都不起作用。您只需将以下CSS代码添加到Apex页面的CSS Inline
部分:
@media screen and (-webkit-min-device-pixel-ratio: 0) {
.apex-item-select:focus, .apex-item-text:focus, .apex-item-textarea:focus {
font-size: 16px;
}
.apex-item-select, .apex-item-text, .apex-item-textarea {
font-size: 16px;
}
}