无间断循环滚动效果的原理解析
yqxbc 发布时间:08-29 来源:一起学编程 浏览:20次
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代码:
<p id="s1" class="scroll">北 京|上 海|广 州|西 安|南 京|大 连|哈尔滨|武 汉</p>


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

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

完整的代码演示:

        
如果你有好的win10资讯或者win10教程,以及win10相关的问题想要获得win10系统下载的关注与报道。
欢迎加入发送邮件到657025171#qq.com(#替换为@)。期待你的好消息!