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

该博客主要介绍了在移动端开发中,针对部分安卓设备键盘弹出后遮挡input输入框的问题,提供了一种解决方案。通过监听窗口resize事件,在键盘升起时判断input位置是否被遮挡,并通过滚动条调整确保input可见。涉及到的技术点包括事件监听、设备判断和页面滚动控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,问题

移动端,点击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会不会被遮挡,遮挡了就控制滚动条滑动到不遮挡的位置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值