0

I am looking for a native JS solution to toggle div display using display:'none' and display:'block' properties. I have the first part done. I only need the part to do a simple fadeIn and fadeOut animation.

I need to use native JS and display:block,none.

var e = document.getElementById('calendarPickerContainer');

    if (e.className == 'visible') { 
        e.className = 'hidden';
    } else {
        e.className = 'visible';
    }

need to adapt to this css

.visible{
display:block;
}

.hidden {
display:none;
}
1

4 Answers 4

3

If you wanna use a pure JavaScript fadeIn and fadeOut, try this:

transition: opacity 1s linear;

This is a pure CSS method.

#cont {-webkit-transition: opacity 1s linear; -o-transition: opacity 1s linear; transition: opacity 1s linear;}
#cont.hidden {opacity: 0;}
<button onclick="cont.classList.add('hidden'); setTimeout('cont.style.display=\'none\'', 1000);">Click</button>
<div id="cont">
  Hello
</div>

Working Snippet (includes toggle):

#cont {-webkit-transition: opacity 1s linear; -o-transition: opacity 1s linear; transition: opacity 1s linear; opacity: 1;}
#cont.hidden {opacity: 0; -webkit-transition: opacity 1s linear; -o-transition: opacity 1s linear; transition: opacity 1s linear;}
<button onclick="if (cont.style.display != 'none') { cont.classList.add('hidden'); setTimeout('cont.style.display=\'none\'', 1000); } else {cont.style.display='block'; setTimeout('cont.classList.remove(\'hidden\')', 10);}">Click</button>
<div id="cont">
  Hello
</div>

Sign up to request clarification or add additional context in comments.

8 Comments

need to use display block and none
@Jacob I have used display: none. Did you see the code?
Only fadesOut doesn't fadeIn
I also get an error that cont is undefined by the timeout function
@Jacob Sorry my mistake. Updated. Check the second fiddle now.
|
0

You can achieve this easily with CSS3

.visible {
  visibility: visible;
  opacity: 1;
  transition: opacity 2s linear;
}
.hidden {
  visibility: hidden;
  opacity: 0;
  transition: visibility 0s 2s, opacity 2s linear;
}

1 Comment

No animation is visible.
0

Native JS fade function:

var s = document.getElementById('calendarPickerContainer').style;
s.opacity = 1;
(function fade(){(s.opacity-=.1)<0?s.display="none":setTimeout(fade,40)})();

Comments

0

You can simplfy this with classList

document.querySelector('.toggle').addEventListener('click',function(e) {
  e.target.classList.toggle('hide');
})

Css:

div {
  transition:all 0.3s ease-in;
}

.hide {

  opacity: 0;
}

We're using opacity since display cannot be animated.

Example

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.