4 回答
TA貢獻1891條經驗 獲得超3個贊
您正在尋找setInterval
var DivB = document.getElementsByClassName("box");
var divIndex = 0;
var interval = setInterval(() => {
DivB[divIndex].style.opacity = "1";
divIndex++;
if (divIndex === divB.length - 1) clearInterval(interval);
} , 1000)
基本上,這將每隔一秒觸發一次,將不透明度設置divB[divIndex]為'1'。divIndex本身也會增加每個間隔。處理完所有DivB元素后,將清除間隔。
TA貢獻1817條經驗 獲得超6個贊
你可以這樣做 :
var DivB = document.getElementsByClassName("box");
function myFade() {
for (let i = 0; i < DivB.length; i++) {
setTimeout(() => {
DivB[i].style.opacity = "1"
}, i * 1000)
}
}
myFade();
.box {
display: inline-block;
position: relative;
opacity: 0;
}
<div class='box'>1</div>
<div class='box'>2</div>
<div class='box'>3</div>
我建議您閱讀和之間的區別var,let特別是在使用setTimeoutand的循環時setInterval
TA貢獻1828條經驗 獲得超3個贊
您可以從您發布的代碼示例之一添加transition: all 1s;到框中的 CSS:
var DivB = document.getElementsByClassName("box");
setTimeout(function(){DivB[0].style.opacity = "1"}, 1000);
setTimeout(function(){DivB[1].style.opacity = "1"}, 2000);
setTimeout(function(){DivB[2].style.opacity = "1"}, 3000);
.box { display:inline-block; position:relative; opacity:0;
transition: all 1s;}
<div class='box'>1</div><br/>
<div class='box'>2</div><br/>
<div class='box'>3</div><br/>
TA貢獻1966條經驗 獲得超4個贊
試試看:
function fadeElementsProgressive(className, timePerElement = 1000) {
const divs = document.getElementsByClassName(className);
for(let i = 0; i < divs.length; i++) {
setTimeout(() => {
divs[i].style.opacity = 1;
}, i * timePerElement)
}
}
fadeElementsProgressive('box');
.box { display:inline-block; position:relative; opacity:0; }
<div class='box'>1</div><br/>
<div class='box'>2</div><br/>
<div class='box'>3</div><br/>
這將創建一個獲取類名并執行淡入淡出的函數。
添加回答
舉報
