javascript之循环停顿上下滚动
时间:2024-11-19 19:02:57
extractNodes函数解决各浏览器的节点计算问题。FireFox把换行符也算成一个节点,很不合理啊。
先用appendChild复制前面的四个节点到底部,使得头尾是一样的内容,以作后用。记得做flash补间循环运动的时候就是这样要头尾一样。
通过setInterval隔时运行rolltxt函数。
rolltxt函数首先计算的是间隔停顿的高度,滚动多高就要停顿一下,这个高度我也不知道怎么算出来的,跟CSS有关系,我是试出来的
用求余数的方法可以判断是否已经滚过了所设的间隔高度。如果余数不等于0就继续加1滚动。如果余数为0说明已经滚动了所设的间隔高度,要在这里停顿了。
设一个变量settime来计算时间,加到50的时候settime清零,滚动继续,这个50我没算过单位是什么,反正随我高兴。
差不到这样已经能停顿滚动了,但是还有一个问题,没有限定最高值,滚动一直滚啊滚啊,当然是会出毛病了。滚到哪再重头开始滚好呢?当然是滚到尾部跟头一样位置的时候,网页高度减去可见高度就对了,为什么这么算?这个自己比划比划就知道了。
循环停顿上下滚动已经大功告成了,不信你试试
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1- transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>循环停顿上下滚动</title> <style type="text/css"> #block2{height:23px;width:500px;border:#ccc 1px solid;font-size:12px;text-align:center;} #block2 ul{list-style:outside none none;height:17px;padding:3px 0;overflow:hidden;margin:0;} #block2 ul li{float:left;display:inline;margin:2px 0;height:14px;width:24.9%;} #block2 ul li a{text-decoration:none;} </style> </head> <body> <div id="block2"> <ul id="rolltxt"> <li>asp之家1</li> <li>asp之家2</li> <li>asp之家3</li> <li>asp之家4</li> <li>asp之家5</li> <li>asp之家6</li> <li>asp之家7</li> <li>asp之家8</li> <li>asp之家9</li> <li>asp之家10</li> <li>asp之家11</li> <li>asp之家12</li> <li>asp之家13</li> <li>asp之家14</li> <li>asp之家15</li> <li>asp之家16</li> </ul> <script type="text/javascript"> function extractNodes(pNode){ if(pNode.nodeType == 3)return null; var node,nodes = new Array(); for(var i=0;node= pNode.childNodes[i];i++){ if(node.nodeType == 1)nodes.push(node); } return nodes; } var obj=document.getElementById("rolltxt"); for(i=0;i<4;i++){ obj.appendChild(extractNodes(obj)[i].cloneNode(true)); } settime=0; var t=setInterval(rolltxt,50); function rolltxt(){ if(obj.scrollTop % (obj.clientHeight-5) ==0){ settime+=1; if(settime==50){ obj.scrollTop+=1; settime=0; } }else{ obj.scrollTop+=1; if(obj.scrollTop==(obj.scrollHeight-obj.clientHeight)){ obj.scrollTop=0; } } } obj.onmouseover=function(){clearInterval(t)} obj.onmouseout=function(){t=setInterval(rolltxt,50)} </script> </div> </body> </html>
标签:javascript之循环停顿上下滚动
0
投稿
猜你喜欢
OpenCV图像识别之姿态估计Pose Estimation学习
2023-08-10 14:25:28
JavaScript基于setTimeout实现计数的方法
2024-04-16 09:49:53
numpy增加维度、删除维度的方法
2023-12-07 22:29:01
sqlserver存储过程中SELECT 与 SET 对变量赋值的区别
2024-01-14 09:50:26
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
2024-04-28 10:18:32
Mysql最新版8.0.21下载安装配置教程详解
2024-01-21 23:58:17
VUE前端cookie简单操作
2024-04-30 08:44:57
Python监听键盘和鼠标事件的示例代码
2022-06-14 07:05:23
php让json_encode不自动转义斜杠“/”的方法
2023-08-19 17:04:28
在ASP中用FormatDateTime格式化日期
2010-08-08 19:16:00
最新PyCharm从安装到PyCharm永久激活再到PyCharm官方中文汉化详细教程
2022-09-24 01:38:47
SQL查询入门(中篇)
2011-09-30 11:15:09
centos 下面安装python2.7 +pip +mysqld
2024-01-22 15:10:43
Python 模拟购物车的实例讲解
2021-01-13 05:24:08
django框架自定义模板标签(template tag)操作示例
2023-11-06 16:05:59
如何用Python来搭建一个简单的推荐系统
2022-07-20 22:17:33
python自动提取文本中的时间(包含中文日期)
2023-08-22 21:32:11
通过sql语句将blob里的char取出来转成数字保存在其它字段
2024-01-20 10:49:05
Oracle数据加载和卸载的实现方法
2024-01-27 20:19:08
golang中如何保证精度的方法
2024-04-26 17:23:22