【问题标题】:scrolling to element on page jquery - html,body refuses to scroll滚动到页面 jquery 上的元素 - html,body 拒绝滚动
【发布时间】:2012-01-26 18:00:31
【问题描述】:

我无法理解这个问题,所以我不得不问。我正在尝试在单击事件上做一个非常简单的 jQ 滚动到元素。我之前在不同的页面上成功构建了相同的功能。

$('li.newsmenu a').click(function() {
    $('html, body').animate({scrollTop: $('section#news').offset().top});
        return false;
});

我的选择器都很好。

我已经测试了点击事件,它会给我一个警报('like this');

在控制台中,$('section#news').offset().top 值返回一个合理的 717

我在 Chrome 和 Safari 中进行了测试,但没有成功。

我正在研究其他人的工作和 HTML5 样板 Wordpress 主题系统,我想知道其中是否有什么东西。

有人有什么想法吗?这让我发疯了。

【问题讨论】:

  • 有没有像jsfiddle这样的网站,但只是为了转储html,我可以使用?
  • 好的,我认为这一切都应该在这里:jsfiddle.net/BTyUY 我不得不阻止一些东西 [希望我明白了!] 并且没有包含 JS,但我的 JS 并没有做太多html/css 更改,特定区域除外。旋转木马和砌体
  • 你的 jQuery 很好。某处一定有冲突……您是否遇到任何错误。您的代码的简化 jsfiddle 在这里:http://jsfiddle.net/BTyUY/4/
  • @SteveO - 哦,奇怪,这对我在 Chrome 16 中不起作用,但在 FF 中起作用。
  • 感谢您简化 jsfiddle。我把那段代码拿回来,做成了一个 html 页面,它对 div#top 做了一些很奇怪的事情。看看粘贴在这里的 .html 文件:pastebin.com/UfE8L8Vi

标签: jquery html5boilerplate


【解决方案1】:

好的,这看起来像是一个 webkit 问题。通过指定

html, body { height: 100%; } 

它将它们的“高度”限制为窗口的高度。所以scrollTop(x) 永远不会起作用。如果你修改你的 CSS 不包含这些声明,一切都会再次起作用。另一种解决方法是将您的正文内容放在可滚动的 div 中,然后滚动它。我想说这是一个 webkit 错误,因为这种行为看起来很奇怪。您可以通过向下滚动窗口一点点来亲自查看它。然后查询所有内容的当前 scrollTop 值,它始终为零! body、html、document、window、div#top等

【讨论】:

  • 感谢您的进一步访问。我特别想调试它,因为我相信代码来自 HTML5 Boilerplate wordpress 主题,而不是我的同事添加的。我认为这与该主题的粘性页脚有关。我还是 StackOverflow 的新手,但我认为我应该将您的答案标记为正确,因为它解决了特定问题,即使它几乎是一个错误,这是正确的 SO 礼仪吗?
  • @iiz - 这是这个问题的灰色地带。如果您认为会有更好的解决方案出现,那么我不会接受我的回答。如果您认为这与它将得到的一样好,那么接受它可能是最好的。如果以后有人发现了更好的解决方案,那么更改已接受的答案是完美的。
  • 好的。好吧,当您找到了我遇到的问题的根源并因此找到了解决方案时,我将标记为已接受,即使问题可能一开始就应该发生。谢谢
  • 可以添加html,body { min-height: 100%; } 而不是你引用的内容
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-07
  • 1970-01-01
  • 1970-01-01
  • 2013-06-15
  • 2013-05-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多