移动端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);
  }
});

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

原文地址:https://www.cnblogs.com/xuLessReigns/p/11227137.html

时间: 2024-10-09 13:14:42

移动端H5 input输入完成后页面底部留白问题的相关文章

input(移动端iOS)输入内容时调用软件盘后页面底部留白问题

iOS/input输入框调用软键盘底部留白 只需input输入框失去焦点时,让页面自动下移即可恢复 <input placeholder="请输入用户名" v-model="form.account" @blur.native.capture="blurchange"></input> blurchange () { let currentPosition = '' let timer = '' let speed = 1

在input中回车后页面提交导致出现HTTP 错误 405.0 - Method Not Allowed

前些时间在做一个搜索功能时发现一个比较有意思的现象,场景是这样的:在一个模态窗口中是一个订单列表,页面的顶部有若干个状态筛选框和一个搜索关键字输入框,当焦点在关键字输入框时按回车,本来是对input的keyup事件做了监听,当发现是按了回车键时便自动提交搜索请求的,但输入关键字后按回车时页面竟然跳转了,并且出现"HTTP 错误 405.0 - Method Not Allowed无法显示您正在查找的页面,因为使用了无效方法(HTTP 谓词)"的错误,非常纳闷. 按照错误信息及现象(页面

css相关,鼠标点击&lt;input&gt;输入域后出现有颜色的边框

css相关,鼠标点击<input>输入域后出现有颜色的边框,如果使用css,将这个鼠标点击输入域后产生的边框去掉呢?下面是截图 鼠标未点击前: 鼠标点击后: 根据大家的办法实现不了的,即使可以改变颜色,但是那条有颜色的线还是无法消除.下面是我的html和css代码: html: <input type="text" name="content" id="input_box"> css: #input_box{ border

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

前言:微信H5项目,ios端出现了软键盘输完隐藏后页面不会回弹,下方会有一大块留白 最近微信和ios都有版本升级,不知道是哪边升级造成的,但是经过测试,软键盘收起后,再滚动一下页面,下面的留白就会消失.所以只要在输入完毕后模拟一下这个"滚动"的操作,就能解决问题了. 如果是用vue写的: <input type="text" @blur="fixScroll" placeholder="请输入xxx"/> //me

移动端输入框只有输入文本后才能点击效果

现在手机端的提交按钮很多都是在输入内容后才能提交的,如图: 这是没有输入文本时的效果,当然 下一步 按钮也是不可点击的 这个是是输入文本后的效果,可以进行下一步的操作 这样做对数据提交的正确性有一定的保护,同时也增加了用户体验.其实实现这样的效果逻辑很简单.代码如下: /*如果输入内容就给提交按钮添加样式并且添加跳转链接*/ var btn = $('buttn') function judge(){ var lenght1 = $('#input1').val().length; var le

Layer For Mobile 弹窗 input输入文字后,点击取消确定按钮失效(需点击两次)

webapp中使用Layer For Mobile弹出弹窗,修改昵称输入文字后,ios手机中,如果不先点击收起键盘,两个按钮点击之后无效... 两个按钮的方法是写在这里的--> 最后只能吧点击按钮click事件单拎出来...发现还是会无效. 那就只能试下touchstart...发现可以了. 解决办法:layer按钮点击事件拎出来写,并且使用touchstart方法: 代码如下: 注意:如果click与touch事件混用,也许会造成点击穿透. 原文地址:https://www.cnblogs.c

所有input输入完成后,改变按钮颜色

$(function(){ $('input').on('input propertychange',function(){ if(($.trim($('.add1').val())!=="")&&($.trim($('.add2').val())!=="")&&($.trim($('.add3').val())!=="")&&($.trim($('.add4').val())!=="&q

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

项目中遇到了这个问题,说实话 iOS 端问题挺多的,原因找起来比较简单,就是吊起键盘的时候把window的高度挤小了,然后, 关掉键盘页面高度没恢复,安卓手机会自动恢复页面高度. 原因找到了就想解决办法,刚开始想的是 iOS 它不恢复那我也没办法,这属于 iOS 的bug啊或者微信的 bug 啊,但领导不这么想, 页面显示出问题了当然得解决,就在google里翻,也是找到解决方法了,如下链接 微信6.7.4 ios12软键盘顶起页面后隐藏不回弹解决方案 解决方法很简单,让window滚动下就可以

基于node.js 的 websocket的移动端H5直播开发

这一篇介绍一下基于node.js 的 websocket的移动端H5直播开发, 下载文章底部的源码,我是用vscode打开, 首先在第一个终端运行 npm run http-server 这个指令是运行http服务,手机端直接运行http://ip:8000/mpegts.html 即可看到推流过来的视频 新起一个终端运行 npm run ws-server,服务启动后,即可以通过ffmpeg进行推流. 推流过程如下: 推流视频文件: ffmpeg -re -i E:\2.mp4   -code