移动端键盘弹起致使底部按钮上浮解决方案

问题描述:移动端页面输入框聚焦伴随着键盘弹起,底部icon浮到键盘上方,致使样式不友好javascript

解决思路:在键盘弹起时,不让本来固定在底部的icon自动浮起。监听屏幕的实时高度,控制底部按钮的显示与否,从而达到按钮固定在底部的效果。html

解决方案(本例是在vue框架下实现的解决方案代码):vue

html:java

<div class="login-content-footer" v-if="heightChange">
   <img src="../../assets/images/login-wxLogin.png" alt="" class="login-content-footer-wxLogin" @click="wxLogin" v-show="WxFlag">
   <img src="../../assets/images/personal-footer.png" class="login-content-footer-img">
</div>

data部分:ios

data () {
   return {
      heightChange: true,
      docmHeight: document.documentElement.clientHeight,  //默认屏幕高度
      showHeight: document.documentElement.clientHeight,   //实时屏幕高度
  }
}    

监听屏幕实时高度:  框架

watch:{
    showHeight() {
        if (this.docmHeight > this.showHeight) {
          this.heightChange = false;
        } else {
          this.heightChange = true;
        }
      },
}

mounted周期:this

mounted() {
      // window.onresize监听页面高度的变化
      window.onresize = () => (() => {
        this.showHeight = document.body.clientHeight;
      })();
}, 

结果:spa

Android手机键盘弹起时实时屏幕高度会改变,可是苹果手机不管是默认输入法仍是安装的其余输入法,键盘弹出的高度不会改变,可是庆幸的是大部分ios已经支持了fixed属性htm

还发现一个小的bug就是苹果手机点击输入框时偶尔会闪现一个icon,经过给父元素加入position:relative和足够的padding-bottom解决了,以后我发现能够用position:absolute定位父元素给position:relative和足够的padding-bottom能达到一样的效果^_^blog

相关文章
相关标签/搜索