前言
还记得有一回面试,面试官让我上机用jQuery实现轮播图。当时我内心是崩溃的,想着现在不都使用插件吗?谁还自己实现轮播图(其实,是我自己不会。)。最近,又碰到文字的轮播,所以还是有必要自己写写相关代码的。
这里以文字轮播为例
一、左右无缝轮播
想要实现的效果如图所示:
1.css
1 | * { padding: 0; margin: 0; } |
2.html
1 | <div class="wrap"> |
3.JavaScript说明
思维步骤:
1.克隆第一个li追加到ul最后面;
2.自动向左轮播时,设置一个参数index表示li的索引,通过index来计算ul的偏移量left,向左轮播一个li,index+1;
3.自动向左轮播到最后一张图片时,ul的偏移量left= (li的个数-1)*显示区域的宽度
,如图所示;
4.要想实现无缝向左轮播,其实就是当index = li的个数-1
时,将ul的偏移量瞬时改为0,又回到初始状态(这个过程我们看不见)。由于下一次轮播时,index先加1,所以直接显示第二个li的内容,如图所示:
5.点击右边的箭头,实现原理和自动向左轮播一样;
6.点击左边的箭头,就是让ul向右轮播,同样的使用index作为li的索引值,向右轮播一次index-1;
7.无缝向右轮播,其实就是当index = 0
时,点击箭头时,让index = li的个数-2
,让ul的偏移量瞬时为(li的个数-1)*显示区域的宽度;
1 | $(function () { |
注意:要想animate动画函数起作用,那么这个对象必须是绝对定位的。
二、上下无缝轮播
想要实现的效果如图所示:
完整代码如下:
1 |
|