javascript之循环停顿上下滚动
发布时间:2024-11-19 19:02:57
标签:javascript之循环停顿上下滚动
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>
0
投稿
猜你喜欢
- 实例如下所示:import pandas as pdimport reimport mathdframe1 = pd.read_excel(
- 一、安装pip install lxml二、创建标签from lxml import etreeroot = etree.Element(&
- 1、自动化代码中,用到了哪些设计模式?单例设计模式工厂模式PO设计模式数据驱动模式面向接口编程设计模式2、什么是断言( Assert) ?断
- 项目地址githubpyenv does...改变每个用户系统级别的 python 版本为每个项目提供不同的 python 版本安装克隆到本
- 前言在MySQL很多测试场景,需要人工生成一些测试数据来测试。本文提供一个构造MySQL大表存储过程,可以生成包含用户名,手机号码,出生日期
- keras非常方便。不解释,直接上实例。数据格式如下:序号 天气 是否周末 是否有促销 销量1 坏 &n
- Python字符串模糊匹配Python的difflib库中get_close_matches方法包含四个参数x:被匹配的字符串。words:
- 在计算机中数据有两种特征:类型和长度。所谓数据类型就是以数据的表现方式和存储方式来划分的数据的种类。在SQL Server 中每个变量、参数
- 说明1、Matplotlib函数可以绘制图形,使用plot函数绘制曲线。2、需要将200个点的x坐标和Y坐标分别以序列的形式输入plot函数
- jupyter notebook使用matlab以下方法前提是已经安装了matlab程序,如果没有请安装后再执行以下步骤1.MATALB安装
- 这篇博客将介绍如何使用OpenCV和深度学习应用全面嵌套的边缘检测。并将对图像和视频流应用全面嵌套边缘检测,然后将结果与OpenCV的标准C
- 一、前言使用过Python的同学们一定被她的各种编码问题缠绕过,因为平常维护的新老项目跨越 2、3两个版本,编码问题有时更是让我苦不堪言,遂
- 如果想在打印的字符串中的任意地方加入任意的变量,可以使用python的格式化输出。用例如下:s = 'Hello' x =
- 一、打开摄像头import cv2import numpy as npdef video_demo(): capture = c
- 一、Pycharm安装Django框架二、新建Django项目1、manage.py是个管理角色,拥有的功能包括:(1)创建app: pyt
- 此文译自Fred Wilson 2010年2月在迈阿密举行的Web未来应用的年会上的演讲谢谢青云推荐了这篇这么好的演说谢谢卓和百忙中抽空帮我
- 如果您在试图打开一个.MDF数据库文件时,却发现自己没有安装SQL Server数据库,该怎么办呢?这时候,如果恰巧您的机子上装有Visua
- 1303-Can 't create a PROCEDURE from within another stored routine.
- jQuery居然都没有JSON的decode和encode,精确类型判断也没有,囧……自己动手写吧!不过这些东西在网上都已经有很好的版本了,
- 很多朋友对FrontPage2003中增加的网页布局功能很感兴趣,现在我们一起来深入了解这一实用功能。用FrontPage2003的“布局表