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


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 脚本的加载与执行
Apr 19 Javascript
javascript,jquery闭包概念分析
Jun 19 Javascript
基于jquery实现的鼠标滑过按钮改变背景图片
Jul 15 Javascript
邮箱下拉自动填充选择示例代码附图
Apr 03 Javascript
jQuery实现冻结表格行和列
Apr 29 Javascript
JS Array.slice 截取数组的实现方法
Jan 02 Javascript
使用Bootstrap + Vue.js实现添加删除数据示例
Feb 27 Javascript
分析JS单线程异步io回调的特性
Dec 01 Javascript
Vue实现表格批量审核功能实例代码
May 28 Javascript
vue实现权限控制路由(vue-router 动态添加路由)
Nov 04 Javascript
小程序使用分包的示例代码
Mar 23 Javascript
vue中解决拖拽改变存在iframe的div大小时卡顿问题
Jul 22 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
「OVERLORD」动画重要删减!雅儿贝德的背叛?至尊猎杀队结成
2020/04/09 日漫
php date()日期时间函数详解
2010/05/16 PHP
php获取字段名示例分享
2014/03/03 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
2014/06/04 PHP
PHP的命令行命令使用指南
2015/08/18 PHP
PHP测试成功的邮件发送案例
2015/10/26 PHP
Composer设置忽略版本匹配的方法
2016/04/27 PHP
深入理解JavaScript系列(13) This? Yes,this!
2012/01/18 Javascript
IE的fireEvent方法概述及应用
2013/02/22 Javascript
jquery ui dialog实现弹窗特效的思路及代码
2013/08/03 Javascript
jquery插件开发之实现google+圈子选择功能
2014/03/10 Javascript
NodeJS学习笔记之MongoDB模块
2015/01/13 NodeJs
jquery实现美观的导航菜单鼠标提示特效代码
2015/09/06 Javascript
JS实现日期时间动态显示的方法
2015/12/07 Javascript
后端接收不到AngularJs中$http.post发送的数据原因分析及解决办法
2016/07/05 Javascript
jQuery animate()实现背景色渐变效果的处理方法【使用jQuery.color.js插件】
2017/03/15 Javascript
基于 Immutable.js 实现撤销重做功能的实例代码
2018/03/01 Javascript
Vue中使用sass实现换肤功能
2018/09/07 Javascript
Vue 使用beforeEach实现登录状态检查功能
2019/10/31 Javascript
在Vue中获取自定义属性方法:data-id的实例
2020/09/09 Javascript
js实现碰撞检测
2021/01/29 Javascript
[38:44]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第二局
2016/02/25 DOTA
python解析json实例方法
2013/11/19 Python
Using Django with GAE Python 后台抓取多个网站的页面全文
2016/02/17 Python
Python 通过pip安装Django详细介绍
2017/04/28 Python
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
2018/02/21 Python
pyqt5 键盘监听按下enter 就登陆的实例
2019/06/25 Python
Python 通过微信控制实现app定位发送到个人服务器再转发微信服务器接收位置信息
2019/08/05 Python
python实现大学人员管理系统
2019/10/25 Python
PyQt中使用QtSql连接MySql数据库的方法
2020/07/28 Python
纯CSS3实现鼠标滑过按钮动画第二节
2020/07/16 HTML / CSS
美体小铺瑞典官方网站:The Body Shop瑞典
2018/01/27 全球购物
介绍一下XMLHttpRequest对象的常用方法和属性
2013/05/24 面试题
稽核岗位职责
2015/02/10 职场文书
幼儿教师师德师风自我评价
2015/03/05 职场文书
Redis sentinel哨兵集群的实现步骤
2022/07/15 Redis