今天记录一个js功能,发现该功能很实用,拿出来跟大家分享。

  这里我使用js的window.scrollTo()函数,该函数的用法给大家重复一下,语法为scrollTo(x,y),这里x表示在窗口文档显示区上角显示的文档的x坐标,y表示在窗口文档显示区上角显示的文档的y坐标。所有一般网页scrollTo(0,n)可以达到纵向的滚动,但我这里用到的是横向滚动,像win8一样的效果,使用为scrollTo(n,0)。

  为了达到点击导航栏横向移动到相应的功能模块,我们把每个功能模块的div设置一个Id,通过Id获得该功能模块距离网页左边的位置为多少!我们可以通过元素的offsetLeft属性获得,写成为:document.getElementbyId(id).offsetLeft,那移动到功能模块位置我们简单的调用js语句window.scrollTo(document.getElementbyId(id).offsetLeft)就可以做到!如果这么简单我就不在这里辛苦写博客记录这个东西啦!

  我要达到的效果是“慢慢移动”到这个使用js实现的html锚的地方,锚就是上面说的功能模块的div,使用该div的Id来操控这个div。那我们如何慢慢的移动到锚的地方呢?这是一个平行移动的效果,当然看来我实现的过程你也可以写出纵向移动的效果。

  既然需要从当前的位置移动到指定的位置,我们得知道当前的位置,通过百度一些资料得知window.pageXOffset可以获取当前横向滚动条距离坐标的位置。为了从当前位置window.pageXOffset平滑移动到目标位置document.getElementbyId(id).offsetLeft,我们等分之间的距离例如10等分Xoffset10=Math.round((window.pageXOffset-ocument.getElementbyId(id).offsetLeft)/10);每个一段时间添加一次,知道相近的时候停止!

  最后把代码给大家,希望能帮助到里,并且理解其中的‘精髓’所在,如果有问题敬请留意。

 $(function () {
$('#Nav li').click(function (e) {
var divId = $(this).attr('referToDiv');
var scrollTox = document.getElementById(divId).offsetLeft - document.getElementById("divForumSupport").offsetLeft;
var pageXOffset = window.pageXOffset;
Scrollx(pageXOffset, scrollTox);
});
});
var isFirstEnter = true;
var Xoffset10 , addXoffset;
function Scrollx(oldXoffset, newXoffset) {
if (isFirstEnter)
{
Xoffset10 = Math.round((newXoffset - oldXoffset) / 10);
addXoffset = oldXoffset;
isFirstEnter = false;
}
addXoffset+=Xoffset10;
if ((oldXoffset <= newXoffset) == (addXoffset < newXoffset))
{
window.scrollTo(addXoffset, 0);
window.setTimeout(function () { Scrollx(oldXoffset, newXoffset) }, 1)
}
else
{
window.scrollTo(newXoffset, 0);
isFirstEnter = true;
}
}

事例下载地址:http://files.cnblogs.com/zhangxl/Html5Sample1.zip

