【问题标题】:Disable auto zoom/field zoom on input tags on my Mobile Site - WITHOUT disabling all zoom capabilities在我的移动站点上禁用输入标签的自动缩放/字段缩放 - 不禁用所有缩放功能
【发布时间】:2011-07-03 23:23:44
【问题描述】:

我整天都在寻找解决方案,而且这个网站不断出现,所以为什么不问问你们。

我正在构建我们公司的移动网站,我们希望禁用自动缩放移动设备用于在关注时放大文本/搜索/电子邮件输入。 我正在用 HTML5 构建网站,并且已经看到/测试了 <meta name="viewport" content="width=device-width, user-scalable=no" /> 解决方案。具有各种属性(即 minimum-scale=#, maximum-scale=#" ) 这适用于我正在测试的几乎所有移动设备。只有一个问题。我希望用户能够在闲暇时放大/缩小。 (我们有一些更高分辨率的产品照片,可以近距离观看)

如何在单击输入标签时禁用放大,同时保留完全的手动用户缩放控制?

p.s 该网站也使用 jQuery。因此,任何使用它的想法都可能有所帮助。

谢谢你 杰拉克

【问题讨论】:

    标签: jquery html input zooming


    【解决方案1】:

    一个非常简单的技巧是设置:

    input, textarea {font-size:16px;}
    

    【讨论】:

    • 这是做什么的?
    • @evolutionxbox 它将所选元素的字体设置为 iPhone 的默认字体,并停止输入字段以缩放以适应屏幕。
    【解决方案2】:

    我花了一段时间才找到它,但这是我找到的最好的代码......http://nerd.vasilis.nl/prevent-ios-from-zooming-onfocus/

    var $viewportMeta = $('meta[name="viewport"]');
    $('input, select, textarea').bind('focus blur', function(event) {
    $viewportMeta.attr('content', 'width=device-width,initial-scale=1,maximum-scale=' +        (event.type == 'blur' ? 10 : 1));
    });
    

    【讨论】:

      【解决方案3】:

      它可能不完全适合您的样式,但如果您将输入元素的 font-size 设置为 16px 或以上,onfocus 缩放将停止。

      【讨论】:

      • 这太棒了。谢谢!
      【解决方案4】:

      像这样在<head> 中设置元标记对我有用:

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

      【讨论】:

      • 用户可以强制放大移动 chrome 选项,在这种情况下这不会做任何事情..
      • 这确实解决了文本输入聚焦时的自动缩放问题,但不允许放大图片。整个网站无法缩放。
      • 这会破坏设备的缩放能力
      【解决方案5】:

      如果您将 webkit 转换设置为 1(或 1.0)以外的任何值 然后在 iPhone 上禁用选择输入标签时的自动缩放。

      document.body.style.webkitTransformOrigin= "0% 0%";
      document.body.style.webkitTransform = "scale(1.1)";
      

      我还没有测试过其他移动浏览器。

      【讨论】:

        【解决方案6】:

        见:Disable Auto Zoom in Input "Text" tag - Safari on iPhone

        我找不到干净的方法,但这里有一个 hack...

        1) 我注意到 mouseover 事件发生在缩放之前,但缩放发生在 mousedown 或 focus 事件之前。

        2) 您可以使用 javascript 动态更改 META 视口标记(请参阅Enable/disable zoom on iPhone safari with Javascript?)

        所以,试试这个(在 jquery 中显示的紧凑性):

        $("input[type=text], textarea").mouseover(zoomDisable).mousedown(zoomEnable);
        function zoomDisable(){
          $('head meta[name=viewport]').remove();
          $('head').prepend('<meta name="viewport" content="user-scalable=0" />');
        }
        function zoomEnable(){
          $('head meta[name=viewport]').remove();
          $('head').prepend('<meta name="viewport" content="user-scalable=1" />');
        }
        

        这绝对是一个 hack……在某些情况下,鼠标悬停/向下并不总是捕捉到条目/退出,但它在我的测试中运行良好,并且是一个可靠的开始。

        【讨论】:

        • 恐怕不能在 Android 上运行。此外,如果用户通过键盘上的“下一步”按钮选择表单中的下一个输入,即使在 iOS 上也不会使用鼠标悬停来捕捉输入的焦点吗? (我假设 iOS 有这个功能?)
        猜你喜欢
        • 1970-01-01
        • 2014-08-10
        • 2020-09-09
        • 1970-01-01
        • 2017-09-27
        • 1970-01-01
        • 2013-05-26
        • 2022-01-05
        • 1970-01-01
        相关资源
        最近更新 更多