软键盘

移动端软键盘遮挡问题

纵然是瞬间 提交于 2020-01-22 05:35:33
文章目录 scrollIntoView 介绍 1.利用 scrollIntoView 实现防遮挡 2.利用 scroll 实现防遮挡 scrollIntoView 介绍 移动端的H5页面,当输入框元素获取焦点时,会吊起软键盘,如果输入框被软键盘遮挡了,则页面会发生滚动使输入框显示在可视区。浏览器这种默认处理机制在元素设置了绝对定位或设置了 html,body{height:100%;} 时可能会失效,通常需要手动处理。 防软键盘遮挡的处理思路: IOS系统中 ,软键盘吊起时,整个 window 往上滚,window的宽高不变,不会触发window.onresize 事件。并且,软键盘始终不会遮挡输入框,所以在ios中不处理。有些版中的微信页面存在页面不回滚的bug,这个需要处理。 安卓系统中 ,软键盘吊起时,window 不滚动,window的高度减小,减少值等于软键盘的高度,会触发 window.onresize 事件。如果输入框被遮挡,可使用 scrollIntoView 方法强制在可视区显示获取焦点的输入框元素。 让当前的元素滚动到浏览器窗口的可视区域内方法。 MDN scrollIntoView() 浏览器支持度较高(推荐)。 scrollIntoViewIfNeeded() 部分浏览器支持,懒滚动模式。 scrollIntoView() Element

解决 android 软键盘弹出打乱布局的问题(js解决)