使用js实现html锚功能,可以任意定位锚的位置,比锚更加灵活的更多相关文章

  1. JS 实现百度搜索功能

    今天我们来用JS实现百度搜索功能,下面上代码: HTML部分: <!DOCTYPE html> <html> <head> <meta charset=&qu ...

  2. 原生JS实现购物车结算功能代码+zepto版

    html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...

  3. 使用JS来实现验证码功能

    最近想为自己的Django博客添加验证码功能,本来想使用第三方库来实现的,不过考虑到添加第三方库对性能的影响,以及第三方库是否安全可靠的问题,还是用自己的代码来实现吧.反正用JS来实现验证码功能又不是 ...

  4. ASP.NET MVC 4 RC的JS/CSS打包压缩功能 (转载)

    ASP.NET MVC 4 RC的JS/CSS打包压缩功能 打包(Bundling)及压缩(Minification)指的是将多个js文件或css文件打包成单一文件并压缩的做法,如此可减少浏览器需下载 ...

  5. Js元素拖拽功能实现

    Js元素拖拽功能实现 需要解决的问题 最近项目遇到了一个问题,就是用户某个操作需要弹出一个自定义的内容输入框,但是有个缺点,当浏览太大的时候没办法点击确认和取消按钮,应为这个弹出框是采用绝对定位的,取 ...

  6. js中记住密码功能

    js中记住密码功能(在前端实现) 直接上例子(如果你也要实现的话注意改一些变量名称,jsp代码不包含样式) Jsp代码: <form class="am-form tpl-form-l ...

  7. JS 上传图片 + 预览功能(一)

    JS 上传图片 + 预览功能 <body> <input type="file" id="fileimg1" style="disp ...

  8. js实现回到顶部功能

    js实现回到顶部功能 一.总结 一句话总结: 可以通过js或者jquery可以很快的控制页面的属性,比如高度等等 //设置当前视口的顶端数值 var setScrollTop = function(t ...

  9. [java面试]逻辑推理6 10 18 32 下一个数?编程实现输入任意一个N位置,该数是多少?java实现

    题目: 6 10 18 32 下一个数?编程实现输入任意一个N位置,该数是多少? 10 = 6 + 4         4 18 = 10 + 8        4 + 4  32 = 18 + 14 ...

随机推荐

  1. 翻译:ECMAScript 5.1简介

    简介 ECMAScript 5.1 (或仅 ES5) 是ECMAScript(基于JavaScript的规范)标准最新修正. 与HTML5规范进程本质类似,ES5通过对现有JavaScript方法添加 ...

  2. Poco之ftp获取文件列表以及下载文件

    #include <iostream>#include <string>#include <vector>#include <algorithm>#in ...

  3. jquery mobile页面跳转后,必须重新刷新页面js方可有效

    最近在做个项目,用到jquery mobile,很陌生对他,问题一个个的来,那就要一个个解决,找了一天这个问题,放可明白:首先明白jqm里面页面跳转默认都是通过ajax请求的,必须重新刷新页面js方可 ...

  4. linux中轻松使用backspace和上下按键

    linux下使用sqlplus真是太费事儿了,backspace和上下键均出现乱码.在公司服务器上操作时,只能先用delete代替backspace,上下键就直接重新输入代替了,很费时间.今天在自己机 ...

  5. PDF判断打印是A4还是B5

    打印材料通畅就是这样两个规格,之前经常受其困扰,B5规格达成A4会显得字很大,当然本身A4就跟大:如果是A4打成B5字很小的: 其实,判断依据就是Adobe reader里面的,当鼠标滑向左下角的时候 ...

  6. Windows server2008 搭建ASP接口访问连接oracle数据库全过程记录--备用

    真的是太不容易了,以前的时候在window server 2003上面搭建了一套asp+oracle的接口系统,就费了好大的劲儿,其实那会迷迷瞪瞪的也不知道怎么的就弄好了,也懒得管了.OK,从昨天到今 ...

  7. MySQL中的max_connections和max_user_connections 及 MySQL服务器最大连接数的合理设置

    max_connections 是指整个mysql服务器的最大连接数: max_user_connections 是指每个数据库用户的最大连接数,比如:虚拟主机可以用这个参数控制每个虚拟主机用户的数据 ...

  8. DM8168 debug continue... ...

    1.boot   VFS: Unable to mount root fs via NFS, trying floppy.   VFS: Cannot open root device "n ...

  9. [原博客] BZOJ 2242 [SDOI2011] 计算器

    题目链接 noip级数论模版题了吧.让求三个东西: 给定y,z,p,计算`Y^Z Mod P` 的值. 给定y,z,p,计算满足`xy≡ Z ( mod P )`的最小非负整数. 给定y,z,p,计算 ...

  10. Cxf + Spring3.0 入门开发WebService

    转自原文地址:http://sunny.blog.51cto.com/182601/625540/ 由于公司业务需求, 需要使用WebService技术对外提供服务,以前没有做过类似的项目,在网上搜寻 ...