vue 手机键盘把底部按钮顶上去

背景:在写提交订单页面时候,底部按钮当我点击输入留言信息的时候,
底部提交订单按钮被输入法软键盘顶上去遮挡住了。

实现原理:当页面高度发生变化的时候改变底部button的样式,没点击前button在底部固定
position: fixed;当我点击input的时候样式变成position: static!important;

一开始的解决方案是通过input的聚焦和失焦,但是有个问题,当我点击input的时候聚焦,
再点击键盘上的隐藏按钮时就没办法恢复原来的fixed。

原来的样式主要是position: fixed;当输入法点击出现时候修改为 position: static!important;


 .payOnline {
         position: fixed;
         bottom: 0;
         left: 0;
         right: 0;
         width: 100%;
         background: #fff;
         font-size: 17px;
      }
       .nav-hide {
         position: static!important;
      }

vue绑定动态class,‘nav-hide’ ,通过hideClass来显示动态显示,
初始值设置hideClass: false,
另外设置初始屏幕高度 docmHeight,变化屏幕高度 showHeight 。


//其他代码
  <div class="payOnline" v-bind:class="{  'nav-hide': hideClass }">
        <span>合计:¥{{totalFee}}</span>
        <div class="payBtn" @click="submitOrder">提交订单</div>
   </div>
//其他代码

watch 监听showHeight,当页面高度发生变化时候,触发inputType方法,
window.onresize 事件在 vue mounted 的时候 去挂载一下它的方法,
以便页面高度发生变化时候更新showHeight


data(){
    retrun{
         // 默认屏幕高度
        docmHeight: document.documentElement.clientHeight,  //一开始的屏幕高度
        showHeight: document.documentElement.clientHeight,   //一开始的屏幕高度
        hideClass: false,
    }
},

watch:{
  showHeight: 'inputType'
}
methods: {
     // 检测屏幕高度变化
     inputType() {
        if (!this.timer) {
           this.timer = true
           let that = this
           setTimeout(() => {
              if (that.docmHeight > that.showHeight) {
              //显示class
                 this.hideClass = true;
              } else if (that.docmHeight <= that.showHeight) {
               //显示隐藏
                 this.hideClass = false;
              }
              that.timer = false;
           }, 20)
        }
     },
},
 mounted() {
         // window.onresize监听页面高度的变化
         window.onresize = () => {
            return (() => {
               window.screenHeight = document.body.clientHeight;
               this.showHeight = window.screenHeight;
            })()
         }
      }

方法二

另外还有一种解决方案就是不要将按钮固定到底部,简单粗暴适合对ui要求不高的前端页面,例如原来我的保存地址按钮是固定在底部的,出现上面的问题后我把样式修改了一下,取消fixed定位,加了margin,也解决了这个问题;


<div data-v-46aeadee="" class="save-address">保存并使用</div>

.address-from  {
    bottom: .2rem;
    width: 70%;
    text-align: center;
    padding: 10px 0;
    background: #f23030;
    font-size: 16px;
    color: #fff;
    margin: 1.5rem;
    border-radius: 2px;
}

如果大家有更好的方法希望能够交流学习

原文地址:https://segmentfault.com/a/1190000014228563

原文地址:https://www.cnblogs.com/lalalagq/p/9919432.html

时间: 2024-07-28 23:25:31

vue 手机键盘把底部按钮顶上去的相关文章

flex布局,input点击软键盘激活,底部按钮上移

安卓手机的问题,原本表单没有超出一屏的时候,上移的现象也是存才的,只是需要滑动body才能看得到,现在,超出一屏了,现象就很明显了 body明显上移: 点击input修改价格: 软键盘出现: 先尝试了这样的方法: http://blog.csdn.net/u010394015/article/details/72781377 给底部按钮position:relative 中间内容,其中是有滚动条,flex布局,container{height:100%;} 衍生: 点击input被键盘挡住 测试

----uni-app之解决底部按钮绝对定位后被软键盘推起的bug----

