移动端输入框获取焦点时,唤醒手机键盘挡住输入框以及ios系统键盘回滚

4 篇文章 0 订阅
3 篇文章 0 订阅
移动端输入框获取焦点时,唤醒手机键盘挡住输入框以及ios系统键盘回滚,造成用户体验不好
  • 先附上问题图片 , 后面附上代码以及代码图片
  • 使用 scrollIntoView 等都不生效…
  • 在开发中 , 经常会碰到一些问题, 找过一些资源 , 都没有得到解决,干脆自己想想原因动手写 ;
  • 大佬勿喷 , 谢谢指点 . 分享互相学习 . 感谢 csdn 提供平台 ! 周末愉快 !!!
安卓端问题图片 :

在这里插入图片描述
修改后的图片:
在这里插入图片描述

ios 系统键盘回滚 :
问题图片 :

在这里插入图片描述
修改后正常显示 :
在这里插入图片描述

  • 只能提供 vue 组件方法中的解决方法代码 :
 handleScroll() {
        // 判断是否为安卓手机
        var u = navigator.userAgent
        if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) {
          // 安卓系统
          if (document.activeElement.tagName === 'INPUT' || document.activeElement.tagName === 'TEXTAREA') {
            // 获取初始化屏幕可视区高度
            var initHeight = document.documentElement.clientHeight
            window.onresize = function() {
              // 获取键盘弹出后的屏幕的可视区高度
              var currentHeight = document.documentElement.clientHeight
              if (initHeight > currentHeight) {
                // 弹出键盘的高度 = 初始化可视区高度 - 窗口发生改变后的屏幕可视区高度
                var keyboardHeight = initHeight - currentHeight
                //  赋值给所有元素外的大盒子样式; 等于弹出键盘的高度; (( 样式赋值给外面的大盒子很重要 ))
                document.getElementById('count').style.marginTop = '-' + keyboardHeight + 'px'
              } else {
                // 如果条件不成立,则说明已经失焦,样式回到正常
                document.getElementById('count').style.marginTop = '0px'
              }
            }
          }
        } else {
          // ios 系统 (失去焦点时滚动距离)
          document.addEventListener('blur', (e) => {
            document.body && (document.body.scrollTop = 0)
            let currentPosition
            currentPosition = document.documentElement.scrollTop || document.body.scrollTop
            window.scrollTo(0, currentPosition)
          }, true)
        }
      },

每个人碰到的场景不同 , 如果以上代码, 思路, 没有帮到你 , 可以把问题分享出来 , 大家相互学习 , 一起解决 !!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值