// 彩条
function ColorBar(obj,timer){
this.target = obj;
this.i = 0;
this.wind = 0;
this.timer = timer || 100;
this.other = 0;
this.init();
}
ColorBar.prototype = {
init:function(){
this.createElem();
this.snowRun();
},
getRndAndFillZero :function (){
var str=Math.ceil(Math.random()*16777215).toString(16);
while(str.length<6){
str='0'+str;
}
return str;
},
createElem : function(){
var self = this,
box = self.target,
wind = self.wind;
var s01 = Math.random()*10,
s02 = Math.random()*10,
s03 = Math.random()*10,
s04 = Math.random()*10;
var $oDiv = $('<div class="snow" id="snow'+this.i+'"></div>');
if(wind != 0){
var snow_left = Math.random() > Math.abs(wind*0.025) ? Math.random() : (wind > 0 ? 0 : 1) ;
}else{
var snow_left = Math.random();
}
snow_left = snow_left * parseInt(box.width());
var snow_top = -10,
borderColor = 'transparent transparent #' + self.getRndAndFillZero();
if (Math.random() < 0.5) {
borderColor = '#' + self.getRndAndFillZero()+' transparent transparent';
};
if (Math.random() > 0.5 && Math.random() < 0.8) {
borderColor = '#' + self.getRndAndFillZero()+' transparent transparent';
};
if (Math.random() > 0.8) {
borderColor = 'transparent #' + self.getRndAndFillZero()+' transparent transparent';
};
$oDiv.css({
position:"absolute",
top: snow_top + "px",
left:snow_left + "px",
zIndex:'-1',
borderTopWidth:s01 + "px",
borderBottomWidth:s02 + "px",
borderLeftWidth:s03 + "px",
borderRightWidth:s04 + "px",
borderColor : borderColor
});
box.append($oDiv);
self.snowGoDown('snow'+this.i,8*Math.random());
this.i++;
var randomNum = 50 * Math.random()* Math.random();
setTimeout(function(){
self.createElem();
},randomNum);
},
snowGoDown:function(snow_id,speed){
if(speed < 3){
speed = 3;
}
var self = this,
box = self.target,
timer = self.timer;
var $snow_div = $("#"+snow_id);
var snowTop = parseInt($snow_div.offset().top);
var snowHeight = parseInt(box.height());
var snowNewTop = snowTop + speed;
$snow_div.css({
top:snowNewTop+"px"
});
var n = snow_id;
if(snowTop < snowHeight){
snow_id = setTimeout(function(){
self.snowGoDown(n,speed);
},timer);
}else{
clearTimeout(snow_id);
$snow_div.remove();
speed=null;
this.other++;
};
},
snowRun:function(){
var self = this,
box = this.target;
var wind_time;
var snows = box.find(".snow");
for(var i = 0;i<snows.length;i++){
var snowLeft = parseInt(snows.offset().left) + this.wind +'px'
snows.eq(i).css('left',snowLeft);
};
if(Math.abs(this.wind) > 0.1){
wind_time = setTimeout(function(){
self.snowRun();
},this.timer)
}else{
clearTimeout(wind_time);
this.wind = 0;
};
}
}