我知道iScroll和我已经使用jQuery手机很长一段时间了,我知道他们都解决了这个问题,但我想自己做,而不是包括一个大的框架。我的问题是,jQuery手机是如何解决这个问题的:修复了iOS设备上的问题?目前我所有的固定定位元素只会在滚动结束时改变位置,但它应该总是固定在顶部,而不仅仅是在滚动的末尾。
发布于 2014-09-11 00:02:59
我也有同样的问题。我有一个固定的元素在身体上,这是非常错误的。对我来说,用height:auto;代替height:100%是可行的。完整代码:
body,
html{
    position:absolute;
    top:0;
    left:0;
    width:100%;
    height:auto; /* iOS position:fixed; elements fix (not 100%) */
    min-height:100%;
    overflow-x:hidden;
}发布于 2014-03-21 06:11:14
iOS 7上的position:fixed运行得很好,实际上(有一些小问题,例如抖动可能是取决于某些因素的问题),所以我认为你可能试图模仿粘性滚动(当滚动到某个y偏移量时,元素会修复)。
不幸的是,对于iOS,你不能轻易做到这一点(当你滚动或轻击时,所有的JavaScript都会停止,这就是为什么position:fixed会在事件结束时发生。如果你幸运的话,你可以希望用户摇摆和定位:固定在触摸移动上...)
正如您所提到的,有一些解决方法可以应用overflow和模仿原生滚动(例如iScroll)。这些工作,但它们是内存密集型的(谢谢,平滑滚动的硬件加速),所以性能可能是一个问题,这取决于你的需求。
对于iOS 7,position有一个值,即sticky。这真的很好用,如下所示:
http://html5-demos.appspot.com/static/css/sticky.html
http://caniuse.com/css-sticky
唯一的缺点是它仅限于iOS 6.1和7。但是,如果旧设备不是问题,position:sticky是一个很好的解决方案,因为它是本机解决方案。
发布于 2014-09-09 22:33:00
只需尝试使用内部滚动(overflow-y: scroll)制作块,并将它们像内联块一样放置在彼此附近。因此,您将获得独立的可滚动内容。
https://stackoverflow.com/questions/22545981
复制相似问题