AngularJS 1.2从0到0.5的淡入淡出动画不起作用

Posted

技术标签:

【中文标题】AngularJS 1.2从0到0.5的淡入淡出动画不起作用【英文标题】:AngularJS 1.2 fade animation from 0 to 0.5 not working 【发布时间】:2013-11-20 17:44:32 【问题描述】:

所以我使用 AngularJS 1.2 和 ngAnimate 模块制作了这个简单的淡入淡出动画,但我遇到了一个小问题。

我想显示/隐藏一个带有淡入淡出动画的元素,但我希望元素从不透明度:0 淡化到不透明度:0.5。问题是,元素在我设置的持续时间内从 0 淡化到 0.5,但是在动画结束后,它会将不透明度设置为 1。我不希望这样。

这是我的 CSS 代码:

.overlay 
    background-color: #ff0000;
    position: absolute;
    width: 150px;
    height: 150px;

.fade-animation.ng-hide-add, .fade-animation.ng-hide-remove 
    transition: 2s linear all;
    display: block !important;

.fade-animation.ng-hide-remove 
    opacity: 0;

.fade-animation.ng-hide-remove.ng-hide-remove-active 
    opacity: .5;

.fade-animation.ng-hide-add 
    opacity: .5;

.fade-animation.ng-hide-add.ng-hide-add-active 
    opacity: 0;

这是一个问题示例:http://jsfiddle.net/Kn3th/8/

我正在 Firefox 上对此进行测试。

【问题讨论】:

【参考方案1】:

这是因为一旦动画完成,动画相关的类就会被移除,所以只有.overlay 定义适用。只需将其添加到您的 CSS 中:

.overlay 
    ...
    opacity: .5;   // <-- add this line to apply an opacity of 0.5
                         when the animation is over

另请参阅此short demo

【讨论】:

这是我第一次尝试的,虽然它在示例中工作,但它并不完全适用于我的真实代码。我无法真正发现两者之间的差异。我试图在小提琴中复制我的真实代码。发生的情况是最终的不透明度立即设置,当我尝试将其隐藏时,不透明度仍然存在。 不幸的是,如果问题在您发布的代码中无法重现,我极不可能在您的真实代码中找到问题。如果您无法提供 SSCCE,请尝试发布您的真实代码(如果可能)。如果这不可能,请尝试详细描述真实代码中发生的情况(以及它如何偏离预期行为)。 我发现了问题。这与我的真实示例更相似:jsfiddle.net/Kn3th/9 查看 .css 中的第一行。从选择器中删除 #outer 可以解决问题。这有意义吗? 是的,确实如此 :) #outer div.overlay 的特异性大于动画相关选择器的特异性(例如.fade-animation.ng-hide-add)。您必须使选择器同样具体,这可以通过从第一个选择器中删除 #outer 或将其添加到其余选择器(例如 #outer .fade-animation.ng-hide-add 等)来实现。 这是有道理的。谢谢。

以上是关于AngularJS 1.2从0到0.5的淡入淡出动画不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Android Activity 淡入淡出和从底部向上弹出动画效果

悬停动画淡入不透明度 0.5 悬停不透明度 1

淡入进入(从右到中)和离开(从中到左)

swift uiview弹出动画

淡入图像,直到单击另一个图像

如何使用 cocoalibspotify 进行音频交叉淡入淡出?