zoukankan      html  css  js  c++  java
  • h5 ios中软键盘弹起后 fixed定位失效

    position: fixed; 在 iOS手机中会存在一个失效情况:

    1、针对当前内容高度小于屏幕高度时:

    上下滑动页面时候,发现之前 fixed 定位在顶部的元素会跟随页面滚动,变成了absolute定位的效果。

    2、针对当前内容高度大于屏幕高度时:

    之前 fixed 定位在顶部的 View 不见了,下滑往上翻页面后,就会看那个fixed定位的元素错落在页面中,但并不是在最顶部。

    综上可以看出,ios 浏览器是针对 fixed 定位的元素作了处理,不再是之前定位效果,变成了 absolute 定位的效果但并不是 absolute ,但可以理解为top:对应为当前 body 的 scrollTop 值

    那么该怎么解决这个问题呢?

    在这里我是比较倾向于遵循 ios 浏览器处理 fixed 元素的初衷,浏览器去处理 fixed 元素应该是有它考虑的地方,退一步说其实也没有必要在这个情况下强制显示顶部元素,这时候用户的重点在于输入。

    这里给出的方案就是:在软键盘弹起后,直接把 fixed 的元素变成 absolute 的,不需要浏览器自己去做处理,待键盘收起后再恢复成 fixed

    以下代码环境是在React中
    document.body.addEventListener('focusin', () => {
        //软键盘弹出的事件处理
        let scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
        //注只针对ios 、处在滚动中位置时
        isIphone() && scrollTop > 0 && this.setState({ className: 'postion-absolute' })
    })
    document.body.addEventListener('focusout', () => {
          //软键盘收起的事件处理
         isIphone() && this.setState({ className: '' })
    })

    转载: h5 ios中软键盘弹起后 fixed定位失效

  • 相关阅读:
    web通信浅析(上B/S交互)转载
    tomcat内部运行原理浅析转载
    oracle集合运算
    Oracle 游标使用全解
    oracle 一些基本概念
    1.搭建项目环境之TestDirector 8.0
    修改Win7远程桌面端口
    从第二份工作开始
    2.搭建项目环境之源代码管理SVN
    How to Get IIS Web Sites Information Programmatically
  • 原文地址:https://www.cnblogs.com/rachelch/p/12857965.html
Copyright © 2011-2022 走看看