苹果手机iOS11中fixed弹出框中input光标错位问题
最近遇到了一个移动前端的BUG:手机弹出框中的输入框focus时光标可能会错位。
刚开始时我完全不知道错误原因是什么,在电脑上调试时完全没有问题,手机上出现问题时也没有找到规律。后来在网上搜索了大量的资料,终于在几篇中文文章中找到了问题的大致方向在于"fixed定位的弹出框在苹果手机系统中有问题”,但是并没有很好的解决方法,解释的bug原因也个有千秋。最后,我谷歌了“fixed input cursor"之类的关键词,终于找到了一篇英文的详细解答(文章链接),并且我也验证了其中的正确性。接下来,我就写写我得到的有用信息和自己的体会,不是直接翻译。
BUG
如果你选中一个在fixed定位的container中的input,此时会跳出键盘,如果你的input在比较下面的位置,你就不得不滚动界面,此时你就会发现光标错位,而且滚动越多,错位越厉害。
没有完美的解决方法,首先把IOS升级到11.3吧
该BUG存在于IOS系统的版本11.0至11.2X(10或者更早以前应该是没有这个BUG的,至于具体是哪个版本时出现的BUG我也不清楚,因为我很久才更新一次系统,前面提到的文章中也没有明确指出),IOS最新版本11.3已修复此BUG。我尝试过一个安卓系统的手机,没有这个BUG。我的手机几个月前是没有出现这个BUG的,后来升级过一次手机系统到11.26就发现了这个BUG,不幸的是我们公司的人大多用的苹果手机且手机系统都是11.XX于是都有这个BUG,导致我有大概一个月的时间完全没有联想到是手机系统导致的BUG。最后,我将手机升级到最新版本11.3之后,这个BUG真的不存在了!(然后我就去劝公司其他人升级手机系统)
以下有我查到的几种别的方法及我的一些见解:
1. 基本上所有文章都指出解决方法就是将 position: fixed; 变成 position: absolute; ,但是这样的话在电脑大屏幕上弹出框就不在固定位置会显得不像弹出框(或者检测屏幕宽度和高来定义是否是手机界面?);
2. 放弃使用弹出框,但是此方法可能会导致巨大的工作量以及不美观;
3. 当弹出框出现时,全屏显示,并且将其余部分用 display: none; 隐藏。这个方法的工作量可能也会很大,我们公司平台用了很多弹出框,如果要这么做的话成本太大,不过我前面提到的那篇文章的作者说他采取了这个方法并且可行。
当然,你的客户可能在用有此BUG的系统,你也不能迫使他们升级
目前我们公司的做法是将这个问题放在一边了,就我而言,我们的客户中用苹果手机的不多(客户大部分是生活在巴黎的人,感觉用华为的人好像更多),而系统恰好在11.0-11.2X的人就更少了,而且他们未来也会升级手机系统。
苹果手机iOS11中fixed弹出框中input光标错位问题的更多相关文章
- 在IOS11中position:fixed弹出框中的input出现光标错位的问题
问题出现的背景: 在IOS11中position:fixed弹出框中的input出现光标错位的问题 解决方案 一.设计交互方面最好不要让弹窗中出现input输入框: 二.前端处理此兼容性的方案思路: ...
- IOS中position:fixed弹出框中的input出现光标错位的问题
解决方案是 在弹框出现的时候给body添加fixed <style type="text/css"> body{ position: fixed; width: 100 ...
- JSP中添加弹出框
JSP中添加弹出框 %> <script language="javascript" type="text/javascript"> aler ...
- ckfinder在IE10,IE9中的弹出框不能选择,或者不能上传解决方法
在IE9,或IE10中ckfinder在IE10,IE9中的弹出框不能选择,或者不能上传解决方法 把弹出框嵌入到jquery dialog中.可以解决 I did: // javascript f ...
- 弹出框中选项卡的运用(easyUI)
先看一下页面效果: 此处有两个知识点:一个是弹出框的运用,一个是选项卡的运用 分析一下该HTML代码,最外面一个div是弹出框的,默认是关闭状态,可通过ID来控制弹出框的开关,该div的样式是easy ...
- 弹出框中的AJAX分页
$(function() { $("body").on("click",".set-topic",function(){ /*获取所有题目接 ...
- 使用easeui dialog弹出框中使用CKeditor多次加载后无法编辑问题
问题呈现:弹出框页面 <tr class="addtr"> <th>内容</th> <td> <!-- <textare ...
- firefox浏览器中 bootstrap 静态弹出框中select下拉框不能弹出(解决方案)
问题出现场景1: 在firefox浏览器中在bootstrap弹出的modal静态框中再次弹出一个静态框时 select下拉框不能弹出选项 解决方案:去掉最外层静态框的 tabindex=" ...
- mvc 在弹出框中实现文件下载
var myParent = parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent; ...
随机推荐
- ZYNQ EMIO使用及可重用封装
为了快速实现算法板级验证,PC端需要通过JTAG或以太网与FPGA形成通路.最简单便捷的方案是利用协议栈芯片,用户可以无视底层,利用简单的SPI协议读写寄存器实现复杂的TCP UDP等网络协议.当然带 ...
- Linux、CentOS7下JDK环境配置
Linux版本 1.上传JDK包至指定目录,并解压 tar -xzvf jdk-7u80-linux-x64.tar.gz 2.配置JDK环境变量 打开/etc/profile配置文件 vim /et ...
- 英语口语练习系列-C14-常用片语
句子 1. Some ads are extremely persuasive and we find we buy products we don't really need. 有一些广告非常有说服 ...
- Python进程池Pool
''' 进程池,启动一个进程就要克隆一份数据,假设父进程1G,那么启动进程开销很大 避免启动太多造成系统瘫痪,就有进程池,即同一时间允许的进程数量 ps:线程没有池,因为线程启动开销小,线程有类似信号 ...
- C#基础知识之面向对象以及面向对象的三大特性
在C#基础知识之类和结构体中我详细记录了类.类成员.重载.重写.继承等知识总结.这里就记录一下对面向对象和面向对象三大特性的广义理解. 一.理解面向对象 类是面向对象编程的基本单元,面向对象思想其实就 ...
- Oracle 史上最全近百条Oracle DBA日常维护SQL脚本指令
史上最全近百条Oracle DBA日常维护SQL脚本指令 https://mp.weixin.qq.com/s?__biz=MjM5MDAxOTk2MQ==&mid=2650281305&am ...
- 【接口时序】6、IIC总线的原理与Verilog实现
一. 软件平台与硬件平台 软件平台: 1.操作系统:Windows-8.1 2.开发套件:ISE14.7 3.仿真工具:ModelSim-10.4-SE .ChipScope 硬件平台: 1. FPG ...
- VUE中 style scoped 修改原有样式
作用域CSS 当<style>标记具有该scoped属性时,其CSS将仅应用于当前组件的元素.这类似于Shadow DOM中的样式封装.它有一些警告,但不需要任何polyfill.通过使用 ...
- 【原创】IDEA一定要改的八条配置
引言 坦白说,我很少写这种操作类型的文章.因为这种文章没啥新意,大家操作步骤肯定是一样的.然而,我答应了我的同事小阳,给她出一篇!毕竟人家打算从Eclipse转IDEA了,于是以示鼓励,写一篇给她! ...
- Linux重启命令
Linux和windows不同,linux后台运行着许多进程,所以强制关机可能会导致进程的数据丢失使系统处于不稳定的状态.甚至在有的系统中会损坏硬件设备.而在系统关机前使用shutdown命令,系统管 ...