如何动画 "visibility: hidden"?

How to animate "visibility: hidden"?

这是我的问题...你能帮帮我吗?

$(".button").hover(function(){
  $('.class').css({opacity: 1.0, visibility: "hidden"}).animate({opacity: 0}, 1200);
},function(){
  $('.class').css({opacity: 0.0, visibility: "visible"}).animate({opacity: 1}, 1200);
});

它只有在出现时才会动画。 :-(

试试这个方法:

$(".button").hover(function(){
  $('.class').css("opacity", "1.0").animate({opacity: 0}, 1200, function(){
    $('.class').css("visibility", "hidden");
});
},function(){
  $('.class').css({opacity: 0.0, visibility: "visible"}).animate({opacity: 1}, 1200);
});

然而,这不是 fadeInfadeOut 的最佳选择。您可以改用 jQuery 提供的那些名称的方法,或者更好地使用 CSS 转换,以防万一。

$(".button").hover(function(){
    $('.class').css({opacity: 1.0, visibility: "visible"}).animate( //start off from opacity 1 and visibile
        {opacity: 0}, //then animate opacity to 0
        1200, 
        function(){ //this will be run after the animation is completed
            $(this).css({
                visiblity:"hidden" //so it will be hidden only after the animation has completed
            });
        }
    );
},function(){
  $('.class').css({opacity: 0.0, visibility: "visible"}).animate({opacity: 1}, 1200);
});

使用fadeIn/fadeOut

$(".button").hover(function(){
  $('.class').fadeOut(1200);
},function(){
  $('.class').fadeIn(1200);
});

您可以传入 duration 应该可以实现您的目标

那是因为它在动画之前被删除了。您需要先为淡出设置动画,然后在动画完成后应用 visibility: hidden

有几种方法可以做到这一点:浏览器引发一个事件 animationend(这是各种浏览器的前缀——更多信息请参见此处)或者您可以使用比 jQuery 动画(如 Green Sock TweenLite -- http://greensock.com/tweenlite)来处理你的动画,这使得动画结束时的 运行 代码变得微不足道。

CSS 中的可见性 属性 是布尔值,可以打开或关闭。

为了使任何动画正常工作,无论是使用关键帧、过渡还是 jquery,属性 值集的起点和终点都需要分解为一组步数,步数越多,动画越流畅。

对于像这样的简单效果,transition is best, please see the fiddle here。使用 javascript 只是添加/删除触发转换

的 类
.hidden {
    opacity: 0;
    transition: opacity 0.5s ease-in;
}

.show-me {
    opacity: 1;
}

您设置过渡 属性 定义 属性 过渡,然后是长度,要使用的缓动函数(它描述了动画效果的速率变化)。您还需要为动画 属性 定义起点和终点,正如您在两个不透明度值中看到的那样。

郑重声明 - 如果您的效果更复杂,则关键帧是合适的,例如希望一个 属性 在中途完全动画化,然后再向后动画化,而另一个则需要全部时间,或者振荡; JQuery animate 提供了一种简单的方法来对动画的结束进行操作,这有时也是必要的。