javascript - 在 Ionic 2 中检测 Android 软导航栏高度

标签 javascript css ionic-framework ionic2

在我的 Ionic 2 应用程序中,我有一个带有垂直滚动元素的网格组件。

问题在于,在具有软导航栏(包含在屏幕中)的 Android 设备中,滚动会在整个内容显示之前停止(请参见屏幕底部)。

Android Nexus 5 的屏幕截图示例(带有软底导航栏):

enter image description here

iPhone 7 的屏幕截图示例(没有软底导航栏):

enter image description here

我的问题是:如何检测软导航栏的高度(如果存在),以便将其添加到网格的底部填充?

最佳答案

添加 Paul 的答案,以防其他人遇到此问题:

您可以使用原始答案获取软导航栏的高度,然后将其作为 CSS 变量注入(inject)并直接在您的样式中使用:

  ngOnInit(){

    this.platform.ready().then(() => {
      this.checkSoftButton();
    });
  }


  private checkSoftButton(){
    const softButton=(screen.height - this.platform.height());
    const body:any=document.querySelectorAll('body');
    body.forEach((e:any)=>{
      e.classList.add('soft-button');
      e.style= '--ion-soft-button:' + softButton + 'px';
    });
  }

您可以在第一个组件中执行此操作一次,然后在您的样式中使用它,例如

  height:calc(100% - var(--ion-soft-button));

  height:calc(100vh - var(--ion-soft-button));

您甚至可以使用添加到主体的软按钮类,以防您需要在应用程序内执行其他操作(如果有软按钮)。

关于javascript - 在 Ionic 2 中检测 Android 软导航栏高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47709732/

相关文章:

html - 溢出大于 100vh 的 CSS 滚动捕捉点?

jQuery Mobile 1.4.0 拆分按钮,右键只有CSS

javascript - 如何在单击按钮后显示文本,然后如果再次单击按钮,它就会消失?

android - ionic 运行 android - 错误 : Cannot find module 'internal/fs' - windows

javascript - navigator.cookieEnabled 在本地主机的 IE9 中不起作用

javascript - 为什么我的 init() 函数没有运行? (安装 Firefox 扩展时自动添加工具栏按钮,但仅在首次运行时)

javascript - 使用传单和图层控件显示 Shapefile

javascript - 如何在不知道数据的情况下渲染动态表格?使用 HTML 和 JS

android - 在 Android 应用程序中嵌入 Youtube 实时聊天

android - 在使用 ionic 框架的 Android 混合应用程序中,文本看起来模糊且廉价