JS实现无缝循环marquee滚动效果
无缝循环marquee滚动JS代码实现,兼容IE,FireFox,Chrome,供大家参考,具体内容如下
首先是CSS和HTML如下:
#marquee_zxd{ border:1pxsolidred; white-space:nowrap; overflow:hidden; width:500px; padding-top:5px; } #marquee_zxdimg{ height:100px; }
下面是JS实现marquee_zxd.js:
/**除了Chrome以外的浏览器可以通过scrollLeft属性控制滚动*/ functionscrolleft(obj){ var$obj=$(obj); //到右边顶端后不会再变 //vartemp=obj.scrollLeft; //obj.scrollLeft++; vartemp=$obj.scrollLeft(); //console.log(temp); $obj.scrollLeft(temp+1); //当滚动条到达右边顶端时;或本身长度不够不好滚动(漫出才好滚) //if(obj.scrollLeft==temp){ if($obj.scrollLeft()==temp){ obj.innerHTML+=obj.innerHTML; console.log('copy'); } //当滚动条滚动了初始内容的宽度时,滚动条回到最左端,模拟循环 //if(obj.scrollLeft>=obj.firstChild.offsetWidth) //obj.scrollLeft=0; if($obj.scrollLeft()>=obj.firstChild.offsetWidth) $obj.scrollLeft(0); } /**除了Chrome以外的浏览器可以通过scrolleft()滚动*/ functioninitMarquee(){ varaaa=document.getElementById('marquee_zxd'); varMyMar=setInterval(function(){ scrolleft(aaa); },20); //鼠标移上时清除定时器达到滚动停止的目的 aaa.onmouseover=function(){clearInterval(MyMar);}; //鼠标移开时重设定时器 aaa.onmouseout=function(){MyMar=setInterval(function(){ scrolleft(aaa); },20);}; } /**Chrome定时器循环函数,通过relative布局的left属性控制滚动*/ functionscrolleftChrome($marquee_inner,inner_width){ varwidth=parseInt(inner_width); varleftPx=$marquee_inner.css("left"); //兼容IE if(leftPx=='auto') leftPx=0; //位置左移 varleft=parseInt(leftPx); left=left-1; //到顶归位 if(left<=-width) left=0; $marquee_inner.css("left",left); //console.log(width+","+left); } /**Chrome浏览器可以通过scrolleftChrome滚动*/ functioninitMarqueeChrome(){ //局部变量不污染全局变量空间 var$marquee_inner=$('#marquee_inner'); //原内容大小 varinner_width=$marquee_inner.css('width'); //复制一份原内容 varinnerHtml=$marquee_inner.html(); $marquee_inner.html(innerHtml+innerHtml); console.log(inner_width); //参数采用字符串形式的缺陷:参数不能被周期性改变,参数必须是全局变量 //varMyMar=setInterval("scrolleftChrome($marquee_inner,inner_width)",5000); varMyMar=setInterval(function(){ //参数不污染全局变量空间 scrolleftChrome($marquee_inner,inner_width); },50); varmarquee_zxd=document.getElementById('marquee_zxd'); //鼠标移上时清除定时器达到滚动停止的目的 marquee_zxd.onmouseover=function(){clearInterval(MyMar);}; //鼠标移开时重设定时器 marquee_zxd.onmouseout=function(){ //参数采用字符串形式的缺陷:参数不能被周期性改变,参数必须是全局变量 //MyMar=setInterval("scrolleftChrome($marquee_inner,inner_width)",50); MyMar=setInterval(function(){ //参数不污染全局变量空间 scrolleftChrome($marquee_inner,inner_width); },50); }; } $(function(){ varua=window.navigator.userAgent; varisIE=window.ActiveXObject!=undefined&&ua.indexOf("MSIE")!=-1; varisFirefox=ua.indexOf("Firefox")!=-1; varisChrome=ua.indexOf("Chrome")&&window.chrome; if(isChrome){ initMarqueeChrome(); console.log("isChrome:initMarqueeChrome"); }else{ initMarquee(); console.log("isChrome:initMarquee"); } });
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。