关于点击input框唤醒键盘导致input被遮盖的问题

这个问题相信大家在实际开发过程当中都有遇见,我自己也遇见过很多次。之前在百度上看见大多数的方法利用的都是键盘唤醒了之后,页面的实际高度会发生变化。利用这个特点对页面进行一些变动,进而让页面滚动到input框露出。

但是在实际开发过程当中,我在MDN上发现了一个很好用的方法—— Element.scrollIntoView() ,这个方法就是让当前元素滚动到浏览器窗口的可视区域内部。这个应用场景非常符合我们这个目标需求。

下面来说一下这个方法的应用场景

  • 大家可能都知道在iOS端,点击输入框,我们不需要对这个聚集失焦事件进行监听,他仍然可以在聚集的时候将内容顶上去,失焦的时候在把内容降下来。这是iOS的设计原理,iOS方面,我只知道他是视图优先的设计模式,大概含义就是cpu会把资源全都给正处在视图上东西,但是唤醒时候内容被顶起的原理我不是特别了解。(具体是什么原理,我不是特别清楚,如果有对iOS特别了解的小伙伴可以评论给我,我其实挺好奇这一块内容的)
  • 但是在安卓端有一些手机他们并不像iOS一样会自动将内容顶起和恢复,我们就需要自己添加聚焦和失焦事件,去手动的控制

解决的方法:Element.scrollIntoView()

这是一个实验中的功能

此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。

参数

参数 属性值 描述
相当于 element.scrollIntoView(true)
布尔值 true 的话是元素的顶端将和其所在滚动区的可视区域的顶端对齐
false 和底部对齐,对齐的情况还得看你的文档流
对象 { behavior: 过渡效果 auto(默认值,没有过渡效果)smooth(有过渡效果 ),
block:垂直方向的对齐 start" (默认值), "center", "end", 或 "nearest ,
inline:水平方向的对齐 start", "center", "end", 或 "nearest(默认值)}
<div>
<div>
这上面呢 一般就是你自己的代码结构。
</div>
<div id='example__div'>
<input id='example__input' type="text" /> 这个输入框呢就可以理解成你的表单控件
</div>
</div> 我们模拟的场景就是 input框的位置 是在一屏页面的中部或者下部,当我们点击输入框的时候键盘会唤醒,而我们的布局结构不回改变,结果导致输入框被遮遮挡。 这个时候我们就可以给input框添加聚焦事件
如果是原生js的话 就是添加一个focus事件 用jQuery也可以。
<script>
let node = document.getElementById('example__div')
//聚焦事件
document.getElementById('example__input').onfocus = funtion(){
//一般情况下我会选择将包裹input的父元素进行位置的变化
node.scrollIntoView({
block: "start",
behavior: "smooth"
})
}
//失焦事件
document.getElementById('example__input').onblur = funtion(){
//一般情况下我会选择将包裹input的父元素进行位置的变化
node.scrollIntoView({
block: "end",
behavior: "smooth"
})
} </script>

