基本功能
- 轮回播放
- 自定义过渡时间、间隔时间
- 上一张、下一张
完整代码
<!DOCTYPE html><html><head lang="en"><meta charset="UTF-8"><title></title><style>* {padding: 0;margin: 0;}.container {width: 126px;height: 86px;overflow: hidden;margin: 100px auto;background-color: aquamarine;}.swiper {list-style: none;display: flex;/* transition: all 400ms ease-in-out; */}.swiper:hover {animation-play-state: paused;}.item {flex-basis: 126px;flex-shrink: 0;width: 126px;height: 86px;background: rgba(11, 22, 11, .4);box-sizing: border-box;border: 2px solid red;}.img {width: 100%;height: 100%;overflow: hidden;}.control {display: flex;justify-content: center;}</style></head><body><div class="container"><ul class="swiper"><li class="item"><!-- 1 --><img class="img" src="images/1.jpg" alt="" /></li><li class="item"><!-- 2 --><img class="img" src="images/2.jpg" alt="" /></li><li class="item"><!-- 3 --><img class="img" src="images/3.jpg" alt="" /></li><li class="item"><!-- 4 --><img class="img" src="images/4.jpg" alt="" /></li><li class="item"><!-- 5 --><img class="img" src="images/5.jpg" alt="" /></li><li class="item"><!-- 6 --><img class="img" src="images/6.jpg" alt="" /></li><li class="item"><!-- 7 --><img class="img" src="images/7.jpg" alt="" /></li></ul></div><div class="control"><div>轮播间隔:<input id="input1" type="text" value="800"><br />过渡时间:<input id="input2" type="text" value="400"><br /><button id="btn">重置轮播</button><br /><button id="pre">上一张</button><button id="next">下一张</button></div></div><script>window.onload = function () {const swiper = document.querySelectorAll('.swiper')[0]const count = document.querySelectorAll('.item').lengthlet timerlet mark = -1let i = 0const getI = (i) => {if (i < 1 || (i < count - 1 && i > mark)) {mark = ireturn ++i} else {--imark = ireturn i}}const refrence = () => {clearInterval(timer)const interval = document.querySelector('#input1').valueconst duration = document.querySelector('#input2').valueconsole.log(interval, duration)swiper.style.transition = `all ${duration}ms ease-in-out`timer = setInterval(() => {i = getI(i)swiper.style.transform = `translate(${-126 * i}px)`}, interval)}refrence()document.querySelector('#btn').onclick = refrencedocument.querySelector('#pre').onclick = () => {i = getI(i)swiper.style.transform = `translate(${-126 * i}px)`}document.querySelector('#next').onclick = () => {i = getI(i)swiper.style.transform = `translate(${-126 * i}px)`}}</script></body></html>
样图

依赖
无
优化
上一张、下一张有问题
