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 &amp; DHTML 实例编程(教程)DOM基础和基本API
Jun 02 Javascript
仿百度的关键词匹配搜索示例
Sep 25 Javascript
js 动态修改css文件用到了cssRule
Aug 20 Javascript
jQuery实现浮动层随浏览器滚动条滚动的方法
Sep 22 Javascript
详解javascript函数的参数
Nov 10 Javascript
jQuery插件Validate实现自定义表单验证
Jan 18 Javascript
JS查找英文文章中出现频率最高的单词
Mar 20 Javascript
Bootstrap datepicker日期选择器插件使用详解
Jul 26 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
Jun 10 Javascript
Vue移动端右滑屏幕返回上一页附源码下载
Jun 26 Javascript
详解mpvue开发微信小程序基础知识
Sep 23 Javascript
原生JS实现拖拽功能
Dec 16 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
SSI指令
2006/11/25 PHP
php实现从ftp服务器上下载文件树到本地电脑的程序
2009/02/10 PHP
PHP提取数据库内容中的图片地址并循环输出
2010/03/21 PHP
解析CI的AJAX分页 另类实现方法
2013/06/27 PHP
解析php5配置使用pdo
2013/07/03 PHP
无刷新动态加载数据 滚动条加载适合评论等页面
2013/10/16 PHP
关于laravel5.5的定时任务详解(demo)
2019/10/23 PHP
Jquery 基础学习笔记
2009/05/29 Javascript
js禁止回车提交表单的示例代码
2013/12/23 Javascript
使用Nodejs开发微信公众号后台服务实例
2014/09/03 NodeJs
js使用setTimeout实现定时炸弹的方法
2015/04/10 Javascript
JScript中的条件注释详解
2015/04/24 Javascript
JS实现的自定义右键菜单实例二则
2015/09/01 Javascript
非常实用的12个jquery代码片段
2015/11/02 Javascript
jQuery实现手机自定义弹出输入框
2016/06/13 Javascript
AngularJS基础 ng-selected 指令简单示例
2016/08/03 Javascript
详解js实现线段交点的三种算法
2016/08/09 Javascript
PhotoSwipe异步动态加载图片方法
2016/08/25 Javascript
Bootstrap源码解读媒体对象、列表组和面板(10)
2016/12/26 Javascript
jQuery.parseHTML() 函数详解
2017/01/09 Javascript
CodeMirror js代码加亮使用总结
2017/03/25 Javascript
js判断用户是输入的地址请求的路径(实例讲解)
2017/07/18 Javascript
JS路由跳转的简单实现代码
2017/09/21 Javascript
jQuery实现form表单序列化转换为json对象功能示例
2018/05/23 jQuery
vue之将echart封装为组件
2018/06/02 Javascript
js实现点击展开隐藏效果(实例代码)
2018/09/28 Javascript
解决JavaScript中0.1+0.2不等于0.3问题
2018/10/23 Javascript
vue 解决uglifyjs-webpack-plugin打包出现报错的问题
2020/08/04 Javascript
Python拆分大型CSV文件代码实例
2019/10/07 Python
Python Numpy 自然数填充数组的实现
2019/11/28 Python
HTML5 本地存储之如果没有数据库究竟会怎样
2013/04/25 HTML / CSS
运动会闭幕式解说词
2014/02/21 职场文书
三分钟自我介绍演讲稿
2014/08/21 职场文书
春季运动会加油词
2015/07/18 职场文书
基于MySql验证的vsftpd虚拟用户
2021/11/07 MySQL
使用Python解决图表与画布的间距问题
2022/04/11 Python