【发布时间】:2017-07-15 17:18:45
【问题描述】:
我已经阅读了这个网站上的很多帖子,但没有什么对我有用,我不知道为什么。
我正在尝试制作一个菜单,当您滚动过去时“粘贴”到页面顶部,反之亦然(当您向上滚动时停止粘贴)
Javascript
$(document).ready(function(){
var top = $('#FloatingMenu').offset().top - parseFloat($('#FloatingMenu').css('marginTop').replace(/auto/,100))
document.addEventListener("scroll",Scroll,false);
document.addEventListener("gesturechange",Scroll,false);
function Scroll() {
var y = $(this).scrollTop();
if (y >= top) {
$('#FloatingMenu').addClass('fixed');
} else {
$('#FloatingMenu').removeClass('fixed');
}
CSS
#FloatingMenu.fixed {
position: fixed;
top: 0;
left: 0;
z-index: 1;
width: 100%;
background-color: black;
color: red;
}
#FloatingMenu {
background-color: red;
color: black;
width: 100%;
text-align: center;
}
我尝试过重新绘制,我尝试过停止“惯性”滚动(我无法在 iOS 上的 Chrome 上停止)无论哪种方式,我尝试过的一切都具有相同的结果。在 PC 或 Android 上完美运行,但在 iPhone 上,菜单不会重新绘制并“卡在”顶部,直到滚动停止并且手指从屏幕上移开。
有解决办法吗?我所读到的所有内容都表明,有但没有一个解决方案对我有任何改变。
奇怪的是,如果您向上滚动(菜单已经卡在顶部)并且滚动过去,它会自动松开(即使在滚动时)并且可以正常工作。
唯一的问题是它“重新绘制”“固定”菜单时。
我希望有一个解决方案。一切都表明,在 iOS 8 之后它已修复(我正在 10+ 上进行测试),但它不会在滚动时显示菜单,直到你停下来放手。在 iPhone 6 和 iPad Air 2 上进行了测试。safari 和 chrome,所有结果都相同。
【问题讨论】:
-
为什么不只给标题
position: fixed,然后使用JavaScript jQuery 给<body>一个标题高度的填充顶部。它总是看起来很正常。如果你想给它添加一个类,如果windowsscrollTop()> 0,则以它为基础。 -
如果菜单应该始终位于页面顶部,那么您所说的将起作用。在我的情况下,它不是,只有在你滚动过去之后才会出现在顶部。
-
ok so on window scroll 检查标题滚动顶部是否小于窗口滚动顶部,如果是,则将固定类和填充添加到正文,如果不从正文中删除类和填充。跨度>
-
我不就是这样吗?问题是,当我在 iOS 中滚动时将“固定”类添加到元素时,它不会显示在屏幕上,直到您停止滚动并将手指从屏幕上移开。问题不在于代码不起作用,只是在您停止滚动之前它不起作用,这只是 iOS 设备上的问题。最后,我可能只需要更改布局方式并将菜单默认设置在顶部。
-
我过去曾构建过利用此功能的应用程序并且可以正常工作。也许它是你的滚动功能。我会通过窗口事件发布一个答案。
标签: javascript css iphone