JavaScript控制网页平滑滚动到指定元素位置的方法


Posted in Javascript onApril 17, 2015

本文实例讲述了JavaScript控制网页平滑滚动到指定元素位置的方法。分享给大家供大家参考。具体如下:

function elementPosition(obj) {
  var curleft = 0, curtop = 0;
  if (obj.offsetParent) {
   curleft = obj.offsetLeft;
   curtop = obj.offsetTop;
   while (obj = obj.offsetParent) {
    curleft += obj.offsetLeft;
    curtop += obj.offsetTop;
   }
  }
  return { x: curleft, y: curtop };
}
function ScrollToControl(id)
{
 var elem = document.getElementById(id);
 var scrollPos = elementPosition(elem).y;
 scrollPos = scrollPos - document.documentElement.scrollTop;
 var remainder = scrollPos % 50;
 var repeatTimes = (scrollPos - remainder) / 50;
 ScrollSmoothly(scrollPos,repeatTimes);
 window.scrollBy(0,remainder);
}
var repeatCount = 0;
var cTimeout;
var timeoutIntervals = new Array();
var timeoutIntervalSpeed;
function ScrollSmoothly(scrollPos,repeatTimes)
{
 if(repeatCount < repeatTimes)
 {
 window.scrollBy(0,50);
 }
 else
 {
 repeatCount = 0;
 clearTimeout(cTimeout);
 return;
 }
repeatCount++;
cTimeout = setTimeout("ScrollSmoothly('"+scrollPos+"','"+repeatTimes+"')",10);
}

使用方法:

ScrollToControl('elementID');

页面将会平滑的滚动到元素elementID所在的位置

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
JQuery里选择超链接的实现代码
May 22 Javascript
JavaScript获取table中某一列的值的方法
May 06 Javascript
JS中字符串trim()使用示例
May 26 Javascript
js支持键盘控制的左右切换立体式图片轮播效果代码分享
Aug 26 Javascript
jQuery图片轮播插件——前端开发必看
May 31 Javascript
jQuery拖拽通过八个点改变div大小
Nov 29 Javascript
轻松理解JavaScript之AJAX
Mar 15 Javascript
前端常见跨域解决方案(全)
Sep 19 Javascript
Django与Vue语法的冲突问题完美解决方法
Dec 14 Javascript
vue实现文章内容过长点击阅读全文功能的实例
Dec 28 Javascript
vue根据值给予不同class的实例
Sep 29 Javascript
解决Vue中使用keepAlive不缓存问题
Aug 04 Javascript
原生js实现移动开发轮播图、相册滑动特效
Apr 17 #Javascript
JavaScript实现简单图片翻转的方法
Apr 17 #Javascript
JavaScript实现将xml转换成html table表格的方法
Apr 17 #Javascript
JavaScript实现的简单幂函数实例
Apr 17 #Javascript
js面向对象之公有、私有、静态属性和方法详解
Apr 17 #Javascript
jQuery中toggle()函数的使用实例
Apr 17 #Javascript
JQuery实现可直接编辑的表格
Apr 16 #Javascript
You might like
SONY ICF-F10中波修复记
2021/03/02 无线电
动态网站web开发 PHP、ASP还是ASP.NET
2006/10/09 PHP
利用PHP实现与ASP Banner组件相似的类
2006/10/09 PHP
模板引擎正则表达式调试小技巧
2011/07/20 PHP
php一些错误处理的方法与技巧总结
2013/08/10 PHP
PHP实现数字补零功能的2个函数介绍
2014/05/12 PHP
smarty内置函数{loteral}、{ldelim}和{rdelim}用法实例
2015/01/22 PHP
PHP使用适合阅读的格式显示文件大小的方法
2015/03/05 PHP
TNC vs IO BO3 第一场2.13
2021/03/10 DOTA
JavaScript flash复制库类 Zero Clipboard
2011/01/17 Javascript
JS求平均值的小例子
2013/11/29 Javascript
javascript常用的正则表达式实例
2014/05/15 Javascript
jQuery判断指定id的对象是否存在的方法
2015/05/22 Javascript
JS实现选择TextArea内文本的方法
2015/08/03 Javascript
jquery中validate与form插件提交的方式小结
2016/03/26 Javascript
Angular2 父子组件数据通信实例
2017/06/22 Javascript
Vue2.0中集成UEditor富文本编辑器的方法
2018/03/03 Javascript
解决npm管理员身份install时出现权限的问题
2018/03/16 Javascript
关于jquery中attr()和prop()方法的区别
2018/05/28 jQuery
浅析vue-router jquery和params传参(接收参数)$router $route的区别
2018/08/03 jQuery
[11:12]2018DOTA2国际邀请赛寻真——绿色长城OpTic
2018/08/10 DOTA
Python 中 Meta Classes详解
2016/02/13 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
2018/06/14 Python
使用Python-OpenCV向图片添加噪声的实现(高斯噪声、椒盐噪声)
2019/05/28 Python
python 两个一样的字符串用==结果为false问题的解决
2020/03/12 Python
Python如何在main中调用函数内的函数方式
2020/06/01 Python
在python下实现word2vec词向量训练与加载实例
2020/06/09 Python
python 使用三引号时容易犯的小错误
2020/10/21 Python
荷兰手表网站:Watch2Day
2018/07/02 全球购物
英国美发和美容产品商城:HQhair
2019/02/08 全球购物
销售顾问工作计划书
2014/08/15 职场文书
证券区域经理岗位职责
2015/04/10 职场文书
2015秋季开学典礼演讲稿
2015/07/16 职场文书
庭外和解协议书
2016/03/23 职场文书
退休劳动合同怎么写?
2019/10/25 职场文书
总结Python连接CS2000的详细步骤
2021/06/23 Python