ng-animate not working in 1.3

chovy picture chovy · Jul 1, 2014 · Viewed 11.3k times · Source

I am getting the class ng-animate applied to the directive but I'm not getting:

ng-hide-remove.ng-hide-remove-active or .ng-hide-remove.ng-hide-remove-active

I have angular and angular-animate 1.3 loaded. and am including ngAnimate in app.js

<div class="message animate-show {{message.type}}" ng-show="message">
    {{message.text}}
</div>

The transitions are not happening:

.message.animate-show {
    line-height:20px;
    opacity:1;
    padding:10px;

    &.ng-hide-add.ng-hide-add-active,
    &.ng-hide-remove.ng-hide-remove-active {
        -webkit-transition:all linear 0.5s;
        transition:all linear 0.5s;
    }

    &.ng-hide {
        line-height:0;
        opacity:0;
        padding:0 10px;
    }
}

Answer

gkalpak picture gkalpak · Jul 1, 2014

For a simple animation like fading in/out, you need the following CSS classes:

.my-animation {
    -webkit-transition: 0.5s linear all;
    transition: 0.5s linear all;
    opacity: 1;
}

.my-animation.ng-hide {
    opacity: 0;
}

UPDATE:

If you have other transistion on the element that you don't want to get affected, use the following CSS definitions to only apply the transistions on the fading in/out:

.my-animation {
    opacity: 1;
}

.my-animation.ng-hide {
    opacity: 0;
}

.my-animation.ng-hide-add,
.my-animation.ng-hide-remove {
    -webkit-transition: 0.5s linear all;
    transition: 0.5s linear all;
}

See, also, this short demo.