如何“禁用”移动网页的缩放?

html CSS

西门

2020-03-23

我正在创建一个移动网页,基本上是一个大型表单,带有多个文本输入。

但是(至少在我的Android手机上),每次我单击某些输入时,整个页面都会在此处放大,从而遮盖了页面的其余部分。是否有一些HTML或CSS命令来禁用这种缩放网页?

第2803篇《如何“禁用”移动网页的缩放?》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

7个回答
Stafan猿 2020.03.23

您只需在“ head”中添加以下“ meta”元素即可完成任务:

<meta name="viewport" content="user-scalable=no">

添加所有属性,例如“宽度”,“初始比例”,“最大宽度”,“最大比例”可能不起作用。因此,只需添加以上元素。

番长樱梅 2020.03.23

似乎仅将meta标签添加到index.html并不会阻止页面缩放。添加以下样式将起到神奇作用。

:root {
  touch-action: pan-x pan-y;
  height: 100% 
}

编辑:演示:https : //no-mobile-zoom.stackblitz.io

凯西里 2020.03.23

您可以使用:

<head>
  <meta name="viewport" content="target-densitydpi=device-dpi, initial-scale=1.0, user-scalable=no" />
  ...
</head>

但是请注意,使用Android 4.4时不再支持target-densitydpi属性因此,对于Android 4.4及更高版本,建议以下操作为最佳做法:

<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
古一 2020.03.23

这里有许多方法-尽管位置通常是为了可访问性而缩放时不应该限制用户,但是可能会发生一些需要的地方:

以设备的宽度渲染页面,不缩放:

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

防止缩放-并阻止用户缩放:

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

删除所有缩放,所有缩放

<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />
泡芙 2020.03.23

请尝试添加此元标记和样式

<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport"/>


<style>
body{
        touch-action: manipulation;
    }
</style>
蛋蛋 2020.03.23

由于仍然没有解决最初问题的方法,因此这是我的纯CSS两分钱。

移动浏览器(大多数)要求输入中的字体大小为16px。所以

input[type="text"],
input[type="number"],
input[type="email"],
input[type="tel"],
input[type="password"] {
  font-size: 16px;
}

解决了这个问题。因此,您无需禁用站点的缩放和宽松的辅助功能。

如果您的基本字体大小不是16px或在手机上不是16px,则可以使用媒体查询。

@media screen and (max-width: 767px) {
  input[type="text"],
  input[type="number"],
  input[type="email"],
  input[type="tel"],
  input[type="password"] {
    font-size: 16px;
  }
}

蛋蛋猿 2020.03.23

对于参加晚会的人来说,kgutteridge的答案对我不起作用,Benny Neugebauer的答案包括target-densitydpi(已弃用功能)。

但是,这确实对我有用:

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android