移动端拉起键盘后遮挡问题

一,问题

移动端,点击input时,部分安卓手机拉起键盘后,会遮挡住input。

二,解决

// 初始化完成后,需要监听键盘的调起
function keyWorld() {
  window.addEventListener('resize', () => {
    onFocusAddr();
  });
}
// 判断是否是安卓还是ios
function isAndroid() {
  let u = navigator.userAgent;
  let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; // android终端或者uc浏览器
  return isAndroid === true;
}
// 安卓键盘遮挡输入
function onFocusAddr() {
  if (!isAndroid()) return; // 判断是否是安卓机
  nextTick(() => {
    let inputDom = myInputRef.value.$el
      ? myInputRef.value.$el
      : myInputRef.value; // 获取根节点
    let boxScrollTop =
      document.body.scrollTop || document.documentElement.scrollTop;
    let inputRectObject = inputDom.getBoundingClientRect();
    let btnRectObject = myBtnRef.value.getBoundingClientRect();
    let distanse =
      inputRectObject.top + inputDom.offsetHeight - btnRectObject.top;
    if (distanse >= 0 && distanse < 120) {
      console.log(
        '两者距离视窗顶部距离之差,大于零则被遮盖,需要上滑',
        distanse * 2
      );
      window.scrollTo({
        top: boxScrollTop + distanse * 2,
        behavior: 'smooth'
      });
    }
  }); // 键盘拉起的延迟时间
}

即在键盘拉起之后,判断input会不会被遮挡,遮挡了就控制滚动条滑动到不遮挡的位置。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值