移动端H5 input输入完成后页面底部留白问题

Posted xulessreigns

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了移动端H5 input输入完成后页面底部留白问题相关的知识,希望对你有一定的参考价值。

背景: H5页面在微信上展示,不管是在弹窗上的或者页面在偏底部位置的input输入完成之后点击键盘的完成,页面底部留出一片空白的问题

技术图片

出现原因分析
  当键盘抬起时,window.scrollY会从0变到键盘的高度,所以解决办法就是当input失去焦点的时候,将window.scrollY重新设置为点击之前的页面的高度(一般window.scrollTo(0,1000000)是可以解决大多数情况)

解决方案1:
  核心代码:

  let currentY = 0;

  focus()

    currentY = document.body.scrollTop

    // 下面写你的业务代码

  

 

  onBlur()

    window.scrollTo(0,currentY) 

    // 下面写你的业务代码

  

解决方案2:

  核心代码:

    handleFocus(event)
      let e = event.currentTarget;
      setTimeout(() =>
        e.scrollIntoView(
          block: ‘start‘,
          behavior: ‘smooth‘
        );
      , 300);
    
    handleblur()
      let e = event.currentTarget;
        setTimeout(() =>
          e.scrollIntoView(
            block: ‘end‘,
            behavior: ‘smooth‘
          );
        , 300);
      window.scrollTo(0, 0);
    

 

 解决键盘弹出后挡表单的问题

方法1:

$inputclears指input元素,$btnbox指包裹input的div

$inputclears.on(‘focus‘, function()
  $btnbox.css(‘position‘, ‘static‘)
).on(‘blur‘, function(e)
  $btnbox.css(‘position‘, ‘fixed‘)
)

方法2:
window.addEventListener(‘resize‘, function()
  if (document.activeElement.tagName === ‘INPUT‘  || document.activeElement.tagName === ‘TEXTAREA‘)
    window.setTimeout(function()
      if(‘scrollIntoView‘ in document.activeElement)
        document.activeElement.scrollIntoView();
       else
        document.activeElement.scrollIntoViewIfNeeded();
      
    , 0);
  
);


--------------------------------------
本文为博主原创文章,转载请附上博文链接!

以上是关于移动端H5 input输入完成后页面底部留白问题的主要内容,如果未能解决你的问题,请参考以下文章

h5 解决ios端输入框失去焦点后页面不回弹或者底部留白问题

解决微信H5页面软键盘弹起后页面下方留白的问题(iOS端)

移动端H5页面_input获取焦点时,虚拟键盘挡住input输入框解决方法

移动h5开发中遇到的问题

移动端中 H5输入框在弹起键盘后被遮挡

IOS微信点击input弹出输入法,关闭后页面留白解决方案