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 相关文章推荐
基于jquery 的一个progressbar widge
Oct 29 Javascript
JavaScript实现信用卡校验方法
Apr 07 Javascript
jquery 获取select数组与name数组长度的实现代码
Jun 20 Javascript
深入理解vue.js双向绑定的实现原理
Dec 05 Javascript
学习使用jQuery表单验证插件和日历插件
Feb 13 Javascript
JS解析url查询参数的简单代码
Aug 06 Javascript
vue绑定class与行间样式style详解
Aug 16 Javascript
详解Webpack实战之构建 Electron 应用
Dec 25 Javascript
JSON数据中存在单个转义字符“\”的处理方法
Jul 11 Javascript
Angular6 Filter实现页面搜索的示例代码
Dec 02 Javascript
记录一次开发微信网页分享的步骤
May 07 Javascript
webpack常用构建优化策略小结
Nov 21 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
zend framework配置操作数据库实例分析
2012/12/06 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
2013/01/23 PHP
php数组添加元素方法小结
2014/12/20 PHP
PHP判断IP并转跳到相应城市分站的方法
2015/03/25 PHP
magento后台无法登录解决办法的两种方法
2016/12/09 PHP
js实现一个省市区三级联动选择框代码分享
2013/03/06 Javascript
理解JAVASCRIPT中hasOwnProperty()的作用
2013/06/05 Javascript
用js代码改变单选框选中状态的简单实例
2013/12/18 Javascript
jQuery:delegate中select()不起作用的解决方法(实例讲解)
2014/01/26 Javascript
解决js下referer兼容各大浏览器的方法
2014/11/03 Javascript
原生js实现自由拖拽弹窗代码demo
2016/06/29 Javascript
js中 计算两个日期间的工作日的简单实例
2016/08/08 Javascript
Bootstrap modal 多弹窗之叠加引起的滚动条遮罩阴影问题
2017/02/27 Javascript
jQuery实现拼图小游戏(实例讲解)
2017/07/24 jQuery
vue 父组件调用子组件方法及事件
2018/03/29 Javascript
浅谈Vue初学之props的驼峰命名
2018/07/19 Javascript
vue定义全局变量和全局方法的方法示例
2018/08/01 Javascript
JavaScript ES2019中的8个新特性详解
2019/02/20 Javascript
jQuery事件blur()方法的使用实例讲解
2019/03/30 jQuery
使用vue-cli3新建一个项目并写好基本配置(推荐)
2019/04/24 Javascript
babel7.x和webpack4.x配置vue项目的方法步骤
2019/05/12 Javascript
vue组件间通信六种方式(总结篇)
2019/05/15 Javascript
vue-cli 项目打包完成后运行文件路径报错问题
2019/07/19 Javascript
javascript canvas检测小球碰撞
2020/04/17 Javascript
在Vue中创建可重用的 Transition的方法
2020/06/02 Javascript
[00:26]TI7不朽珍藏III——冥界亚龙不朽展示
2017/07/15 DOTA
[01:08:24]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第一场 2月5日
2021/03/11 DOTA
浅析Python中的for 循环
2016/06/09 Python
PyQt5图形界面播放音乐的实例
2019/06/17 Python
python如何通过pyqt5实现进度条
2020/01/20 Python
高清屏中使用Canvas绘图出现模糊的问题及解决方法
2019/06/03 HTML / CSS
微软美国官方网站:Microsoft美国
2018/05/10 全球购物
车祸赔偿收入证明
2014/01/09 职场文书
大学生万能检讨书范例
2014/10/04 职场文书
表扬稿范文
2015/01/17 职场文书
校园之声广播稿
2015/08/18 职场文书