3種方法實現列表自動滾動


自動滾動這種效果在網頁中還是比較常見的。現在,就我在做項目期間所用到的能夠實現自動滾動的方法做一個總結。

方法一:用javascript原生代碼實現,不需要依賴任何框架,代碼及注釋如下:
 1     //javascript原生自動滾動
 2         function startmarquee(lh,speed,delay,marqueeObj) {  //lh---每行列表的高度,speed---滾動的速度,delay---間隔多久滾動一次,marqueeObj---需要實現這個效果的id
 3             var p=false;
 4             var t;
 5             var o=document.getElementById(marqueeObj);  
 6             o.innerHTML+=o.innerHTML;
 7             o.style.marginTop=0;
 8             o.onmouseover=function(){p=true;} //鼠標移入,停止滾動
 9             o.onmouseout=function(){p=false;}//鼠標移出,繼續滾動
10             
11             function start(){
12                 t=setInterval(scrolling,speed); //定時器,自動滾動
13                 if(!p) o.style.marginTop=parseInt(o.style.marginTop)-1+"px";
14             }    
15             
16             function scrolling(){
17                 if(parseInt(o.style.marginTop)%lh!=0){
18                     o.style.marginTop=parseInt(o.style.marginTop)-1+"px";
19                     if(Math.abs(parseInt(o.style.marginTop))>=o.scrollHeight/2) o.style.marginTop=0;
20                 }else{
21                     clearInterval(t);
22                     setTimeout(start,delay);
23                 }
24             }
25             setTimeout(start,delay);
26         }
27         startmarquee(48,20,1000,"marqueebox"); //引用函數

 

方法二:依賴jquery,可以進行不定高的滾動
 1      //列表自動滾動
 2         function scrollNews() { 
 3             var $news = $('#marqueebox table'); 
 4             var $lineHeight = $news.find('tr:first').height(); 
 5             $news.animate({ 'marginTop': -$lineHeight + 'px' }, 1000, function () { 
 6                 $news.css({ margin: 0 }).find('tr:first').appendTo($news); 
 7             }); 
 8         }
 9  
10         var scrollTimer = null; 
11         var delay = 2000; 
12         scrollTimer = setInterval(function () { 
13             scrollNews(); 
14         }, delay);      

 

方法三:從左往右輪播
 1     function ScrollImgLeft(start,end,wrap){ 
 2             var speed=40; 
 3             var scroll_begin = document.getElementById(start); 
 4             var scroll_end = document.getElementById(end); 
 5             var scroll_div = document.getElementById(wrap); 
 6             scroll_end.innerHTML=scroll_begin.innerHTML; 
 7             function Marquee(){ 
 8                 if(scroll_end.offsetWidth-scroll_div.scrollLeft<=0){ 
 9                     scroll_div.scrollLeft-=scroll_begin.offsetWidth; 
10                 }else{
11                     scroll_div.scrollLeft++; 
12                 }
13             } 
14             var MyMar=setInterval(Marquee,speed); 
15             scroll_div.onmouseover=function() {clearInterval(MyMar);} 
16             scroll_div.onmouseout=function() {MyMar=setInterval(Marquee,speed);} 
17         } 

 

基本上上面三種的新聞輪播方法在項目中已經夠用了,希望能夠對大家有所幫助~如有不懂,歡迎留言~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM