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控件的相对独立性
Sep 03 Javascript
jQuery使用数组编写图片无缝向左滚动
Dec 11 Javascript
引用外部脚本时script标签关闭的写法
Jan 20 Javascript
AngularJS基础 ng-src 指令简单示例
Aug 03 Javascript
three.js加载obj模型的实例代码
Nov 10 Javascript
Windows下支持自动更新的Electron应用脚手架的方法
Dec 24 Javascript
微信小程序地图导航功能实现完整源代码附效果图(推荐)
Apr 28 Javascript
关于layui toolbar和template的结合使用方法
Sep 19 Javascript
原生js实现碰撞检测
Mar 12 Javascript
vue 子组件和父组件传值的示例
Sep 11 Javascript
vant 中van-list的用法说明
Nov 11 Javascript
利用JavaScript为句子加标题的3种方法示例
Jan 05 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
PHP字符过滤函数去除字符串最后一个逗号(rtrim)
2013/03/26 PHP
使用php测试硬盘写入速度示例
2014/01/27 PHP
ThinkPHP3.1新特性之多数据库操作更加完善
2014/06/19 PHP
支付宝支付开发――当面付条码支付和扫码支付实例
2016/11/04 PHP
PHP测试框架PHPUnit组织测试操作示例
2018/05/28 PHP
JS的IE和Firefox兼容性集锦
2006/12/11 Javascript
JQuery 风格的HTML文本转义
2009/07/01 Javascript
JS 巧妙获取剪贴板数据 Excel数据的粘贴
2009/07/09 Javascript
使用jquery修改表单的提交地址基本思路
2014/06/04 Javascript
javascript特殊日历控件分享
2016/03/07 Javascript
一步步教大家编写酷炫的导航栏js+css实现
2016/03/14 Javascript
jQuery的promise与deferred对象在异步回调中的作用
2016/05/03 Javascript
Node.js Streams文件读写操作详解
2016/07/04 Javascript
JS实现图片局部放大或缩小的方法
2016/08/20 Javascript
JS动态计算移动端rem的解决方案
2016/10/14 Javascript
JavaScript中校验银行卡号的实现代码
2016/12/19 Javascript
详解React-Native解决键盘遮挡问题(Keyboard遮挡问题)
2017/07/13 Javascript
分析JS中this引发的bug
2017/12/12 Javascript
Vue插槽原理与用法详解
2019/03/05 Javascript
JS根据Unix时间戳显示发布时间是多久前【项目实测】
2019/07/10 Javascript
vue 源码解析之虚拟Dom-render
2019/08/26 Javascript
使用纯前端JavaScript实现Excel导入导出方法过程详解
2020/08/07 Javascript
jquery实现拖拽小方块效果
2020/12/10 jQuery
Python 列表(List)操作方法详解
2014/03/11 Python
Python用字典构建多级菜单功能
2019/07/11 Python
Django的models模型的具体使用
2019/07/15 Python
Tensorflow实现神经网络拟合线性回归
2019/07/19 Python
Tensorflow分批量读取数据教程
2020/02/07 Python
C#实现启动一个进程
2016/10/01 面试题
毕业生造价工程师求职信
2013/10/17 职场文书
商务日语专业毕业生求职信
2013/10/26 职场文书
物理教育专业毕业生推荐信
2013/11/03 职场文书
培训主管的岗位职责
2013/11/23 职场文书
优秀老师事迹材料
2014/02/05 职场文书
mysql 8.0.24版本安装配置方法图文教程
2021/05/12 MySQL
详解JavaScript的计时器和按钮效果设置
2022/02/18 Javascript