这是一个真正的JQuery UI天才:我们有一个非常长的形式,按需加载部分(例如,当点击索引/导航时,或当我们在当前部分的边缘滚动时)。
当我在当前查看的部分下面加载部分时,这不会影响当前滚动(即scrollTop)位置,但是当我在当前查看部分上方插入新部分时,它当然会将查看的内容推下来。
我们需要保持相对于当前部分的scrollTop位置。我们还需要在进行调整时避免显示跳跃/毛刺。
我想要一些实际上必须解决这个问题的人的建议。重要的是屏幕不会出现故障,因此应该避免将scrollTop同步到缓慢的DOM更新。
对拟议解决方案的建议或意见?是否有可以执行此操作的滚动替换?
如果你无法解决它,但认为值得解决,请考虑提升,这样我就可以获得大笔奖金!:)
答案 0 :(得分:3)
一旦你不得不考虑像自动滚动这样的东西来保持屏幕上的聚焦控制,选项4在练习中会变得太慢。
结果选项1 只要您执行以下操作就会有效:
选项1的优势在于,当您在项目之间更改焦点(例如制表符)时,它不会与浏览器的本机自动滚动作斗争。这已经证明是最好的实用解决方案,并且允许我们生成一个“非常长”的形式,包括数十个动态加载的部分(通过导航链接加载,或通过它们靠近视口),它的效果非常好。康加确实!
最初我们选择了选项4:我们已经创建了自己的滚动条,并且我们在相对父级内布置了绝对定位的项目。
当项目更改大小时,将重新计算项目上方或下方的位置(取决于它们相对于视口的位置)。可以通过Ajax加载或手动更改大小来触发此内容更改。
为了满足手动滚动我们正在使用MouseWheel.js,我们正在限制滚动,以便第一个和最后一个项目的范围受到视口顶部和底部25%的限制。
随着JQuery插件“排列”内容,一个接一个,我们决定将其称为 Conga 。 :)