HTML结构模块
<div class="banner">
<div class="banner_layout">
<div class="title"> 三大确定性 保证服务体验 </div>
<div class="banner_box">
<div class="couresel">
<p><img src="img/pinzhi.png"></p>
<ul class="scrollBox">
<li>
<img src="img/home-cal01.png">
<img src="img/home-cal02.png">
<img src="img/home-cal03.png">
</li>
</ul>
</div>
<div class="couresel">
<p><img src="img/shijian.png"></p>
<ul class="scrollBox">
<li>
<img src="img/calShijian01.png">
<img src="img/calShijian02.png">
<img src="img/calShijian03.png">
</li>
</ul>
</div>
<div class="couresel">
<p><img src="img/pinlei.png"></p>
<ul class="scrollBox">
<li>
<img src="img/calPinLei01.png">
<img src="img/calPinLei02.png">
<img src="img/calPinLei03.png">
</li>
</ul>
</div>
<div class="couresel">
<p><img src="img/pinzhi.png"></p>
<ul class="scrollBox">
<li>
<img src="img/home-cal01.png">
<img src="img/home-cal02.png">
<img src="img/home-cal03.png">
</li>
</ul>
</div>
</div>
<div class="btn_l btn">
<img src="img/left.png" >
</div>
<div class="btn_r btn">
<img src="img/right.png" >
</div>
<ul class="circles">
<li class="active item" data-n='0' ></li>
<li data-n='1' class='item'></li>
<li data-n='2' class='item'></li>
</ul>
</div>
</div>
JS核心代码
var btnL=document.querySelector('.btn_l');
var btnR=document.querySelector('.btn_r');
var bannerBox=document.querySelector('.banner_box');
var index=0;
btnR.onclick=function () {
autoPlay ();
setCircles();
}
btnL.onclick=function () {
index--;
if(index==-1){
index=2;
bannerBox.style.left=3*-1200+'px';
}
var target=index*-1200;
setCircles();
slowMoveAnimation(bannerBox,target);
}
function autoPlay () {
index++;
if(index==4){
index=1;
bannerBox.style.left=0;
}
var target=index*-1200;
slowMoveAnimation(bannerBox,target);
}
bannerBox.timer=setInterval(function () {
autoPlay ();
setCircles();
},2000)
var uls=document.querySelector('.circles');
var lis=document.querySelectorAll('.item');
uls.onclick=function (e) {
if(e.target.nodeName.toLowerCase()=='li'){
var n=Number(e.target.getAttribute('data-n'));
index=n;
setCircles();
var target=index*-1200;
slowMoveAnimation(bannerBox,target);
}
}
function setCircles () {
for(var i=0;i<lis.length;i++){
if(i==index){
lis[i].setAttribute('class','active');
}else if(i==3){
lis[0].setAttribute('class','active');
}else{
lis[i].removeAttribute('class');
}
if(index==3){
lis[0].setAttribute('class','active');
}
}
}
JS封装的动画函数
var timer;
function moveAnimation (ele,target) {
clearInterval(ele.timer);
ele.timer=setInterval(function () {
var x=ele.offsetLeft;
if(x==target){
clearInterval(timer);
}else if(x>target){
x-=10;
ele.style.left=x+'px';
}else if(x<target){
x+=10;
ele.style.left=x+'px';
}
},30)
}
var timer2;
function slowMoveAnimation (ele,target) {
clearInterval(ele.timer2);
ele.timer2=setInterval(function () {
if(ele==target){
clearInterval(ele.timer2);
}else{
var x=(target-ele.offsetLeft)/10;
x=x>0?Math.ceil(x):Math.floor(x);
ele.style.left=x+ele.offsetLeft+'px';
}
},30)
}
var timer3;
function slowMoveAnimationY (ele,target) {
clearInterval(ele.timer3);
ele.timer3=setInterval(function () {
if(ele==target){
clearInterval(ele.timer3);
}else{
var x=(target-ele.offsetTop)/10;
x=x>0?Math.ceil(x):Math.floor(x);
ele.style.top=x+ele.offsetTop+'px';
}
},30)
}