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实现UTF8编码转换成gb2312编码
Dec 22 Javascript
ajax更新数据后,jquery、jq失效问题
Mar 16 Javascript
jQuery EasyUI API 中文文档 - Dialog对话框
Nov 15 Javascript
jquery获取对象的方法足以应付常见的各种类型的对象
May 14 Javascript
jQuery实现下拉框多选 jquery-multiselect 的实例代码
Jul 14 Javascript
JavaScript实现经典排序算法之插入排序
Dec 28 Javascript
JS 设置Cookie 有效期 检测cookie
Jun 15 Javascript
js for终止循环 跳出多层循环
Oct 04 Javascript
微信小程序中转义字符的处理方法
Mar 28 Javascript
解决cordova+vue 项目打包成APK应用遇到的问题
May 10 Javascript
Vue登录主页动态背景短视频制作
Sep 21 Javascript
vue之组件内监控$store中定义变量的变化详解
Nov 08 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
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
2010/02/16 PHP
Destoon实现多表查询示例
2014/08/21 PHP
Django 中 cookie的使用
2017/08/17 PHP
Laravel框架使用Seeder实现自动填充数据功能
2018/06/13 PHP
PHP实现随机数字、字母的验证码功能
2018/08/01 PHP
微信公众号之主动给用户发送消息功能
2019/06/22 PHP
jquery 选择器引擎sizzle浅析
2013/02/06 Javascript
jquery 跳到顶部和底部动画2句代码简单实现
2013/07/18 Javascript
jquery validation验证身份证号,护照,电话号码,email(实例代码)
2013/11/06 Javascript
jquery中插件实现自动添加用户的具体代码
2013/11/15 Javascript
JS运动特效之任意值添加运动的方法分析
2018/01/24 Javascript
使用Promise封装小程序wx.request的实现方法
2019/11/13 Javascript
[52:44]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第一场 6.3
2018/06/04 DOTA
使用Python编写vim插件的简单示例
2015/04/17 Python
python抽象基类用法实例分析
2015/06/04 Python
Python实现SMTP发送邮件详细教程
2021/03/02 Python
浅谈Python类里的__init__方法函数,Python类的构造函数
2016/12/10 Python
Python基于Matplotlib库简单绘制折线图的方法示例
2017/08/14 Python
python里使用正则表达式的组嵌套实例详解
2017/10/24 Python
Python实现针对给定字符串寻找最长非重复子串的方法
2018/04/21 Python
python迭代dict的key和value的方法
2018/07/06 Python
python实现简单的文字识别
2018/11/27 Python
基于Python共轭梯度法与最速下降法之间的对比
2020/04/02 Python
Python调用.net动态库实现过程解析
2020/06/05 Python
3D动画《斗罗大陆》上线当日播放过亿
2021/03/16 国漫
美国顶级防滑鞋:Shoes For Crews
2017/03/27 全球购物
【魔兽争霸3重制版】原版画面与淬火MOD画面对比
2021/03/26 魔兽争霸
《青海高原一株柳》教学反思
2014/04/25 职场文书
化工工艺设计求职信
2014/06/25 职场文书
南京市纪委监察局整改方案
2014/09/16 职场文书
详细的本科生职业生涯规划范文
2014/09/16 职场文书
2015秋季幼儿园开学寄语
2015/03/25 职场文书
golang 接口嵌套实现复用的操作
2021/04/29 Golang
vue实力踩坑之push当前页无效
2022/04/10 Vue.js
排查并解决Oracle sysaux表空间异常增长
2022/04/20 Oracle
Echarts如何重新渲染实例详解
2022/05/30 Javascript