1.锚点跳转简介

锚点其实就是可以让页面定位到某个位置上的点。在高度较高的页面中经常见到。比如百度的百科页面,wiki中的page内容。

我知道实现锚点的跳转有两种形式,一种是a标签+name属性;还有一种就是使用标签的id属性。百度百科就是使用a标签的name属性来实现锚点跳转的。

比如:

<a href="#1">1跳转</a>
<a name="1"></a>

但是上种方法使用了一个空标签,而且有时候会出现锚点失效。所以建议采用id来绑定锚点,代码如下:

<a href="#1">1跳转</a>
<a id="1"></a>

通过这种方式,我们可以实现在目录列表很长,无法一页完全展示的情况下,设置一个直达顶部或直达底部(甚至其他位置)的操作,加强用户体验感。

直达顶部,可以设置锚点在body之前(或相应元素的位置),同理直达底部也一样。

示例代码如下:

/*直达顶部*/
$('<a href="#top">back to top</a>').insertAfter('div.chapter p');
$('<a id="top"></a>').prependTo('body');
/*直达底部*/
$('<a href="#bottom">arrive to bottom</a>').insertAfter('div.chapter p');
$('<a id="bottom"></a>').appendTo('body');

2.含锚点跳转的URL地址

【1】关于#

在页面的制作中,”#”的符号很常见,并且具有通用性。基本上,其表示的含义是id选择符。例如:CSS中#header{}就表示id为header的标签的样式如何;在jQuery中,$(“#header”)表示选择id为header的标签为JQuery对象;同样的,在页面的URL中,”#”也可以理解为id选择符之意,也就是页面跳转到含URL指向的id的标签处。

例如输入一个地址 http://baike.baidu.com/view/121416.htm?pf=1#3

这个地址中末尾有个”#”,这个就相当于告诉浏览器要跳转了,#后面跟着的3表示会在http://baike.baidu.com/view/121416.htm?pf=1 的页面中寻找符合”#3”特点的标签,并且执行跳转。

【2】关于空锚点指向

如果URL中的”#”后面跟随的字符id在文中找不到,就会有两种情况:如果是在当前页面,除了URL地址变化了,其它的不会改变,页面不会有跳转;如果是从其它页面跳转过来,则页面会在顶部显示,”#”基本就是聋子的耳朵——摆设。

3.JQuery下锚点的平滑跳转 

对于锚点的平滑跳转,在一般的商业性质的网站上,权衡来说,要谨慎使用。

例如:让页面平滑滚动到一个id为box的元素处,则JQuery代码只要一句话,关键位置 如下:

