Duke Yin's Technology database

iOS和安卓禁止网页双击放大

在开发移动网页的时候,各大浏览器为了给视力不好的人群看清网页的内容,强制设定了一条无障碍规则:

当网页上的文字小于16px的时候,强制对点击处进行放大。

并且近几年这个规则的优先级越来越高,在网页顶部写meta信息已经不管用了。

虽然初衷是好的,但有时候不太重要的信息,或者字体图标小了,也会导致点击时网页就胡乱放大,尤其是WebAPP很出戏。

以下是可能有用的措施,防止用户在点击你的网页时不断zoom:

头部meta

虽然基本可以断定在较新的iOS上,这样做无效,但是考虑较早版本的iOS或是安卓阵营,这条还是建议加上:

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">

加在所有html头部即可。

CSS阻止

同样,CSS上的设置在新的iOS上也没有效果,但适用于早期iOS和安卓等其他操作系统的浏览器。

body {
    touch-action: manipulation;
}

如果你只想控制某几个元素不被点击放大,把body改成目标元素的选择器即可。

JavaScript阻止

这是目前唯一在新版iOS Safari上还有效的方法:

let lastTouchEnd = 0;
document.addEventListener('touchend', e => {
    const now = Date.now();

    if (now - lastTouchEnd <= 300) {
        e.preventDefault();
    }

    lastTouchEnd = now;
}, { passive: false });

它只能阻止双击放大,对小于300毫秒的双击,丢掉后一次点击,以至于Safari没有把这次操作当成双击。

改你的字号

当你的网页在Safari上经常被放大,其实是在提醒你,字体小了,容易看不清,尝试修改你的css,把小于16px的字设置为至少16px,一切就会好起来。

# # # #

发布评论

评论

标注 * 的为必填项。