javascript 列表定时滚动效果
HTML结构:
<div style="width:200px;height:100px;overflow:hidden;border:1px solid #ddd;margin:20px auto;">
<ul id="list">
<li><a href="#">2222222222222222222222222</a></li>
<li><a href="#">3333333333333333333333333</a></li>
<li><a href="#">22222222222222222222222222</a></li>
<li><a href="#">22222222222223222222222222</a></li>
<li><a href="#">22222222222222422222222222</a></li>
<li><a href="#">2222222222222252222222222</a></li>
<li><a href="#">22222222225555552222222222</a></li>
<li><a href="#">22222222222253333333222222</a></li>
<li><a href="#">22222222277777777222222</a></li>
</ul>
</div>
js:
/*
* 列表定时滚动效果(javascript)
* @listId :滚动列表ID
* @listTagName :滚动元素
* @scrollNum :设置滚动元素数量
* @speed : 滚动速度
*/
function fnScrollList(){
this.init.apply(this,arguments);
}
fnScrollList.prototype = {
init:function(listId,TagName,scrollNum,speed){
var _this = this;
this.oList = this.$$(listId);
this.scrollTimer = null;
this.speed = speed || 1000;
this.scrollNum = scrollNum || 1;
this.TagName =TagName;
this.distance = this.oList.getElementsByTagName(TagName)[0].offsetHeight * this.scrollNum;//列表移动距离
this.oList.style.marginTop = 0 + "px"; this.oList.onmouseover = function(){
_this.pause();
}
this.oList.onmouseout = function(){
_this.scrollTimer= setTimeout(function(){
_this.play();
},_this.speed);
}
this.play();
},
play:function(){
var _this = this;
var options = {'marginTop':'-'+_this.distance};
_this.anim(_this.oList,options,function(){ //回调函数,移动列表元素
for(var i = 0,j = 0;i<_this.scrollNum;i++){
var node = _this.oList.getElementsByTagName(_this.TagName)[j];
if(_this.TagName == "tr"){
_this.oList.getElementsByTagName('tbody')[0].appendChild(node);
}else{
_this.oList.appendChild(node);
}
}
_this.oList.style.marginTop = "0px";
}); _this.scrollTimer= setTimeout(function(){
_this.play(_this.distance);
},_this.speed);
},
pause:function(){
clearTimeout(this.scrollTimer);
},
//动画函数
anim:function(oElement,oAttr,fnCallback){
var _this = this;
clearInterval(oElement.timer);
oElement.timer = setInterval(function(){
var bStop = true;
for(var property in oAttr){
var iCur = parseFloat(_this.css(oElement, property)); //获取当前位置属性值
var iSpeed = (oAttr[property] - iCur) / 5; //移动进度
iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed);
if (iCur != oAttr[property]) { //如果当前数值不等于目标数值,则数值递增
bStop = false;
_this.css(oElement, property, iCur + iSpeed);
}
}
if(bStop){
clearInterval(oElement.timer);
fnCallback && fnCallback.apply(_this, arguments);
}
},50);
},
//处理样式函数
css:function(oElement, attr, value){
if (arguments.length == 2) {
return oElement.currentStyle ? oElement.currentStyle[attr] : getComputedStyle(oElement, null)[attr];
} else if (arguments.length == 3) {
switch (attr) {
case "top":
case "left":
case "marginTop":
oElement.style[attr] = value + "px";
break;
default:
oElement.style[attr] = value;
break;
}
}
},
$$:function(o){
if(o){
return document.getElementById(o);
}
}
};
函数调用:
var list = new fnScrollList('list','li',2,2000);
效果:
| 站点名称 | AQI | 类别 |
|---|
| 工业园区1 | 123 | 轻度污染 |
| 工业园区2 | 123 | 轻度污染 |
| 工业园区3 | 123 | 轻度污染 |
| 工业园区4 | 123 | 轻度污染 |
| 工业园区5 | 123 | 轻度污染 |
| 工业园区6 | 123 | 轻度污染 |
| 工业园区7 | 123 | 轻度污染 |
| 工业园区8 | 123 | 轻度污染 |
demo:
javascript 列表定时滚动效果的更多相关文章
- 使用JavaScript实现新闻滚动效果
最近要实现一个滚动新闻效果,在网上查了一些资料,发现基本的实现方法有两种: 使用Marquee标签.这个标签的使用我已经转载了一篇比较详细的文章,这个标签的优点是便于使用,缺点是人们已经逐渐不适用它了 ...
- Javascript实现信息滚动效果的方法
<html><head><meta http-equiv="Content-Type" content="text/html; charse ...
- js实现的新闻列表垂直滚动实现详解
js实现的新闻列表垂直滚动实现详解:新闻列表垂直滚动效果在大量的网站都有应用,有点自然是不言而喻的,首先由于网页的空间有限,使用滚动代码可以使用最小的空间提供更多的信息量,还有让网页有了动态的效果,更 ...
- JavaScript实现页面滚动到div区域div以动画方式出现
用JavaScript实现页面滚动效果,以及用wow.js二种方式实现网页滚动效果 要实现效果是页面滚动到一块区域,该区域以动画方式出现. 这个效果需要二点: 一:我们要先写好一个css动画. 二:用 ...
- 二、JavaScript语言--JS实践--信息滚动效果制作
运用JavaScript技术,掌握无缝滚动和歇间性滚动的制作方法. 一.marquee标签实现信息滚动 1 behavior滚动的方式 alternate:表示在两端之间来回滚动 scroll:表示由 ...
- html+css+javascript实现列表循环滚动示例代码
使用html+css+javascript实现列表循环滚动,设置时间定时,在规定的时间内替换前一个节点的内容,具体示例如下,感兴趣的朋友可以参考下 说明:设置时间定时,在规定的时间内替换前一个节点的内 ...
- jQuery练手:仿新浪微博图片文字列表淡进淡出上下滚动效果
1.效果及功能说明 仿新浪微博图片文字列表上下淡进淡出间歇上下滚动 2.实现原理 首先要设定div内只能显示4个图片那么多出来的图片会自动隐藏然后在给图片添加一个动画的事件让他们可以滚动的播放出来上下 ...
- JavaScript js无间断滚动效果 scrollLeft方法 使用模板
JavaScript js无间断滚动效果 scrollLeft方法 使用模板 <!DOCTYPE HTML><html><head><meta charset ...
- JavaScript实现的购物车效果-效果好友列表
JavaScript实现的购物车效果.当然,可以在许多地方使用这种效果.朋友的.例如,在选择.人力资源模块,工资的计算,人才选拔等..下面来看一下班似有些车效果图: watermark/2/text/ ...
随机推荐
- 在本地SharePoint 2013 搭建App开发环境
1.环境描述: SharePoint服务器: Windows Server 2012 R2+SharePoint 2013 IP:192.168.1.180,域控:ser.com 开发环境: Wind ...
- hibernate框架学习之数据查询(本地SQL)
本地SQL查询方式 lHibernate框架支持使用原生态SQL语句进行操作数据库 l查询对象SQLQuery由Session获取 •SQLQuery sq = s.createSQLQuery(&q ...
- hibernate框架学习之数据类型
- 认证 (authentication) 和授权 (authorization) 的区别
authorization 授权 authentication 身份认证 用户认证流程: 1.用户使用username和password登录 2.系统验证这个password对于该username是正 ...
- 在TOMCAT下配置工程的默认访问设置(转)
对工程的部署一般是将工程的压缩文件放在tomcat安装目录的webapps下,访问时通过键入:http://localhost:8080/xx(假定为本机访问,xx是部署时的应用工程的访问名字). 而 ...
- CentOS7.5从零安装Python3.6.6
ps:环境如标题 安装可能需要的依赖 yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlit ...
- 帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
作为一名前端工程师,必须搞懂JS中的prototype.__proto__与constructor属性,相信很多初学者对这些属性存在许多困惑,容易把它们混淆,本文旨在帮助大家理清它们之间的关系并彻底搞 ...
- grep匹配某个次出现的次数
cat file | grep -c 'xxx' 统计xxx在file中出现的行数 cat file | grep -o 'xxx' 统计xxx在file中出现的次数
- LoadRunner监控window系统各项指标详解
一.监控系统时,需要监控的项 System 系统 Processor 处理器 Memory 内存 PhysicalDisk 磁盘 Server 服务器 二.指标详解 (一). PhysicalDisk ...
- 一.定时任务详解https://i.cnblogs.com/EditPosts.aspx
定时任务的详解 h每小时运行 d每天运行 w每周运行 m每个月运行 中毒时查看系统定时任务是否有病毒的脚本. crontab -l 查看用户的定时任务 crontab -e 进入编辑界面增加 ...