ipad上100vh和100%踩坑记「建议收藏」

ipad上100vh和100%踩坑记「建议收藏」最近遇到了一个小bug,在ipad上编辑word文件的虚拟键盘收回时,会导致页面的导航条隐藏,且页面的下面会出现一块空白自己尝试的解决方案通过focusin和focusout对虚拟键盘的弹入弹出进行监听,但发现基本没什么用。我的理解是:focusin和focusout比较适合于监听对于文本输入框的键盘事件。通过比较screen.availHeight和screen.height进行比较。如果在虚拟键盘弹出时元素的高度等有变化,那么可以尝试通过这种方式判断虚拟键盘是不是弹出来了.另一种方法

大家好,又见面了,我是你们的朋友全栈君。

最近遇到了一个小bug,在ipad上编辑word文件的虚拟键盘收回时,会导致页面的导航条隐藏,且页面的下面会出现一块空白

自己尝试的解决方案

  • 通过focusin和focusout对虚拟键盘的弹入弹出进行监听,但发现基本没什么用。我的理解是:focusin和focusout比较适合于监听对于文本输入框的键盘事件。

  • 通过比较screen.availHeight和screen.height进行比较。如果在虚拟键盘弹出时元素的高度等有变化,那么可以尝试通过这种方式判断虚拟键盘是不是弹出来了.

  • 另一种方法是:监听一个事件,比如我监听的就是scroll事件,对会发生隐藏的元素设置scrollIntoView或者scrollIntoViewIfNeeded,通过设置不同的参数,可以使得作用的元素与视口的上面或下面对齐。

  • resizeObserver

  • MutationObserver 用来监听DOM的变化,包括结构,属性这些。

后来发现,是css属性值的问题。


`<style>`

`#container {`

`display: flex;`

`width: 100vh;`

`height: 100vw;`

`}`

`#child {`

`    flex: 1;`

`    position: absolute;`

`    top: 0;`

`    left: 0;`

`    right:0 ;`

`    height: 100%;`

`    overflow: hidden;`

`}`

`</style>`

`<div  id = "container">`

 `<div  id = "child">`

 `</div>`

`</div>`

  • 这里主要有两点需要注意:

  • 在移动端设备中,尤其是ipad和iOS,100vh其实是比视口大,即100vh包含了下面的状态栏的高度。

  • 另外,如上面的代码所示,父元素设置了display:flex, 子元素设置了flex: 1,按理说,子元素设置了这个属性之后,就和父元素的宽高相同了,但是要注意,在这里,子元素还设置了position: absolute。我们看一下W3C的文档怎么说

image

即,flex容器中的绝对定位子元素会脱离flex布局流,也就是说flex: 1对子元素来说已经失效了。因此他的高度为绝对定位中的100%设置的高度,但是又设置了overflow:hidden,因此才会在虚拟键盘隐藏时出现一部分空白,从而导致了导航条的隐藏。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142793.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • CompoundButton

    CompoundButtonCompoundButton具有两种状态的按钮,选中和未选中。当按钮被按下或点击时,状态会自动改变。这是一个抽象类,目前有的子类有复选框,单选按钮,开关,切换按钮。 复选框 复选框是一种特定类型的双状态按钮,可以选中或取消选中。 单选按钮 单选按钮是两个状态的按钮,可以选中也可以取消选中。 转变 Switch是一个双态切换开关小部件,可以在两个选项之间进行选择。 …

    2022年5月2日
  • ActionBar 背景色修改

    ActionBar 背景色修改

    2021年6月20日
  • 大数据时代下的人工智能医疗应用_大数据下的人工智能

    大数据时代下的人工智能医疗应用_大数据下的人工智能大数据时代下的人工智能医疗十问十答-陆讯1、怎么理解大数据时代下的人工智能健康医疗?2、智能医疗相比于传统医疗有什么优势和劣势吗?3、国内外人工智能医疗的知名公司(医院)有哪些?4、人工智能在医疗领域有哪些应用场景?处在阶段?5、人工智能医疗如何保障用户的安全问题?6、人工智能医疗行业的产品经理从业方向都有哪些?7、如何成为一名合格的人工智能医疗产品经理?8、您所负责过的人工智能医疗产品都是怎样的?9、5G会怎样影响智能医疗行业的发展?10、医疗行业智能化的未来会是什么样?Q1.怎

    2022年9月19日
  • esp8266架构_esp8266能做什么

    esp8266架构_esp8266能做什么    欢迎大家来到ESP8266的世界,从现在开始,笔者将带领大家慢慢揭开ESP8266神秘的面纱。1.简介    从笔者的角度来说,ESP8266这个词可以理解为ESP8266EX芯片(当然,后面也有可能出现了其他芯片,这里首推ESP8266EX)以及依赖ESP8266EX芯片开发的系列模组的简称。    ESP8266EX是由乐鑫信息科技公司(Espressif)出品的一款应用于物联…

    2022年8月13日
  • LQR控制器(控制器的功能是什么)

    LQR控制器是常见的最优控制器,它的主要特点是将控制量加入到了成本函数中。对于线性系统:x˙=Ax+Bu\dotx=Ax+Bux˙=Ax+Bu设计控制器u=−Kxu=-Kxu=−Kx使得J=12∫0∞xTQx+uTRu dtJ=\frac{1}{2}\int_0^\inftyx^TQx+u^TRu\,dtJ=21​∫0∞​xTQx+uTRudt最小。其中,xTQxx^TQxxTQx是状态部分,uTRuu^TRuuTRu是控制部分。为了求解K,需要引入Riccati微分方程:P

    2022年4月18日
  • Matlab&nbsp;fmincon函数用法

    Matlab&nbsp;fmincon函数用法原文地址:fmincon函数用法”>Matlab fmincon函数用法作者:长笛人倚楼Gloria这个函数在之前优化工具箱一文中已经介绍过,由于其应用广泛,所以这里通过实例单独整理一下其用法。一、基本介绍求解问题的标准型为minF(X)s.tAXAeqX=beqG(x)Ceq(X)=0VLB 其中X为n维变元向量,G(x)与Ceq(X)均为非线性函数组成的

    2022年6月22日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号