默认情况下,如果您有这样的片段链接:
<a href="/some-url#some-fragment">some text</a>
只需浏览器,立即向下滚动到该片段。我如何编程以使用标准JS平滑地移动到该片段?
以下是一个例子:
Example(要查看工作示例,只需点击3个圆圈内的3个箭头,然后观看流畅的动画滚动)
答案 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/