JS动画 跑马灯 按钮轮播图效果

438 阅读2分钟

第一步 布局

轮播图盒子→ul插入图片→左右两个按钮

image.png

注意点:按钮使用的链接标签,所以链接中书写 "javascript:;" 这样点击的时候就不会刷新页面了

第二步 css样式

image.png

image.png

效果:

image.png

第三步 javascript

image.png

定义idx,idx代表ul中的第几张图片 var idx = 0 ; 同时,在ul的CSS样式中增加相对定位和left值,这样left值改变,ul图片才能左右移动 以及设置每张图片过渡属性

image.png

(1)先设置右按钮点击

image.png

1.1 这样点击右按钮可以向右换图,但是点到最后一张图,ul还会继续左移,盒子内出现空白。 于是我们就要用 【if语句】进行控制 【if语句】要写在 idx++ 后面,这样每次idx=0后,left值才能等于0

image.png

不过现在又出现个小问题: 虽然能够回到第一张图,但是效果是从最后一张图 “轱辘” 回第一张的 因为有过渡属性。我们想让其瞬间回到第一张

1.2 于是用到小技巧【克隆第一张图 让克隆图当最后一张 也就是第6张图】

image.png

1.3 设置延时器,并且取消过渡属性,这样就行变戏法,0.5s延时后,最后一张变为第一张

image.png

1.4 又出现小问题,右按钮点击一轮后,过渡属性就没有了。 现在在延时器结束后,再给过渡属性加回来

image.png

(2)下面设置左按钮

image.png

1.1 和右按钮同样的道理,在第一张按左按钮,ul继续右移动出现空白。 于是在按左按钮的时候,函数要先判断是不是第一张,如果是 就瞬间切换到第5张。 同时取消过渡属性

image.png

1.2 if语句结束后,加上过渡属性。

image.png

1.3 此时发现在第一张图点击左按钮又会 “轱辘” 回来。 小技巧:增加一个【0秒延时器】,让idx=0的时候,立马取消过渡,再立马加回过渡属性

image.png

要将上面的idx=5 删掉,在延时器中书写idx=4,从第四张恢复过渡属性 最后加上else语句**(说实话,这块我也没太明白)** 反正最后能自由切换,并且都有过渡属性