移动端h5页面经常会遇到软键盘顶起底部fixed定位元素,体验不好.记录下uni-app下同样的问题是如何解决的. 解决思路:获取窗口尺寸,监听窗口尺寸变化,比较变化后窗口的尺寸和实际窗口尺寸的大小做相应处理.直接上代码:<!--html--><input  type="text" @click="hideTabbar" @focus="hideTabbar" @blur="showTabbar" place

登录界面,body上有背景图,点击输入框时,弹出的手机键盘会把背景图顶变形,而且会把footer顶上去

js: //防止背景图被手机键盘压缩变形 $(document).ready(function () { $('body').css({'height':$(window).height()}) }); //当点击input出现手机键盘时,窗口大小改变,隐藏footer以防止footer被手机键盘顶上来 $(function(){ var oHeight = $(window).height(); //浏览器当前的高度 $(window).resize(function(){ //当浏览器窗口的

关于使用微信浏览网页打开键盘会把网页顶上去,是弹窗无法相应的问题解决

微信IOS 6.7.4 键盘弹起页面上滑,键盘收起页面不会回到原位置,导致弹框(css设置position为fixed会有问题,absolute不会有问题)后按钮响应区域错位. 微信打开网页,<input /> <textarea/>获取焦点或者<select></select>标签获取焦点弹起键盘时页面被顶起,点击确定页面没有回到原先的位置,导致视图和触控区域错位 解决方案一: 在点击按钮那里加下面其中一个即可解决: //滚动到顶部 window.scro

移动端输入框被手机键盘挡住

在没有定位的情况下,解决输入框被手机键盘挡住时,可以参考: var loaclHeight = $("section").height();//获取可视宽度 $("input,textarea").focus(function() { var keyboardHeight = localHeight - $("section").height();//获取键盘的高度 var keyboardY = localHeight - keyboardHe

ios 键盘追加完成按钮

//键盘追加完成按钮 UIToolbar * topView = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 30)]; [topView setBarStyle:UIBarStyleDefault]; UIBarButtonItem * btnSpace = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace

九度oj 题目1079:手机键盘

题目描述: 按照手机键盘输入字母的方式,计算所花费的时间 如:a,b,c都在“1”键上,输入a只需要按一次,输入c需要连续按三次. 如果连续两个字符不在同一个按键上,则可直接按,如:ad需要按两下,kz需要按6下 如果连续两字符在同一个按键上,则两个按键之间需要等一段时间,如ac,在按了a之后,需要等一会儿才能按c. 现在假设每按一次需要花费一个时间段,等待时间需要花费两个时间段. 现在给出一串字符,需要计算出它所需要花费的时间. 输入: 一个长度不大于100的字符串,其中只有手机按键上有的小写

iOS开发&gt;学无止境 - UITablView上下滑动控制底部按钮的出现和消失

今天我们一起来做一个好玩的功能,通过UITablView上下滑动控制底部按钮的出现和消失.先来看看效果: 需求分析 要做一个这样的功能,对你来说应该不难,实现的方式也有很多.我们来分析一下要实现那几个小功能点: UITablView向上滑动,底部按钮消失 UITablView向下滑动,底部按钮出现 UITablView滑动到底部,底部按钮出现 主要就是这三个小功能点.那么很简单,我们只需要判断UITablView是往上滑动,还是往下滑动,以及判断UITablView是否滑动到底部即可. 代码实现

如何解决安卓手机键盘弹出将页面压缩

很多时候项目中我们需要用到输入框input,input聚焦时会调用手机键盘,这个时候我们如果当前页面最大元素宽高写的是实际像素,那是没有问题的,但是如果写的是百分百在安卓机上当前页面就会被向上压缩,但是移动端我们必须做成自适应,我们宽高不能写固定宽高的,那么该如何解决,首先我们可以获取当前手机设备的宽高,然后再给当前页面写宽高,同时加上position:fixed: <style> .page{ position:fixed; left:0; top:0; } </style> v