JS如何实现在页面上快速定位(锚点跳转问题)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JS如何实现在页⾯上快速定位(锚点跳转问题)
本⽂介绍了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】关于#
【2】关于空锚点指向
如果URL中的#后⾯跟随的字符id在⽂中找不到,就会有两种情况:如果是在当前页⾯,除了URL地址变化了,其他的不会改变,页⾯不会有跳转;如果是从其他页⾯跳转过来,则页⾯会在顶部显⽰,'#'基本就是摆设。
【3】window.location.hash
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);
}
})
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。