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


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通过更改按钮的显示样式实现按钮的滑动效果
Apr 23 Javascript
从零学jquery之如何使用回调函数
May 16 Javascript
jQuery中slice()方法用法实例
Jan 07 Javascript
html的DOM中document对象forms集合用法实例
Jan 21 Javascript
DOM事件阶段以及事件捕获与事件冒泡先后执行顺序(图文详解)
Aug 18 Javascript
JS实现放大、缩小及拖拽图片的方法【可兼容IE、火狐】
Aug 23 Javascript
bootstrap的常用组件和栅格式布局详解
May 02 Javascript
解决iview打包时UglifyJs报错的问题
Mar 07 Javascript
Vue 项目分环境打包的方法示例
Aug 03 Javascript
jQuery实现网页拼图游戏
Apr 22 jQuery
在vue中嵌入外部网站的实现
Nov 13 Javascript
elementui的el-popover修改样式不生效的解决
Jun 30 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二维数组转成字符串示例
2014/02/17 PHP
微信公众平台开发实现2048游戏的方法
2015/04/15 PHP
php视频拍照上传头像功能实现代码分享
2015/10/08 PHP
简述php环境搭建与配置
2016/12/05 PHP
Smarty3配置及入门语法
2017/02/22 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
给moz-firefox下添加IE方法和属性
2007/04/10 Javascript
jQuery之日期选择器的深入解析
2013/06/19 Javascript
JS getAttribute和setAttribute(取得和设置属性)的使用介绍
2013/07/10 Javascript
给ListBox添加双击事件示例代码
2013/12/02 Javascript
基于 Docker 开发 NodeJS 应用
2014/07/30 NodeJs
jQuery实现鼠标悬停背景翻转的黑色导航菜单代码
2015/09/14 Javascript
详解AngularJS中的filter过滤器用法
2016/01/04 Javascript
JavaScript实现多种排序算法
2016/02/24 Javascript
Bootstrap富文本组件wysiwyg数据保存到mysql的方法
2016/05/09 Javascript
自动化测试读写64位操作系统的注册表
2016/08/15 Javascript
angularjs中的$eval方法详解
2017/04/24 Javascript
JS实现图片旋转动画效果封装与使用示例
2018/07/09 Javascript
Vue3.0中的monorepo管理模式的实现
2019/10/14 Javascript
js实现动态时钟
2020/03/12 Javascript
JS自定义滚动条效果
2020/03/13 Javascript
在Python的struct模块中进行数据格式转换的方法
2015/06/17 Python
Python2.7简单连接与操作MySQL的方法
2016/04/27 Python
Python tkinter事件高级用法实例
2018/01/31 Python
python实现从ftp上下载文件的实例方法
2020/07/19 Python
Python使用shutil模块实现文件拷贝
2020/07/31 Python
python 检测图片是否有马赛克
2020/12/01 Python
python 通过exifread读取照片信息
2020/12/24 Python
审计主管岗位职责
2014/01/31 职场文书
基层党组织公开承诺书
2014/03/28 职场文书
科技节口号
2014/06/19 职场文书
法人委托书
2014/07/31 职场文书
党的群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
涉外离婚协议书怎么写
2014/11/20 职场文书
特此通知格式
2015/04/27 职场文书
python的html标准库
2022/04/29 Python