页面内锚点定位及跳转方法总结(推荐)


Posted in Javascript onApril 24, 2019

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

上一篇是关于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事件,不需要算法什么的。

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

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

Javascript 相关文章推荐
Mootools 1.2教程 类(一)
Sep 15 Javascript
JQuery跨Iframe选择实现代码
Aug 19 Javascript
JavaScript XML和string相互转化实现代码
Jul 04 Javascript
20个非常棒的 jQuery 幻灯片插件和教程分享
Aug 23 Javascript
IE6,IE7,IE8下使用Javascript记录光标选中范围(已补全)
Aug 28 Javascript
JavaScript中停止执行setInterval和setTimeout事件的方法
May 14 Javascript
浅谈Javascript中的Label语句
Dec 14 Javascript
前端面试知识点锦集(JavaScript篇)
Dec 28 Javascript
微信小程序 tabs选项卡效果的实现
Jan 05 Javascript
详解Angularjs 如何自定义Img的ng-load 事件
Feb 15 Javascript
JSONP跨域请求
Mar 02 Javascript
vue路由传参三种基本方式详解
Dec 09 Javascript
详解Vue项目中实现锚点定位
Apr 24 #Javascript
微信小程序中使用echarts的实现方法
Apr 24 #Javascript
基于mpvue小程序使用echarts画折线图的方法示例
Apr 24 #Javascript
详解微信小程序开发用户授权登陆
Apr 24 #Javascript
微信小程序实现的一键拨号功能示例
Apr 24 #Javascript
详解vue中使用vue-quill-editor富文本小结(图片上传)
Apr 24 #Javascript
微信小程序实现的图片保存功能示例
Apr 24 #Javascript
You might like
模拟OICQ的实现思路和核心程序(一)
2006/10/09 PHP
php更新修改excel中的内容实例代码
2014/02/26 PHP
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
2014/05/15 PHP
PHP和MySql中32位和64位的整形范围是多少
2016/02/18 PHP
关于IE7 IE8弹出窗口顶上
2008/12/22 Javascript
Javascript 中文字符串处理额外注意事项
2009/11/15 Javascript
javascript动态的改变IFrame的高度实现自动伸展
2013/10/12 Javascript
iframe的onreadystatechange事件在firefox下的使用
2014/04/16 Javascript
JS封装cookie操作函数实例(设置、读取、删除)
2015/11/17 Javascript
js实现遍历含有input的table实例
2015/12/07 Javascript
AngularJS基础 ng-srcset 指令简单示例
2016/08/03 Javascript
AngularJS 与Bootstrap实现表格分页实例代码
2016/10/14 Javascript
JS实现商品筛选功能
2020/08/19 Javascript
纯js实现的积木(div层)拖动功能示例
2017/07/19 Javascript
javascript导出csv文件(excel)的方法示例
2019/08/25 Javascript
JS实现4位随机验证码
2020/10/19 Javascript
[39:32]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第二场
2014/05/23 DOTA
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
[51:06]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS Liquid
2018/03/30 DOTA
Python之eval()函数危险性浅析
2014/07/03 Python
python获取目录下所有文件的方法
2015/06/01 Python
常见的python正则用法实例讲解
2016/06/21 Python
Python实现识别图片内容的方法分析
2018/07/11 Python
Python3.6.x中内置函数总结及讲解
2019/02/22 Python
python如何实现从视频中提取每秒图片
2020/10/22 Python
python3.7添加dlib模块的方法
2020/07/01 Python
python定义具名元组实例操作
2021/02/28 Python
CSS3动画和HTML5新特性详解
2020/08/31 HTML / CSS
H5 meta小结(前端必看篇)
2016/08/24 HTML / CSS
EMU Australia澳大利亚官网:澳大利亚本土雪地靴品牌
2019/07/24 全球购物
几道Web/Ajax的面试题
2016/11/05 面试题
文明青少年标兵事迹材料
2014/01/28 职场文书
单身联谊活动方案
2014/01/29 职场文书
学习党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
2014年保育员个人工作总结
2014/12/02 职场文书
【海涛教你打dota】体验一超神发条:咱是抢盾专业户
2022/04/01 DOTA