1

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

<a href="/some-url#some-fragment">some text</a>

浏览器只是立即向下滚动到该片段。我如何对其进行编程以使用标准 JS 顺利移动到该片段?

这是一个例子:

示例(要查看工作示例,只需单击 3 个圆圈内的 3 个箭头并观看平滑的动画滚动)

4

2 回答 2

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>
于 2013-10-09T09:44:35.387 回答
0

那么你应该尝试这样的事情

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

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

另一种方法是将它放在一个函数中

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/

于 2013-10-09T09:35:04.663 回答