主要是利用$("html,body").animate({scrollTop:$("#" + id).offset().top}, 800);
,参数800是动画持续时长。但是这样会让元素处于页面最上方,要使元素居中可以完善为$('html,body').animate({scrollTop:$('#'+id).offset().top-$(window).height() * 0.5+$('#'+id).height()*0.5}, 800);
,这样就会在跳转到到元素时使其上下居中。示例代码如下:
<!DOCTYPE html>
<html>
<head>
<title>点击返回指定位置</title>
<style>
#nav {
position: fixed;
left: 0;
top: 10px;
}
#nav li {
width: 50px;
height: 30px;
font: bold 20px/30px simhei;
text-align: center;
list-style-type: none;
background: #333;
color: #fff;
margin: 10px 0;
cursor: pointer;
}
#list li {
width: 50%;
height: 300px;
text-align: center;
font: bold 100px/300px simhei;
list-style-type: none;
background: yellow;
color: blue;
margin: 50px 200px;
}
</style>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
</head>
<body>
<ul id="nav">
<li data-to="go1">1</li>
<li data-to="go2">2</li>
<li data-to="go3">3</li>
<li data-to="go4">4</li>
<li data-to="go5">5</li>
<li data-to="go6">6</li>
<li data-to="go7">7</li>
<li data-to="go8">8</li>
<li data-to="go9">9</li>
<li data-to="go10">10</li>
<li data-to="go11">11</li>
<li data-to="go12">12</li>
<li data-to="go13">13</li>
</ul>
<ul id="list">
<li id="go1">1</li>
<li id="go2">2</li>
<li id="go3">3</li>
<li id="go4">4</li>
<li id="go5">5</li>
<li id="go6">6</li>
<li id="go7">7</li>
<li id="go8">8</li>
<li id="go9">9</li>
<li id="go10">10</li>
<li id="go11">11</li>
<li id="go12">12</li>
<li id="go13">13</li>
</ul>
<script src="jquery.min.js"></script>
<script>
$('#nav').on('click', 'li', function (e) {
var target = e.target;
var id = $(target).data("to");
$('html,body').animate({scrollTop: $('#' + id).offset().top - $(window).height() * 0.5 + $('#' + id).height() * 0.5}, 300);
});
</script>
</body>
</html>
未经允许不得转载:鹞之神乐 » jQuery 跳转到页面指定元素