3种方式实现列表手动滚动

优采云 发布时间: 2020-08-09 15:04

  自动滚动这些疗效在网页中还是比较常见的。现在,就我在做项目期间所用到的才能实现手动滚动的方式做一个总结。

  方法一:用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);

  方法三:从左向右轮播

<p> 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 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线