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时区函数介绍
Sep 14 Javascript
javascript修改IMG标签的src问题
Mar 28 Javascript
drag-and-drop实现图片浏览器预览
Aug 06 Javascript
基于JavaScript实现添加到购物车效果附源码下载
Aug 22 Javascript
微信小程序实战之自定义toast(6)
Apr 18 Javascript
Web制作验证码功能实例代码
Jun 19 Javascript
详解升级react-router 4 踩坑指南
Aug 14 Javascript
JavaScript动态创建二维数组的方法示例
Feb 01 Javascript
一秒学会微信小程序制作table表格
Feb 14 Javascript
微信小程序时间标签和时间范围的联动效果
Feb 15 Javascript
JS字符串与二进制的相互转化实例代码详解
Jun 28 Javascript
js里面的变量范围分享
Jul 18 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
php 动态多文件上传
2009/01/18 PHP
php SQL之where语句生成器
2009/03/24 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
2014/05/08 PHP
php实现的发送带附件邮件类实例
2014/09/22 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
2016/05/11 PHP
php 使用fopen函数创建、打开文件详解及实例代码
2016/09/24 PHP
jscript之List Excel Color Values
2007/06/13 Javascript
基于jQuery的倒计时实现代码
2012/05/30 Javascript
jquery中文乱码的多种解决方法
2013/06/21 Javascript
JS正则表达式验证数字代码
2014/01/28 Javascript
jquery淡化版banner异步图片文字效果切换图片特效
2014/04/08 Javascript
谈谈Jquery ajax中success和complete有哪些不同点
2015/11/20 Javascript
实践中学习AngularJS表单
2016/03/21 Javascript
javascript仿京东导航左侧分类导航下拉菜单效果
2020/11/25 Javascript
JavaScript中的await/async的作用和用法
2016/10/31 Javascript
仿iframe效果Aajx文件上传实例
2016/11/18 Javascript
JS实现为动态添加的元素增加事件功能示例【基于事件委托】
2018/03/21 Javascript
node app 打包工具pkg的具体使用
2019/01/17 Javascript
教你使用vue-cli快速构建的小说阅读器
2019/05/13 Javascript
vue 对axios get pust put delete封装的实例代码
2020/01/05 Javascript
[00:33]2018DOTA2亚洲邀请赛TNC出场
2018/04/04 DOTA
python数据结构之二叉树的遍历实例
2014/04/29 Python
Python基于opencv的图像压缩算法实例分析
2018/05/03 Python
创建pycharm的自定义python模板方法
2018/05/23 Python
Python从列表推导到zip()函数的5种技巧总结
2019/10/23 Python
pytorch 准备、训练和测试自己的图片数据的方法
2020/01/10 Python
python seaborn heatmap可视化相关性矩阵实例
2020/06/03 Python
html5 figure和figcaption的使用方法
2018/09/10 HTML / CSS
英国最大的女性服装零售商:Dorothy Perkins
2017/03/30 全球购物
Falconeri美国官网:由羊绒和羊毛制成的针织服装
2018/04/08 全球购物
护理助产毕业生的求职信
2014/03/02 职场文书
入党自荐书范文
2014/03/09 职场文书
门前三包责任书
2014/04/15 职场文书
2014物价局民主生活会对照检查材料思想汇报
2014/09/24 职场文书
地道战观后感2000字
2015/06/04 职场文书
《王者天下》第4季首话新剧照 4月9日正式开播
2022/04/07 日漫