$(“html,body”).animate({scrollTop:$(“#box”).offset().top},1000)

其中animate为JQuery的自定义动画方法,$(“#box”).offset().top表示id为box的JQuery对象距离页面顶部的偏移值,1000表示平滑动画执行的时间为1000毫秒,也就是1秒。

4.IE下锚点刷新失效及JQuery下的解决

【1】关于锚点刷新失效

锚点刷新失效就是指当按下刷新键F5时,即使此时URL的后面就随锚点,此锚点也是不起作用的。

【2】在JQuery中,不难实现。可以根据URL获取锚点,从而进一步获得对应锚点对象,然后再让页面的滚动高度为其距离页面顶部的偏移值就可以了。使得页面无论是重新载入还是其刷新,其后面的锚点都起作用。

其js代码如下:

$(function(){
var url = window.location.toString();
var id = url.split(“#”)[1];
if(id){
var t = $(“#”+id).offset().top;
$(window).scrollTop(t);
}
});

JQuery 根据ID在页面中定位的更多相关文章

  1. jQuery 互相调用iframe页面中js的方法

    1,子iframe内调用父类函数方法: window.parent.func(); 2,子Iframe中获取父界面的元素: $("#xx", window.parent.docum ...

  2. UI自动化测试(三)对页面中定位到的元素对象做相应操作

    前两天分别讲述了UI自动化测试基础以及对页面元素该如何进行定位,这一篇自然就是对定位到的页面元素对象进行相应操作啦. 阅读目录 1.常用操作元素对象的方法 2.鼠标事件操作 3.键盘事件操作 4.We ...

  3. 用jquery将多个页面中相似页面显示到一个页面并实现来回跳转

    今天遇到一个问题,客户说页面来回跳转太麻烦了,需要把相似的页面做到一个页面上去. 接下来说一下记录一下解决方法. 首先这是三个页面中相似的Div: <div class="wenti& ...

  4. jquery怎样获取html页面中的data-xxx

    $(this).attr("data-id") // will return the string "123"or .data() (if you use ne ...

  5. jQuery动态的给页面中添加一条样式表的链接

    HTML部分: <input type="button" value="单击" onclick="getbody()" /> & ...

  6. 解决同一页面中两个iframe互相调用jquery,js函数

    这一个月又没更新博客,唉,懒癌又犯了,今天解决了一个问题,关于两个iframe互相调用jquery函数方法 a.html中有两个iframe,如下: <iframe width="10 ...

  7. Jquery如何获得<iframe>嵌套页面中的元素

    DOM方法:父窗口操作IFRAME:window.frames["iframeSon"].documentIFRAME操作父窗口: window.parent.documentjq ...

  8. 弹出框页面中使用jquery.validate验证控件

    弹出框页面中使用jquery.validate验证控件有几个问题需要解决: 1,弹出框的提交事件完成后如何关闭弹出框页面? 2,提交不成功如何返回当前页? 3,如果知道验证事件成功? 之前笔者都是JS ...

  9. 页面中php传值后循环列表js获取点击的id

    页面中php传值后循环列表js获取点击的id值进行js操作 <script type="text/javascript" src="__PUBLIC__/js/jq ...

随机推荐

  1. Angular企业级开发(9)-前后端分离之后添加验证码

    1.背景介绍 团队开发的项目,前端基于Bootstrap+AngularJS,后端Spring MVC以RESTful接口给前端调用.开发和部署都是前后端分离.项目简单部署图如下,因为后台同时采用微服 ...

  2. 树链剖分-SPOJ375(QTREE)

    QTREE - Query on a tree You are given a tree (an acyclic undirected connected graph) with N nodes, a ...

  3. (21)IO流之对象的序列化和反序列化流ObjectOutputStream和ObjectInputStream

    当创建对象时,程序运行时它就会存在,但是程序停止时,对象也就消失了.但是如果希望对象在程序不运行的情况下仍能存在并保存其信息,将会非常有用,对象将被重建并且拥有与程序上次运行时拥有的信息相同.可以使用 ...

  4. ICC_lab总结——ICC_lab3:布局

    PS:字丑,禁止转载. 做到了ICC workshop的第三个实验,理论与实践相结合,于是,先放一张总结图,这张总结图来自前面的博客,放在这里用来体现理论和实践的联系: 这个就是布局的理论部分,在IC ...

  5. CSS与HTML5响应式图片

    随着 Retina 屏幕的逐渐普及,网页中对图片的适配要求也越来越高.如何让图片在放大了两倍的 Retina 屏幕显示依然清晰,曾经一度困扰着网页开发者,好在 CSS3 与 HTML5 已经着力在改变 ...

  6. Jmeter-元件的作用域和执行顺序

    Jmeter有8类可执行的元件,包括:逻辑控制器.配置元件.定时器.前置处理器.取样器.后置处理器.断言和监听器. 测试计划和线程组不属于元件. 1)取样器(Sampler):不与其他元件发生交互作用 ...

  7. Omi架构与React Fiber

    原文链接-https://github.com/AlloyTeam/omi/tree/master/tutorial 写在前面 Omi框架在架构设计的时候就决定把update的控制权交给了开发者,视灵 ...

  8. java之泛型解说

    1.集合中只能装入引用数据类型,不能装入基本数据类型.如,装入int类型的数值123会自动装箱. 2.开发人员装入集合的数据类型不确定,所以它被设计成可以装入所有的Object. 3.新的问题产生,装 ...

  9. [编织消息框架][JAVA核心技术]动态代理应用2

    接下来如何实现 第一步:先把服务类,调用方法转换成数字,方便传输 第二步:提取元信息,提取又有三种方式,三种各有优点,最优方式是第一种 1.编译java时处理 2.程序启动时处理,预处理 3.调用时处 ...

  10. (转)POPTEST创始人李爱然:谢谢,帮助我的朋友!!!!

    2015年11月15日,脉脉上随意浏览信息.每天有很多人加我,我也会主动加一些人.脉脉的广告语“打通职场人脉”,很直白的告诉我们脉脉是用来找人办事的.简单明了,不用故作清高. “利”,有利可图便是“友 ...