Html 固定元素不是';在iOS Safari 9+;中快速滚动至底部时,无法单击;
我只在iOS Safari 9+上遇到了一个非常恼人的问题(8.4很好),一旦用户快速滚动页面,导致固定元素中的锚链接不再可点击,因为外观和实际点击/点击区域没有与其元素对齐,直到用户再次滚动 它不是每次都以相同的方式发生,可能需要几次尝试才能“打破”系统。内容必须比视口长才能工作 这个问题还没有解决办法。我如何解决这个问题 更新:经过进一步测试后,问题只发生在iOS Safari 9及更高版本上,在iOS 8上进行了测试,没有问题 更新2:现在很清楚,大多数网站都使用Html 固定元素不是';在iOS Safari 9+;中快速滚动至底部时,无法单击;,html,ios,css,responsive-design,webkit,Html,Ios,Css,Responsive Design,Webkit,我只在iOS Safari 9+上遇到了一个非常恼人的问题(8.4很好),一旦用户快速滚动页面,导致固定元素中的锚链接不再可点击,因为外观和实际点击/点击区域没有与其元素对齐,直到用户再次滚动 它不是每次都以相同的方式发生,可能需要几次尝试才能“打破”系统。内容必须比视口长才能工作 这个问题还没有解决办法。我如何解决这个问题 更新:经过进一步测试后,问题只发生在iOS Safari 9及更高版本上,在iOS 8上进行了测试,没有问题 更新2:现在很清楚,大多数网站都使用位置:固定甚至位置:-w
位置:固定代码>甚至位置:-webkit粘性代码>。您可能需要检查您的:)
HTML
<section>
<article></article>
<article></article>
<article></article>
</section>
<div class="sticky">
<a href=""></a>
</div>
这个问题不会发生在Codepen编辑器中,因为它与mobile Safari的弹性/工具栏大小更改有关。请将代码导出到自己的页面,或使用以下链接:
此问题与ios中的反弹效果以及丢失工具栏和标题栏有关。我发现解决此问题的唯一方法是执行以下操作:
html,
body {
height: 100%;
width: 100%;
overflow: auto;
-webkit-overflow-scrolling: auto
}
您也可以在断点上执行此操作,因此它仅适用于移动设备。希望这有帮助
**添加了溢出滚动。您可以将.sticky设置为绝对链接,并应用以下CSS,使链接独立于窗口/浏览器
.sticky {
width: 50px;
}
.sticky a {
position: absolute;
top: 0;
bottom: 0;
margin: auto;
}
我发现它有效地解决了这个问题,但它有一个不受欢迎的副作用:动量滚动不再有效。这使得在iPad上向下滚动长页面花费了很长时间
将andy的回答与我的链接相结合,使我的链接可以点击,同时还允许动量滚动:
html,
body {
height: 100%;
overflow-y: scroll; /* must be scroll, not auto */
-webkit-overflow-scrolling: touch;
}
我还发现andy回答中的宽度:100%
样式是不必要的,所以我也删除了它。这没有帮助,因为我需要相对于视口的固定位置,而不是文档高度。使用您的解决方案,div将滚动一个长页面。好的,然后您还可以尝试使用(jQuery的)调整大小功能在每个滚动页面上计算(var1)=(视口高度)和(var2)=(视口在页面中的底部位置),并计算:(中点)=(var2-(var1)/2)。我希望你明白了。然后,您可以动态地将块的位置设置为中点;而且没有额外的JS,我感谢您的帮助,并将尝试将此作为最后手段。:)虽然这个解决方法解决了这个问题,但它为各种领域(如javascript计算)打开了一罐新的蠕虫——例如:var scroll=$(window.scrollTop();如果(滚动>=10){//do something}
@Joe,您应该将其作为问题要求的一部分then@ZachSaucier我不想让问题过于拥挤,因为各种建议的修复程序都会产生全新的需求,我希望行为能够以最简单的形式解决(没有JS相关的问题),因此,我的评论符合这个回答,不是吗?@Joe如果溢出(反弹)是罪魁祸首,并且它仅限于iOS,那么CSS属性可能会有所帮助,@RogierSpieker,你能详细说明一下吗?你只是建议用安迪的方法滚动一次动量吗?
html,
body {
height: 100%;
overflow-y: scroll; /* must be scroll, not auto */
-webkit-overflow-scrolling: touch;
}