很多網站都有這種功能,主要爲了讓用戶在長篇大論中比較迅速的跳到自己想要看的內容處,比如bootstrap就有相應的功能。
介紹一種非常簡便可以實現這種功能的方式。
思路:1.這裏要用到點擊事件,因爲點擊處可能數量較多,因此最好用事件代理來處理,可以提高性能。
2.當點擊一個按鈕時,能夠獲取到與他相對應的元素的ID。
3.通過jquery的offset方法返回top和left兩個屬性後獲取他的top屬性。
4.用animate方法改變html的scrollTop屬性,值爲上面的top屬性值。
以下是代碼:
<!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;s
}
#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>
</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}, 800);
});
</script>
</body>
</html>