【问题标题】:scroll to before page load滚动到页面加载之前
【发布时间】:2012-10-06 17:15:24
【问题描述】:

我正在尝试使用 javascript 使页面加载进一步降低 200 像素。但我总是在向下滚动之前看到顶部的 1 秒。

vimoe这样做,页面加载后尝试向上滚动,http://vimeo.com/49645156

margin-top:-200px.. 给了我这种效果,但在边距设置为负数后我不能向上滚动。

也许做一个 jquery 解决方案,在页面加载后更改 body margin-top,这行得通吗?

目前正在使用此脚本

function jumpScroll() {
window.scroll(0,200); // horizontal and vertical scroll targets

}

我只是用 onload 从正文中调用这个脚本。

【问题讨论】:

  • 我想您会发现实际上您在 vimeo 上滚动到的内容是在页面加载后立即加载的,并且滚动位置是在该点设置的。内容不是作为初始标记的一部分加载的,如果你明白我的意思,它是通过 jQuery 或其他框架加载的。
  • 如果您查看页面源代码,您将看到<div id="brozar" class="hide"><h3 class="loading">Loading videos…</h3></div>hide 类将其设置为 display: none,然后在页面呈现后加载内容。希望这会有所帮助。
  • 而且您实际上看不到“加载”位,因为他们的服务器非常非常快。他们所有的 JS 都被缩小了,但是如果你搜索它,你可以找到将内容异步加载到 #brozar div 并在完成时滚动页面的函数。
  • 那么如果我把一个div放在顶部:-200 ..然后附加一个带有查询的html?这行得通吗?

标签: jquery


【解决方案1】:

不给margin,为什么不用分区id呢?

我确定您已经为要在加载时显示在顶部的部门提供了一个 ID。

只需使用 div ID,如下所示:

$(document).ready(function (){
    var div= $('#example'); // take your div id
    $(window).scrollTop(div.offset().top).scrollLeft(div.offset().left);
}

【讨论】:

  • 不起作用..我有一个 div,我已将所有内容放入..尝试使用 $("#container").scrollTop(200); ..但不起作用。
  • 所以您已经在一个部门中制作了完整的网站? :\
  • 好吧.. 一种使用 scrollTop 的方法。我可以使用 body 或 document 而不是 div.. 但它似乎没有足够好的浏览器支持。在 safari 中工作正常。
  • 这很奇怪,它通过 jsfiddle 在 safari 中工作,但是当我复制结果窗口中的源代码时它停止工作。
  • 确保您使用的是相同版本的 jQuery,如果仍然无法正常工作,请确保 js 位于正文的末尾,或者最好位于前往$(document).ready(function() { //do your stuff here });。如果它仍然不起作用,请发布您在问题中的代码。
【解决方案2】:

其实可以这样实现:

1. 加载所有页面所需高度内容的空 div。

2.执行滚动到所需内容。因为这将是在页面加载时完成的第一件事,所以在加载内容之前它是不可见的。

3.通过ajax或模板加载实际内容。

【讨论】:

  • 你会看到滚动条跳跃,即使你没有看到页面的其余部分移动......
  • 在 vimeo 上也可以滚动跳转。
  • 是的,谢谢,现在检查一下。我自己都没注意到,所以你是对的,没关系xD
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-28
  • 1970-01-01
  • 1970-01-01
  • 2021-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多