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


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 相关文章推荐
一段好玩的JavaScript代码
Dec 01 Javascript
通过javascript的匿名函数来分析几段简单有趣的代码
Jun 29 Javascript
dtree 网页树状菜单及传递对象集合到js内,动态生成节点
Apr 14 Javascript
教你在heroku云平台上部署Node.js应用
Jul 30 Javascript
在JavaScript中处理字符串之link()方法的使用
Jun 08 Javascript
JavaScript操作URL的相关内容集锦
Oct 29 Javascript
Jquery on绑定的事件 触发多次实例代码
Dec 08 Javascript
详解在React.js中使用PureComponent的重要性和使用方式
Jul 10 Javascript
layui获取选中行数据的实例讲解
Aug 19 Javascript
详解Webpack-dev-server的proxy用法
Sep 08 Javascript
JS实现点击按钮随机生成可拖动的不同颜色块示例
Jan 30 Javascript
详解Vue中的MVVM原理和实现方法
Jul 15 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
PHP 反射机制实现动态代理的代码
2008/10/22 PHP
处理php自动反斜杠的函数代码
2010/01/05 PHP
php 删除记录同时删除图片文件的实现代码
2010/05/12 PHP
PHP根据IP地址获取所在城市具体实现
2013/11/27 PHP
生成随机字符串和验证码的类的PHP实例
2013/12/24 PHP
javascript Math.random()随机数函数
2009/11/04 Javascript
根据对象的某一属性进行排序的js代码(如:name,age)
2010/08/10 Javascript
javascript的函数作用域
2014/11/12 Javascript
用js判断是否为360浏览器的实现代码
2015/01/15 Javascript
JS实现浏览器状态栏显示时间的方法
2015/10/27 Javascript
使用BootStrap建立响应式网页——通栏轮播图(carousel)
2016/12/21 Javascript
给vue项目添加ESLint的详细步骤
2017/09/29 Javascript
angularjs实现table增加tr的方法
2018/02/27 Javascript
MVVM框架下实现分页功能示例
2018/06/14 Javascript
微信小程序引入Vant组件库过程解析
2019/08/06 Javascript
python中将字典转换成其json字符串
2014/07/16 Python
用Python从零实现贝叶斯分类器的机器学习的教程
2015/03/31 Python
Python 多线程抓取图片效率对比
2016/02/27 Python
python解决网站的反爬虫策略总结
2016/10/26 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
2018/08/30 Python
解决Python中定时任务线程无法自动退出的问题
2019/02/18 Python
Python多版本开发环境管理工具介绍
2019/07/03 Python
python 实现仿微信聊天时间格式化显示的代码
2020/04/17 Python
Python识别处理照片中的条形码
2020/11/16 Python
Pandas之缺失数据的实现
2021/01/06 Python
东南亚冒险旅行与活动:Adventoro
2019/10/16 全球购物
工艺工程师工作职责
2013/11/23 职场文书
食品安全处置方案
2014/06/14 职场文书
县政府班子个人对照检查材料
2014/10/05 职场文书
铣工实训报告
2014/11/05 职场文书
预备党员个人总结
2015/02/14 职场文书
校园广播站开场白
2015/06/01 职场文书
小时代观后感
2015/06/10 职场文书
聊一聊Redis与MySQL双写一致性如何保证
2021/06/26 Redis
Rhit高效可视化Nginx日志查看工具
2021/11/01 Servers
SpringBoot系列之MongoDB Aggregations用法详解
2022/02/12 MongoDB