Reputation: 100
In this code, I want the div
to show and hide during the sequence. In this code first div
appears when the sequence starts, after sequence reaches image no 5, the first div
is hidden and the second div
appears. Then after thesequence reaches no 7, div
no 2 is hide and div
no 3 appears and finally when the sequence reaches image no 15, div
no 3 is hidden and div no 4 appears. Is this possible?
onload = function startAnimation() {
var frames = document.getElementById("animation").children;
var frameCount = frames.length;
var i = 0, j = 0;
var interval = setInterval(function () {
frames[i % frameCount].style.display = "none";
frames[++i % frameCount].style.display = "block";
j++;
if(j === 14) {
clearInterval(interval);
}
},100);
}
#animation img {
display: none;
}
#animation img:first-child {
display: block;
}
.d-none{
display:none
}
.d-block{
display:block;
}
<div id="animation">
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging01.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging02.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging03.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging04.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging05.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging06.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging07.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging08.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging09.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging10.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging11.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging12.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging13.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging14.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging15.png" />
</div>
<div class="d-block">
this div is aappear1
</div>
<div class="d-none">
this div is aappear2
</div>
<div class="d-none">
this div is aappear3
</div>
<div class="d-none">
this div is aappear4
</div>
Upvotes: 0
Views: 543
Reputation: 2209
This can be done, considering j
is the counter of the loaded images, you just need to test if this number is < 5
then display #div1
and hide the rest, etc ...
Please consider that this is not the optimal solution, there is so many ways to enhance it. Happy coding :D
onload = function startAnimation() {
var frames = document.getElementById("animation").children;
var frameCount = frames.length;
var i = 0, j = 1;
var interval = setInterval(function () {
if(j < 5 ){
document.getElementById("div1").style.display = "block";
document.getElementById("div2").style.display = "none";
document.getElementById("div3").style.display = "none";
document.getElementById("div4").style.display = "none";
}else
if(j < 7 && j >= 5){
document.getElementById("div2").style.display = "block";
document.getElementById("div1").style.display = "none";
document.getElementById("div3").style.display = "none";
document.getElementById("div4").style.display = "none";
}else
if(j >= 7 && j < 15){
document.getElementById("div3").style.display = "block";
document.getElementById("div1").style.display = "none";
document.getElementById("div2").style.display = "none";
document.getElementById("div4").style.display = "none";
}else
if(j == 15){
document.getElementById("div4").style.display = "block";
document.getElementById("div2").style.display = "none";
document.getElementById("div3").style.display = "none";
document.getElementById("div1").style.display = "none";
}
frames[i % frameCount].style.display = "none";
frames[++i % frameCount].style.display = "block";
j++;
if(j > 15) {
clearInterval(interval);
j = 1;
}
},100);
}
#animation img {
display: none;
}
#animation img:first-child {
display: block;
}
.d-none{
display:none
}
.d-block{
display:block;
}
<div id="animation">
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging01.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging02.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging03.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging04.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging05.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging06.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging07.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging08.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging09.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging10.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging11.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging12.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging13.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging14.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging15.png" />
</div>
<div class="d-block" id="div1">
this div is aappear1
</div>
<div class="d-none" id="div2">
this div is aappear2
</div>
<div class="d-none" id="div3">
this div is aappear3
</div>
<div class="d-none" id="div4">
this div is aappear4
</div>
Upvotes: 0
Reputation: 1511
Here's my solution , I did the show/hide divs based on the index of the current picture
onload = function startAnimation() {
var frames = document.getElementById("animation").children;
var frameCount = frames.length;
var i = 0,
j = 0;
var interval = setInterval(function() {
frames[i % frameCount].style.display = "none";
frames[++i % frameCount].style.display = "block";
j++;
if (i == 4) {
showdiv(2)
}
if (i == 6) {
showdiv(3)
}
if (i == 14) {
showdiv(4)
}
if (j === 14) {
clearInterval(interval);
}
}, 100);
}
function showdiv(index) {
var previous = index - 1;
var current = index;
document.getElementById("div" + previous.toString()).className = "d-none";
document.getElementById("div" + current.toString()).className = "d-block";
}
#animation img {
display: none;
}
#animation img:first-child {
display: block;
}
.d-none {
display: none
}
.d-block {
display: block;
}
<div id="animation">
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging01.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging02.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging03.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging04.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging05.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging06.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging07.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging08.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging09.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging10.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging11.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging12.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging13.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging14.png" />
<img src="http://jumpingfishes.com/dancingpurpleunicorns/charging15.png" />
</div>
<div id="div1" class="d-block">
this div is aappear1
</div>
<div id="div2" class="d-none">
this div is aappear2
</div>
<div id="div3" class="d-none">
this div is aappear3
</div>
<div id="div4" class="d-none">
this div is aappear4
</div>
Upvotes: 2
Reputation: 15841
You don't even need JS to do this, the easiest way is through CSS, take a look:
#list {
margin: 2em auto;
padding: 0;
max-width: 600px;
list-style: none;
height: 15em;
}
#list li {
float: left;
width: 100px;
height: 100px;
margin: 0 5px;
background: #ccc;
text-align: center;
line-height: 100px;
opacity: 0;
animation: fadeIn 1s ease-in both;
}
#list li:nth-child(2) {
animation-delay: 1s;
}
#list li:nth-child(3) {
animation-delay: 2s;
}
#list li:nth-child(4) {
animation-delay: 3s;
}
#list li:nth-child(5) {
animation-delay: 4s;
}
@keyframes fadeIn {
from {
opacity: 0;
transform: translate3d(0, -20%, 0);
}
to {
opacity: 1;
transform: translate3d(0, 0, 0);
}
}
<ul id="list">
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
<li>E</li>
</ul>
Upvotes: 0