首页/文章/移动端web

H5移动端-解决点击输入框时页面自动放大的问题

2024-09-03
5522 分钟
...

问题

在移动端项目,我们常遇到的一个问题:用户点击输入框时,页面会不期望地发生自动缩放,这既打断了用户的输入流程,也影响了整体的用户体验。

我们的目标是优化这一行为,确保用户在点击输入框时,页面能够保持稳定,仅允许用户专注于内容的输入,从而提升产品的可用性和满意度。

解决前后效果对比

方案

针对移动端点击输入框导致页面自动缩放的问题,我们需要根据不同操作系统(主要是安卓与iOS)采取差异化的解决方案。

安卓:通常可以通过在HTML文档头部设置viewportmeta标签,并明确指定minimum-scalemaximum-scaleuser-scalable属性的值来有效防止页面缩放。这种方法能够确保用户输入时,页面保持稳定的视图比例。

iOS:仅仅依靠设置meta标签的某些值往往不足以解决问题。iOS的Safari浏览器有其独特的页面缩放行为,尤其是在处理输入框时。

为了解决这个问题,我们可以采用JavaScript编写一个封装函数,该函数在页面加载完成后自动执行。该函数的核心逻辑可以是通过监听输入框的聚焦(focus)和失焦(blur)事件,动态地调整页面的缩放级别或利用CSS样式来阻止不必要的缩放行为,从而实现在iOS环境下用户输入时页面保持稳定的用户体验。

安卓解决方式:

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

<meta name="viewport"


 content="width=device-width,

// 设置页面的初始缩放值,为一个数字,设置值为1.0
 initial-scale=1.0,

//允许用户的最小缩放值,为一个数字,设置值为1.0

 minimum-scale=1.0,

//允许用户的最大缩放值,为一个数字,设置值为1.0
 maximum-scale=1.0,

//是否允许用户进行缩放,值为”no”或”yes”, no 代表不允许,yes代表允许
user-scalable=no"/>

iOS解决方式:

<script>
    
    window.onload = function () {

        

        
        document.addEventListener('gesturestart', function (e) {
            e.preventDefault();
        });

        
        document.addEventListener('dblclick', function (e) {
            e.preventDefault();
        });

        
        document.addEventListener('touchstart', function (event) {
            if (event.touches.length > 1) {
                event.preventDefault();
            }
        });

        
        
        var lastTouchEnd = 0;
        document.addEventListener('touchend', function (event) {
            var now = (new Date()).getTime();
            
            if (now - lastTouchEnd <= 300) {
                event.preventDefault();
            }
            lastTouchEnd = now;
        }, false);
    };

</script>

注意

如果是web-view渲染的H5,经测试用第一种方式就行,两端都可以兼容。

如果您觉得这篇文章有帮助,请点个赞吧~

分享文章

相关文章

更多文章 →
移动端web2024-09-04
H5 实现拍照选景框效果利用
背景 在实际项目中,遇到了需要唤起手机摄像头拍照的需求,最开始是通过 的方式,可以直接唤起手机相机,但是用户拍照的方向各式各样,导致后续业务处理时,没有达到预期的效果。 基于此,产品同学期望能在用户拍照时给用户一个引导框(也就是平时我们在用第三方证件拍照时的取景框效果)。经过讨论,给出了两种解决方案,一种是通过我们自研,先尝试看一下效果,第二种是使用第三方的 SDK,仅使用他们的拍照功能。 本文档仅涉及第一种,即通过我们自研的方式,实现...
学习
移动端web2024-09-04
封装一个H5照相机组件(放大缩小、连拍、预览、手电筒,横竖屏拍摄)
项目上有个需求就是说移动端网页中的照相机要支持连拍功能。 要知道咱们一般网页中通过input标签调用出来的照相机都是拍完后需要进行点击确认操作,然后再重新点击拍照按钮调起照相机如此往复,这样的交互方式对于需要快速拍摄照片的场景来说效率确实太低了。 如果本机摄像头无法进行连拍操作的话只能通过直接调用媒体摄像头的方式看看能否实现,考虑到开源的组件UI和交互方式可能无法满足项目需要且也不太好扩展功能所以觉得自己封装一个。 使用到的技术 Nav...
学习
移动端web2024-03-12
h5调用手机摄像头踩坑
一般业务也很少接触摄像头,有也是现成的工具库扫个二维码。难得用一次,记录下踩坑。 2.1. 这个就不用多说了,缺点就是没办法自定义界面,它是调用的系统原生相机界面。 2.2. 由于我需要自定义界面,就像下面这样: 所以我选择了这个方案,这个 使用起来其实很简单: 可以看到这个效果。 如果你复制我的代码,在 上肯定能运行,但是你想在手机上试试的时候就会发现很多问题。 3.1. 需要 由于浏览器的安全设置,除了 和 连接,你都没办法获取到...
学习
移动端web2024-03-12
探秘移动端网页调用摄像头的两种方式
简介: PC 端网页调用摄像头的场景想必大家并不陌生,打开一个网址,开启摄像头开始笔试/视频聊天/直播等。而在移动端网页调用摄像头的场景你见得多吗?我想答案应该是不多吧(在下见识浅薄)。 前言小叙 PC 端网页调用摄像头 的场景想必大家并不陌生,打开一个网址,开启摄像头开始笔试/视频聊天/直播等。 而在 移动端网页调用摄像头 的场景你见得多吗?我想答案应该是不多吧(在下见识浅薄)。 H5 相较于native app 一直被诟病的就有 调...
学习
移动端web2023-12-06
PC调试手机微信浏览器
此方案,可以调试一些仅可在微信客户端才能打开的网页,以及一些需要微信授权的网页,都可以用此方式进行真机调试,可快速分析和逆向 准备工具 一部手机 一台电脑 一条数据线 首先用数据线把手机与电脑连接 然后手机进入到开发者模式并且要是开启状态,具体进入方式,根据机型不同,进入方式不同,自行百度。 进入到开发者选项之后,开启USB调试模式。 然后在手机微信浏览器随便进入一个网站,例如: 再回到电脑浏览器输入: chrome内核的浏览器输入 c...
学习
AI2026-09-01
Deep Agents 01:何为 Agent Harness,以及如何开始
1、本篇任务:完成一份多步骤、带证据的技术调研 普通客服 Agent 的问题短、工具少、输出即时。技术调研或编码任务会持续很久,产生计划、搜索结果、文件和中间结论。Deep Agents 在 LangChain/LangGraph 之上预装规划、虚拟文件系统、上下文压缩和子 Agent,适合这类开放任务。 本课让 Agent 比较两种向量数据库,并交付一份可验证报告。 2、什么时候需要 Deep Agent 满足以下两项以上再考虑:任务...
学习

评论

请登录后发表评论

去登录
加载评论中...

目录