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 相关文章推荐
利用location.hash实现跨域iframe自适应
May 04 Javascript
Web开发之JavaScript
Mar 29 Javascript
jquery定时滑出可最小化的底部提示层特效代码
Oct 02 Javascript
node.js中的fs.chmod方法使用说明
Dec 18 Javascript
JavaScript模拟可展开、拖动与关闭的聊天窗口实例
May 12 Javascript
jQuery点击其他地方时菜单消失的实现方法
Apr 22 Javascript
jquery结合html实现中英文页面切换
Nov 29 Javascript
JavaScript事件方法(实例讲解)
Jun 27 Javascript
JS数组交集、并集、差集的示例代码
Aug 23 Javascript
ES6入门教程之变量的解构赋值详解
Apr 13 Javascript
vue使用localStorage保存登录信息 适用于移动端、PC端
May 27 Javascript
vue实现两个区域滚动条同步滚动
Dec 13 Vue.js
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
兼容PHP5的PHP目录管理函数库
2008/07/10 PHP
详解PHP中instanceof关键字及instanceof关键字有什么作用
2015/11/05 PHP
Joomla开启SEF的方法
2016/05/04 PHP
js传值 判断
2006/10/26 Javascript
createElement动态创建HTML对象脚本代码
2008/11/24 Javascript
Jquery Ajax学习实例6 向WebService发出请求,返回DataSet(XML) 异步调用
2010/03/18 Javascript
一些经常会用到的Javascript检测函数
2010/05/31 Javascript
jQuery调用WebService的实现代码
2011/06/19 Javascript
js设置组合快捷键/tabindex功能的方法
2013/11/21 Javascript
一个判断抢购时间是否到达的简单的js函数
2014/06/23 Javascript
js鼠标滑过图片震动特效的方法
2015/02/17 Javascript
JavaScript调用客户端Java程序的方法
2015/07/27 Javascript
AngularJS中transclude用法详解
2016/11/03 Javascript
JavaScript实现水平进度条拖拽效果
2017/01/18 Javascript
jquery实现弹窗功能(窗口居中显示)
2017/02/27 Javascript
Bootstrap标签页(Tab)插件使用方法
2017/03/21 Javascript
详解Node.js利用node-git-server快速搭建git服务器
2017/09/27 Javascript
一篇文章,教你学会Vue CLI 插件开发
2019/04/17 Javascript
JS运算符简单用法示例
2020/01/19 Javascript
分享15个最受欢迎的Python开源框架
2014/07/13 Python
Python脚本实现代码行数统计代码分享
2015/03/10 Python
Python虚拟环境Virtualenv使用教程
2015/05/18 Python
Python3实现从指定路径查找文件的方法
2015/05/22 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
2018/05/04 Python
python实现杨氏矩阵查找
2019/03/02 Python
利用Python实现手机短信监控通知的方法
2019/07/22 Python
德国前卫设计师时装在线商店:Luxury Loft
2019/11/04 全球购物
美国美食礼品篮网站:Gourmet Gift Baskets
2019/12/15 全球购物
致800米运动员广播稿
2014/02/16 职场文书
伦敦奥运会口号
2014/06/13 职场文书
路政管理求职信
2014/06/18 职场文书
关于有小孩的离婚协议书
2014/10/26 职场文书
2015年乡镇党务公开工作总结
2015/05/19 职场文书
详解Redis基本命令与使用场景
2021/06/01 Redis
spring cloud 配置中心native配置方式
2021/09/25 Java/Android
Python数据结构之队列详解
2022/03/21 Python