Как сделать, чтобы скрипт №2 начинал работу вслед за скриптом №1?
Имеется два скрипта, один рандомно показывает блоки, а второй
скрывает через N секунд содержимое блока №1. Но как сделать, чтобы код скрывал содержимое еще и блока №3? а также отчитывал время до скрытия содержимого этих блоков не с момента загрузки страницы, а с момента показа данных блоков?
document.addEventListener( "DOMContentLoaded" , function() {
class RandomFadeIn {
constructor(cls, delay=1350, pause=300){
this.parent = document.querySelector(cls);
this.items = this.parent.children;
delay = Array.from({length : this.items.length}, (v,k) => delay * k);
Array.from(this.items).forEach((el,i) => {
i = delay.length * Math.random()|0;
i = delay.splice(i, 1)[0];
el.style.setProperty("--delay", `${i}ms`)
});
window.setTimeout(()=> this.parent.classList.add("show"), pause);
}
}
new RandomFadeIn(".box-container")
});
setTimeout(function(){
document.getElementById('message').style.display = 'none';
}, 5000);
<div class="box-container"> <div class="block"><div class="num">1</div><div class="items">один<p id="message">текст №1 скроется через 5 сек.</p></div></div> <div class="block"><div class="num">2</div><div class="items">два</div></div> <div class="block"><div class="num">3</div><div class="items">три<p id="message">текст №2 скроется через 5 сек.</p></div></div> <div class="block"><div class="num">4</div><div class="items">четыре</div></div> </div>
.box-container {
width: 232px;
display: grid;
grid-gap: 5px;
grid-template-columns: repeat(auto-fit, minmax(50px, 1fr));
}
.box-container div {
height: 50px;
width: 50px;
text-align: center;
background-color: hsla(0, 0%, 75%, 1);
line-height: 50px;
position: relative;
}
.box-container div .items{
margin: 0;
position: absolute;
left: 0;
top: 0;
width: 100%;
background-color: hsla(167, 100%, 30%, 1);
display: block;
opacity: 0;
z-index: -1;
transition: 1s var(--delay);
}
.box-container.show div .items{
opacity: 1;
z-index: 1;
}
|
Lefseq,
Событие transitionend |
рони,
а как это событие можно применить в данном коде? |
Цитата:
<!doctype html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
.box-container {
width: 232px;
display: grid;
grid-gap: 5px;
grid-template-columns: repeat(auto-fit, minmax(50px, 1fr));
}
.box-container div {
height: 50px;
width: 50px;
text-align: center;
background-color: hsla(0, 0%, 75%, 1);
line-height: 50px;
position: relative;
}
.box-container div .items{
margin: 0;
position: absolute;
left: 0;
top: 0;
width: 100%;
background-color: hsla(167, 100%, 30%, 1);
display: block;
opacity: 0;
z-index: -1;
transition: 1s var(--delay);
}
.box-container.show div .items{
opacity: 1;
z-index: 1;
}
.box-container.show div .items .message{
transition: 1s calc(var(--delay) + 6s);
opacity: 0;
}
</style>
<script>
document.addEventListener( "DOMContentLoaded" , function() {
class RandomFadeIn {
constructor(cls, delay=1350, pause=300){
this.parent = document.querySelector(cls);
this.items = this.parent.children;
delay = Array.from({length : this.items.length}, (v,k) => delay * k);
Array.from(this.items).forEach((el,i) => {
i = delay.length * Math.random()|0;
i = delay.splice(i, 1)[0];
el.style.setProperty("--delay", `${i}ms`);
});
window.setTimeout(()=> this.parent.classList.add("show"), pause);
}
}
new RandomFadeIn(".box-container")
});
</script>
</head>
<body>
<div class="box-container">
<div class="block"><div class="num">1</div><div class="items">один<p class="message">текст №1 скроется через 5 сек.</p></div></div>
<div class="block"><div class="num">2</div><div class="items">два</div></div>
<div class="block"><div class="num">3</div><div class="items">три<p class="message">текст №2 скроется через 5 сек.</p></div></div>
<div class="block"><div class="num">4</div><div class="items">четыре</div></div>
</div>
</body>
</html>
|
рони,
Все работает. Спасибо. |
| Часовой пояс GMT +3, время: 12:34. |