原生js实现焦点轮播图效果
原生js焦点轮播图主要注意这几点:
1、前后按钮实现切换,同时注意辅助图
2、中间的button随着前后按钮对应切换,同时按button也能跳转到相应的index
3、间隔调用与无限轮播。
4、注意在动画时要停止按钮,或者说上一个动画完毕下一个动画才能执行
5、另外在切换图片的时候,底部的Button动画效果,是从底部开始往上升的,要用到transform:scale()和transform-origin:0100%两个转换属性,代码如下
<!DOCTYPEhtml>
<html>
<head>
<metacharset="utf-8"/>
<metaname="viewpoint"content="width=device-width,initial-scale=1,user-scalable="no">
<title>20170101</title>
<styletype="text/css">
a{text-decoration:none;color:#3DBBF5;}
.wrapper{width:750px;height:350px;background:#001032;margin:20pxauto;text-align:center;box-shadow:0012px2pxhsla(0,20%,30%,0.5);padding:10px15px;position:relative;}
.effect{position:relative;cursor:pointer;}
.effect:hover{color:#02a0e9;}
.effect:before{width:100%;display:inline-block!important;position:absolute;height:1px;background:#02a0e9;transition:all0.4sease-in-out;-webkit-transition:all0.4sease-in-out;-moz-transition:all0.4sease-in-out;transform:scale(0,1);content:'';bottom:-5px;left:0;}
.effect:hover:before{transform:scale(1);-webkit-transform:scale(1);}
#lunBo{margin-top:20px;overflow:hidden;height:300px;width:750px;position:relative;}
#list{position:absolute;z-index:22;height:300px;width:5250px;}
#listimg{float:left;}
#buttons{position:absolute;height:20px;width:150px;z-index:99;bottom:20px;left:40%;}
span{cursor:pointer;float:left;width:10px;height:5px;background:#333;margin-right:10px;}
.on{background:yellow;transition:all0.4sease-in-out;-webkit-transition:all0.4sease-in-out;-moz-transition:all0.4sease-in-out;transform:scale(1,4);-ms-transform:scale(1,4);-moz-transform:scale(1,4);-webkit-transform:scale(1,4);transform-origin:0%0%;-webkit-transform-origin:0%100%;-moz-transform-origin:0%100%;}
.arrow{cursor:pointer;display:none;line-height:39px;text-align:center;font-size:36px;font-weight:bold;width:40px;height:100px;line-height:100px;position:absolute;z-index:92;top:30%;background-color:RGBA(0,0,0,.3);color:#fff;}
.arrow:hover{background-color:RGBA(0,0,0,.7);}
#lunBo:hover.arrow{display:block;}
#prev{left:0px;}
#next{right:0px;}
</style>
</head>
<body>
<divclass="wrapper">
<aclass="effect"href="#">2016完了,2017来了</a>
<divid="lunBo">
<divid="list"style="left:-750px;">
<imgsrc="http://cdn.attach.qdfuns.com/notes/pics/201701/03/175856saeagzgsnwal15n5.jpg"alt=""/>
<imgsrc="http://cdn.attach.qdfuns.com/notes/pics/201701/02/235009drzwcaxem2wfgmdc.jpg"alt=""/>
<imgsrc="http://cdn.attach.qdfuns.com/notes/pics/201701/03/175856m1bhxxx1d8jfnblb.jpg"alt=""/>
<imgsrc="http://cdn.attach.qdfuns.com/notes/pics/201701/03/175856z48mfrrr8u064rf6.jpg"alt=""/>
<imgsrc="http://cdn.attach.qdfuns.com/notes/pics/201701/03/175856e95yze236lvq7y2a.jpg"alt=""/>
<imgsrc="http://cdn.attach.qdfuns.com/notes/pics/201701/03/175856saeagzgsnwal15n5.jpg"alt=""/>
<imgsrc="http://cdn.attach.qdfuns.com/notes/pics/201701/02/235009drzwcaxem2wfgmdc.jpg"alt=""/>
</div>
<divid="buttons">
<spanindex="1"class="on"></span>
<spanindex="2"></span>
<spanindex="3"></span>
<spanindex="4"></span>
<spanindex="5"></span>
</div>
<ahref="javascript:;"id="prev"class="arrow"><</a>
<ahref="javascript:;"id="next"class="arrow">></a>
</div>
</div>
<script>
window.onload=function(){
varlunBo=document.getElementById('lunBo');
varlist=document.getElementById('list');
varbuttons=document.getElementById('buttons').getElementsByTagName('span');
//console.log(buttons);
varprev=document.getElementById('prev');
varnext=document.getElementById('next');
varindex=1;
varanimated=false;
varinterval=3000;
vartimer;
//显示按钮的索引
functionshowButton(){
for(vari=0;i<buttons.length;i++){
if(buttons[i].className=='on'){
buttons[i].className='';
break;
};
};
buttons[index-1].className='on';
};
functionplay(){
timer=setTimeout(function(){
next.onclick();
play();
},interval);
};
functionstop(){
clearTimeout(timer);
};
//向前按钮
next.onclick=function(){
if(animated){
return;
}
if(index==5){
index=1;
}
else{
index+=1;
}
animate(-750);
showButton();
};
prev.onclick=function(){
if(animated){
return;
}
if(index==1){
index=5;
}
else{
index-=1;
}
animate(750);
showButton();
};
//parseInt()转换为纯数值
functionanimate(offset){
animated=true;
varnewLeft=parseInt(list.style.left)+offset;//目标值
vartime=300;//位移总时间为300
varinterval=10;//
varspeed=offset/(Math.floor(time/interval));//每次位移量
functiongo(){
if((speed<0&&parseInt(list.style.left)>newLeft)||(speed>0&&parseInt(list.style.left)<newLeft)){
list.style.left=parseInt(list.style.left)+speed+'px';
setTimeout(go,interval);
}else{
animated=false;
list.style.left=newLeft+'px';//现在的位移
if(newLeft>-750){//假的辅助图
list.style.left=-3750+'px';
}
if(newLeft<-3750){
list.style.left=-750+'px';
}
}
};
go();
};
//小按钮
for(vari=0;i<buttons.length;i++){
buttons[i].onclick=function(){
if(this.className=='on'){
return;
};
varmyIndex=parseInt(this.getAttribute('index'));
varoffset=-750*(myIndex-index);
animate(offset);
index=myIndex;
showButton();
}
}
lunBo.onmouseout=play;
lunBo.onmouseover=stop;
play();
}
</script>
</body>
</html>
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持毛票票!