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


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 相关文章推荐
使用EXT实现无刷新动态调用股票信息
Nov 01 Javascript
jquery load()在firefox(火狐)下显示不正常的解决方法
Apr 05 Javascript
js网页版计算器的简单实现
Jul 02 Javascript
浅析jQuery中调用ajax方法时在不同浏览器中遇到的问题
Jun 11 Javascript
jquery获取及设置outerhtml的方法
Mar 09 Javascript
jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)
Apr 08 Javascript
KnockoutJS 3.X API 第四章之click绑定
Oct 10 Javascript
推荐三款日期选择插件(My97DatePicker、jquery.datepicker、Mobiscroll)
Apr 21 jQuery
解决vue接口数据赋值给data没有反应的问题
Aug 27 Javascript
Vue项目安装插件并保存
Jan 28 Javascript
解决在layer.open中使用时间控件laydate失败的问题
Sep 11 Javascript
vue-cli3.0实现一个多页面应用的历奇经历记录总结
Mar 16 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中使用全局变量的几种方法
2013/06/24 PHP
php数组中删除元素之重新索引的方法
2014/09/16 PHP
浅谈php错误提示及查错方法
2015/07/14 PHP
JavaScript与Image加载事件(onload)、加载状态(complete)
2011/02/14 Javascript
Firefox中beforeunload事件的实现缺陷浅析
2012/05/03 Javascript
IE6下javasc#ipt:void(0) 无效的解决方法
2013/12/23 Javascript
javascript 控制input只允许输入的各种指定内容
2014/06/19 Javascript
JS跨域解决方案之使用CORS实现跨域
2016/04/14 Javascript
JavaScript中Form表单技术汇总(推荐)
2016/06/26 Javascript
js实现界面向原生界面发消息并跳转功能
2016/11/22 Javascript
js读取json文件片段中的数据实例
2017/03/09 Javascript
利用Vue v-model实现一个自定义的表单组件
2017/04/27 Javascript
浅谈Vue.js路由管理器 Vue Router
2018/08/16 Javascript
三步实现ionic3点击退出app程序
2019/09/17 Javascript
bootstrap实现嵌套模态框的实例代码
2020/01/10 Javascript
JavaScript数组排序的六种常见算法总结
2020/08/18 Javascript
vant 解决tab切换插件标题样式自定义的问题
2020/11/13 Javascript
Python进阶学习之特殊方法实例详析
2017/12/01 Python
使用python批量修改文件名的方法(视频合并时)
2020/03/24 Python
python被修饰的函数消失问题解决(基于wraps函数)
2019/11/04 Python
python垃圾回收机制(GC)原理解析
2019/12/30 Python
Python简单实现词云图代码及步骤解析
2020/06/04 Python
Python小白垃圾回收机制入门
2020/06/09 Python
Python之Matplotlib文字与注释的使用方法
2020/06/18 Python
python 线程的五个状态
2020/09/22 Python
SEPHORA丝芙兰捷克官网:购买香水、化妆品和护肤品
2018/11/26 全球购物
Levi’s西班牙官方网站:李维斯,著名的牛仔裤品牌
2020/08/20 全球购物
教师的实习自我鉴定
2013/12/17 职场文书
高中毕业自我鉴定
2013/12/22 职场文书
新闻学专业个人求职信写作
2014/02/04 职场文书
实习单位鉴定评语
2014/04/26 职场文书
上班迟到检讨书
2014/09/15 职场文书
群众路线剖析材料(四风)
2014/11/05 职场文书
详解Spring Bean的配置方式与实例化
2022/06/10 Java/Android
Redis Lua脚本实现ip限流示例
2022/07/15 Redis
Apache SkyWalking 监控 MySQL Server 实战解析
2022/09/23 Servers