今天记录一个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

最新文章

  1. ABP(现代ASP.NET样板开发框架)系列之3、ABP分层架构
  2. ABP(现代ASP.NET样板开发框架)系列之16、ABP应用层——数据传输对象(DTOs)
  3. 创业日志N,一听到别人说创业我就怕
  4. Linux vim的安装和配置:
  5. hdu 1198 Farm Irrigation
  6. 内存(MRC)
  7. [转]Installing Memcached on Windows
  8. nginx+php+mysql+wordpress搭建简单站点 安装及配置过程
  9. 【php】php位运算及其高级应用
  10. 20165312 2017-2018-2《Java程序设计》课程总结
  11. SQLSERVER 2014 SP1 的服务器 日志文件无法收缩的处理
  12. WebService 学习记录
  13. boost asio 一个聊天的基本框架
  14. Flyweight模式(亨元模式)
  15. Hadoop-2.4.1学习之Streaming编程
  16. onchange事件可以使用于: &lt;input&gt;, &lt;select&gt;, 和 &lt;textarea&gt;。
  17. Python操作hdfs
  18. 【数据库】 SQLite 介绍
  19. 14. CTF综合靶机渗透(七)
  20. 51nod 1101 换零钱

热门文章

  1. xml技术基础
  2. 定位 - CoreLocation - 区域报警
  3. 两台主机打通ssh
  4. mysql 时间字段的函数 timestamp
  5. [HDOJ 5212] [BestCoder Round#39] Code 【0.0】
  6. C#中数据库连接的配置文件
  7. 【BZOJ 3473】 字符串 (后缀数组+RMQ+二分 | 广义SAM)
  8. UML 中关系详解以及在visio中的表示
  9. zabbix 通过key 获取
  10. 【HDOJ】3315 My Brute