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


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函数库)S.Sams Lifexperience ScriptClassLib
Apr 29 Javascript
几个常用的JavaScript字符串处理函数 - split()、join()、substring()和indexOf()
Jun 02 Javascript
jquery tools 系列 scrollable(2)
Sep 06 Javascript
深入分析js中的constructor和prototype
Apr 07 Javascript
js实现上传文件添加和删除文件选择框
Oct 24 Javascript
JS实现双击内容变为可编辑状态
Mar 03 Javascript
ES6中的箭头函数实例详解
Apr 06 Javascript
Angular.JS通过指令操作DOM的方法
May 10 Javascript
无限循环轮播图之运动框架(原生JS实现)
Oct 01 Javascript
AngularJS $http post 传递参数数据的方法
Oct 09 Javascript
Node 使用express-http-proxy 做api网关的实现
Oct 15 Javascript
vue项目开启Gzip压缩和性能优化操作
Oct 26 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生成静态页面分析 模板+缓存+写文件
2009/08/17 PHP
php中3des加密代码(完全与.net中的兼容)
2012/08/02 PHP
CI框架源码解读之URI.php中_fetch_uri_string()函数用法分析
2016/05/18 PHP
php微信开发之自定义菜单实现
2016/11/18 PHP
PHP 500报错的快速解决方法
2016/12/14 PHP
php微信扫码支付 php公众号支付
2019/03/24 PHP
关于PHP5.6+版本“No input file specified”问题的解决
2019/12/11 PHP
Ajax一统天下之Dojo整合篇
2007/03/24 Javascript
JS根据变量保存方法名并执行方法示例
2014/04/04 Javascript
原生JS实现LOADING效果
2015/03/16 Javascript
AngularJS 使用$sce控制代码安全检查
2016/01/05 Javascript
javascript jquery对form元素的常见操作详解
2016/06/12 Javascript
jQuery 自定义下拉框(DropDown)附源码下载
2016/07/22 Javascript
Mac下使用charles遇到的问题以及解决办法
2017/01/10 Javascript
vue2.0结合DataTable插件实现表格动态刷新的方法详解
2017/03/17 Javascript
vue 挂载路由到头部导航的方法
2017/11/13 Javascript
ES6 fetch函数与后台交互实现
2018/11/14 Javascript
Bootstrap 按钮样式与使用代码详解
2018/12/09 Javascript
详解Vue、element-ui、axios实现省市区三级联动
2019/05/07 Javascript
封装一下vue中的axios示例代码详解
2020/02/16 Javascript
python进阶教程之动态类型详解
2014/08/30 Python
Python数据结构与算法之二叉树结构定义与遍历方法详解
2017/12/12 Python
Python使用字典的嵌套功能详解
2019/02/27 Python
python爬虫的一个常见简单js反爬详解
2019/07/09 Python
目前不被任何主流浏览器支持的CSS3属性汇总
2014/07/21 HTML / CSS
Expedia马来西亚旅游网站:廉价酒店,度假村和航班预订
2016/07/26 全球购物
英国的知名精品百货公司:House of Fraser(福来德)
2016/08/14 全球购物
德国家具折扣店:POCO
2020/02/28 全球购物
SHEIN美国:购买时髦的女性服装
2020/12/02 全球购物
编写类String的构造函数、析构函数和赋值函数
2012/05/29 面试题
房地产项目建议书
2014/03/12 职场文书
教师产假请假条范文
2014/04/10 职场文书
学校师德承诺书
2014/05/23 职场文书
公司离职证明标准样本
2014/10/05 职场文书
2015年出纳工作总结与计划
2015/05/18 职场文书
2016基督教会圣诞节开幕词
2016/03/04 职场文书