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 相关文章推荐
各浏览器对document.getElementById等方法的实现差异解析
Dec 05 Javascript
jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
Dec 05 Javascript
使用JS画图之点、线、面
Jan 12 Javascript
使用EVAL处理jqchart jquery 折线图返回数据无效的解决办法
Nov 26 Javascript
node.js express安装及示例网站搭建方法(分享)
Aug 22 Javascript
详解AngularJS如何实现跨域请求
Aug 22 Javascript
jQuery生成假加载动画效果
Dec 01 Javascript
jQuery validata插件实现方法
Jun 25 jQuery
vue.js实现标签页切换效果
Jun 07 Javascript
JavaScript设计模式之责任链模式实例分析
Jan 16 Javascript
基于vue实现简易打地鼠游戏
Aug 21 Javascript
vue实现防抖的实例代码
Jan 11 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
回帖脱衣服的图片实现代码
2014/02/15 PHP
PHP查找数值数组中不重复最大和最小的10个数的方法
2015/04/20 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
2020/12/16 PHP
Chrome中模态对话框showModalDialog返回值问题的解决方法
2010/05/25 Javascript
基于jquery的代码显示区域自动拉长效果
2011/12/07 Javascript
js点击更换背景颜色或图片的实例代码
2013/06/25 Javascript
如何让页面加载完成后执行js
2013/06/26 Javascript
JavaScript的strict模式与with关键字介绍
2014/02/08 Javascript
JQuery显示、隐藏div的几种方法简明总结
2015/04/16 Javascript
jquery.validate使用时遇到的问题
2015/05/25 Javascript
js代码实现随机颜色的小方块
2015/07/30 Javascript
jQuery与getJson结合的用法实例
2015/08/07 Javascript
javascript实现简单加载随机色方块
2015/12/25 Javascript
web打印小结
2017/01/11 Javascript
利用Chrome DevTools直接调试Node.js和JavaScript的方法详解(并行)
2017/02/16 Javascript
js 获取html5的data属性实现方法
2017/07/28 Javascript
vue实现的上传图片到数据库并显示到页面功能示例
2018/03/17 Javascript
微信小程序实现图片上传
2019/05/23 Javascript
vue+elementui 对话框取消 表单验证重置示例
2019/10/29 Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
2020/07/21 Javascript
python使用rsa加密算法模块模拟新浪微博登录
2014/01/22 Python
Python常用小技巧总结
2015/06/01 Python
python实现单向链表详解
2018/02/08 Python
TensorFlow变量管理详解
2018/03/10 Python
Python 修改列表中的元素方法
2018/06/26 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
2020/06/18 Python
Python selenium如何打包静态网页并下载
2020/08/12 Python
党员承诺书内容
2014/03/26 职场文书
关于安全的演讲稿
2014/05/09 职场文书
高职教师先进事迹材料
2014/08/24 职场文书
投标承诺函格式
2015/01/21 职场文书
幼儿园六一主持词
2015/06/30 职场文书
python中如何对多变量连续赋值
2021/06/03 Python
Golang 链表的学习和使用
2022/04/19 Golang
spring 项目实现限流方法示例
2022/07/15 Java/Android