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 相关文章推荐
jquery 框架使用教程 AJAX篇
Oct 11 Javascript
IE7中javascript操作CheckBox的checked=true不打勾的解决方法
Dec 07 Javascript
限制textbox或textarea输入字符长度的JS代码
Oct 16 Javascript
JS使用ajax方法获取指定url的head信息中指定字段值的方法
Mar 24 Javascript
BootStrap文件上传样式超好看【持续更新】
May 10 Javascript
Js 获取当前函数参数对象的实现代码
Jun 20 Javascript
实例分析浏览器中“JavaScript解析器”的工作原理
Dec 12 Javascript
js获取元素下的第一级子元素的方法(推荐)
Mar 05 Javascript
JS简单验证上传文件类型的方法
Apr 17 Javascript
webpack写jquery插件的环境配置
Dec 21 jQuery
详解webpack-dev-server 设置反向代理解决跨域问题
Apr 18 Javascript
微信小程序实现弹幕墙(祝福墙)
Nov 18 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下intval()和(int)转换使用与区别
2008/07/18 PHP
php递归函数三种实现方法及如何实现数字累加
2015/08/07 PHP
php实现三级级联下拉框
2016/04/17 PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
2016/07/20 PHP
php中文字符串截取多种方法汇总
2016/10/06 PHP
php实现用户注册密码的crypt加密
2017/06/08 PHP
PHP创建XML接口示例
2019/07/04 PHP
JS中Iframe之间传值的方法
2013/03/11 Javascript
JavaScript中使用typeof运算符需要注意的几个坑
2014/11/08 Javascript
JavaScript类型系统之正则表达式
2016/01/05 Javascript
简单理解js的冒泡排序
2016/12/19 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
2017/01/13 Javascript
jQuery上传插件webupload使用方法
2017/08/01 jQuery
Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解
2019/01/18 Javascript
Javascript通过控制类名更改样式
2019/05/24 Javascript
Bootstrap 时间日历插件bootstrap-datetimepicker配置与应用小结
2019/05/28 Javascript
浅谈vue3中effect与computed的亲密关系
2019/10/10 Javascript
原生JS实现留言板功能
2020/02/08 Javascript
jquery实现点击弹出对话框
2020/02/08 jQuery
vue+iview实现文件上传
2020/11/17 Vue.js
[01:31:22]Ti4 循环赛第四日附加赛LGD vs Mouz
2014/07/13 DOTA
python黑魔法之编码转换
2016/01/25 Python
Python 多进程并发操作中进程池Pool的实例
2017/11/01 Python
TensorFlow实现简单卷积神经网络
2018/05/24 Python
spark: RDD与DataFrame之间的相互转换方法
2018/06/07 Python
利用ctypes获取numpy数组的指针方法
2019/02/12 Python
Python3网络爬虫中的requests高级用法详解
2019/06/18 Python
对Django 中request.get和request.post的区别详解
2019/08/12 Python
Django 框架模型操作入门教程
2019/11/05 Python
NFL Game Pass欧洲:在线观看NFL比赛直播和点播,以高清质量播放
2018/08/30 全球购物
银行柜员应聘推荐信范文
2013/11/24 职场文书
2014年最新版离婚协议书范本
2014/11/25 职场文书
体育教师个人总结
2015/02/09 职场文书
2015年度团总支工作总结
2015/04/23 职场文书
2015财务年终工作总结范文
2015/05/22 职场文书
python全面解析接口返回数据
2022/02/12 Python