頁面內錨點定位及跳轉方法總結(推薦)

這篇文章主要介紹了頁面內錨點定位及跳轉方法總結,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨着小編來一起學習學習吧

接着上一篇,其實是一個功能,本來感覺挺簡單的一個問題,沒想到遇到兩個坎兒,無語。。。

上一篇是關於scroll事件綁定的問題,這一篇的問題是:點擊錨點跳轉到相應DIV的問題。

最簡單的方法是錨點用<a>標籤,在href屬性中寫入DIV的id。如下:

<!DOCTYPE html>
<html>
<head>
  <style>
    div {
      height: 800px;
      width: 400px;
      border: 2px solid black;
    }
    h2 {
      position: fixed;
      margin:50px 500px;
    }
  </style>
</head>
<body>
  <h2>
    <a href="#div1" rel="external nofollow" >to div1</a>
    <a href="#div2" rel="external nofollow" >to div2</a>
    <a href="#div3" rel="external nofollow" >to div3</a>
  </h2>
  <div id="div1">div1</div>
  <div id="div2">div2</div>
  <div id="div3">div3</div>
</body>
</html>

這種方法的缺點是點擊錨點之後,瀏覽器的URL會發生變化,如果刷新可能會出現問題。 

第二種方式是在js事件中通過window.location.hash="divId"跳轉,但地址也會發生變化,感覺跟第一種方法沒區別,甚至更麻煩。

第三種方法是用animate屬性,當點擊錨點後,頁面滾動到相應的DIV。接着上面的代碼,具體添加如下代碼:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.0.min.js"></script>
<script type="text/javascript"><br>$(document).ready(function() {
  $("#div1Link").click(function() {
    $("html, body").animate({
      scrollTop: $("#div1").offset().top }, {duration: 500,easing: "swing"});
    return false;
  });
  $("#div2Link").click(function() {
    $("html, body").animate({
      scrollTop: $("#div2").offset().top }, {duration: 500,easing: "swing"});
    return false;
  });
  $("#div3Link").click(function() {
    $("html, body").animate({
      scrollTop: $("#div3").offset().top }, {duration: 500,easing: "swing"});
    return false;
  });
});
1
</script>

注意:運行上面的腳本的之前,先將爲錨點增加相應的id,同時去掉href屬性。   

$("html, body")可以替換爲響應的div,如果不起作用,試着給該div增加overflow:scroll屬性。

另外,腳本可以進一步優化,自己來試試

這樣做的好處是:URL地址不會變,同時點擊錨點時會自動響應scroll事件,不需要重新綁定。

缺點是:如果頁面複雜的話,偏移值可能會發生變化需要算法輔助。

第四種方法是用js的srollIntoView方法,直接用:

document.getElementById("divId").scrollIntoView();

這種方法的好處,是URL不會變,同時能夠響應相應的scroll事件,不需要算法什麼的。

推介大家用第四種,我依次試了前三種,都有各種問題(可能是頁面較複雜的緣故吧,當然,技術不咋也是。。。)  

以上所述是小編給大家介紹的頁面內錨點定位及跳轉方法總結詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對神馬文庫網站的支持!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章