JavaScript div以不同的不透明度级别淡入

时间:2014-03-02 17:33:23

标签: javascript

所以我不久前问过这个问题,但从未结束这个问题。现在我有10个div,我需要一次淡入,但具有不同的不透明度值。我一直在玩它但是没有运气让每个人都以不同的不透明度淡出。现在我让它立刻褪色所有的盒子到100%的不透明度。我现在只需要不同的不透明度值。这是原始代码,但添加了数组。请不要jquery,只需要核心JavaScript。

var color;

var count = 0;

var colorOpac = [0.2, 0.7, 0.3, 0.9, 0.6, 0.1, 0.4, 0.8, 0.5, 0.2];

function init() {
    color = document.querySelectorAll(".box");
    setInterval(fadeColor, 1000);

}

function fadeColor() {
    setInterval(fade, 50);
}

function fade() {
    for(i=0; i<color.length;i++){
     color[i].style.opacity = count;

}
    count = count + 0.01;
}

window.addEventListener("load", init, false);

2 个答案:

答案 0 :(得分:0)

尝试创建一个单独的功能模块,用于处理如下所示的淡入淡出操作。

(function(window){

    function fadeManager(ele,opacity){
        this.opacity = 0;       
        this.opacityLimit = opacity;
        this.ele = ele;
        //console.log(this.ele,this.opacity);
        this.initFade();
    }

    fadeManager.prototype.initFade = function(){        
        this.interval = setInterval(this.fade, 50, this);       
    }

    fadeManager.prototype.fade = function(self) {
        console.log(self.ele,self.opacity);
        if(self.opacity < self.opacityLimit){
           self.ele.style.opacity = self.opacity;
           self.opacity = self.opacity + 0.01;
        }
        else{
            clearInterval(self.interval);    
        }
    }

    window.fadeManager = fadeManager;
})(window);

然后将您的代码更改为以下内容,

    var color;        
    var count = 0;

    var colorOpac = [0.2, 0.4, 0.3, 0.1, 0.6, 0.1, 0.4, 0.8, 0.5, 0.2];

    function init() {
        color = document.querySelectorAll(".box"); 
        for(i=0; i<color.length;i++){
            // this will init fade in operation.
            var fade = new fadeManager(color[i],colorOpac[i]);
        }
    }

    window.addEventListener("load", init,false);

CodePEN

JSFIDDLE

答案 1 :(得分:0)

以防万一有兴趣。我还找到了一种方法,可以在使用它之后再使用3个函数。在这里!

var color;

var count = 0;

var colorOpac = [0.2, 0.7, 0.3, 1, 0.6, 0.1, 0.4, 0.8, 0.5, 0.2];

function init() {
    color = document.querySelectorAll(".box");
    setInterval(fadeColor, 1000);

}

function fadeColor() {
    setInterval(fade, 50);
}

function fade() {
    for(i=0; i <color.length;i++){

    if(count < colorOpac[i]){
        color[i].style.opacity = count;
    }
}
    count = count + 0.01;
}

window.addEventListener("load", init, false);`