经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » HTML/CSS » HTML » 查看文章
页面内锚点定位及跳转方法总结(推荐)
来源:jb51  时间:2019/4/25 8:37:05  对本文有异议

接着上一篇,其实是一个功能,本来感觉挺简单的一个问题,没想到遇到两个坎儿,无语。。。

上一篇是关于scroll事件绑定的问题,这一篇的问题是:点击锚点跳转到相应DIV的问题。

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

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <style>
  5. div {
  6. height: 800px;
  7. width: 400px;
  8. border: 2px solid black;
  9. }
  10. h2 {
  11. position: fixed;
  12. margin:50px 500px;
  13. }
  14. </style>
  15. </head>
  16. <body>
  17. <h2>
  18. <a href="#div1" rel="external nofollow" >to div1</a>
  19. <a href="#div2" rel="external nofollow" >to div2</a>
  20. <a href="#div3" rel="external nofollow" >to div3</a>
  21. </h2>
  22. <div id="div1">div1</div>
  23. <div id="div2">div2</div>
  24. <div id="div3">div3</div>
  25. </body>
  26. </html>

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

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

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

  1. <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.0.min.js"></script>
  2. <script type="text/javascript"><br>$(document).ready(function() {
  3. $("#div1Link").click(function() {
  4. $("html, body").animate({
  5. scrollTop: $("#div1").offset().top }, {duration: 500,easing: "swing"});
  6. return false;
  7. });
  8. $("#div2Link").click(function() {
  9. $("html, body").animate({
  10. scrollTop: $("#div2").offset().top }, {duration: 500,easing: "swing"});
  11. return false;
  12. });
  13. $("#div3Link").click(function() {
  14. $("html, body").animate({
  15. scrollTop: $("#div3").offset().top }, {duration: 500,easing: "swing"});
  16. return false;
  17. });
  18. });
  19. 1
  20. </script>

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

$("html, body")可以替换为响应的div,如果不起作用,试着给该div增加overflow:scroll属性。

另外,脚本可以进一步优化,自己来试试

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

缺点是:如果页面复杂的话,偏移值可能会发生变化需要算法辅助。

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

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

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

推介大家用第四种,我依次试了前三种,都有各种问题(可能是页面较复杂的缘故吧,当然,技术不咋也是。。。)  

以上所述是小编给大家介绍的页面内锚点定位及跳转方法总结详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对w3xue网站的支持!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号