javascript - 顶部的滑动菜单隐藏在 Safari 移动栏后面

标签 javascript jquery html ios css

我在 iOS Safari 上的下拉设置有一个严重的问题。想象一个网站,顶部有一个标题。如果你点击标题,它会向下滑动,就像手机上的任何通知中心一样。我选择的方式很简单。我有一个 <div class="settings hide">使用此 CSS:

.settings{
    position: fixed;
    width: 100%;
    height: calc(100vh + 60px);
    border-bottom-left-radius: 15px;
    border-bottom-right-radius: 15px;
    -webkit-transition: all 0.5s ease-in-out;
    -moz-transition: all 0.5s ease-in-out;
    -o-transition: all 0.5s ease-in-out;
    transition: all 0.5s ease-in-out;
    z-index: 10;
}

.hide{
    top: -100vh;
}

现在,这让它看起来像这样:

figure-one(the hidden setting)

现在,下一步是通过添加名为“show”的类来创建它“可滑动”,这是我使用 jQuery 完成的。

.show{
    top: calc(0vh - 60px);
}

这实际上让它变得很棒。它刚刚起作用!突然我在我的 iPhone 上尝试了这个网站,由于底部栏一直显示直到你滚动,我的臀部都不见了。

因为它看起来像这样:

Figure-two(it is hidden behind the bar!)

到此为止了吗?我的菜单确实可以正确滑动,在任何浏览器中看起来都很棒,但在 Safari 中,它隐藏在栏的正后方,因此用户实际上无法关闭它。

我尽力解决了这个问题,但没有任何效果如我所愿。

PS:我假设你知道,但是当你使用 bottom: 0; 时它有点管用。 , 然后它“知道”酒吧并正确地停在它的正上方。但是因为设置是用top计算的位置,它does not做动画,这对我的设计来说是必要的。

感谢任何帮助/解决方案!

最佳答案

David,不幸的是,iOS Safari 充满了令人不快的惊喜。

其中之一是 iOS Safari 认为 100vh
iOS Safari 中的视口(viewport)高度不等于 Chrome 或 Firefox 中的窗口内部高度

例如在 iPhone 7plus 上 100vh == 696px,但是 window.innerHeight == 628px
在 iPhone 6 上 100vh == 628px,但是 window.innerHeight == 559px
等等……

所以解决方案是摆脱 100vh
假设 body.settings 的偏移父级,请改用 100%:

.settings {
    position: fixed;
    width: 100%;
    height: calc(100% + 60px);
    ...
}

.hide {
    top: -100%;
}

此外,您不需要在 .show 类中使用 calc(因为 0vh === 0):

.show {
    top: -60px;
}

关于javascript - 顶部的滑动菜单隐藏在 Safari 移动栏后面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44979694/

相关文章:

使用正则表达式的 Jquery css 选择器

javascript - 通用 jQuery 回调?

javascript - cfx Firefox 插件面板未打开选项卡

javascript - 如何使用 jQuery flot 添加水平条?

javascript - amCharts 不显示最初隐藏的 div 的图表

html - 图像标题属性或 anchor 标题属性或两者兼而有之?

html - 如何制作缩放时留在页面中的粘性标题?

php - 如何将 mysql 表中的数据添加到我已经格式化的 html 页面

javascript - 如何在 JQuery 中序列化 JSON 对象

javascript - jQuery - 缩放字体大小以填充父 div 高度