原生js实现旋转木马轮播图效果
话不多说,请看代码:
<!DOCTYPEhtml>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>旋转木马特效</title>
<styletype="text/css">
*{margin:0;padding:0;list-style:none;}
#demo{width:1200px;margin:100pxauto0;}
#innerht{width:1200px;height:500px;position:relative;}
ulli{position:absolute;top:0;left:0;z-index:1;}
ulliimg{width:100%;}
#corrow{position:absolute;width:100%;top:50%;opacity:0;z-index:99;}
#btn_lef,#btn_rig{position:absolute;height:112px;width:76px;top:50%;margin-top:-56px;}
#btn_lef{left:0;}
#btn_rig{right:0;}
</style>
</head>
<body>
<divid="demo">
<divid="innerht">
<ul>
<li><ahref="javascript:;"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"><imgsrc="http://www.qdfuns.com/misc.php?mod=attach&genre=editor&aid=dac666f84f6ad05ec026ad655ea0f159"alt=""></a></li>
<li><ahref="javascript:;"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"><imgsrc="http://www.qdfuns.com/misc.php?mod=attach&genre=editor&aid=89c2213f2b614db88b5724b82dafc02a"alt=""></a></li>
<li><ahref="javascript:;"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"><imgsrc="http://www.qdfuns.com/misc.php?mod=attach&genre=editor&aid=e7969486909c076abf795995bdc3da54"alt=""></a></li>
<li><ahref="javascript:;"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"><imgsrc="http://www.qdfuns.com/misc.php?mod=attach&genre=editor&aid=b404e53a3f4dd7e97438693e8e2d4082"alt=""></a></li>
<li><ahref="javascript:;"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"><imgsrc="http://www.qdfuns.com/misc.php?mod=attach&genre=editor&aid=ed309dded163d172b53154b2046eb1a2"alt=""></a></li>
</ul>
<divid="corrow">
<ahref="javascript:;"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"id="btn_lef"><imgsrc="http://www.qdfuns.com/misc.php?mod=attach&genre=editor&aid=206927b03b97b194bc04cdcaf0e10a33"height="112"width="76"alt=""></a>
<ahref="javascript:;"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"id="btn_rig"><imgsrc="http://www.qdfuns.com/misc.php?mod=attach&genre=editor&aid=0e84253cccdf667e293522a0a107eeec"height="112"width="76"alt=""></a>
</div>
</div>
</div>
</body>
<scripttype="text/javascript">
(function(window){
function$(id){
returndocument.getElementById(id);
};
//每张图片对应的样式
vartempArr=[
{
"width":400,
"top":20,
"left":50,
"opacity":0.2,
"zIndex":2
},
{
"width":600,
"top":70,
"left":0,
"opacity":0.8,
"zIndex":3
},
{
"width":800,
"top":100,
"left":200,
"opacity":1,
"zIndex":4
},
{
"width":600,
"top":70,
"left":600,
"opacity":0.8,
"zIndex":3
},
{
"width":400,
"top":20,
"left":750,
"opacity":0.2,
"zIndex":2
}
];
//设置限流函数
varonOff=true;
//获取对象
varleft=$("btn_lef"),right=$("btn_rig"),innerht=$("innerht"),ul=innerht.children[0],lis=ul.children,arrow=$("corrow");
//给每个li添加样式
addStyle();
//大盒子的hover事件
innerht.onmouseover=function(){
animate(arrow,{"opacity":1});
};
innerht.onmouseout=function(){
animate(arrow,{"opacity":0});
};
//右箭头点击事件
right.onclick=function(){
if(onOff){
onOff=false;
varatop=tempArr.shift();
tempArr.push(atop);
addStyle();
};
};
//左箭头点击事件
left.onclick=function(){
if(onOff){
onOff=false;
varapop=tempArr.pop();
tempArr.unshift(apop);
addStyle();
};
};
functionaddStyle(){
for(i=0;i<lis.length;i++){
animate(lis[i],tempArr[i],function(){
onOff=true;
console.log(onOff);
});
};
};
//设置animate函数
functionanimate(obj,json,fn){
clearInterval(obj.timer);
obj.timer=setInterval(function(){
varflog=true;
for(kinjson){
if(k==="zIndex"){
obj.style[k]=json[k];
}elseif(k==="opacity"){
varleader=getStyle(obj,k)*100;
vartarget=json[k]*100;
varstep=(target-leader)/10;
step=step>0?Math.ceil(step):Math.floor(step);
//浮点数判断相等时是不准确的
//所以不能写leader=(leader+step)/100;
//保持leader和target都是整数,便于下面判断相等
leader=leader+step;
obj.style[k]=leader/100;
}else{
varleader=parseInt(getStyle(obj,k))||0;
vartarget=json[k];
varstep=(target-leader)/10;
step=step>0?Math.ceil(step):Math.floor(step);
leader=leader+step;
obj.style[k]=leader+"px";
};
if(leader!==target){
flog=false;
};
};
console.log(flog);
if(flog){
clearInterval(obj.timer);
if(fn){
fn();
};
};
},15);
};
//设置getStyle函数,获取计算后的样式
functiongetStyle(obj,attr){
if(window.getComputedStyle){
returnwindow.getComputedStyle(obj,null)[attr];
}else{
returnobj.currentStyle[attr];
};
};
})(window)
</script>
</html>
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持毛票票!