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 相关文章推荐
漂亮的widgets,支持换肤和后期开发新皮肤(2007-4-27已更新1.7alpha)
Apr 27 Javascript
js 第二代身份证号码的验证机制代码
May 12 Javascript
JQuery菜单效果的两个实例讲解(3)
Sep 17 Javascript
jquery结合html实现中英文页面切换
Nov 29 Javascript
jQuery中的deferred对象和extend方法详解
May 08 jQuery
vue中vee validate表单校验的几种基本使用
Jun 25 Javascript
JavaScript使用享元模式实现文件上传优化操作示例
Aug 07 Javascript
vue组件(全局,局部,动态加载组件)
Sep 02 Javascript
VUE安装使用教程详解
Jun 03 Javascript
jQuery pager.js 插件动态分页功能实例分析
Aug 02 jQuery
javascript中contains是否包含功能实现代码(扩展字符、数组、dom)
Apr 07 Javascript
在vue中created、mounted等方法使用小结
Jul 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
在php中取得image按钮传递的name值
2006/10/09 PHP
浅析PHP中strlen和mb_strlen的区别
2014/08/31 PHP
php each 返回数组中当前的键值对并将数组指针向前移动一步实例
2016/11/22 PHP
一键生成各种尺寸Icon的php脚本(实例)
2017/02/08 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
2020/04/26 PHP
Javascript查询DBpedia小应用实例学习
2013/03/07 Javascript
Enter转换为Tab的小例子(兼容IE,Firefox)
2013/11/14 Javascript
js实现头像图片切割缩放及无刷新上传图片的方法
2015/07/17 Javascript
javascript实现手机震动API代码
2015/08/05 Javascript
Jquery实现纵向横向菜单
2016/01/24 Javascript
基于JavaScript实现瀑布流布局(二)
2016/01/26 Javascript
Node.js编写爬虫的基本思路及抓取百度图片的实例分享
2016/03/12 Javascript
BootStrap CSS全局样式和表格样式源码解析
2017/01/20 Javascript
Ajax跨域实现代码(后台jsp)
2017/01/21 Javascript
关于echarts在节点显示动态数据及添加提示文本所遇到的问题
2018/04/20 Javascript
vue使用el-upload上传文件及Feign服务间传递文件的方法
2019/03/15 Javascript
深入解析Vue源码实例挂载与编译流程实现思路详解
2019/05/05 Javascript
微信小程序websocket实现即时聊天功能
2019/05/21 Javascript
Python中的MongoDB基本操作:连接、查询实例
2015/02/13 Python
python安装教程 Pycharm安装详细教程
2017/05/02 Python
python3+PyQt5+Qt Designer实现扩展对话框
2018/04/20 Python
[原创]Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】
2018/10/29 Python
scrapy-redis源码分析之发送POST请求详解
2019/05/15 Python
python使用itchat模块给心爱的人每天发天气预报
2019/11/25 Python
浅谈python print(xx, flush = True) 全网最清晰的解释
2020/02/21 Python
pyqt5中动画的使用详解
2020/04/01 Python
纯CSS打造(无图像无js)的非常流行的讲话(语音)气泡效果
2012/12/28 HTML / CSS
贝斯特韦斯特酒店集团官网:Best Western
2019/01/03 全球购物
英国领先的维生素和补充剂品牌:Higher Nature
2019/08/26 全球购物
俄罗斯极限运动网上商店:Board Shop №1
2020/12/18 全球购物
介绍一下Python中webbrowser的用法
2013/05/07 面试题
实习生个人找工作的自我评价
2013/10/30 职场文书
网络信息管理员岗位职责
2014/01/05 职场文书
酒店前厅员工辞职信
2014/01/08 职场文书
2014年办公室人员工作总结
2014/12/09 职场文书
MySQL学习之基础命令实操总结
2022/03/19 MySQL