zoukankan      html  css  js  c++  java
  • 页面内锚点定位及跳转方法总结

    1、最简单的方法是锚点用<a>标签,在href属性中写入DIV的id。如下:

    <!DOCTYPE  html>
    <html>
    <head>
    </head>
    <body>
        <h2>
            <a href="#div1" class="div1">to div1</a>
            <a href="#div2" class="div2">to div2</a>
            <a href="#div3" class="div3">to div3</a>
        </h2>
        <div id="div1">div1</div>
        <div id="div2">div2</div>
        <div id="div3">div3</div>
    </body>
    </html>

    这种方法的缺点是点击锚点之后,浏览器的URL会发生变化,如果刷新可能会出现问题。

    2、第二种方式是在js事件中通过window.location.hash="divId"跳转,但地址也会发生变化,感觉跟第一种方法没区别,甚至更麻烦。 

    3、第三种方法是用animate属性,当点击锚点后,页面滚动到相应的DIV。接着上面的代码,具体添加如下代码:

     1 $(document).ready(function(){
     2   $(".div1").click(function() {
     3     var div1 = $('#div1').offset().top;
     4     $('html,body').animate({scrollTop: div1}, 500);
     5   });
     6   $(".div2").click(function() {
     7     // -65 向上偏移65px
     8     var div2 = $('#div2').offset().top-65;    
     9     $('html,body').animate({scrollTop: div2}, 500);
    10   })
    11 })

    注意:运行上面的脚本的之前,先将为锚点增加相应的id,同时去掉href属性。   

    这样做的好处是:URL地址不会变,同时点击锚点时会自动响应scroll事件,不需要重新绑定。

    4、第四种方法是用js的srollIntoView方法,直接用:

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

    这种方法的好处,是URL不会变,同时能够响应相应的scroll事件,不需要算法什么的。

  • 相关阅读:
    Realtime crowdsourcing
    maven 常用插件汇总
    fctix
    sencha extjs4 command tools sdk
    首次吃了一颗带奶糖味的消炎药,不知道管用不
    spring mvc3 example
    ubuntu ati driver DO NOT INSTALL recommand driver
    yet another js editor on windows support extjs
    how to use springsource tools suite maven3 on command
    ocr service
  • 原文地址:https://www.cnblogs.com/shiweida/p/8313626.html
Copyright © 2011-2022 走看看