javascript – 什么是ng-hide-add,ng-hide-active

前端之家收集整理的这篇文章主要介绍了javascript – 什么是ng-hide-add,ng-hide-active前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我动画了一个div.它具有以下定义:
<div ng-show="showTranslations" ng-swipe-right="showTranslationsBlock=false">...</div>

我有以下css定义:

div.ng-hide {
    transition: 0.5s linear opacity;
    opacity: 0;
}

div.ng-hide-add,div.ng-hide-remove {
    /* this needs to be here to make it visible during the animation
       since the .ng-hide class is already on the element rendering
       it as hidden. */
    display:block!important;
}

这是从this tutorial.动画作品.但:

>为什么我需要这些类.ng-hide-add和.ng-hide-remove?
>为什么我看不到他们添加到div的类?
>为什么还有类ng-hide-add-active和ng-hide-remove-active?
>为什么在div变得可见时没有转换,但是我添加了以下css规则:

div.ng-hide-remove {
不透明度:1;
}

UPDATE

>从谷歌教程提供的表中可以看到,这些类被添加到触发动画框架(这会执行回流).我的理解正确吗?为什么在这里提到动画框?
>我试图增加过渡期,但没有添加类.我没有看到类添加ng-hide-add-active和ng-hide-remove-active.
>从表中可以看出,这些是触发转换的类?

UPDATE1
我已经探讨了Angular的源代码,并为ng-hide指令找到以下内容

var ngHideDirective = ['$animate',function($animate) {
  return function(scope,element,attr) {
    scope.$watch(attr.ngHide,function ngHideWatchAction(value){
      $animate[toBoolean(value) ? 'addClass' : 'removeClass'](element,'ng-hide');
    });
  };
}];

据了解,ng-hide类是通过动画服务添加的.但是如果我不使用动画和$动画服务是不可用的会发生什么?鉴于上述代码,Angular将如何处理这种情况,以及如何添加隐藏类?还是这个$animate.addClass()只是添加一个回调给addClass事件?

解决方法

将CSS转换放在ng-hide-remove,ng-hide-remove-active上:
div.ng-hide-remove {
    transition: 0.5s linear opacity;
    opacity: 0;
}


div.ng-hide-remove-active {
    opacity: 1;
}

同样,对于ng-hide-add和ng-hide-add-active:

div.ng-hide-add {
    transition: 0.5s linear opacity;
    opacity: 1;
}


div.ng-hide-add-active {
    opacity: 0;
}

猜你在找的JavaScript相关文章