原生js无缝滚动轮播图(html无缝滚动)
怎么用js的原生写法写出来一个轮播图呢?
1:排出一个版,包含上下切换的标识和图片导航,所有图片隐藏,给图片第一张加一个class名,样式设为显示,图片导航的第一个加一个class名,加上背景色;
2:获取节点;
3:给向下切换写一个点击事件,点击图片切换到下一张,注意当图片切换到最后一张的时候会报错,所以必须要判断一下,当图片切换到最后一张的时候在,再次击会切换到第一张;
4:给向上切换写一个点击事件,注意当图片切换到第一张之后会报错,所以必须要判断一下,当图片切换到第一的时候,再次点击会切换到最后张,循环起来;
5:写一个定时器,定时器的播放顺序和向下切换一致,可以封装一个函数方便调用;
6:写鼠标划入事件,清除定时器;
7:写鼠标移出事件,定时器继续运行;
8:图片导航的点击事件
点击事件click
定时器setlnterval()
if判断
for()循环
js中无缝滚动轮播图有多少种做法?
还有就是用原生js模仿jQuery写一个动画函数,最简单版的就是:
var timer = null;
function ani(ele,target) {
clearInterval(ele.timer);
ele.timer = setInterval(function() {
var step = (target - ele.offsetLeft)/10;
step = step0?Math.ceil(step):Math.floor(step);
ele.style.left = ele.offsetLeft + step + "px";
console.log(1);
if (Math.abs(target - ele.offsetLeft) = Math.abs(step)) {
ele.style.left = target + "px";
clearInterval(ele.timer);
}
},30);
}
利用动画实现图片位置的移动,也是放一个图片到前面。
第二个就是还是放一张图到前面,然后把带图片的li定位;用一个arr[{left:0},{left:"200px"},{left:"400px"},{left:"600px"}];这样的数组把值分别赋给li;要滚动的时候把arr的最后一项放到最前面,再依次赋值给li,加上过渡就是轮播了,当然直接跳的那一下把过渡关了才是无缝轮播。
原型js的无缝轮播图包装怎么让他真的停下来
轮播图的原理是通过setInterval定时执行函数来控制图片轮播,停下来可以使用clearInterval清除定时器。