我一直在开发网站,并从相当不错的jQuery Sticky Kit插件中受益。通过在适当的时候在position
属性之间fixed
来回切换来进行操作。在桌面上运行非常流畅,在移动设备上也可以接受。
或至少它曾经如此。iOS 9具有新的行为:如果position
元素的元素从static
/ relative
/absolute
变为fixed
滚动动画进行中,则元素将不可见,直到滚动停止为止。奇怪的是,执行相反的更改(从fixed
其他更改)没有问题。
一个有效的示例可以在插件的主页上找到。黑色导航栏(“示例参考”)应该是粘性的。最初它static
位于页面中间。向下滚动时,它变成fixed
和(在iOS 9中)消失,直到滚动停止。在桌面浏览器和iOS 8中的行为是正确的。
我有点希望采用典型的CSS解决方法:强制进行3D转换,禁用背面可见性等,使专有属性晦涩难懂,但是似乎没有任何效果。
既然它正在起作用,我们是否会完全忘记“可粘”元素?
position: sticky
在CSS中使用更好的解决方案,尽管它要放在前缀后面。您可以将jQuery插件用于其他所有功能,并在支持该插件的地方使用适用于iOS的本地CSS解决方案(如果我没记错的话,为7+)。