前几天做一个移动端的页面,要加个像微信那样附着在底部的回复框,按照做PC端网页的思路,首先是用fixed,在安卓上测了一下是好的,结果到同事的iphone6p上不行了,点击输入框之后它总会跳到屏幕中间去。

  后来才知道这是ios下一个普遍的bug,所以我决定把原因和解决方案整理一下,以方便后人。
  网上有的人说用那个iscroll.js来解决,不过那样会出现很多样式上的冲突,而且为了一个fixed的bug动用一个js,未免有点大材小用了。
  原因
  ios下面,软键盘唤起后,页面的 fixed 元素将失效(即无法浮动,也可以理解为变成了 absolute 定位),所以当页面超过一屏且滚动时,失效的 fixed 元素会跟随滚动了。
  解决方法
    三段式布局