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 相关文章推荐
Ext javascript建立超链接,进行事件处理的实现方法
Mar 22 Javascript
关于JQuery($.load)事件的用法和分析
Apr 09 Javascript
jquery中获取元素里某一特定子元素的代码
Dec 02 Javascript
jQuery入门之层次选择器实例简析
Dec 11 Javascript
简单理解vue中el、template、replace元素
Oct 27 Javascript
bootstrap css样式之表单
Jan 19 Javascript
微信小程序联网请求的轮播图
Jul 07 Javascript
Vue实现本地购物车功能
Dec 05 Javascript
小程序云开发获取不到数据库记录的解决方法
May 18 Javascript
基于Express框架使用POST传递Form数据
Aug 10 Javascript
axios实现文件上传并获取进度
Mar 25 Javascript
JS实现点星星消除小游戏
Mar 24 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自定义函数实现代码
2011/12/30 PHP
PHP使用Mysql事务实例解析
2014/09/08 PHP
php 生成Tab键或逗号分隔的CSV
2016/09/24 PHP
PHP递归实现汉诺塔问题的方法示例
2017/11/25 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
2014/01/14 Javascript
JavaScript设计模式之策略模式实例
2014/10/10 Javascript
原生JavaScript+LESS实现瀑布流
2014/12/12 Javascript
jQuery的 $.ajax防止重复提交的两种方法(推荐)
2016/10/14 Javascript
详解nodejs爬虫程序解决gbk等中文编码问题
2017/04/06 NodeJs
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
2017/10/19 jQuery
Vue2.0中集成UEditor富文本编辑器的方法
2018/03/03 Javascript
JavaScript事件委托原理与用法实例分析
2018/06/07 Javascript
json数据传到前台并解析展示成列表的方法
2018/08/06 Javascript
微信小程序获取用户绑定手机号方法示例
2019/07/21 Javascript
vue使用echarts画组织结构图
2021/02/06 Vue.js
[01:18]DOTA2超级联赛专访hanci ForLove淘汰感言曝光
2013/06/04 DOTA
Python列表list数组array用法实例解析
2014/10/28 Python
Python实现更改图片尺寸大小的方法(基于Pillow包)
2016/09/19 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
2018/03/19 Python
浅谈Python Opencv中gamma变换的使用详解
2018/04/02 Python
TensorFlow Session会话控制&amp;Variable变量详解
2018/07/30 Python
解决python中遇到字典里key值为None的情况,取不出来的问题
2018/10/17 Python
python查找指定文件夹下所有文件并按修改时间倒序排列的方法
2018/10/21 Python
简单了解python数组的基本操作
2019/11/26 Python
python脚本和网页有何区别
2020/07/02 Python
利于python脚本编写可视化nmap和masscan的方法
2020/12/29 Python
使用CSS3制作倾斜导航条和毛玻璃效果
2017/09/12 HTML / CSS
分享一个H5原生form表单的checkbox特效代码
2018/02/26 HTML / CSS
HTML5是否真的可以取代Flash
2010/02/10 HTML / CSS
Wiggle澳大利亚:自行车、跑步、游泳商店
2020/11/07 全球购物
网络教育自我鉴定
2013/11/01 职场文书
会计专业自荐信
2013/12/02 职场文书
幼儿园教师个人总结
2015/02/05 职场文书
《游戏公平》教学反思
2016/02/20 职场文书
多台电脑共享文件怎么设置?多台电脑共享文件操作教程
2022/04/08 数码科技