I\'ve got some element I want to fade with CSS3. It can be simply done by 2 classes with opacity: 0
and opacity: 1
, b
Instead of display:none
, try using visibility: hidden;
FIDDLE
See this article which states:
visibility animates despite the CSS Basic Box Model spec saying “Animatable: no”
You can make an element not accept clicks with this:
.hidden
{
pointer-events:none;
}
You can do it by 100% CSS pure code.
.menu > li > ul{
display: none;
}
.menu > li:hover > ul {
display: block;
animation-duration: 0.5s;
animation-name: fadeInFromNone;
animation-fill-mode: forwards;
-webkit-animation-duration: 0.5s;
-webkit-animation-name: fadeInFromNone;
-webkit-animation-fill-mode: forwards;
-ms-animation-duration: 0.5s;
-ms-animation-name: fadeInFromNoneIE;
-ms-animation-fill-mode: forwards;
}
@-webkit-keyframes fadeInFromNone {
0% {
opacity: 0
}
1% {
opacity: 0
}
100% {
opacity: 1
}
}
@keyframes fadeInFromNoneIE {
0% {
opacity: 0
}
1% {
opacity: 0
}
100% {
opacity: 1
}
}
@keyframes fadeInFromNone {
0% {
opacity: 0
}
1% {
opacity: 0
}
100% {
opacity: 1
}
}
Noticed the example in the JS Fiddle above was broken, fixed the code here:
<style>
div {
position: absolute;
transition: all 2s;
}
div.opa {
opacity: 0;
visibility:hidden;
}
</style>
<div class=opa>dsdsds</div>
<br> <br>
<p><a href="#">clickme</a></p>
<script>
$('a').click(function(){
$('div').toggleClass('opa');
})
</script>
Fixed the fiddle:
try to make an element that do not accept click by applying z-index to negative value.
a{z-index: -999;}
Oh! I understood your problem. You can set visibility: collapse;
better than hidden I think.