js 实现无缝滚动 兼容IE和FF


Posted in Javascript onJuly 15, 2009

原理解析:
1、首先给容器设定高度或宽度,比如ul,设置ul高40px;overflow:hidden;
2、容器高度设定后,内容的高度超出40px,超过部分溢出,被隐藏,scrollTop属性可用,这一点可以用overflow:scroll来看效果;
3、改变容器的scrollTop(上下滚动)属性的值,让内容上下移动一个节点的位置(滚动的原理);
4、到滚动的高度scrollTop大于或等于要滚动节点的高度时,设置scrollTop=0,并把把子节点树中的第一个移动到最后,重新开始滚动,无间断循环滚动效果就出现了。
html 源码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>滚动</title> 
<script type="text/javascript" src="divCycle.js" src="divCycle.js"></script> 
<style><!-- 
li{ height:20px; mar} 
--></style><style bogus="1">li{ height:20px; mar}</style> 
</head> 
<body> 
<div> 
<ul id="list" style="border:1px #ccc solid; overflow:hidden; height:40px; width:100px; margin:0; padding:0; list-style-type:none;"> 
    <li>1</li> 
<li>2</li> 
<li>3</li> 
<li>4</li> 
<li>5</li> 
<li>6</li> 
<li>7</li> 
<li>8</li> 
<li>9</li> 
<li>10</li> 
</ul> 
</div> 
<script type="text/javascript"><!-- 
new simpleScroll("list",20,40,1); 
// --></script> 
</body> 
</html>

js源码
// JavaScript Document /***** 
@author leaves chen (leaves615@gmail.com) 
@copyright 2009 
*****/ 
var pause=false; 
var scrollTimeId=null; 
var container=null; 
var lineHeight=null; 
var speed=0; 
var delay=0; 
simpleScroll=function(container1,lineHeight1,speed1,delay1){ 
    container=document.getElementById(container1); 
    lineHeight=lineHeight1; 
    speed=speed1; 
    delay=delay1; 
    //滚动效果 
    scrollexc=function(){ 
        if(pause) return ; 
        container.scrollTop+=2; 
        var lh=lineHeight||container.getElementsByTagName('li')[0].offsetHeight; 
        if(container.scrollTop%lh<=1){ 
            clearInterval(scrollTimeId); 
            fire(); 
            container.scrollTop=0; 
            setTimeout(start,delay*1000); 
        } 
    }; 
    //开始滚动 
    start=function(){ 
        var lh=lineHeight||container.getElementsByTagName('li')[0].offsetHeight; 
            if (container.scrollHeight - container.offsetHeight >= lh) 
                scrollTimeId = setInterval(scrollexc, speed); 
    }; 
    //把子节点树中的第一个移动到最后 
    fire=function(){ 
        container.appendChild(container.getElementsByTagName('li')[0]); 
    }; 
    container.onmouseover=function(){pause=true;}; 
    container.onmouseout=function(){pause=false;}; 
    setTimeout(start,delay*1000); 
};

Javascript 相关文章推荐
javascript Math.random()随机数函数
Nov 04 Javascript
jQuery选择头像并实时显示的代码
Jun 27 Javascript
验证javascript中Object和Function的关系的三段简单代码
Jun 27 Javascript
扩展jquery实现客户端表格的分页、排序功能代码
Mar 16 Javascript
jquery ajax 调用失败的原因示例介绍
Sep 27 Javascript
基于jquery和svg实现超炫酷的动画特效
Dec 09 Javascript
javascript实现 百度翻译 可折叠的分享按钮列表
Mar 12 Javascript
jquery实现倒计时功能
Dec 28 Javascript
JS仿hao123导航页面图片轮播效果
Sep 01 Javascript
纯js实现图片匀速淡入淡出效果
Aug 22 Javascript
react-native 完整实现登录功能的示例代码
Sep 11 Javascript
JS操作字符串转数字的常见方法示例
Oct 29 Javascript
兼容IE/Firefox/Opera/Safari的检测页面装载完毕的脚本Ext.onReady的实现
Jul 14 #Javascript
JavaScript 继承详解(四)
Jul 13 #Javascript
JavaScript 继承详解(三)
Jul 13 #Javascript
JavaScript 继承详解(二)
Jul 13 #Javascript
JavaScript 继承详解(一)
Jul 13 #Javascript
javascript dom 操作详解 js加强
Jul 13 #Javascript
jquery 学习笔记 传智博客佟老师附详细注释
Sep 12 #Javascript
You might like
Ping服务的php实现方法,让网站快速被收录
2012/02/04 PHP
php防止CC攻击代码 php防止网页频繁刷新
2015/12/21 PHP
[原创]PHPCMS遭遇会员投稿审核无效的解决方法
2017/01/11 PHP
PHP两种实现无级递归分类的方法
2017/03/02 PHP
PHP截取发动短信内容的方法
2017/07/04 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
2019/12/18 PHP
让你的博文自动带上缩址的实现代码,方便发到微博客上
2010/12/28 Javascript
js弹出框轻量级插件jquery.boxy使用介绍
2013/01/15 Javascript
jQuery Form 页面表单提交的小例子
2013/11/15 Javascript
javascript模拟地球旋转效果代码实例
2013/12/02 Javascript
使用cluster 将自己的Node服务器扩展为多线程服务器
2014/11/10 Javascript
node.js中的fs.unlink方法使用说明
2014/12/15 Javascript
详解JavaScript正则表达式之RegExp对象
2015/12/13 Javascript
JavaScript实现同一个页面打开多张图片
2016/12/29 Javascript
原生JS实现几个常用DOM操作API实例
2017/01/19 Javascript
详解Vue 全局引入bass.scss 处理方案
2018/03/26 Javascript
bootstrap 弹出框modal添加垂直方向滚轴效果
2018/07/09 Javascript
JavaScript函数、闭包、原型、面向对象学习笔记
2018/09/06 Javascript
微信公众平台获取access_token的方法步骤
2019/03/29 Javascript
[38:31]完美世界DOTA2联赛PWL S3 Magma vs GXR 第一场 12.13
2020/12/17 DOTA
Python中map和列表推导效率比较实例分析
2015/06/17 Python
tf.truncated_normal与tf.random_normal的详细用法
2018/03/05 Python
对Python subprocess.Popen子进程管道阻塞详解
2018/10/29 Python
python代码编写计算器小程序
2020/03/30 Python
Python使用APScheduler实现定时任务过程解析
2019/09/11 Python
日本7net购物网:书籍、漫画、杂志、DVD、游戏邮购
2017/02/17 全球购物
Oroton中国官网:澳洲知名奢侈配饰品牌
2017/03/26 全球购物
美国餐厅用品和厨房设备批发网站:KaTom Restaurant Supply
2018/01/27 全球购物
汽车技术服务英文求职信范文
2014/01/02 职场文书
绿化先进工作者事迹材料
2014/01/30 职场文书
国际经济贸易专业自荐信
2014/06/13 职场文书
《日月潭》教学反思
2016/02/20 职场文书
高二化学教学反思
2016/02/22 职场文书
MongoDB数据库的安装步骤
2021/06/18 MongoDB
新手入门Mysql--sql执行过程
2021/06/20 MySQL
python绘制云雨图raincloud plot
2022/08/05 Python