我一直在开发一个网站,并受益于非常好的jQuery Sticky Kit插件。它通过在适当的时候将position
属性切换为fixed
并恢复,来实现粘性效果。在桌面端运行非常流畅,在移动端也还可以接受。
或者至少曾经是这样的。iOS 9带来了一种新的行为:如果一个元素的position
从static
/relative
/absolute
变为fixed
,而滚动动画仍在进行中,则该元素在滚动停止之前变得不可见。奇怪的是,相反的变化(从fixed
到其他)没有问题。
在插件主页上可以找到一个工作示例。黑色导航栏(“示例参考”)应该是粘性的。最初,它是静态定位在页面中间。当向下滚动时,它变为fixed
,但是在iOS 9上会消失直到滚动停止。在桌面浏览器和iOS 8中的行为是正确的。
我有点希望采用典型的CSS解决方法:强制3D转换,禁用背面可见性等,模糊的专有属性等。但是似乎没有任何方法可以解决这个问题。
我们是否即将放弃“可粘性”的元素,即使它之前运行正常?
position: sticky
,尽管需要加上前缀。你可以为其他所有内容保留jQuery插件,并在iOS支持它的地方(7+,如果我没记错的话)使用本机CSS解决方案。 - TylerH