无间断循环滚动效果的原理解析

海鸟搜索:华人超市 中餐馆大全 海外留学的悲催事
CSS代码:

.scroll{
height:20px;
overflow:hidden;
font-size:12px;
line-height:20px;
border:#A5A5A5 1px dotted;
width:120px;
margin:0px auto;
text-align:center;
}



JavaScript代码:

var s,sn=0,timer,slen,timer2;
//初始化设置
function scrollInit(){    
    s=getid("s1"); //获取需要滚动内容的对象
    s.scrollTop=0; //初始化滚动位置
    slen=s.innerHTML.split("|"); //获取滚动内容,并存入数组,以便显示调用
    s.innerHTML=""; //清空滚动对象内容
    for(var i=0;i<slen.length;i++){s.innerHTML+=(slen[i]+"<br />");} //格式化输出滚动内容
    s.innerHTML+=slen[0];
    timer2=setInterval(scrollstart,3000); //开始滚动
    s.onmouseover=function(){clearInterval(timer2);clearInterval(timer);s.style.backgroundColor="#ccc";} //鼠标经过,停止滚动,改变样式
    s.onmouseout=function(){timer2=setInterval(scrollstart,3000);s.style.backgroundColor="#fff";} //鼠标移开,恢复滚动
}
//开启滚动效果
function scrollstart(){
    if(s.scrollTop>=(slen.length*20)){s.scrollTop=0;} //滚动内容到底时,重置内容位置
    timer=setInterval(scrollexec,30); //执行滚动动画效果
    }
//滚动动画效果
function scrollexec(){
    if(sn<20){
        sn++;
        s.scrollTop++;
        }else{
            sn=0;
            clearInterval(timer);
            }        
    }
//通过ID获取对象
function getid(id){return document.getElementById(id);}
//网页加载后,执行初始化
window.onload=scrollInit;



HTML代码:

<div id="s1" class="scroll">北 京|上 海|广 州|西 安|南 京|大 连|哈尔滨|武 汉</div>



原理解析:
1、首先给容器设定高度或宽度,比如div,设置div高20px;overflow:hidden;
2、容器高度设定后,内容的高度超出20px,超过部分溢出,被隐藏,scrollTop属性可用,这一点可以用overflow:scroll来看效果;
3、改变容器的scrollTop(上下滚动)或scrollLeft(左右滚动)属性的值,让内容移动位置(滚动的原理);
4、到滚动的高度scrollTop大于或等于内容的高度时,设置scrollTop=0,让内容返回原来的位置,重新开始滚动,无间断循环滚动效果就出现了。

原理基本就是这样的,横向滚动可以类推。

完整的代码演示:


        



  文章来源:网络整理  本站编辑:兰特
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)