js练手
公司项目的需要,这个效果并没有什么出彩的地方,只是比较满意里面的写法。
function luckyDraw(){this.init.apply(this,arguments)};
luckyDraw.prototype = {
init:function(cons,prev,next){
var _this = this;
this.go = false;
this.len = cons.length;
this.cur = 0;
next.onclick = function(){
if(_this.go) return;
_this.show(cons,1,_this.cur);
}
prev.onclick = function(){
if(_this.go) return;
_this.show(cons,-1,_this.cur);
}
},
setAlpha:function(el,val){
el.style.filter = "alpha(opacity=" + parseInt(val * 100) + ")";
el.style.opacity = val;
},
show:function(node,n,m){
this.animate(node[m],0);
m = n>0 ? (m==this.len-1 ? 0 : ++m) : (n<0 ? ( m==0 ? this.len-1 : --m) : m);
this.cur = m;
this.setAlpha(node[m],0)
this.animate(node[m],1);
},
animate:function(node,n){
var i=0,m=1,_this = this,timer = null;
timer = n==0 ? setInterval(function(){
_this.go = true;
m-=0.2
if(m<=0){clearInterval(timer);_this.go = false;}
_this.setAlpha(node,m);
},16) : ( n== 1 ? setInterval(function(){
_this.go = true;
i+=0.2;
if(i>=1){clearInterval(timer); _this.go = false;}
_this.setAlpha(node,i);
},16) : null);
}
}
function getEleByClassName(tag,oClass,parent){
parent = parent || document;
var eles = [];
var el = parent.getElementsByTagName(tag),i=0,len=el.length;
for(;i<len;i++){
if(hasClass(el[i],oClass)) eles.push(el[i]);
}
return eles;
}
function hasClass(node,oClass){
var sClass = node.className;
return (' ' + sClass + ' ').indexOf(' '+oClass+' ') != -1;
}
var prev = document.getElementById('prev'),next = document.getElementById('next'),box = document.getElementById('test');
var cons = getEleByClassName('div','con',box);
new luckyDraw(cons,prev,next);
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style type="text/css">
#test { width:500px; height:300px; position:relative;}
.con { position:absolute; top:0; left:0; width:500px; height:300px; background:#ddd; font-size:60px; line-height:300px; text-align:center; filter:alpha(opacity=0); opacity:0;}
.con img {width:500px; height:300px; }
.con1 { z-index:5;filter:alpha(opacity:100%); opacity:1;background:blue}
.con2 { z-index:4; background:red}
.con3 { z-index:3;background:green}
.con4 { z-index:2;background:yellow}
.con5 { z-index:1;background:#eee}
</style>
</head>
<body>
<div id="test">
<div class="con con1">1</div>
<div class="con con2">2</div>
<div class="con con3">3</div>
<div class="con con4">4</div>
<div class="con con5">5</div>
</div>
<input name="" type="button" value="prev" id="prev" />
<input name="" type="button" value="next" id="next" />
<script type="text/javascript" src="luckyDraw.js"></script>
</body>
</html>
浙公网安备 33010602011771号