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事件,不需要算法什么的。

  • 相关阅读:
    Geoserver通过ajax跨域访问服务数据的方法(含用户名密码认证的配置方式)
    123
    递归____蛮好的例子 蓝桥
    博弈_____威佐夫博奕
    123123
    sort
    int ,long , long long类型的范围
    数学推导_循环小数转分数
    下一步:结构体 背包 库函数
    回溯____蓝桥 棋盘
  • 原文地址:https://www.cnblogs.com/shiweida/p/8313626.html
Copyright © 2011-2022 走看看