通过单击元素内的锚点或包含div id的任何位置将元素滚动到页面顶部

时间:2013-10-13 23:36:39

标签: javascript jquery css html

我想将页面滚动到例如单击导航div ID内的任何链接时的导航div ID或(如果可能)单击包含导航链接的div ID本身的任何位置时。

我研究了这个,而我最接近的是jQuery - How to scroll an anchor to the top of the page when clicked?但是由于某种原因,当我在我的例子中尝试这样做时它似乎不起作用。我究竟做错了什么?

我是jQuery的新手和html和css的中等版本(并且使用了div的内联样式,因为我不想仅为示例提供单独的css。)

当我从Aptana中的jQuery - How to scroll an anchor to the top of the page when clicked?加载html和脚本时,它也不会滚动。即使div类之上的内容div工作,也有可以滚动到的空间。

我在相关的div中包含了两个小段落来解释我的意思。

非常感谢任何帮助。谢谢。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

<script>
        $('#scroll_navigation ul li').click(function() {
             $('html,body').animate({scrollTop: $(this).offset().top}, 800);
        }); 
    </script>

<body>

<div id="logo" style="margin: 0 auto; height: 300px; width: 60%; border: 1px solid #000">Logo</div>

    <div id="scroll_navigation" style="margin: 0 auto; width: 40%; border: 4px solid #225599">

        <p>Scroll navigation to top of page</p>
        <p>Catch any clicks in "#scroll_navigation" to scroll the div id to the top of the page</p>


            <div id="navigation">

                <div class="container" style="margin: 0 auto; height: 220px; width: 60%; border: 1px solid #000">

                    <ul>
                        <p>Catch clicks on anchors to scroll the div id to the top of the page</p>
                        <li><a href="#Portfolio" title="">Portfolio</a></li>
                        <li><a href="#Services" title="">Services</a></li>
                        <li><a href="#About" title="">About</a></li>
                        <li><a href="#Contact" title="">Contact</a></li>
                    </ul>

                </div>

            </div>

    </div>

<div id="content" style="margin: 0 auto; height: 1500px; width: 60%; border: 1px solid #000">Content</div>

</body>

修改 在Firefox中使用scrollTop时要小心这一点。 Animate scrollTop not working in firefox jQuery scrollTop - no support for negative values in Mozilla / Firefox 我花了一段时间才弄明白我的代码很好但是在FF中这个问题是scrollTop。在同一个例子中,也可以观察到这种行为。向下滚动并固定锚点时,FF将向上滚动到目标div之前或之后2-4px的随机位置。

我现在正在使用Scrolld.js实现像素完美滚动到主浏览器的所需点。我不明白不同的浏览器引擎如何从不同的(html或body)输入中呈现如scrollTop这样常见的东西,据我所知并且我是jQuery的新手。猜猜这不是jQuery的“错误”,而是浏览器引擎如何呈现scrollTop。

1 个答案:

答案 0 :(得分:36)

我不知道你是否这样做,但你必须包含jquery才能使用它。 另一件事是,你的&#34;点击听众&#34;必须在jqueries文档就绪函数如下:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>

$(document).ready(function(){
    $('#scroll_navigation ul li').on('click', function(){
        $('html,body').animate({scrollTop: $(this).offset().top}, 800);
    }); 
});  

</script>