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


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 相关文章推荐
Js 时间函数getYear()的使用问题探讨
Apr 01 Javascript
jQuery操作checkbox选择(list/table)
Apr 07 Javascript
优化Jquery,提升网页加载速度
Nov 14 Javascript
javascript利用apply和arguments复用方法
Nov 25 Javascript
Jquery焦点图实例代码
Nov 25 Javascript
js实现简单鼠标跟随效果的方法
Apr 10 Javascript
简介JavaScript中getUTCMonth()方法的使用
Jun 10 Javascript
JQuery通过AJAX从后台获取信息显示在表格上并支持行选中
Sep 15 Javascript
开启Javascript中apply、call、bind的用法之旅模式
Oct 28 Javascript
Angular 2 ngForm中的ngModel、[ngModel]和[(ngModel)]的写法
Jun 29 Javascript
bootstrap插件treeview实现全选父节点下所有子节点和反选功能
Jul 21 Javascript
vue中v-for加载本地静态图片方法
Mar 03 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
德生S2000电路分析
2021/03/02 无线电
深入了解php4(2)--重访过去
2006/10/09 PHP
php下封装较好的数字分页方法
2010/11/23 PHP
php中拷贝构造函数、赋值运算符重载
2012/07/25 PHP
php设计模式之命令模式的应用详解
2013/05/21 PHP
用PHP实现弹出消息提示框的两种方法
2013/12/17 PHP
Linux下安装PHP MSSQL扩展教程
2014/10/24 PHP
php查询mysql大量数据造成内存不足的解决方法
2015/03/04 PHP
帝国cms常用标签汇总
2015/07/06 PHP
Laravel学习基础之migrate的使用教程
2017/10/11 PHP
基于JQuery的Select选择框的华丽变身
2011/08/23 Javascript
jquery特效 幻灯片效果示例代码
2013/07/16 Javascript
Node.js中child_process实现多进程
2015/02/03 Javascript
JS模式之单例模式基本用法
2015/06/30 Javascript
JS将滑动门改为选项卡(需鼠标点击)的实现方法
2015/09/27 Javascript
vue Element-ui input 远程搜索与修改建议显示模版的示例代码
2017/10/19 Javascript
详解微信小程序的 request 封装示例
2018/08/21 Javascript
Tensorflow 训练自己的数据集将数据直接导入到内存
2018/06/19 Python
python实现按行分割文件
2019/07/22 Python
Django的性能优化实现解析
2019/07/30 Python
django组合搜索实现过程详解(附代码)
2019/08/06 Python
Python中的 sort 和 sorted的用法与区别
2019/08/10 Python
pandas中read_csv的缺失值处理方式
2019/12/19 Python
Python处理PDF与CDF实例
2020/02/26 Python
python pygame 愤怒的小鸟游戏示例代码
2021/02/25 Python
澳大利亚墨尔本的在线时装店:LORETA
2018/09/14 全球购物
台湾7-ELEVEN线上购物中心:7-11
2021/01/21 全球购物
如何写一个Java类既可以用作applet也可以用作java应用
2016/01/18 面试题
疾病防治方案
2014/05/31 职场文书
未受刑事制裁公证证明
2014/09/20 职场文书
2014年乡镇安全生产工作总结
2014/12/02 职场文书
项目经理岗位职责范本
2015/04/01 职场文书
2015年机关纠风工作总结
2015/05/15 职场文书
85句关于理想的名言警句大全
2019/08/22 职场文书
Pytest之测试命名规则的使用
2021/04/16 Python
分享一些Java的常用工具
2021/06/11 Java/Android