新物网

当前位置:首页 > 百科

百科

应用jQuery完成左右滚动的操作和自动滚动效果

时间:2023-10-23 12:15:01 闻子
与原生JavaScript相比,对jquery的痴迷是如此的美丽。促使我更加努力地研究原生态JavaScriptt.分享一个操纵左右滚动和自动滚动的示例, 昨晚花了两个多小时, 被悍蚊咬后, 汗液侵袭, 一行行敲出的血汗编码. 嘿嘿.封装有两种形式
与原生JavaScript相比,对jquery的痴迷是如此的美丽。促使我更加努力地研究原生态JavaScriptt.
分享一个操纵左右滚动和自动滚动的示例, 昨晚花了两个多小时, 被悍蚊咬后, 汗液侵袭, 一行行敲出的血汗编码. 嘿嘿.
封装有两种形式: 点击翻转版本号DEMO     DEMO自动滚动版本号,源代码包含详细的注释。
构思:
点击翻转模式,点击(前/后/数据)加click,通过调整显示厅left值完成转换。
1.向前(左):例如,在第一个部分,翻转到后一个页面,否则,积累left值,向前翻转;
2.后(右):例如,在最后一个部分,翻转到第一个网页页面,否则,累减left值,向后翻转;
3.数据点:利用index(..)在现阶段点击数字列表中的索引值, 然后索引值倍率为外场总宽负数,可以实现转换。
关键编码:

01 //***向前翻转

02 $pre.click(function(){

03 if (!$showbox.is(':animated')) { ///分辨展厅是否是动漫

04 if ($cur == 1) { //在第一个版块,然后向前翻转到后一个部分

05 $showbox.animate({

06 left: '-=' $w * ($pages - 1)

07 }, 500); ///更改left值,转换表示板块,500(ms)为了翻转时间,相同

08 $cur = $pages; ///复位版块是最后一个版块

09 }

10 else {

11 $showbox.animate({

12 left: ' =' $w

13 }, 500); //改变left值,转换表示板块

14 $cur--; ///版块累减

15 }

16 $num.eq($cur - 1).addClass('numcur').siblings().removeClass('numcur'); //为相应的版块数据加上高亮度风格,清除高亮度风格的平级元素

17 }

18 });

19 //***向后翻转

20 $next.click(function(){

21 if (!$showbox.is(':animated')) { ///分辨展厅是否是动漫

22 if ($cur == $pages) { //当最后一节向后翻转到第一节时,

23 $showbox.animate({

24 left: 0

25 }, 500); ///更改left值,转换表示板块,500(ms)为了翻转时间,相同

26 $cur = 1; ////复位版块是第一个版块

27 }

28 else {

29 $showbox.animate({

30 left: '-=' $w

31 }, 500);//改变left值,转换表示板块

32 $cur ; ///版块数积累

33 }

34 $num.eq($cur - 1).addClass('numcur').siblings().removeClass('numcur'); //为相应的版块数据加上高亮度风格,清除高亮度风格的平级元素

35 }

36 });

37 //***数据js点击事件

38 $num.click(function(){

39 if (!$showbox.is(':animated')) { ///分辨展厅是否是动漫

40 var $index = $num.index(this); ///检索出现阶段点列表中的位置值

41 $showbox.animate({

42 left: '-' ($w * $index)

43 }, 500); ///更改left值,转换表示板块,500(ms)为翻转时长

44 $cur = $index 1; //复位版块值,这句话可以防止翻转到第三版时,点击后面的按钮,出来空缺版.index()选值从0开始,故加1

45 $(this).addClass('numcur').siblings().removeClass('numcur'); //为现在点一下,加上高亮度的款式,清除高亮度风格的平级元素

46 }

47 });

自动滚动模式是基于点击翻转模式加强的,只不过是添加自动滚动的东西,并在鼠标划分时消除动画的东西。
这里需要说明一点.在DEMO演试中,当鼠标经过时,向前/向后/数据/区域都添加了消除动画的东西。然而,如果你的页面上有这些需要添加和消除的动画事件,它们都在同一个区域,你可以使用trigger(…)模拟来完成自动滚动
还有一点,settimeout应该用于自动滚动(”fun”,interval)没有setinterval(”fun”,interval)完成. 主要原因是,setinterval应在间隔后重复传输的函数公式,而settimeout只能在间隔后实现一次函数传输到函数公式,这样就可以防止动画在第二次电脑鼠标划归终止动画区域时被消除。
关键编码:

01 ...

02 //***启动自动滚动

03 autoSlide();

04 ...

05 //***终止翻转

06 clearFun($showbox);

07 clearFun($pre);

08 clearFun($next);

09 clearFun($num);

10 //***事情归归时停止自动滚动

11 function clearFun(elem){

12 elem.hover(function(){

13 clearAuto();

14 }, function(){

15 autoSlide();

16 });

17 }

18 //***自动滚动

19 function autoSlide(){

20 $next.trigger('click');

21 $autoFun = setTimeout(autoSlide, 3000);///这里不能使用setinterval,setinterval重复执行到函数公式,此时造成第二次划归的无效停止

22 }

23 //***消除自动滚动

24 function clearAuto(){

25 clearTimeout($autoFun);

26 }