JavaScript动画平滑滚动

时间:2013-10-09 09:27:29

标签: javascript

默认情况下,如果您有这样的片段链接:

<a href="/some-url#some-fragment">some text</a>
只需浏览器,立即向下滚动到该片段。我如何编程以使用标准JS平滑地移动到该片段?

以下是一个例子:

Example(要查看工作示例,只需点击3个圆圈内的3个箭头,然后观看流畅的动画滚动)

2 个答案:

答案 0 :(得分:1)

好吧,我想我找到了答案,在这里张贴以帮助其他有类似疑问的人:

<html>
  <head>
    <script type="text/javascript">
      var singleton = {};
      var timeout = singleton;

      window.onscroll = windowScroll;

      function windowScroll ()
      {
        var toTop = document.getElementById('toTop');
        toTop.style.display = ((window.scrollY > 0) ? "block" : "none");
      }

      function scrollStep ()
      {
        var y1 = window.scrollY - 1000;
        window.scrollTo(0, y1);

        if (y1 > 0)
        {
          timeout = window.setTimeout(scrollStep, 100);  
        }
        else if (timeout != singleton)
        {
          window.clearTimeout(timeout);   
        }
      }
    </script>

    <style type="text/css">
      #toTop {
        display: block;
        position: fixed;
        bottom: 20px;
        right: 20px;
        font-size: 48px;
      }

      #toTop {
        -moz-transition: all 0.5s ease 0s;
        -webkit-transition: all 0.5s ease 0s;
        -o-transition: all 0.5s ease 0s;
        transition: all 0.5s ease 0s;
        opacity: 0.5;
        display: none;
        cursor: pointer;
      }

      #toTop:hover {
        opacity: 1;
      }
    </style>
  </head>

  <body>
    <p id="top">your text here</p>
    <a href="#top" onclick="scrollStep(); return false" id="toTop"
       ><img src="images/go-to-top.png" alt="Go to top" title="Go to top"></a>
  </body>
</html>

答案 1 :(得分:0)

你应该尝试这样的事情

$('html,body').animate({
scrollTop:$("#ctl00_ctl00_ContentPlaceHolder1_Conten
tPlaceHolder1_txtcomment").offset().top
},'slow');

其中 *#ctl00_ctl00_ContentPlaceHolder1_ContentPlaceHolder1_txtcomment * 是您要移动或滚动的ID

另一个approch是把它放在一个函数

function scrollme() {
$('html,body').animate({
scrollTop:$("#ctl00_ctl00_ContentPlaceHolder1_ContentPlaceHolder1_txtcomment").offset().top
},'slow');
} <a onclick="javascript:scrollme();">some text</a>

我希望这会对你有所帮助。

问候..:)

<强> [更新]

  

URI哈希是一种使用动态制作JavaScript / AJAX页面的好方法   内容可收藏。它可以以类似于查询的方式使用   字符串,但更改不会导致新的页面请求。这允许   您可以将数据存储在可以读取和更改的URI中   JavaScript没有重新加载页面。

     

对于初学者来说,URI位置哈希是#之后的所有内容   登录URI:

     

http://domain.com/page.html#i-am-a-hash附注:URI哈希是   没有转回服务器,你只能访问它们   客户端。

查看此博客

http://ole.michelsen.dk/blog/using-uri-hash-instead-of-query-strings/