关于点击input框唤醒键盘导致input被遮盖的问题的更多相关文章

  1. 手机端上点击input框软键盘出现时把input框不被覆盖,显示在屏幕中间(转)

    转载地址:https://www.cnblogs.com/xzzzys/p/7526761.html 1  用定位为题来解决var oHeight = $(document).height(); // ...

  2. js-移动端android浏览器中input框被软键盘遮住的问题解决方案

    我遇到的问题:在一个页面里有一个弹出层之前我给我的最外层加了固定定位 用了下面的方法也不好使:没有办法我将之改为绝对定位层级变高在加上一个顶部标签通过js计算顶部高度来实现满屏遮挡: <sect ...

  3. 小程序中点击input控件键盘弹出时placeholder文字上移

    最近做的一个小程序项目中,出现了点击input控件键盘弹出时placeholder文字上移,刚开始以为是软键盘弹出布局上移问题是传说中典型的fixed 软键盘顶起问题,因此采纳了网上搜到的" ...

  4. jquery点击复选框触发事件给input赋值

    体验效果:http://keleyi.com/keleyi/phtml/jqtexiao/31.htm 代码如下: <!DOCTYPE html> <html xmlns=" ...

  5. input固定定位后,当input框获取到焦点时,会离开手机软键盘的解决方法

    前些天做页面时候遇到这样一个问题,将input框用position:fixed固定定位在最底部的时候,当Input获取焦点的时候,input框离开了手机软键盘,而不是吸附在软键盘上,效果如下图: 找了 ...

  6. 点击按钮文字变成input框,点击保存变成文字

    <!DOCTYPE html><html lang="en"> <head> <meta http-equiv="Content ...

  7. 点击Input框弹出日期选项

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. 吐血bug-- 多个input框接连blur事件导致alert接连弹出

    本来今天想记录一下Flow在vue源码中的应用,结果临时触发了个bug... bug描述: elementUi + Vue 技术 需求:一个表格中有至少两条数据,每条数据都有input框,在失去焦点后 ...

  9. css中input框不可点击+首行缩进

    Css 1)text-indent::首行缩进 2)disabled="true"设置input框不可以点击 3)Css:xx!important:声明提前优先级最高..!impo ...

随机推荐

  1. <OPTEE>Trusted Application结构分析

    最近又开始和Trusted Zone打起了交道,需要把Linaro开发的开源安全系统optee os移植到实验室的老板子上.不过导师要求我先开发一个应用,在普通环境和安全环境分别有一个程序,称为hos ...

  2. pycharm安装破解方法

    1.pycharm专业版官方下载链接:http://www.jetbrains.com/pycharm/download/#section=windows正常下载并安装 2.从https://gith ...

  3. CentOS Linux release 7.7.1908 (Core)--rabbitmq用户创建以及相关防火墙端口开启问题

    增加访问用户,默认用户guest只能本地访问. #添加用户 rabbitmqctl add_user 账号 密码 rabbitmqctl add_user admin admin #分配用户标签(ad ...

  4. 将反向传播讲解的深入透彻的神一样的文章(numpy实现人工神经网络)

    为了完成机器学习课的项目,规定不许调tensorflow,pytorch这些包.可是要手工实现一个可训练的神经网络是非常困难的一件事,难点无他,就在于反向传播的实现.这不,我在网上发现了这篇文章.怎么 ...

  5. cb19a_c++_只适合string类型的操作_提取_追加_替换

    *cb19a_c++_只适合string类型的操作_提取_追加_替换三个substr重载函数-获取一个字符串的一部分六个append重载函数-追加字符十个replace重载函数-替换更换 重载函数越多 ...

  6. Python学习日志-02

    (2)Python如何运行程序 Python解释器简介: Python不仅仅是一门编程语言,它也是一个名为解释器的软件包.解释器是一种让其他程序运行起来的程序.当你编写了一段Python程序,Pyth ...

  7. Andrew Ng - 深度学习工程师 - Part 2. 改善深层神经网络:超参数调试、正则化以及优化(Week 2. 优化算法)

    ===========第2周 优化算法================ ===2.1 Mini-batch 梯度下降=== epoch: 完整地遍历了一遍整个训练集 ===2.2 理解Mini-bat ...

  8. Python多核编程mpi4py实践及并行计算-环境搭建篇

    1.安装python,这个没什好说的,直接装就行 2.做并行计算.数据挖掘,机器学习等一般都要用的numpy,这个在Windows版本上安装有点问题,安装比较麻烦,建议在linux上搭建环境 3.安装 ...

  9. 【原创】Linux中断子系统(四)-Workqueue

    背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...

  10. linux中神奇的命令alias

    在linux中大家应该都知道,有些命令和参数特别繁琐,而且还是大量输入这些命令,这个时候我们就可以使用linux中的alias命令来给这些繁琐的命令起别名,但是,alias 命令只对当前终端有效,当终 ...