js 实现无缝滚动 兼容IE和FF

 更新时间:2009年07月15日 00:26:27   作者:  
js 实现无缝滚动 兼容IE FF,大家可以看看。
原理解析:
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);
};

相关文章

  • JS+CSS实现六级网站导航主菜单效果

    JS+CSS实现六级网站导航主菜单效果

    这篇文章主要介绍了JS+CSS实现六级网站导航主菜单效果,涉及JavaScript遍历页面元素及动态修改css属性的相关实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09
  • 利用css+原生js制作简单的钟表

    利用css+原生js制作简单的钟表

    这篇文章主要为大家详细介绍了如何利用css+原生js制作简单的钟表,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • javascript表单是否为空验证方法

    javascript表单是否为空验证方法

    表单验证在很多地方都可以用到,本文详细的介绍了javascript表单是否为空验证方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • js正则表达式的使用详解

    js正则表达式的使用详解

    本篇文章是对js中正则表达式的使用进行了详细的分析介绍,需要的朋友可以参考下
    2013-07-07
  • JS函数的定义与调用方法推荐

    JS函数的定义与调用方法推荐

    下面小编就为大家带来一篇JS函数的定义与调用方法推荐。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • JS版图片放大镜效果

    JS版图片放大镜效果

    这篇文章主要为大家详细介绍了JS版的图片放大镜效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • javascript框架设计读书笔记之种子模块

    javascript框架设计读书笔记之种子模块

    本文是司徒正美的《javascript框架设计》一书第一章种子模块的读书笔记,记录了一下自认为比较重要的东西,分享给大家
    2014-12-12
  • js数据类型以及其判断方法实例

    js数据类型以及其判断方法实例

    这篇文章主要给大家介绍了关于js数据类型以及其判断方法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 自己实现string的substring方法 人民币小写转大写,数字反转,正则优化

    自己实现string的substring方法 人民币小写转大写,数字反转,正则优化

    这是最近碰到的几个题目,简单地写一下我自己的方案,在此分享给大家,也希望能看到大家的方案
    2012-09-09
  • js入门之Function函数的使用方法【新手必看】

    js入门之Function函数的使用方法【新手必看】

    本篇文章主要介绍js Function函数的使用方法,应该对初学Js的朋友们会有所帮助,下面就随小编一起来看下吧
    2016-11-11

最新评论