JS如何实现在页面上快速定位(锚点跳转问题)


Posted in Javascript onAugust 14, 2017

本文介绍了JS如何实现在页面上快速定位(锚点跳转问题),分享给大家,具体如下:

1. 锚点跳转简介

锚点其实就是可以让页面定位到某个位置上的点。在高度较高的页面中经常见到。

锚点跳转有两种形式:

  • a标签 + name / href 属性
  • 使用标签的id属性

在html 4.0以前,只有使用 <a> 标签的 name 属性才能创建片段标识符。id 属性的出现,使所有 HTML 或 XHTML 元素都可以是片段标识符。这是因为 id 标识符几乎可以用在所有的标签中。<a> 标签为了能够和以前的版本相兼容而保留了 name 属性,同时也可以使用 id 属性。这些属性可以相互交换使用,可以把 id 属性看作是 name 属性的升级版本。name 和 id 属性都可以与 href 属性结合起来使用,这样一个 <a> 标签就可以同时作为超链接和片段标识符使用。

<a href="#he" rel="external nofollow" rel="external nofollow" >波轮洗衣机介绍</a>
<a href="#f" rel="external nofollow" ></a>

但是这种方法使用了一个空标签,而且有时候会出现锚点失效。所以建议采用id来绑定锚点,代码如下:

<a href="#he" rel="external nofollow" rel="external nofollow" >波轮洗衣机介绍</a><h2 id="#de">波轮洗衣机介绍</h2>

2. 含锚点跳转的URL地址

window.location.hash

【1】关于#

在页面的制作中,“#”的符号很常见,并且具有通用性。基本上,其表示的含义是id选择符。同样的,在页面的URL中,#也可以理解为id选择符之意,也就是页面跳转到含URL指向的id标签处。
例如输入一个地址https://3water.com/view/121414.htm?pf=1#3

这个地址中末尾有个'#',这个就相当于告诉浏览器要跳转了,#后面跟着的3表示会在https://3water.com/view/121416.htm?pf=1的页面中寻找符合#3特点的标签并且执行跳转。

【2】关于空锚点指向

如果URL中的#后面跟随的字符id在文中找不到,就会有两种情况:如果是在当前页面,除了URL地址变化了,其他的不会改变,页面不会有跳转;如果是从其他页面跳转过来,则页面会在顶部显示,'#'基本就是摆设。

【3】window.location.hash

用来获取或设置页面的标签值。https://3water.com/article/22656.htm?dasdsa

3. Jquery下锚点的平滑跳转。

如果让页面平滑滚动到一个id为box的元素处,则JQuery代码只要一句话,关键位置如下:

$('html, body').animate({scrollTop: $('#box').offset().top}, 1000)

JS原生实现。

scrollTo() 方法可把内容滚动到指定的坐标。

scrollTo(xpos,ypos);

4. IE下锚点刷新失效及JQuery下的解决

【1】关于锚点刷新失效

锚点刷新失效就是指当按下刷新键F5时,即使此时URL的后面就随锚点,此锚点也是不起作用的。

【2】在Jquery中,不难实现。可以根据URL获取锚点,从而进一步获得对应锚点对象,然后再让页面的滚动高度为其距离页面

顶部的偏移值就可以了。使得页面无论是重新载入还是其刷新,其后面的锚点都起作用。

$(function() {
  var url = window.location.toString();
  var id = url.split('#')[1];
  if (id) {
    var t = $('#' + id).offset().top;
    $(window).scrollTop(t);
  }
})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript图像处理思路及实现代码
Dec 25 Javascript
node.js中的fs.truncate方法使用说明
Dec 15 Javascript
浅谈JavaScript中的作用域和闭包问题
Jul 07 Javascript
jQuery插件boxScroll实现图片轮播特效
Jul 14 Javascript
浅谈JavaScript的全局变量与局部变量
Jun 10 Javascript
jQuery基于正则表达式的表单验证功能示例
Jan 21 Javascript
js实现图片左右滚动效果
Feb 27 Javascript
bootstrap实现的自适应页面简单应用示例
Mar 09 Javascript
JavaScript中undefined和null的区别
May 03 Javascript
基于JavaScript实现评论框展开和隐藏功能
Aug 25 Javascript
JS正则表达式验证密码强度
Mar 18 Javascript
nuxt 路由、过渡特效、中间件的实现代码
Nov 06 Javascript
JavaScript实现动态添加Form表单元素的方法示例
Aug 14 #Javascript
JavaScript实现的搜索及高亮显示功能示例
Aug 14 #Javascript
带你了解session和cookie作用原理区别和用法
Aug 14 #Javascript
react.js使用webpack搭配环境的入门教程
Aug 14 #Javascript
JS原生数据双向绑定实现代码
Aug 14 #Javascript
jQuery 中msgTips 顶部弹窗效果实现代码
Aug 14 #jQuery
关于在mongoose中填充外键的方法详解
Aug 14 #Javascript
You might like
Amazon Prime Video平台《无限住人 -IMMORTAL-》2020年开始TV放送!
2020/03/06 日漫
用PHP实现的随机广告显示代码
2007/06/14 PHP
PHP 上传文件的方法(类)
2009/07/30 PHP
php站内搜索并高亮显示关键字的实现代码
2011/12/29 PHP
yii2 页面底部加载css和js的技巧
2016/04/21 PHP
php array_multisort 对数组进行排序详解及实例代码
2016/10/27 PHP
对象的类型:本地对象(1)
2006/12/29 Javascript
javascript 不间断的图片滚动并可点击
2010/01/15 Javascript
javascript-简单的计算器实现步骤分解(附图)
2013/05/30 Javascript
JS实现随机数生成算法示例代码
2013/08/08 Javascript
js控制iframe的高度/宽度让其自适应内容
2014/04/09 Javascript
基于JavaScript代码实现随机漂浮图片广告
2016/01/05 Javascript
vue.js+Element实现表格里的增删改查
2017/01/18 Javascript
详谈js中数组(array)和对象(object)的区别
2017/02/27 Javascript
vue中for循环更改数据的实例代码(数据变化但页面数据未变)
2017/09/15 Javascript
vue.js中$set与数组更新方法
2018/03/08 Javascript
讲解vue-router之什么是动态路由
2018/05/28 Javascript
Vue使用vue-area-linkage实现地址三级联动效果的示例
2018/06/27 Javascript
微信小程序自定义弹窗滚动与页面滚动冲突的解决方法
2019/07/16 Javascript
使用Node.js在深度学习中做图片预处理的方法
2019/09/18 Javascript
vue实现分页加载效果
2019/12/24 Javascript
[05:46]2018完美盛典-《同梦共竞》
2018/12/17 DOTA
Python中用format函数格式化字符串的用法
2015/04/08 Python
python判断完全平方数的方法
2018/11/13 Python
Django ManyToManyField 跨越中间表查询的方法
2018/12/18 Python
解决python给列表里添加字典时被最后一个覆盖的问题
2019/01/21 Python
Python中zip()函数的简单用法举例
2019/09/02 Python
numpy中三维数组中加入元素后的位置详解
2019/11/28 Python
Django在Model保存前记录日志实例
2020/05/14 Python
tensorflow之读取jpg图像长和宽实例
2020/06/18 Python
如何基于python把文字图片写入word文档
2020/07/31 Python
.NET面试题:什么是反射
2016/09/30 面试题
电气自动化自荐信
2013/10/10 职场文书
企事业单位求职者的自我评价
2013/12/28 职场文书
2014年监理个人工作总结
2014/12/11 职场文书
2016年精神文明建设先进个人事迹材料
2016/02/29 职场文书