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


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 dom 基本操作小结
Apr 11 Javascript
验证控件与Button的OnClientClick事件详细解析
Dec 04 Javascript
如何在MVC应用程序中使用Jquery
Nov 17 Javascript
javascript关于open.window子页面执行完成后刷新父页面的问题分析
Apr 27 Javascript
jQuery简单实现title提示效果示例
Aug 01 Javascript
有关文件上传 非ajax提交 得到后台数据问题
Oct 12 Javascript
详解ECMAScript6入门--Class对象
Apr 27 Javascript
es6中的解构赋值、扩展运算符和rest参数使用详解
Sep 28 Javascript
微信小程序 上传头像的实例详解
Oct 27 Javascript
JavaScript实现简单计算器
Mar 19 Javascript
js实现拖拽元素选择和删除
Aug 25 Javascript
如何利用js在两个html窗口间通信
Apr 27 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中file_exists函数不支持中文名的解决方法
2014/07/26 PHP
php使用Jpgraph绘制柱形图的方法
2015/06/10 PHP
PHP+MySQL实现无极限分类栏目的方法
2015/12/23 PHP
php基于curl主动推送最新内容给百度收录的方法
2016/10/14 PHP
php实现商城购物车的思路和源码分析
2020/07/23 PHP
学习ExtJS fit布局使用说明
2009/10/08 Javascript
javascript 哈希表(hashtable)的简单实现
2010/01/20 Javascript
input输入框的自动匹配(原生代码)
2013/03/19 Javascript
jQuery在html有效在jsp无效的原因及解决方法
2013/08/02 Javascript
Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
2013/10/11 Javascript
JavaScript实现弹出子窗口并传值给父窗口
2014/12/18 Javascript
JS实现往下不断流动网页背景的方法
2015/02/27 Javascript
jQuery实现MSN中文网滑动Tab菜单效果代码
2015/09/09 Javascript
jquery实现加载进度条提示效果
2015/11/23 Javascript
全面了解函数声明与函数表达式、变量提升
2016/08/09 Javascript
JS使用ActiveXObject实现用户提交表单时屏蔽敏感词功能
2017/06/20 Javascript
vue iview组件表格 render函数的使用方法详解
2018/03/15 Javascript
在NPM发布自己造的轮子的方法步骤
2019/03/09 Javascript
说说如何利用 Node.js 代理解决跨域问题
2019/04/22 Javascript
js微信分享接口调用详解
2019/07/23 Javascript
vuex + keep-alive实现tab标签页面缓存功能
2019/10/17 Javascript
JS写滑稽笑脸运动效果
2020/05/28 Javascript
[10:21]2018DOTA2国际邀请赛寻真——Winstrike
2018/08/11 DOTA
Python yield 使用浅析
2015/05/28 Python
python删除列表内容
2015/08/04 Python
Python3学习urllib的使用方法示例
2017/11/29 Python
Python tkinter实现的图片移动碰撞动画效果【附源码下载】
2018/01/04 Python
浅谈Series和DataFrame中的sort_index方法
2018/06/07 Python
python 简单照相机调用系统摄像头实现方法 pygame
2018/08/03 Python
Python3使用TCP编写一个简易的文件下载器功能
2019/05/08 Python
在Django下创建项目以及设置settings.py教程
2019/12/03 Python
python3通过subprocess模块调用脚本并和脚本交互的操作
2020/12/05 Python
Lookfantastic香港官网:英国知名美妆购物网站
2018/06/19 全球购物
用友笔试题目
2016/10/25 面试题
党员自我评议个人对照检查材料
2014/09/16 职场文书
导游带团欢迎词
2015/09/30 职场文书