【发布时间】:2013-08-06 16:44:53
【问题描述】:
我有一个页面,其中各种元素的内容被 AJAX 化到一个核心结构中。结构本身非常简单,元素没有任何特殊的定位:
<body>
<article id="one"></article>
<article id="two"></article>
<article id="three"></article>
</body>
每篇文章的内容是通过 AJAX 调用加载的,并且每篇文章的内容长度无法提前知道。此外,可以使用 URL 导航到每个部分(因此我可以使用 mysite.com/two 访问 #two;它会加载页面并向下滚动到请求的文章)。
这很好用,当然,在加载完所有内容之后,但我的问题是目标元素之前的内容还没有加载。因为元素必须扩展以适应内容,它会下推目标元素,所以不是得到这个:
____________________
| Target Element |
| |
|__________________|
| Next Element |
|__________________|
你明白了:
_____________________
| Previous Element |
| |
| |
|___________________|
| Target Element |
|___________________|
我尝试为内容块设置最小高度,但这仅在部分时间有效,并且只有在最终高度接近原始高度时才真正有效。
理想情况下,我希望视口相对于内容保持在相同的位置,即使用户在所有内容加载之前已经滚动,但我会在用户尝试之前保持该位置滚动。
有什么办法可以做到这两点吗?
【问题讨论】:
-
如何将 URL 参数转换为哈希?能不能延迟一点?
-
@isherwood - 这是一个快速的字符串替换,但不,我不能拖延。一半是在给定部分加载,就好像它是它自己的页面一样。
-
好的。回到哈希的 ajax 回调呢?
-
@isherwood - 如果偶尔闪烁,但这似乎有效。添加您的评论作为答案,如果它经得起一些进一步的测试,我一定会标记它。 :)
标签: javascript jquery css