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 相关文章推荐
JS俄罗斯方块,包含完整的设计理念
Dec 11 Javascript
Jquery知识点三 jquery表单对象操作
Jan 17 Javascript
Jquery实现搜索框提示功能示例代码
Aug 13 Javascript
Node.js插件的正确编写方式
Aug 03 Javascript
jQuery实现图片文字淡入淡出效果
Dec 21 Javascript
jQuery的层级查找方式分析
Jun 16 Javascript
js删除局部变量的实现方法
Jun 25 Javascript
深入理解React中es6创建组件this的方法
Aug 29 Javascript
微信小程序picker组件简单用法示例【附demo源码下载】
Dec 05 Javascript
json对象及数组键值的深度大小写转换问题详解
Mar 30 Javascript
微信小程序实现团购或秒杀批量倒计时
Nov 01 Javascript
vue-cli的build的文件夹下没有dev-server.js文件配置mock数据的方法
Apr 17 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的header和asp中的redirect比较
2006/10/09 PHP
for循环连续求和、九九乘法表代码
2012/02/20 PHP
phpQuery占用内存过多的处理方法
2013/11/13 PHP
php中curl和file_get_content的区别
2014/05/10 PHP
JavaScript国旗变换效果代码
2008/08/13 Javascript
JQuery扩展插件Validate—6 radio、checkbox、select的验证
2011/09/05 Javascript
一个JavaScript去除字符串末尾的空白实例代码
2014/09/22 Javascript
JavaScript 事件入门知识
2015/04/13 Javascript
jquery序列化方法实例分析
2015/06/10 Javascript
jQuery+PHP+MySQL实现无限级联下拉框效果
2016/02/19 Javascript
javascript实现可键盘控制的抽奖系统
2016/03/10 Javascript
AngularJS入门教程之双向绑定详解
2016/08/18 Javascript
解析JavaScript数组方法reduce
2016/12/12 Javascript
前端页面文件拖拽上传模块js代码示例
2017/05/19 Javascript
vue 打包后的文件部署到express服务器上的方法
2017/08/09 Javascript
iview中Select 选择器多选校验方法
2018/03/15 Javascript
原生JS实现的轮播图功能详解
2018/08/06 Javascript
记一次vue去除#问题处理经过小结
2019/01/24 Javascript
vue+element项目中过滤输入框特殊字符小结
2019/08/07 Javascript
layui 富文本编辑器和textarea值的相互传递方法
2019/09/18 Javascript
javascript设计模式 ? 外观模式原理与用法实例分析
2020/04/15 Javascript
如何在vue中使用jointjs过程解析
2020/05/29 Javascript
Python编程中用close()方法关闭文件的教程
2015/05/24 Python
Python之日期与时间处理模块(date和datetime)
2017/02/16 Python
python实现矩阵打印
2019/03/02 Python
Python-while 计算100以内奇数和的方法
2019/06/11 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
2020/10/16 Python
实现向右循环移位
2014/07/31 面试题
优秀少先队大队辅导员事迹材料
2014/05/04 职场文书
环卫工人先进事迹材料
2014/06/02 职场文书
药品营销专业毕业生自荐信
2014/07/02 职场文书
2014校长四风问题对照检查材料思想汇报
2014/09/16 职场文书
志愿者服务活动总结报告
2015/05/06 职场文书
2015年化妆品销售工作总结
2015/05/11 职场文书
python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
2021/04/12 Python
Python源码解析之List
2021/05/21 Python