混江龙づ霸主 提交于 2020-01-22 02:14:16
问题基本描述 H5这个页面,内含一个输入框和一个 button,整个页面是全屏的(已经使用定位布局做了全面屏的适配),高度是 100vh。 当点击输入框时,手机软键盘会弹出,iphone 浏览器布局还是原来正常的,但是在 android ,则出现这样子: 可以看到,键盘弹起,页面的可视区域高度被压缩了,使整个页面布局发生了变化。 刚开始我的基本样式: /* 外层容器 */ .keyword-container { background : linear-gradient ( #ea537e, #e82e3b ) ; position : absolute ; top : 0 ; left : 0 ; right : 0 ; bottom : 0 ; overflow : hidden ; } 分析解决 既然是容器高度被压缩,所以就要给容器固定的高度,但是要考虑不同的机型屏幕高度并不一样,所以需要使用 js 动态去获取屏幕高度,然后给到容器,思路就是这样。 mounted ( ) { this . containerHeight = window . innerHeight // 获取浏览器可用区域高度 } , 绑定给最外层容器 < div class = " keyword-container " : style =" { height : containerHeight +

mui+回复弹出软键盘

拟墨画扇 提交于 2020-01-02 18:21:09
最近再做一个APP的时候,有一个评论回复的功能,在做APP的时候,直接用手指触发focus事件,来唤醒软键盘的弹出没有问题, 但是现在的功能需要对点击回复进行弹出软键盘来操作,参考过很多都有问题,后来仔细看了下官方的DEMO,发下这个问题是可以被解决掉的。具体方法如下: <style type="text/css"> .show-input-main{width: 100%; height:40px; border: 1px solid red; position: fixed; left:0px; bottom:0px; z-index: 20;} .show-input-box{width: 100%; height:40px; padding-right:55px;} .input-box{width: 100%; height:100%; background:yellow;} .input-box-btn{width: 55px; height: 100%; background: #007aff; position: absolute; top:0px; right:0px; text-align:center; line-height: 40px; color:#fff; font-size:16px;} #textarea-input{width: 100%;

AndroidManifest.xml

戏子无情 提交于 2020-01-01 02:48:12
AndroidManifest.xml配置文件的根元素,必须包含一个元素且指定xlmns:android和package属性 xlmns:android指定了Android的命名空间 package是标准的包名,为了避免命名空间的冲突,一般会以应用的域名来作为包名 android:versionCode:是给设备程序识别版本用的,必须是一个整数值,代表App更新过多少次 android:versionName则是给用户查看版本用的,需要具备一定的可读性比如“1.0” android:installLocation是安装参数,instllLocation有三个值可以选择: internalOnly(必须安装到内部才能运行), auto(系统将会根据存储空间自己去适应), perferExternal(系统会优先考虑将APK安装到SD卡上。当然最终用户可以选择为内部ROM,若SD存储已满,也会安装到内部存储上)。 注:需要进行后台类监控的APP最好安装在内部,而一些较大的游戏APP最好安装在SD上 为了保证Android应用的安全性,应用框架指定了比较严格的权限系统,一个应用必须声明了正确的权限才可以使用相应的功能 android:icon这个是整个APP的图标,图片一般放在drawable文件夹下 android:allowbackup是否将程序加入到系统的备份和恢复架构中

h5页面 在安卓手机端软键盘弹出会顶起页面布局的解决方法

匆匆过客 提交于 2019-12-26 16:28:23
调出软键盘时,页面底部被顶起导致页面混乱; 解决: <script type="text/javascript"> window.onload = function () { var pageHeight= $(document).height(); $(window).resize(function () { //ios软键盘弹出不会触发resize事件 if ($(document).height() < pageHeight) { $(".footerContainer").css("position", "static"); } else { $(".footerContainer").css("position", "fixed"); //adsolute或fixed,看你布局 } }); } </script> 来源: CSDN 作者: ℡鞋子~特大号 链接: https://blog.csdn.net/weixin_43599212/article/details/103715406

软键盘无法把内容顶出屏幕外

那年仲夏 提交于 2019-12-16 12:36:07
转载请标明出处,维权必究: https://www.cnblogs.com/tangZH/p/12037179.html 继上次这一篇后: https://www.cnblogs.com/tangZH/p/12013685.html 我继续探讨,这次的场景和上一次的场景是一样的,在一个布局中,根布局是相对布局,需要被软键盘顶上去的部分为线性布局。线性布局最下方为一个Editext,后来发现,当线性布局的内容过多的时候,线性布局没法被顶出屏幕外,到达顶端就停止了,导致下方的EdiText被软键盘遮挡住。 我在根布局最外层套上一个ScrollView,这样一来发现下方的Editext还是会被遮挡住,但是不同的是,这时候你可以去手动将整个布局往上滑动,可我们需要的是顶上去之后自动露出来全部,而不是靠用户手动去滑,于是乎我想到了下面这种方法: scrollView = findViewById(R.id.scroll); view.getViewTreeObserver().addOnGlobalLayoutListener( () -> scrollView.fullScroll(ScrollView.FOCUS_DOWN)); 监听view布局发现变化(也就是软键盘出现或者消失的时候)的时候就将scrollView滑动到最底下,这样就能够使得需要显示的内容不被软键盘遮挡。 来源:

小程序填坑——bindconfirm事件

泪湿孤枕 提交于 2019-12-11 13:49:55
一.介绍     当你要在手机软键盘中触发一些方法,就可以使用input标签的bindconfirm事件.这个事件的作用是当你在软键盘上点击确认的时候,将触发你指定的方法 .   还可以使用 confirm-type指定软键盘上确认按钮的名称.比如你用这个来做搜索框,那么你就可以指定为confirm-type=“search”.具体代码为 <input type="text" placeholder="搜索" value="{{search_value}}" bindinput="inputTyping" bindconfirm="onSearch" confirm-type="search"/>   但是我在做文章内部搜索的时候,需要为内容增加高亮标签,然后调用onLoad重复渲染.   但是做完后发现,在内部搜索点击确认之后,只闪烁一下高亮内容,就没了.   我debug发现.当点击搜索之后,居然渲染了两边.也就是调用了两次onLoad方法.而第二次没有添加高亮标签,也就没有高亮内容了. 二.解决办法    经过求证,这是一个一直没有解决的遗留bug.看开发者平台上,去年就有人提出这个问题了.   原来在调用bindconfirm事件时,不用把它包裹在一些特殊的标签中.   比如我就在页面上做了一个浮动的搜索框,使用的是 movable-area 标签       来源:

h5 键盘遮住输入框

被刻印的时光 ゝ 提交于 2019-12-10 13:49:50
var index = 0; if (isIOS()) { document.body.addEventListener('focusin', (e) => { //软键盘弹出的事件处理 index = index + 1; }); document.body.addEventListener('focusout', (e) => { //软键盘收起的事件处理 window.setTimeout(() => { index = index + 1; if (index%2 === 0) { $(".header-left")[0].scrollIntoViewIfNeeded(); } }, 100); }); } else { var originalHeight=document.documentElement.clientHeight ||document.body.clientHeight; window.οnresize=function(){ //键盘弹起与隐藏都会引起窗口的高度发生变化 var resizeHeight=document.documentElement.clientHeight || document.body.clientHeight; if(resizeHeight-0<originalHeight-0){ window.setTimeout(()

微信浏览器H5开发常见的坑

巧了我就是萌 提交于 2019-12-10 10:46:51
ios端兼容input光标高度 问题详情描述: input输入框光标,在安卓手机上显示没有问题,但是在苹果手机上 当点击输入的时候,光标的高度和父盒子的高度一样。例如下图,左图是正常所期待的输入框光标,右边是ios的input光标。 出现原因分析: 通常我们习惯用height属性设置行间的高度和line-height属性设置行间的距离(行高),当点击输入的时候,光标的高度就自动和父盒子的高度一样了。(谷歌浏览器的设计原则,还有一种可能就是当没有内容的时候光标的高度等于input的line-height的值,当有内容时,光标从input的顶端到文字的底部 解决办法: 高度height和行高line-height内容用padding撑开 .content { float: left; box-sizing: border-box; height: 88px; width: calc(100% - 240px); .content-input { display: block; box-sizing: border-box; width: 100%; color: #333333; font-size: 28px; //line-height: 88px; padding-top: 20px; padding-bottom: 20px; } } ios端上下滑动时卡顿、页面缺失