很多網站都有這種功能,主要為了讓用戶在長篇大論中比較迅速的跳到自己想要看的內容處,比如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>
頁面截圖:
點擊左邊的數字,頁面會跳到數字對應的位置,感覺就像坐電梯一樣。